<?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>75762</bug_id>
          
          <creation_ts>2012-01-06 17:12:22 -0800</creation_ts>
          <short_desc>Pointer Lock: Implement pointer interface</short_desc>
          <delta_ts>2012-06-19 09:39:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>76311</dependson>
    
    <dependson>76410</dependson>
    
    <dependson>76411</dependson>
    
    <dependson>77030</dependson>
          <blocked>84386</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vincent Scheib">scheib</reporter>
          <assigned_to name="Vincent Scheib">scheib</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531533</commentid>
    <comment_count>0</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-06 17:12:22 -0800</bug_when>
    <thetext>Pointer Lock: Implement pointer interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531536</commentid>
    <comment_count>1</comment_count>
      <attachid>121524</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-06 17:15:28 -0800</bug_when>
    <thetext>Created attachment 121524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532284</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-09 10:31:23 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534223</commentid>
    <comment_count>3</comment_count>
      <attachid>122087</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-11 13:44:31 -0800</bug_when>
    <thetext>Created attachment 122087
Tests added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534262</commentid>
    <comment_count>4</comment_count>
      <attachid>122087</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-11 14:26:06 -0800</bug_when>
    <thetext>Comment on attachment 122087
Tests added

Attachment 122087 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11108580</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534264</commentid>
    <comment_count>5</comment_count>
      <attachid>122087</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-11 14:28:22 -0800</bug_when>
    <thetext>Comment on attachment 122087
Tests added

Attachment 122087 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11211140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534949</commentid>
    <comment_count>6</comment_count>
      <attachid>122087</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-01-12 10:27:46 -0800</bug_when>
    <thetext>Comment on attachment 122087
Tests added

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

This patch needs to be broken up into smaller bits. Also EWS is sad.

&gt; Source/WebCore/page/PointerLock.cpp:47
&gt; +    return page()-&gt;pointerLockController()-&gt;lock(target, successCallback, failureCallback);

Can you not just hold on to the pointerLockController in this class?

&gt; Source/WebCore/page/PointerLockController.h:46
&gt; +    void lock(WebCore::Element* target, PassRefPtr&lt;WebCore::VoidCallback&gt; successCallback, PassRefPtr&lt;WebCore::VoidCallback&gt; failureCallback);

Why are these guys all namespace-prefixed?

&gt; Source/WebKit/chromium/public/WebWidgetClient.h:130
&gt; +    virtual bool pointerLock(WebKit::WebWidget*) { return false; }

Again, why are these namespace-prefixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535098</commentid>
    <comment_count>7</comment_count>
      <attachid>122087</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-12 13:10:52 -0800</bug_when>
    <thetext>Comment on attachment 122087
Tests added

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

&gt; Source/WebKit/chromium/public/WebWidget.h:175
&gt; +    virtual void pointerLockRequestResult(bool success) { }

nit: didCompletePointerLockRequest  ... verbose, but maybe that&apos;s ok?

&gt; Source/WebKit/chromium/public/WebWidget.h:177
&gt; +    virtual void pointerLockLost() { }

prefer &quot;didLoseFoo&quot; over &quot;fooLost&quot;

&gt; Source/WebKit/chromium/public/WebWidgetClient.h:131
&gt; +    virtual void pointerUnlock(WebKit::WebWidget*) { }

You can assume that each WebWidgetClient is associated with a particular WebWidget.
That&apos;s why none of the other functions take a WebWidget pointer.

&gt; Tools/DumpRenderTree/LayoutTestController.cpp:2214
&gt; +

nit: nuke extra new line

&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:784
&gt; +    webWidget()-&gt;pointerLockRequestResult(m_pointerLocked);

why call this on both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536824</commentid>
    <comment_count>8</comment_count>
      <attachid>122697</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-16 17:26:42 -0800</bug_when>
    <thetext>Created attachment 122697
Updated big patch, includes all subpatches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536826</commentid>
    <comment_count>9</comment_count>
      <attachid>122698</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-16 17:35:55 -0800</bug_when>
    <thetext>Created attachment 122698
Small patch, no subpatches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536827</commentid>
    <comment_count>10</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-16 17:38:34 -0800</bug_when>
    <thetext>I&apos;ve split out two patches:
Bug 76410 - [Chromium] Add WebKit API for Pointer Lock
Bug 76411 - [Chromium] Add Pointer Lock test hooks and mock implementation to DumpRenderTree

I&apos;ve attached patches that both include and exclude the carved out dependent patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541673</commentid>
    <comment_count>11</comment_count>
      <attachid>123805</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-24 14:07:37 -0800</bug_when>
    <thetext>Created attachment 123805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541772</commentid>
    <comment_count>12</comment_count>
      <attachid>123805</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 15:32:07 -0800</bug_when>
    <thetext>Comment on attachment 123805
Patch

Attachment 123805 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11242344

New failing tests:
fast/dom/navigator-detached-no-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541792</commentid>
    <comment_count>13</comment_count>
      <attachid>123832</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-24 15:47:55 -0800</bug_when>
    <thetext>Created attachment 123832
Rerun EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541898</commentid>
    <comment_count>14</comment_count>
      <attachid>123832</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 17:34:51 -0800</bug_when>
    <thetext>Comment on attachment 123832
Rerun EWS

Attachment 123832 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11242385

New failing tests:
fast/dom/navigator-detached-no-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542463</commentid>
    <comment_count>15</comment_count>
      <attachid>123976</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-25 11:09:28 -0800</bug_when>
    <thetext>Created attachment 123976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542475</commentid>
    <comment_count>16</comment_count>
      <attachid>123976</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-25 11:17:52 -0800</bug_when>
    <thetext>Comment on attachment 123976
Patch

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

I think you have some memory safety problems...

&gt; Source/WebCore/page/PointerLock.h:52
&gt; +    PointerLockController* m_controller;

How do you know whether this object hasn&apos;t been deallocated?

&gt; Source/WebCore/page/PointerLockController.cpp:83
&gt; +        callbackToIssue-&gt;handleEvent();

How do you know the ScriptExecutionContext for this callback is still active?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1019
&gt; +#if ENABLE(POINTER_LOCK)
&gt; +    requestPointerUnlock();
&gt; +#endif

This doesn&apos;t seem right.  Is pointer lock scoped to the lifetime of the WebView or to the lifetime of a particular document?  How can a document that&apos;s not longer active in a WebView hold the pointer lock?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542686</commentid>
    <comment_count>17</comment_count>
      <attachid>123976</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-25 15:14:10 -0800</bug_when>
    <thetext>Comment on attachment 123976
Patch

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

&gt;&gt; Source/WebCore/page/PointerLock.h:52
&gt;&gt; +    PointerLockController* m_controller;
&gt; 
&gt; How do you know whether this object hasn&apos;t been deallocated?

PointerLockController is owned by the page. If we&apos;re concerned about lifetime perhaps PointerLock could be a DOMWindowProperty, and be safely disconnected from the frame, sound good? (I see that in page/Geolocation.h). Other suggestion?

&gt;&gt; Source/WebCore/page/PointerLockController.cpp:83
&gt;&gt; +        callbackToIssue-&gt;handleEvent();
&gt; 
&gt; How do you know the ScriptExecutionContext for this callback is still active?

Do you think m_element-&gt;inDocument() would be sufficient? 
(Note, To keep this patch smaller I&apos;ve broken off Bug 77029 - Pointer Lock handles disconnected DOM elements)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542687</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-25 15:17:27 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 123976 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123976&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/page/PointerLock.h:52
&gt; &gt;&gt; +    PointerLockController* m_controller;
&gt; &gt; 
&gt; &gt; How do you know whether this object hasn&apos;t been deallocated?
&gt; 
&gt; PointerLockController is owned by the page. If we&apos;re concerned about lifetime perhaps PointerLock could be a DOMWindowProperty, and be safely disconnected from the frame, sound good? (I see that in page/Geolocation.h). Other suggestion?

Yes.  That&apos;s a good idea.

&gt; &gt;&gt; Source/WebCore/page/PointerLockController.cpp:83
&gt; &gt;&gt; +        callbackToIssue-&gt;handleEvent();
&gt; &gt; 
&gt; &gt; How do you know the ScriptExecutionContext for this callback is still active?
&gt; 
&gt; Do you think m_element-&gt;inDocument() would be sufficient? 
&gt; (Note, To keep this patch smaller I&apos;ve broken off Bug 77029 - Pointer Lock handles disconnected DOM elements)

Hum...  Maybe checking m_element-&gt;document()-&gt;frame() would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542800</commentid>
    <comment_count>19</comment_count>
      <attachid>124041</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-25 17:17:29 -0800</bug_when>
    <thetext>Created attachment 124041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542807</commentid>
    <comment_count>20</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-25 17:23:48 -0800</bug_when>
    <thetext>- Changed PointerLock to be a DOMWindowProperty to receive a disconnectFrame() notice and clear the reference to PointerLockController. 

- PointerLockController callbacks and events check that the m_element-&gt;document()-&gt;frame() exists first.

- Removed WebViewImpl call to requestPointerUnlock(). On the WebCore side this should be addressed in Bug 77029 - Pointer Lock handles disconnected DOM elements, the WebViewImpl should trust unlocks are made. The client owning the webwidget should handle paranoia of a misbehaving WebKit and clean up on destruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542849</commentid>
    <comment_count>21</comment_count>
      <attachid>124041</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-25 19:36:35 -0800</bug_when>
    <thetext>Comment on attachment 124041
Patch

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

Thanks!

&gt; Source/WebCore/page/PointerLock.cpp:41
&gt; +    if (!m_frame)
&gt; +        return;

You&apos;re already checking that frame is non-zero when creating this object.  Should we just ASSERT that frame is non-zero?

&gt; Source/WebCore/page/PointerLock.h:48
&gt; +    virtual void disconnectFrame();

Can you add the OVERRIDE keyword?  We&apos;re starting to use it in WebKit.

&gt; Source/WebCore/page/PointerLock.h:55
&gt; +    PointerLock(Frame*);

explicit

&gt; Source/WebCore/page/PointerLockController.cpp:81
&gt; +    if (callbackToIssue &amp;&amp; elementToNotify &amp;&amp; elementToNotify-&gt;document() &amp;&amp; elementToNotify-&gt;document()-&gt;frame())
&gt; +        callbackToIssue-&gt;handleEvent();

elementToNotify-&gt;document() will always be non-zero.  There&apos;s no need to check it.

&gt; Source/WebCore/page/PointerLockController.h:44
&gt; +    PointerLockController(Page*);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542850</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-25 19:37:52 -0800</bug_when>
    <thetext>I&apos;m happy with the low-level mechanics of this patch, but I&apos;d like fishd to take a look as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542882</commentid>
    <comment_count>23</comment_count>
      <attachid>124064</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-25 22:23:54 -0800</bug_when>
    <thetext>Created attachment 124064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542883</commentid>
    <comment_count>24</comment_count>
      <attachid>124041</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-25 22:25:35 -0800</bug_when>
    <thetext>Comment on attachment 124041
Patch

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

fishd (or dglazkov?) please take a look.

Adam - thanks for moving this forward.

&gt;&gt; Source/WebCore/page/PointerLock.cpp:41
&gt;&gt; +        return;
&gt; 
&gt; You&apos;re already checking that frame is non-zero when creating this object.  Should we just ASSERT that frame is non-zero?

Done.

&gt;&gt; Source/WebCore/page/PointerLock.h:48
&gt;&gt; +    virtual void disconnectFrame();
&gt; 
&gt; Can you add the OVERRIDE keyword?  We&apos;re starting to use it in WebKit.

Done.

&gt;&gt; Source/WebCore/page/PointerLock.h:55
&gt;&gt; +    PointerLock(Frame*);
&gt; 
&gt; explicit

Done.

&gt;&gt; Source/WebCore/page/PointerLockController.cpp:81
&gt;&gt; +        callbackToIssue-&gt;handleEvent();
&gt; 
&gt; elementToNotify-&gt;document() will always be non-zero.  There&apos;s no need to check it.

Done.

&gt;&gt; Source/WebCore/page/PointerLockController.h:44
&gt;&gt; +    PointerLockController(Page*);
&gt; 
&gt; explicit

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543512</commentid>
    <comment_count>25</comment_count>
      <attachid>124064</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-01-26 14:54:04 -0800</bug_when>
    <thetext>Comment on attachment 124064
Patch

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

Based on the previous reviews, it looks like this patch has received enough attention from WebCore reviewers. The WebViewImpl seems simple enough to me but I don&apos;t usually usually review those changes. If someone with more experience of this part could review it, it would be the best. If no one steps in, I am fine with r+ the change (provided the style comments are addressed).

&gt; Source/WebCore/ChangeLog:9
&gt; +        WebCore::PointerLockController class, which exists per page.

No need for the WebCore prefix here.

Also could you fill the ChangeLog with a bit more with more context:
* What are you doing in this change?
* Some noteworthy information for furture WebKit archeologists?

&gt; Source/WebCore/page/Page.cpp:151
&gt; +    , m_pointerLockController(adoptPtr(new PointerLockController(this)))

Nit: We usually prefer a static create function that wraps this call.

&gt; Source/WebCore/page/PointerLockController.cpp:75
&gt; +    RefPtr&lt;WebCore::Element&gt; elementToNotify(m_element);

Extra WebCore:: (not repeated in the rest of the file).

&gt; Source/WebCore/page/PointerLockController.cpp:108
&gt; +    if (m_element &amp;&amp; m_element-&gt;document()-&gt;frame()) {

We usually prefer early return to nested if.

&gt; Source/WebCore/page/PointerLockController.h:59
&gt; +    RefPtr&lt;WebCore::Element&gt; m_element;
&gt; +    RefPtr&lt;WebCore::VoidCallback&gt; m_successCallback;
&gt; +    RefPtr&lt;WebCore::VoidCallback&gt; m_failureCallback;

Extra WebCore::

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3252
&gt;      // FIXME: Implement when PointerLockController lands.

It looks like this comment is unneeded now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543624</commentid>
    <comment_count>26</comment_count>
      <attachid>124205</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-26 16:12:29 -0800</bug_when>
    <thetext>Created attachment 124205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543630</commentid>
    <comment_count>27</comment_count>
      <attachid>124206</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-26 16:18:10 -0800</bug_when>
    <thetext>Created attachment 124206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543633</commentid>
    <comment_count>28</comment_count>
      <attachid>124064</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-26 16:21:23 -0800</bug_when>
    <thetext>Comment on attachment 124064
Patch

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

Thanks, issues addressed.

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        WebCore::PointerLockController class, which exists per page.
&gt; 
&gt; No need for the WebCore prefix here.
&gt; 
&gt; Also could you fill the ChangeLog with a bit more with more context:
&gt; * What are you doing in this change?
&gt; * Some noteworthy information for furture WebKit archeologists?

Done.

&gt;&gt; Source/WebCore/page/Page.cpp:151
&gt;&gt; +    , m_pointerLockController(adoptPtr(new PointerLockController(this)))
&gt; 
&gt; Nit: We usually prefer a static create function that wraps this call.

Done.

&gt;&gt; Source/WebCore/page/PointerLockController.cpp:75
&gt;&gt; +    RefPtr&lt;WebCore::Element&gt; elementToNotify(m_element);
&gt; 
&gt; Extra WebCore:: (not repeated in the rest of the file).

Done (all instances).

&gt;&gt; Source/WebCore/page/PointerLockController.cpp:108
&gt;&gt; +    if (m_element &amp;&amp; m_element-&gt;document()-&gt;frame()) {
&gt; 
&gt; We usually prefer early return to nested if.

Done.

&gt;&gt; Source/WebCore/page/PointerLockController.h:59
&gt;&gt; +    RefPtr&lt;WebCore::VoidCallback&gt; m_failureCallback;
&gt; 
&gt; Extra WebCore::

Done.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3252
&gt;&gt;      // FIXME: Implement when PointerLockController lands.
&gt; 
&gt; It looks like this comment is unneeded now.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544160</commentid>
    <comment_count>29</comment_count>
      <attachid>124206</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-01-27 10:21:18 -0800</bug_when>
    <thetext>Comment on attachment 124206
Patch

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

&gt; Source/WebCore/ChangeLog:21
&gt; +        Implement the navigator.pointer interface via a new
&gt; +        PointerLockController class, as per
&gt; +        http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html.
&gt; +
&gt; +        The implementation is being made in steps, the feature is still behind
&gt; +        compile-time and run-time flags, &apos;webkit&apos; prefixed, and not yet enabled
&gt; +        in any browser. (Chromium has a developer flag required.) Follow-up
&gt; +        work will include handling DOM elements being removed, making all
&gt; +        callbacks asynchronous, iframe permissions (similar to Full Screen),
&gt; +        etc.
&gt; +
&gt; +        PointerLockController maintains state of which Element is the current
&gt; +        lock target and the success and failure callbacks. ChromeClient has
&gt; +        methods added to expose the required state change requests.

Thanks for filing in more details, that&apos;s very helpful!

&gt; Source/WebCore/page/PointerLockController.cpp:46
&gt; +PassOwnPtr&lt;PointerLockController&gt; PointerLockController::create(Page* page)
&gt; +{
&gt; +    return adoptPtr(new PointerLockController(page));
&gt; +}

Nit: can be inlined in the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544187</commentid>
    <comment_count>30</comment_count>
      <attachid>124337</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-27 10:57:50 -0800</bug_when>
    <thetext>Created attachment 124337
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544196</commentid>
    <comment_count>31</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-01-27 11:06:54 -0800</bug_when>
    <thetext>Committed r106134: &lt;http://trac.webkit.org/changeset/106134&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121524</attachid>
            <date>2012-01-06 17:15:28 -0800</date>
            <delta_ts>2012-01-11 13:44:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75762-20120106171527.patch</filename>
            <type>text/plain</type>
            <size>23944</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJmOWM4NjI0ZThlOWM0
ZmZhMjMwODI2YWU1OWZlNTU3NTZhNDEyMC4uNTBmNGJlYmFhZDIwYjYzYmQ1MGZkOTE0MGVhNjcy
MGNjNDgxZmVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAxLTA2ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gdGVzdHMgeWV0LgorCisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6cG9pbnRlckxvY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojpwb2ludGVyVW5sb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudDo6aXNQb2ludGVyTG9ja2VkKToKKyAgICAgICAgKiBwYWdl
L05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OndlYmtpdFBvaW50
ZXIpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQ
YWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBv
aW50ZXJMb2NrQ29udHJvbGxlcik6CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9jazo6UG9pbnRlckxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2s6OmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6
OnVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9jazo6aXNMb2NrZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OnBhZ2UpOgorICAgICAgICAqIHBhZ2UvUG9pbnRl
ckxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrOjpjcmVhdGUpOgorICAgICAg
ICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OlBvaW50ZXJMb2NrQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6
UG9pbnRlckxvY2tDb250cm9sbGVyOjppc0xvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpQb2lu
dGVyTG9ja0NvbnRyb2xsZXI6OmxvY2tSZXF1ZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6bG9ja0xvc3QpOgorICAgICAgICAoV2ViQ29yZTo6UG9p
bnRlckxvY2tDb250cm9sbGVyOjpkaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9pbnRlckxvY2suaC4KKwogMjAxMi0wMS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciBzaG91bGQgYmUg
bW9yZSBmdWxsLXNlcnZpY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMzU4YWEwYzdk
NWIyYmUwM2ViZWE2Zjc5YzE0ZTk0NTNiNzMwN2I1MS4uZDM0MWFhNDA2YWQxZjQ3NjI5MjM3NDkx
N2NhY2ZmMmRiYTU0NjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MyBAQAorMjAxMi0wMS0wNiAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFBvaW50ZXIgTG9jazogSW1wbGVtZW50IHBvaW50ZXIgaW50ZXJmYWNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYldp
ZGdldC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6OnBvaW50ZXJMb2NrUmVxdWVzdFJl
c3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6cG9pbnRlckxvY2tMb3N0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojpwb2ludGVyTG9ja01vdXNlRXZlbnQpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJXaWRnZXRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0
Q2xpZW50Ojpwb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6
cG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldENsaWVudDo6aXNQb2lu
dGVyTG9ja2VkVG8pOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cG9pbnRlckxvY2spOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjpwb2ludGVyVW5sb2NrKToKKyAgICAgICAgKFdlYktpdDo6
Q2hyb21lQ2xpZW50SW1wbDo6aXNQb2ludGVyTG9ja2VkKToKKyAgICAgICAgKiBzcmMvQ2hyb21l
Q2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
Ojpwb2ludGVyTG9ja1JlcXVlc3RSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6cG9pbnRlckxvY2tMb3N0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBvaW50
ZXJMb2NrTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwb2ludGVy
TG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwb2ludGVyVW5sb2NrKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTItMDEtMDUgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hlY2sgd2hldGhlciBhIFdlYlZpZXcgZXhpc3Rz
IGJlZm9yZSBhY2Nlc3NpbmcgaXQgaW4gU3RvcmFnZUFyZWFQcm94eS4gVGhpcyBpcyBub3QgbmVj
ZXNzYXJpbHkgdGhlIGNhc2UsIGUuZy4gZm9yIGRldGFjaGVkIGlmcmFtZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggZjM1NTg2OGQ1ODk5ZmFmODVjZTc1OTYwYjI1ZWZkN2VhYmRjYzc4Yi4uYTZiMTFm
MTZhMjhlMzMwNjBlMzc2NjI2NThjM2MwODNjOTRhNDA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MzAyOCw2ICszMDI4LDggQEAKICAgICAgICAgICAgICdwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgn
LAogICAgICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2suY3BwJywKICAgICAgICAgICAgICdwYWdl
L1BvaW50ZXJMb2NrLmgnLAorICAgICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVy
LmNwcCcsCisgICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaCcsCiAgICAg
ICAgICAgICAncGFnZS9QcmludENvbnRleHQuY3BwJywKICAgICAgICAgICAgICdwYWdlL1NjcmVl
bi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU2NyZWVuLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgKaW5kZXggZDNjZjNmZGM5ZDZiNzkwYzFjNjk1MTA4YWE5N2Y5YjU3ZTYxMDgyNy4uNTI4NWMx
NmMyZTEyODFhZmM1NDlhYjU3MmUyZDA3NjE5MmE4ZjI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCkBAIC0xOTYsNiArMTk2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAgICBt
YWNybyhzaG93KSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdHBvaW50ZXJsb2NrbG9zdCkgXAor
ICAgIFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAppbmRleCAwYmM4NjNiZDhjN2E0YTcxYTQ4MzdiMzFiMDM0NjY1MTk4
YmEzMGQ5Li41ODkzYmJkMjViMTNhOTFjM2Y0NWM0YTk0ZTBjNjIwYTkxMzljZWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTMyNyw2ICszMjcsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2VDaHJvbWVD
bGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKKyAgICAgICAgdmlydHVhbCBib29sIHBvaW50ZXJMb2NrKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIHBvaW50ZXJVbmxvY2soKSB7IH0KKyAgICAgICAgdmlydHVh
bCBib29sIGlzUG9pbnRlckxvY2tlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAg
IHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+Q2hyb21lQ2xpZW50KCkgeyB9CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCA0OTI2NjMyZWUzNjM2ZjVhNTU0ZjE1MzE0
MGEyNTUyZWE2MmY3YzRhLi5hZDFmYWVhOTFjMDAzYzA1MmVmNGZkMWM1ZDU0MmE2NDM2YjdiM2Yy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgR2VvbG9j
YXRpb24qIE5hdmlnYXRvcjo6Z2VvbG9jYXRpb24oKSBjb25zdAogUG9pbnRlckxvY2sqIE5hdmln
YXRvcjo6d2Via2l0UG9pbnRlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BvaW50ZXIpCi0gICAg
ICAgIG1fcG9pbnRlciA9IFBvaW50ZXJMb2NrOjpjcmVhdGUoKTsKKyAgICAgICAgbV9wb2ludGVy
ID0gUG9pbnRlckxvY2s6OmNyZWF0ZShtX2ZyYW1lKTsKICAgICByZXR1cm4gbV9wb2ludGVyLmdl
dCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwYzZmZjU1YmExMjRjODliZmE4
OThjMmUwYTk3NTVhZTFlMzdkNzNhLi41NDQ2ODIyZTYyYzY5YTg0OGI2ZjBlMjIzM2I2N2FmZjEz
Njk3OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJQ
bHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBsdWdpblZp
ZXdCYXNlLmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
UHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCkBAIC0xNDYsNiArMTQ3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYg
cGFnZUNsaWVudHMpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNh
dGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKHRoaXMsIHBhZ2VD
bGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoYWRvcHRQdHIobmV3IFBvaW50ZXJM
b2NrQ29udHJvbGxlcih0aGlzKSkpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQog
ICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4MzcyNjFlNjI5
Nzg0ZTFhZThlLi5hYzljNTc4ZjgxOWI0NjQ5N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFz
cyBQbHVnaW5EYXRhOworICAgIGNsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlcjsKICAgICBjbGFz
cyBQcm9ncmVzc1RyYWNrZXI7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVuZGVyVGhl
bWU7CkBAIC0xOTAsNiArMTkxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQogICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKiBub3RpZmljYXRp
b25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25Db250cm9sbGVyLmdl
dCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICBQb2ludGVy
TG9ja0NvbnRyb2xsZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9pbnRlckxvY2tDb250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAt
Mzg2LDYgKzM5MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKICAgICAgICAgT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90aWZpY2F0
aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAg
IE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRlckxvY2tDb250cm9sbGVyOwor
I2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXRDbGll
bnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAgICAgICAgIE93blB0cjxTcGVlY2hJbnB1dD4gbV9z
cGVlY2hJbnB1dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKaW5kZXggZGZiM2NiNDlh
MDljODkwMjgxYjkwNjgyZmI4NWNkODQxYTZlY2E5MS4uNWYxOTlmMTA0MDYwYzg1ZWI3ZjBmMjEw
YjQ3YjkwZDg2NGQxZDRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVy
TG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKQEAgLTI1
LDExICsyNSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2Nr
LmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQ
b2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJM
b2NrOjpQb2ludGVyTG9jayhGcmFtZSogZnJhbWUpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQogewog
fQogCkBAIC0zOSwxOCArNDQsMjIgQEAgUG9pbnRlckxvY2s6On5Qb2ludGVyTG9jaygpCiAKIHZv
aWQgUG9pbnRlckxvY2s6OmxvY2soRWxlbWVudCogdGFyZ2V0LCBQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gZmFpbHVyZUNh
bGxiYWNrKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICByZXR1cm4gcGFnZSgpLT5w
b2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+bG9jayh0YXJnZXQsIHN1Y2Nlc3NDYWxsYmFjaywgZmFp
bHVyZUNhbGxiYWNrKTsKIH0KIAogdm9pZCBQb2ludGVyTG9jazo6dW5sb2NrKCkKIHsKLSAgICAv
LyBGSVhNRTogSW1wbGVtZW50CisgICAgcmV0dXJuIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9s
bGVyKCktPnVubG9jaygpOwogfQogCiBib29sIFBvaW50ZXJMb2NrOjppc0xvY2tlZCgpCiB7Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcGFn
ZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+aXNMb2NrZWQoKTsKK30KKworUGFnZSogUG9p
bnRlckxvY2s6OnBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZyYW1lID8gbV9mcmFtZS0+
cGFnZSgpIDogMDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9jay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5oCmluZGV4IGJlN2Mz
MTc4ZjU4ZmU3OTljNjExY2YwNjFjY2RlZGU5MzJiYWRiMDMuLmU1OTFlNzUyZjg2YTNhOTZmZTcy
ZDBlMjBmMjcyNzM0MmNmZDY3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9p
bnRlckxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmgKQEAgLTM0
LDEwICszNCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OworY2xh
c3MgRnJhbWU7CitjbGFzcyBQYWdlOwogCiBjbGFzcyBQb2ludGVyTG9jayA6IHB1YmxpYyBSZWZD
b3VudGVkPFBvaW50ZXJMb2NrPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UG9p
bnRlckxvY2s+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb2ludGVyTG9jaygpKTsg
fQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvaW50ZXJMb2NrPiBjcmVhdGUoRnJhbWUqIGZyYW1l
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgUG9pbnRlckxvY2soZnJhbWUpKTsgfQogCiAgICAgflBv
aW50ZXJMb2NrKCk7CiAKQEAgLTQ2LDcgKzQ4LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9j
a2VkKCk7CiAKIHByaXZhdGU6Ci0gICAgUG9pbnRlckxvY2soKTsKKyAgICBQb2ludGVyTG9jayhG
cmFtZSopOworCisgICAgUGFnZSogcGFnZSgpIGNvbnN0OworCisgICAgRnJhbWUqIG1fZnJhbWU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bv
aW50ZXJMb2NrQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFiY2NjOGJjMWEwN2JkYzY3NWY2
NDU1YjJiM2Y5MGQ3ZTM1MmNlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxl
ci5oIgorCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisj
aW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bU1vdXNlRXZlbnQuaCIKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUG9pbnRlckxvY2tDb250cm9sbGVyOjpQb2ludGVyTG9ja0NvbnRyb2xsZXIo
UGFnZSogcGFnZSkKKyAgICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIFBvaW50ZXJMb2Nr
Q29udHJvbGxlcjo6bG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBmYWlsdXJlQ2FsbGJh
Y2spCit7CisgICAgaWYgKGlzTG9ja2VkKCkpIHsKKyAgICAgICAgaWYgKG1fZWxlbWVudCA9PSB0
YXJnZXQpIHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAg
ICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbG9ja0xvc3QoKTsKKyAgICAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKKyAg
ICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgc3VjY2Vzc0Nh
bGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX3BhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKS0+cG9pbnRlckxvY2soKSkgeworICAgICAgICBtX2VsZW1lbnQg
PSB0YXJnZXQ7CisgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwor
ICAgICAgICBtX2ZhaWx1cmVDYWxsYmFjayA9IGZhaWx1cmVDYWxsYmFjazsKKyAgICB9IGVsc2Ug
aWYgKGZhaWx1cmVDYWxsYmFjaykKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNrLT5oYW5kbGVFdmVu
dCgpOworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6dW5sb2NrKCkKK3sKKyAgICBy
ZXR1cm4gbV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBvaW50ZXJVbmxvY2soKTsKK30KKwor
Ym9vbCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmlzTG9ja2VkKCkKK3sKKyAgICByZXR1cm4gbV9w
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmlzUG9pbnRlckxvY2tlZCgpOworfQorCit2b2lkIFBv
aW50ZXJMb2NrQ29udHJvbGxlcjo6bG9ja1JlcXVlc3RSZXN1bHQoYm9vbCBzdWNjZWVkZWQpCit7
CisgICAgaWYgKCFtX2VsZW1lbnQpIC8vIFRPRE8gc2hvdWxkIHdlIGNoZWNrPyB8fCAhbV9lbGVt
ZW50LT5pbkRvY3VtZW50KCkpCisgICAgICByZXR1cm47CisKKyAgICBpZiAoc3VjY2VlZGVkKSB7
CisgICAgICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgICAgIG1fc3VjY2Vzc0Nh
bGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2ZhaWx1
cmVDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZmFpbHVyZUNhbGxiYWNrLT5oYW5kbGVFdmVudCgp
OworICAgICAgICBtX2VsZW1lbnQgPSAwOworICAgIH0KKyAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9
IDA7CisgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSAwOworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29u
dHJvbGxlcjo6bG9ja0xvc3QoKQoreworICAgIGlmIChtX2VsZW1lbnQpIHsKKyAgICAgICAgbV9l
bGVtZW50LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHBv
aW50ZXJsb2NrbG9zdEV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAgICAgICBtX2VsZW1lbnQgPSAw
OworICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IDA7CisgICAgICAgIG1fZmFpbHVyZUNhbGxi
YWNrID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpkaXNwYXRj
aExvY2tlZE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUpCit7CisgICAgbV9lbGVtZW50LT5kaXNwYXRjaE1vdXNl
RXZlbnQoZXZlbnQsIGV2ZW50VHlwZSwgZXZlbnQuY2xpY2tDb3VudCgpKTsKKworICAgIC8vIENy
ZWF0ZSBjbGljayBhbmQgZGJsY2xpY2sgZXZlbnRzCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkubW91c2V1cEV2ZW50KSB7CisgICAgICAgIG1fZWxlbWVudC0+ZGlzcGF0Y2hNb3Vz
ZUV2ZW50KGV2ZW50LCBldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZXZlbnQuY2xpY2tDb3VudCgp
KTsKKyAgICAgICAgaWYgKGV2ZW50LmNsaWNrQ291bnQoKSA9PSAyKQorICAgICAgICAgICAgbV9l
bGVtZW50LT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50TmFtZXMoKS5kYmxjbGlja0V2
ZW50LCBldmVudC5jbGlja0NvdW50KCkpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNjZmMTMyOWIwNTRmZjcz
NGNhOWRmZWY1YmFjOTlkYzNlYmIzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgUG9pbnRlckxvY2tDb250cm9sbGVyX2gKKyNkZWZpbmUgUG9pbnRlckxv
Y2tDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJW
b2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVu
dDsKK2NsYXNzIFBhZ2U7CitjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CisKK2NsYXNzIFBvaW50
ZXJMb2NrQ29udHJvbGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9pbnRlckxvY2tD
b250cm9sbGVyKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQ
b2ludGVyTG9ja0NvbnRyb2xsZXIoUGFnZSopOworCisgICAgdm9pZCBsb2NrKFdlYkNvcmU6OkVs
ZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFj
ayk7CisgICAgdm9pZCB1bmxvY2soKTsKKyAgICBib29sIGlzTG9ja2VkKCk7CisKKyAgICB2b2lk
IGxvY2tSZXF1ZXN0UmVzdWx0KGJvb2wgc3VjY2VlZGVkKTsKKyAgICB2b2lkIGxvY2tMb3N0KCk7
CisgICAgdm9pZCBkaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOworCitwcml2YXRlOgorICAgIFBh
Z2UqIG1fcGFnZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gbV9lbGVtZW50OworICAg
IFJlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IG1fZmFpbHVyZUNhbGxiYWNrOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKKwor
I2VuZGlmIC8vIFBvaW50ZXJMb2NrQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYldpZGdldC5oCmluZGV4IDNmNTk0ZjM2OTU1MjJmNjZiYTU5Y2EzZWU1OTQ0NzM1
ZmRkNGVjYTYuLjk1MTljOGI1ODA1MWVhMmYxM2JkM2QxOTIzNTJlMjBlOGM3ZGVkYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCkBAIC00NCw2ICs0NCw3IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViSW5wdXRFdmVudDsKK2NsYXNzIFdlYk1v
dXNlRXZlbnQ7CiBjbGFzcyBXZWJTdHJpbmc7CiBzdHJ1Y3QgV2ViUG9pbnQ7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOwpAQCAtMTcwLDYgKzE3MSwxMyBAQCBwdWJsaWM6
CiAgICAgLy8gdG8gcmVuZGVyIGl0cyBjb250ZW50cy4KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAg
IC8vIEFzeW5jaHJvbm91cyByZXN1bHQgdG8gYSBwZW5kaW5nIHBvaW50ZXIgbG9jayByZXF1ZXN0
LgorICAgIHZpcnR1YWwgdm9pZCBwb2ludGVyTG9ja1JlcXVlc3RSZXN1bHQoYm9vbCBzdWNjZXNz
KSB7IH0KKyAgICAvLyBQb2ludGVyIGxvY2sgd2FzIGhlbGQsIGJ1dCBoYXMgYmVlbiBsb3N0Lgor
ICAgIHZpcnR1YWwgdm9pZCBwb2ludGVyTG9ja0xvc3QoKSB7IH0KKyAgICAvLyBNb3VzZSBldmVu
dHMgYXJlIHRvIGJlIGRpc3BhdGNoZWQgdG8gdGhlIHBvaW50ZXIgbG9jayB0YXJnZXQuCisgICAg
dmlydHVhbCB2b2lkIHBvaW50ZXJMb2NrTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBl
dmVudCkgeyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViV2lkZ2V0KCkgeyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaAppbmRleCBlNWI0
MDVkZWExMTI2MGNhYWY3Mjk1NzdlNTU0MzQyMDYxMGNmYzg2Li4zYWEzMWM4ZGQ5YTk1NDViMWQ3
NDFkMTI3Y2JlZTI0MWZkOWQzMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJXaWRnZXRDbGllbnQuaApAQCAtMTI2LDYgKzEyNiwxMiBAQCBwdWJsaWM6CiAgICAg
Ly8gcmVzZXQgdGhlIGlucHV0IG1ldGhvZCBieSBjYW5jZWxsaW5nIGFueSBvbmdvaW5nIGNvbXBv
c2l0aW9uLgogICAgIHZpcnR1YWwgdm9pZCByZXNldElucHV0TWV0aG9kKCkgeyB9CiAKKyAgICAv
LyBSZXF1ZXN0cyB0byBsb2NrL3VubG9jayB0aGUgbW91c2UgY3Vyc29yCisgICAgdmlydHVhbCBi
b29sIHBvaW50ZXJMb2NrKFdlYktpdDo6V2ViV2lkZ2V0KikgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcG9pbnRlclVubG9jayhXZWJLaXQ6OldlYldpZGdldCopIHsgfQorICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgTW91c2UgTG9jayBpcyBhY3RpdmUgYW5kIHRoZSBwb2lu
dGVyIGlzIGxvY2tlZC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNQb2ludGVyTG9ja2VkVG8oV2ViS2l0
OjpXZWJXaWRnZXQqKSB7IHJldHVybiBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYldp
ZGdldENsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hy
b21lQ2xpZW50SW1wbC5jcHAKaW5kZXggNWYyODUxYmI1ODc3YzlmZjc0MjZkN2E4YzFlNWQxMzg2
NGZhMDJjZi4uM2JjNzRmNDUxYmQ5ODFhNzY4NzM5ZmQ5Y2FlZGMzOGY0YmJiMTVkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTEw
MTgsNCArMTAxOCwyMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6Om51bVdoZWVsRXZlbnRIYW5k
bGVyc0NoYW5nZWQodW5zaWduZWQgbnVtYmVyT2ZXaGVlbEhhbmRsZQogICAgIG1fd2ViVmlldy0+
bnVtYmVyT2ZXaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKG51bWJlck9mV2hlZWxIYW5kbGVycyk7
CiB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpw
b2ludGVyTG9jaygpCit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+cG9pbnRlckxvY2soKTsKK30K
Kwordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpwb2ludGVyVW5sb2NrKCkKK3sKKyAgICByZXR1cm4g
bV93ZWJWaWV3LT5wb2ludGVyVW5sb2NrKCk7Cit9CisKK2Jvb2wgQ2hyb21lQ2xpZW50SW1wbDo6
aXNQb2ludGVyTG9ja2VkKCkKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3LT5pc1BvaW50ZXJMb2Nr
ZWQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAppbmRleCAyMTEzZWMxYWY0ZjgxZDdk
MTliZWNhNjUxODczMjMyMTc3YWM0N2RkLi5hYmQ4NzIyYjQ3MjZkMDQzOTFhMDc2NmU0YjFmNDM3
OTI2OWNkYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5oCkBAIC0yMDUsNiArMjA1LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIG51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQp
OwogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICB2aXJ0dWFsIGJvb2wgcG9pbnRlckxv
Y2soKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9pbnRlclVubG9jaygpOworICAgIHZpcnR1YWwgYm9v
bCBpc1BvaW50ZXJMb2NrZWQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgZ2V0UG9w
dXBNZW51SW5mbyhXZWJDb3JlOjpQb3B1cENvbnRhaW5lciosIFdlYlBvcHVwTWVudUluZm8qKTsK
ICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDdXJzb3JJbmZvJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYjkzNTVmYzgzMzA4NDNiNTFjYTVj
NDM1Yzc3YjdkNjQzMWNmMDI2OC4uYThhMjg3Y2FlMWRmYTUwM2ViYjdmZTZlNjIwMWQ0MzNlODli
YzQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
OTAsNiArOTAsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKKyNpbmNsdWRlICJQb2ludGVyTG9jay5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlBvcHVwQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51
Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCkBAIC0xMDEwLDYgKzEwMTIs
OSBAQCBXZWJWaWV3SW1wbCogV2ViVmlld0ltcGw6OmZyb21QYWdlKFBhZ2UqIHBhZ2UpCiAKIHZv
aWQgV2ViVmlld0ltcGw6OmNsb3NlKCkKIHsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAg
IHBvaW50ZXJVbmxvY2soKTsKKyNlbmRpZgogICAgIFJlZlB0cjxXZWJGcmFtZUltcGw+IG1haW5G
cmFtZUltcGw7CiAKICAgICBpZiAobV9wYWdlKSB7CkBAIC0xNzQwLDYgKzE3NDUsNDcgQEAgYm9v
bCBXZWJWaWV3SW1wbDo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3QKICNl
bmRpZgogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpwb2ludGVyTG9ja1JlcXVlc3RSZXN1bHQoYm9v
bCBzdWNjZWVkZWQpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAocGFnZSgp
KQorICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5sb2NrUmVxdWVzdFJl
c3VsdChzdWNjZWVkZWQpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OnBvaW50ZXJM
b2NrTG9zdCgpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAocGFnZSgpKQor
ICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5sb2NrTG9zdCgpOworI2Vu
ZGlmCit9CisKK3ZvaWQgV2ViVmlld0ltcGw6OnBvaW50ZXJMb2NrTW91c2VFdmVudChjb25zdCBX
ZWJNb3VzZUV2ZW50JiBldmVudCkKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIEF0
b21pY1N0cmluZyBldmVudFR5cGU7CisgICAgc3dpdGNoIChldmVudC50eXBlKSB7CisgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpNb3VzZURvd246CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFt
ZXMoKS5tb3VzZWRvd25FdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpNb3VzZVVwOgorICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2V1cEV2
ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZToK
KyAgICAgICAgZXZlbnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50OworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisKKyAgICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJv
bGxlcigpLT5kaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoCisgICAgICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KSwKKyAg
ICAgICAgICAgIGV2ZW50VHlwZSk7CisjZW5kaWYKK30KKwogLy8gV2ViVmlldyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiBXZWJTZXR0aW5ncyogV2ViVmlld0ltcGw6OnNldHRpbmdzKCkKQEAgLTMxNDcsNCArMzE5
MywyMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXNldEdlc3R1cmVSZWNvZ25pemVyKCkKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgV2ViVmlld0ltcGw6OnBvaW50
ZXJMb2NrKCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnBvaW50ZXJMb2Nr
KHRoaXMpOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpwb2ludGVyVW5sb2NrKCkKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5wb2ludGVyVW5sb2NrKHRoaXMpOworfQor
Citib29sIFdlYlZpZXdJbXBsOjppc1BvaW50ZXJMb2NrZWQoKQoreworICAgIHJldHVybiBtX2Ns
aWVudCAmJiBtX2NsaWVudC0+aXNQb2ludGVyTG9ja2VkVG8odGhpcyk7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaAppbmRleCBlNWI1YTUyNWYxM2FiY2JiY2Q2YzQ1ZDc0ZmEyOTkxZGYzNTU3MTY3Li41ZDJk
YzhkZDhmNDgwNjljZjM1NGFiNTZhOTdlZjYyZGIxNmQ0M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTEyOSw2ICsxMjksOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGNhcmV0T3JTZWxlY3Rpb25SYW5nZShzaXplX3QqIGxvY2F0aW9uLCBzaXpl
X3QqIGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb24oV2ViVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24pOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBY3RpdmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9pbnRlckxvY2tSZXF1ZXN0
UmVzdWx0KGJvb2wgc3VjY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIHBvaW50ZXJMb2NrTG9zdCgp
OworICAgIHZpcnR1YWwgdm9pZCBwb2ludGVyTG9ja01vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VF
dmVudCYpOwogCiAgICAgLy8gV2ViVmlldyBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplTWFpbkZyYW1lKFdlYkZyYW1lQ2xpZW50Kik7CkBAIC00NjUsNiArNDY4LDE0IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKTsKICAgICBib29sIGhhc1Zl
cnRpY2FsU2Nyb2xsYmFyKCk7CiAKKyAgICAvLyBQb2ludGVyIExvY2sgY2FsbHMgYWxsb3cgYSBw
YWdlIHRvIGNhcHR1cmUgYWxsIG1vdXNlIGV2ZW50cyBhbmQKKyAgICAvLyBkaXNhYmxlIHRoZSBz
eXN0ZW0gY3Vyc29yLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdmlydHVhbCBib29s
IHBvaW50ZXJMb2NrKCk7CisgICAgdmlydHVhbCB2b2lkIHBvaW50ZXJVbmxvY2soKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNQb2ludGVyTG9ja2VkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBi
b29sIGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKTsKICAgICBmbG9hdCBjbGFtcFBhZ2VT
Y2FsZUZhY3RvclRvTGltaXRzKGZsb2F0IHNjYWxlKTsKQEAgLTY3OSw2ICs2OTAsNyBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgVXNlck1lZGlhQ2xpZW50SW1wbCBt
X3VzZXJNZWRpYUNsaWVudEltcGw7CiAjZW5kaWYKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122087</attachid>
            <date>2012-01-11 13:44:31 -0800</date>
            <delta_ts>2012-01-16 17:26:39 -0800</delta_ts>
            <desc>Tests added</desc>
            <filename>bug-75762-20120111134430.patch</filename>
            <type>text/plain</type>
            <size>50119</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJmOWM4NjI0ZThlOWM0
ZmZhMjMwODI2YWU1OWZlNTU3NTZhNDEyMC4uYzE1NWVjZWVkZGU2YWFjMWVhMzFhOTUyNjcwMmMx
MDVmZGRhZTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTExICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlciBj
bGFzcywgd2hpY2ggZXhpc3RzIHBlciBwYWdlLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojpwb2ludGVyTG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnQ6OnBvaW50ZXJVbmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50Ojppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6d2Via2l0UG9pbnRlcik6CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cG9pbnRlckxvY2tDb250
cm9sbGVyKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvaW50ZXJMb2NrOjpQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVy
TG9jazo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9jazo6dW5sb2NrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrOjppc0xvY2tlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQb2ludGVyTG9jazo6cGFnZSk6CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9jay5oOgorICAg
ICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJM
b2NrQ29udHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVy
TG9ja0NvbnRyb2xsZXI6OnVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0Nv
bnRyb2xsZXI6OmlzTG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJv
bGxlcjo6bG9ja1JlcXVlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tD
b250cm9sbGVyOjpsb2NrTG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRy
b2xsZXI6OmRpc3BhdGNoTG9ja2VkTW91c2VFdmVudCk6CisgICAgICAgICogcGFnZS9Qb2ludGVy
TG9ja0NvbnRyb2xsZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVy
TG9jay5oLgorCiAyMDEyLTAxLTA2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHNob3VsZCBiZSBtb3JlIGZ1bGwtc2Vy
dmljZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzNThhYTBjN2Q1YjJiZTAzZWJlYTZm
NzljMTRlOTQ1M2I3MzA3YjUxLi40ZTFkZjEwYjE0NTQxOTYyNGQ2MWM5ODhjMzEwZjk4NTI0NjUy
YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAx
LTExICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9p
bnRlciBMb2NrOiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHBvaW50ZXIgbG9jayBB
UEkgY29ubmVjdGluZyB0byBXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXIuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViV2lkZ2V0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6cG9p
bnRlckxvY2tSZXF1ZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2lkZ2V0Ojpwb2lu
dGVyTG9ja0xvc3QpOgorICAgICAgICAqIHB1YmxpYy9XZWJXaWRnZXRDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViV2lkZ2V0Q2xpZW50Ojpwb2ludGVyTG9jayk6CisgICAgICAgIChXZWJL
aXQ6OldlYldpZGdldENsaWVudDo6cG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YldpZGdldENsaWVudDo6aXNQb2ludGVyTG9ja2VkVG8pOgorICAgICAgICAqIHNyYy9DaHJvbWVD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cG9pbnRl
ckxvY2spOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpwb2ludGVyVW5sb2Nr
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6aXNQb2ludGVyTG9ja2VkKToK
KyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjbG9zZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnBvaW50ZXJMb2NrUmVxdWVzdFJlc3VsdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpwb2ludGVyTG9ja0xvc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cG9p
bnRlclVubG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjppc1BvaW50ZXJMb2Nr
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cG9pbnRlckxvY2tNb3VzZUV2ZW50
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMi0wMS0wNSAgSm9jaGVuIEVp
c2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaGVjayB3aGV0aGVyIGEg
V2ViVmlldyBleGlzdHMgYmVmb3JlIGFjY2Vzc2luZyBpdCBpbiBTdG9yYWdlQXJlYVByb3h5LiBU
aGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgY2FzZSwgZS5nLiBmb3IgZGV0YWNoZWQgaWZyYW1l
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmMzU1ODY4ZDU4OTlmYWY4NWNlNzU5NjBiMjVlZmQ3ZWFi
ZGNjNzhiLi5hNmIxMWYxNmEyOGUzMzA2MGUzNzY2MjY1OGMzYzA4M2M5NGE0MDg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0zMDI4LDYgKzMwMjgsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvUGVyZm9y
bWFuY2VUaW1pbmcuaCcsCiAgICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9jay5jcHAnLAogICAg
ICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2suaCcsCisgICAgICAgICAgICAncGFnZS9Qb2ludGVy
TG9ja0NvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrQ29udHJv
bGxlci5oJywKICAgICAgICAgICAgICdwYWdlL1ByaW50Q29udGV4dC5jcHAnLAogICAgICAgICAg
ICAgJ3BhZ2UvU2NyZWVuLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAppbmRleCBkM2NmM2ZkYzlkNmI3OTBjMWM2OTUxMDhhYTk3ZjliNTdl
NjEwODI3Li41Mjg1YzE2YzJlMTI4MWFmYzU0OWFiNTcyZTJkMDc2MTkyYThmMjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKQEAgLTE5Niw2ICsxOTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgXAogICAgIG1hY3JvKHNob3cpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0cG9pbnRl
cmxvY2tsb3N0KSBcCisgICAgXAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNI
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDBiYzg2M2JkOGM3YTRhNzFhNDgz
N2IzMWIwMzQ2NjUxOThiYTMwZDkuLjU4OTNiYmQyNWIxM2E5MWMzZjQ1YzRhOTRlMGM2MjBhOTEz
OWNlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI3LDYgKzMyNywxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
VkdJbWFnZUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorICAgICAgICB2aXJ0dWFsIGJvb2wgcG9pbnRlckxvY2soKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcG9pbnRlclVubG9jaygpIHsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQb2ludGVyTG9ja2VkKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyNlbmRpZgorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQo
KSB7IH0KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IDQ5MjY2MzJlZTM2
MzZmNWE1NTRmMTUzMTQwYTI1NTJlYTYyZjdjNGEuLmFkMWZhZWE5MWMwMDNjMDUyZWY0ZmQxYzVk
NTQyYTY0MzZiN2IzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTE4MCw3ICsx
ODAsNyBAQCBHZW9sb2NhdGlvbiogTmF2aWdhdG9yOjpnZW9sb2NhdGlvbigpIGNvbnN0CiBQb2lu
dGVyTG9jayogTmF2aWdhdG9yOjp3ZWJraXRQb2ludGVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
cG9pbnRlcikKLSAgICAgICAgbV9wb2ludGVyID0gUG9pbnRlckxvY2s6OmNyZWF0ZSgpOworICAg
ICAgICBtX3BvaW50ZXIgPSBQb2ludGVyTG9jazo6Y3JlYXRlKG1fZnJhbWUpOwogICAgIHJldHVy
biBtX3BvaW50ZXIuZ2V0KCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDBjNmZm
NTViYTEyNGM4OWJmYTg5OGMyZTBhOTc1NWFlMWUzN2Q3M2EuLjU0NDY4MjJlNjJjNjlhODQ4YjZm
MGUyMjMzYjY3YWZmMTM2OTc5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTksNiArNTksNyBA
QAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5j
bHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTE0Niw2ICsxNDcsOSBAQCBQYWdlOjpQYWdl
KFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAg
ICAsIG1fbm90aWZpY2F0aW9uQ29udHJvbGxlcihOb3RpZmljYXRpb25Db250cm9sbGVyOjpjcmVh
dGUodGhpcywgcGFnZUNsaWVudHMubm90aWZpY2F0aW9uQ2xpZW50KSkKICNlbmRpZgorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgLCBtX3BvaW50ZXJMb2NrQ29udHJvbGxlcihhZG9wdFB0
cihuZXcgUG9pbnRlckxvY2tDb250cm9sbGVyKHRoaXMpKSkKKyNlbmRpZgogI2lmIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCiAgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KHBhZ2VDbGllbnRzLnNwZWVj
aElucHV0Q2xpZW50KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGVmMWQxZDlmYzI3NDRkNDUy
ZjUxNTgzNzI2MWU2Mjk3ODRlMWFlOGUuLmFjOWM1NzhmODE5YjQ2NDk3YmIyYzVjZDNiZWYyODcz
MTZmYjg5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC03Niw2ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAgICAgY2xhc3MgUGFnZUdy
b3VwOwogICAgIGNsYXNzIFBsdWdpbkRhdGE7CisgICAgY2xhc3MgUG9pbnRlckxvY2tDb250cm9s
bGVyOwogICAgIGNsYXNzIFByb2dyZXNzVHJhY2tlcjsKICAgICBjbGFzcyBSYW5nZTsKICAgICBj
bGFzcyBSZW5kZXJUaGVtZTsKQEAgLTE5MCw2ICsxOTEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xs
ZXIqIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciogcG9pbnRlckxvY2tDb250cm9sbGVyKCkgY29u
c3QgeyByZXR1cm4gbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIuZ2V0KCk7IH0KKyNlbmRpZgogI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgICAgIFNwZWVjaElucHV0KiBzcGVlY2hJbnB1dCgp
OwogI2VuZGlmCkBAIC0zODYsNiArMzkwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBPd25QdHI8Tm90aWZpY2F0aW9uQ29udHJvbGxl
cj4gbV9ub3RpZmljYXRpb25Db250cm9sbGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKKyAgICAgICAgT3duUHRyPFBvaW50ZXJMb2NrQ29udHJvbGxlcj4gbV9wb2ludGVyTG9j
a0NvbnRyb2xsZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICAgICBT
cGVlY2hJbnB1dENsaWVudCogbV9zcGVlY2hJbnB1dENsaWVudDsKICAgICAgICAgT3duUHRyPFNw
ZWVjaElucHV0PiBtX3NwZWVjaElucHV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qb2ludGVyTG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmNwcApp
bmRleCBkZmIzY2I0OWEwOWM4OTAyODFiOTA2ODJmYjg1Y2Q4NDFhNmVjYTkxLi41ZjE5OWYxMDQw
NjBjODVlYjdmMGYyMTBiNDdiOTBkODY0ZDFkNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJM
b2NrLmNwcApAQCAtMjUsMTEgKzI1LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUG9pbnRlckxvY2suaCIKIAorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUGFnZS5o
IgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgorCiAjaWYgRU5BQkxFKFBPSU5U
RVJfTE9DSykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Qb2ludGVyTG9jazo6UG9pbnRlckxv
Y2soKQorUG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fZnJh
bWUoZnJhbWUpCiB7CiB9CiAKQEAgLTM5LDE4ICs0NCwyMiBAQCBQb2ludGVyTG9jazo6flBvaW50
ZXJMb2NrKCkKIAogdm9pZCBQb2ludGVyTG9jazo6bG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIHJl
dHVybiBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5sb2NrKHRhcmdldCwgc3VjY2Vz
c0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2spOwogfQogCiB2b2lkIFBvaW50ZXJMb2NrOjp1bmxv
Y2soKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICByZXR1cm4gcGFnZSgpLT5wb2lu
dGVyTG9ja0NvbnRyb2xsZXIoKS0+dW5sb2NrKCk7CiB9CiAKIGJvb2wgUG9pbnRlckxvY2s6Omlz
TG9ja2VkKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5pc0xvY2tlZCgpOwor
fQorCitQYWdlKiBQb2ludGVyTG9jazo6cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJh
bWUgPyBtX2ZyYW1lLT5wYWdlKCkgOiAwOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BvaW50ZXJMb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2Nr
LmgKaW5kZXggYmU3YzMxNzhmNThmZTc5OWM2MTFjZjA2MWNjZGVkZTkzMmJhZGIwMy4uZTU5MWU3
NTJmODZhM2E5NmZlNzJkMGUyMGYyNzI3MzQyY2ZkNjdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qb2ludGVyTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRl
ckxvY2suaApAQCAtMzQsMTAgKzM0LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEVsZW1lbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNzIFBhZ2U7CiAKIGNsYXNzIFBvaW50ZXJMb2Nr
IDogcHVibGljIFJlZkNvdW50ZWQ8UG9pbnRlckxvY2s+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQb2ludGVyTG9jaz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBv
aW50ZXJMb2NrKCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9pbnRlckxvY2s+IGNyZWF0
ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb2ludGVyTG9jayhmcmFtZSkp
OyB9CiAKICAgICB+UG9pbnRlckxvY2soKTsKIApAQCAtNDYsNyArNDgsMTEgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNMb2NrZWQoKTsKIAogcHJpdmF0ZToKLSAgICBQb2ludGVyTG9jaygpOworICAg
IFBvaW50ZXJMb2NrKEZyYW1lKik7CisKKyAgICBQYWdlKiBwYWdlKCkgY29uc3Q7CisKKyAgICBG
cmFtZSogbV9mcmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDFjODZj
YTBlZDQzNWU0NGNiZWE2MjUxMWQ3ZjYyMTNmY2ViNmFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTEx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUG9pbnRl
ckxvY2tDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQb2ludGVyTG9ja0NvbnRyb2xsZXI6OlBvaW50ZXJM
b2NrQ29udHJvbGxlcihQYWdlKiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCit7Cit9CisKK3Zv
aWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpsb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+
IGZhaWx1cmVDYWxsYmFjaykKK3sKKyAgICBpZiAoaXNMb2NrZWQoKSkgeworICAgICAgICBpZiAo
bV9lbGVtZW50ID09IHRhcmdldCkgeworICAgICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykK
KyAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBsb2NrTG9zdCgpOworICAgICAgICAgICAgbV9lbGVtZW50
ID0gdGFyZ2V0OworICAgICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgICAg
ICAgICBzdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgaWYgKG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wb2ludGVyTG9jaygpKSB7CisgICAg
ICAgIG1fZWxlbWVudCA9IHRhcmdldDsKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSBzdWNj
ZXNzQ2FsbGJhY2s7CisgICAgICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gZmFpbHVyZUNhbGxiYWNr
OworICAgIH0gZWxzZSBpZiAoZmFpbHVyZUNhbGxiYWNrKQorICAgICAgICBmYWlsdXJlQ2FsbGJh
Y2stPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjp1bmxv
Y2soKQoreworICAgIHJldHVybiBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cG9pbnRlclVu
bG9jaygpOworfQorCitib29sIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6aXNMb2NrZWQoKQorewor
ICAgIHJldHVybiBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+aXNQb2ludGVyTG9ja2VkKCk7
Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpsb2NrUmVxdWVzdFJlc3VsdChib29s
IHN1Y2NlZWRlZCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkgLy8gVE9ETyBzaG91bGQgd2UgY2hl
Y2s/IHx8ICFtX2VsZW1lbnQtPmluRG9jdW1lbnQoKSkKKyAgICAgIHJldHVybjsKKworICAgIGlm
IChzdWNjZWVkZWQpIHsKKyAgICAgICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKQorICAgICAgICAg
ICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKG1fZmFpbHVyZUNhbGxiYWNrKQorICAgICAgICAgICAgbV9mYWlsdXJlQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KCk7CisgICAgICAgIG1fZWxlbWVudCA9IDA7CisgICAgfQorICAgIG1fc3Vj
Y2Vzc0NhbGxiYWNrID0gMDsKKyAgICBtX2ZhaWx1cmVDYWxsYmFjayA9IDA7Cit9CisKK3ZvaWQg
UG9pbnRlckxvY2tDb250cm9sbGVyOjpsb2NrTG9zdCgpCit7CisgICAgaWYgKG1fZWxlbWVudCkg
eworICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkud2Via2l0cG9pbnRlcmxvY2tsb3N0RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgICAg
IG1fZWxlbWVudCA9IDA7CisgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gMDsKKyAgICAgICAg
bV9mYWlsdXJlQ2FsbGJhY2sgPSAwOworICAgIH0KK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRy
b2xsZXI6OmRpc3BhdGNoTG9ja2VkTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKK3sKKyAgICBtX2VsZW1lbnQt
PmRpc3BhdGNoTW91c2VFdmVudChldmVudCwgZXZlbnRUeXBlLCBldmVudC5jbGlja0NvdW50KCkp
OworCisgICAgLy8gQ3JlYXRlIGNsaWNrIGV2ZW50cworICAgIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcygpLm1vdXNldXBFdmVudCkKKyAgICAgICAgbV9lbGVtZW50LT5kaXNwYXRjaE1vdXNl
RXZlbnQoZXZlbnQsIGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBldmVudC5jbGlja0NvdW50KCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRF
Ul9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmU2NmYxMzI5YjA1NGZmNzM0Y2E5ZGZlZjViYWM5OWRjM2ViYjNhYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQb2ludGVyTG9ja0NvbnRy
b2xsZXJfaAorI2RlZmluZSBQb2ludGVyTG9ja0NvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKKworI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBFbGVtZW50OworY2xhc3MgUGFnZTsKK2NsYXNzIFBsYXRmb3Jt
TW91c2VFdmVudDsKKworY2xhc3MgUG9pbnRlckxvY2tDb250cm9sbGVyIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShQb2ludGVyTG9ja0NvbnRyb2xsZXIpOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlcihQYWdlKik7CisK
KyAgICB2b2lkIGxvY2soV2ViQ29yZTo6RWxlbWVudCogdGFyZ2V0LCBQYXNzUmVmUHRyPFdlYkNv
cmU6OlZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlZv
aWRDYWxsYmFjaz4gZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2b2lkIHVubG9jaygpOworICAgIGJv
b2wgaXNMb2NrZWQoKTsKKworICAgIHZvaWQgbG9ja1JlcXVlc3RSZXN1bHQoYm9vbCBzdWNjZWVk
ZWQpOworICAgIHZvaWQgbG9ja0xvc3QoKTsKKyAgICB2b2lkIGRpc3BhdGNoTG9ja2VkTW91c2VF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSk7CisKK3ByaXZhdGU6CisgICAgUGFnZSogbV9wYWdlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpFbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4g
bV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgUmVmUHRyPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4gbV9m
YWlsdXJlQ2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjZW5kaWYgLy8gUG9pbnRlckxvY2tDb250cm9sbGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKaW5kZXggM2Y1OTRm
MzY5NTUyMmY2NmJhNTljYTNlZTU5NDQ3MzVmZGQ0ZWNhNi4uMjFmY2Q4NzU1NTFhY2FlOTZhNmVl
MTYwMTU0YzVkYWE0ZGNjYWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
V2lkZ2V0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJJbnB1dEV2ZW50OworY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYlN0cmluZzsKIHN0
cnVjdCBXZWJQb2ludDsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CkBA
IC0xNzAsNiArMTcxLDExIEBAIHB1YmxpYzoKICAgICAvLyB0byByZW5kZXIgaXRzIGNvbnRlbnRz
LgogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgLy8gQXN5bmNocm9ub3VzIHJlc3VsdCB0byBhIHBl
bmRpbmcgcG9pbnRlciBsb2NrIHJlcXVlc3QuCisgICAgdmlydHVhbCB2b2lkIHBvaW50ZXJMb2Nr
UmVxdWVzdFJlc3VsdChib29sIHN1Y2Nlc3MpIHsgfQorICAgIC8vIFBvaW50ZXIgbG9jayB3YXMg
aGVsZCwgYnV0IGhhcyBiZWVuIGxvc3QuCisgICAgdmlydHVhbCB2b2lkIHBvaW50ZXJMb2NrTG9z
dCgpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYldpZGdldCgpIHsgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKaW5kZXggZTViNDA1
ZGVhMTEyNjBjYWFmNzI5NTc3ZTU1NDM0MjA2MTBjZmM4Ni4uM2FhMzFjOGRkOWE5NTQ1YjFkNzQx
ZDEyN2NiZWUyNDFmZDlkMzA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViV2lkZ2V0Q2xpZW50LmgKQEAgLTEyNiw2ICsxMjYsMTIgQEAgcHVibGljOgogICAgIC8v
IHJlc2V0IHRoZSBpbnB1dCBtZXRob2QgYnkgY2FuY2VsbGluZyBhbnkgb25nb2luZyBjb21wb3Np
dGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRJbnB1dE1ldGhvZCgpIHsgfQogCisgICAgLy8g
UmVxdWVzdHMgdG8gbG9jay91bmxvY2sgdGhlIG1vdXNlIGN1cnNvcgorICAgIHZpcnR1YWwgYm9v
bCBwb2ludGVyTG9jayhXZWJLaXQ6OldlYldpZGdldCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIHBvaW50ZXJVbmxvY2soV2ViS2l0OjpXZWJXaWRnZXQqKSB7IH0KKyAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIE1vdXNlIExvY2sgaXMgYWN0aXZlIGFuZCB0aGUgcG9pbnRl
ciBpcyBsb2NrZWQuCisgICAgdmlydHVhbCBib29sIGlzUG9pbnRlckxvY2tlZFRvKFdlYktpdDo6
V2ViV2lkZ2V0KikgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJXaWRn
ZXRDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCmluZGV4IDVmMjg1MWJiNTg3N2M5ZmY3NDI2ZDdhOGMxZTVkMTM4NjRm
YTAyY2YuLjNiYzc0ZjQ1MWJkOTgxYTc2ODczOWZkOWNhZWRjMzhmNGJiYjE1ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCkBAIC0xMDE4
LDQgKzEwMTgsMjEgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpudW1XaGVlbEV2ZW50SGFuZGxl
cnNDaGFuZ2VkKHVuc2lnbmVkIG51bWJlck9mV2hlZWxIYW5kbGUKICAgICBtX3dlYlZpZXctPm51
bWJlck9mV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChudW1iZXJPZldoZWVsSGFuZGxlcnMpOwog
fQogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKK2Jvb2wgQ2hyb21lQ2xpZW50SW1wbDo6cG9p
bnRlckxvY2soKQoreworICAgIHJldHVybiBtX3dlYlZpZXctPnBvaW50ZXJMb2NrKCk7Cit9CisK
K3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6cG9pbnRlclVubG9jaygpCit7CisgICAgcmV0dXJuIG1f
d2ViVmlldy0+cG9pbnRlclVubG9jaygpOworfQorCitib29sIENocm9tZUNsaWVudEltcGw6Omlz
UG9pbnRlckxvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fd2ViVmlldy0+aXNQb2ludGVyTG9ja2Vk
KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5kZXggMjExM2VjMWFmNGY4MWQ3ZDE5
YmVjYTY1MTg3MzIzMjE3N2FjNDdkZC4uYWJkODcyMmI0NzI2ZDA0MzkxYTA3NjZlNGIxZjQzNzky
NjljZGE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudElt
cGwuaApAQCAtMjA1LDYgKzIwNSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24pIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsK
IAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdmlydHVhbCBib29sIHBvaW50ZXJMb2Nr
KCk7CisgICAgdmlydHVhbCB2b2lkIHBvaW50ZXJVbmxvY2soKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNQb2ludGVyTG9ja2VkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIGdldFBvcHVw
TWVudUluZm8oV2ViQ29yZTo6UG9wdXBDb250YWluZXIqLCBXZWJQb3B1cE1lbnVJbmZvKik7CiAg
ICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ3Vyc29ySW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGI5MzU1ZmM4MzMwODQzYjUxY2E1YzQz
NWM3N2I3ZDY0MzFjZjAyNjguLmM0MTQ2MjM1MmEwMjU5MTVmZjMzMTAwZjM4YWZjMjA0YzBkNWYz
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTkw
LDYgKzkwLDggQEAKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50Lmgi
CisjaW5jbHVkZSAiUG9pbnRlckxvY2suaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJQb3B1cENvbnRhaW5lci5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNs
aWVudC5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgpAQCAtMTAxMCw2ICsxMDEyLDkg
QEAgV2ViVmlld0ltcGwqIFdlYlZpZXdJbXBsOjpmcm9tUGFnZShQYWdlKiBwYWdlKQogCiB2b2lk
IFdlYlZpZXdJbXBsOjpjbG9zZSgpCiB7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBw
b2ludGVyVW5sb2NrKCk7CisjZW5kaWYKICAgICBSZWZQdHI8V2ViRnJhbWVJbXBsPiBtYWluRnJh
bWVJbXBsOwogCiAgICAgaWYgKG1fcGFnZSkgewpAQCAtMTMyOSw2ICsxMzM0LDEzIEBAIGJvb2wg
V2ViVmlld0ltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgaW5wdXRF
dmVudCkKIAogICAgIG1fY3VycmVudElucHV0RXZlbnQgPSAmaW5wdXRFdmVudDsKIAorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgaWYgKGlzUG9pbnRlckxvY2tlZCgpICYmIFdlYklucHV0
RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUoaW5wdXRFdmVudC50eXBlKSkgeworICAgICAgcG9pbnRl
ckxvY2tNb3VzZUV2ZW50KGlucHV0RXZlbnQpOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
I2VuZGlmCisKICAgICBpZiAobV9tb3VzZUNhcHR1cmVOb2RlICYmIFdlYklucHV0RXZlbnQ6Omlz
TW91c2VFdmVudFR5cGUoaW5wdXRFdmVudC50eXBlKSkgewogICAgICAgICAvLyBTYXZlIG1fbW91
c2VDYXB0dXJlTm9kZSBzaW5jZSBtb3VzZUNhcHR1cmVMb3N0KCkgd2lsbCBjbGVhciBpdC4KICAg
ICAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX21vdXNlQ2FwdHVyZU5vZGU7CkBAIC0xNzQwLDYg
KzE3NTIsMjIgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlKCkgY29uc3QKICNlbmRpZgogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpwb2ludGVyTG9ja1Jl
cXVlc3RSZXN1bHQoYm9vbCBzdWNjZWVkZWQpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykK
KyAgICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigp
LT5sb2NrUmVxdWVzdFJlc3VsdChzdWNjZWVkZWQpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViVmll
d0ltcGw6OnBvaW50ZXJMb2NrTG9zdCgpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5s
b2NrTG9zdCgpOworI2VuZGlmCit9CisKIC8vIFdlYlZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViU2V0
dGluZ3MqIFdlYlZpZXdJbXBsOjpzZXR0aW5ncygpCkBAIC0zMTQ3LDQgKzMxNzUsNDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6cmVzZXRHZXN0dXJlUmVjb2duaXplcigpCiB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCitib29sIFdlYlZpZXdJbXBsOjpwb2ludGVyTG9jaygpCit7
CisgICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5wb2ludGVyTG9jayh0aGlzKTsKK30K
Kwordm9pZCBXZWJWaWV3SW1wbDo6cG9pbnRlclVubG9jaygpCit7CisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+cG9pbnRlclVubG9jayh0aGlzKTsKK30KKworYm9vbCBXZWJW
aWV3SW1wbDo6aXNQb2ludGVyTG9ja2VkKCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9j
bGllbnQtPmlzUG9pbnRlckxvY2tlZFRvKHRoaXMpOworfQorCit2b2lkIFdlYlZpZXdJbXBsOjpw
b2ludGVyTG9ja01vdXNlRXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAg
QXRvbWljU3RyaW5nIGV2ZW50VHlwZTsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93bjoKKyAgICAgICAgZXZlbnRUeXBlID0gZXZlbnRO
YW1lcygpLm1vdXNlZG93bkV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Ok1vdXNlVXA6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5tb3VzZXVw
RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VNb3Zl
OgorICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KKworICAgIGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2Fz
dDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpOworCisgICAgaWYgKHBhZ2UoKSkKKyAgICAg
ICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2
ZW50KAorICAgICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWluRnJhbWVJbXBs
KCktPmZyYW1lVmlldygpLCBtb3VzZUV2ZW50KSwKKyAgICAgICAgICAgIGV2ZW50VHlwZSk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAppbmRleCBlNWI1YTUyNWYxM2FiY2JiY2Q2YzQ1ZDc0ZmEyOTkxZGYz
NTU3MTY3Li5lZTc1ZWRjNTY3M2E1ZWI3MjBjOGY0MTFlNGIxMThlOGFhY2EyZTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTEyOSw2ICsxMjksOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhcmV0T3JTZWxlY3Rpb25SYW5nZShzaXplX3QqIGxv
Y2F0aW9uLCBzaXplX3QqIGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rp
b24oV2ViVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9pbnRl
ckxvY2tSZXF1ZXN0UmVzdWx0KGJvb2wgc3VjY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIHBvaW50
ZXJMb2NrTG9zdCgpOwogCiAgICAgLy8gV2ViVmlldyBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsaXplTWFpbkZyYW1lKFdlYkZyYW1lQ2xpZW50Kik7CkBAIC00NjUsNiArNDY3LDE0
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKTsKICAgICBib29s
IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAKKyAgICAvLyBQb2ludGVyIExvY2sgY2FsbHMgYWxs
b3cgYSBwYWdlIHRvIGNhcHR1cmUgYWxsIG1vdXNlIGV2ZW50cyBhbmQKKyAgICAvLyBkaXNhYmxl
IHRoZSBzeXN0ZW0gY3Vyc29yLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdmlydHVh
bCBib29sIHBvaW50ZXJMb2NrKCk7CisgICAgdmlydHVhbCB2b2lkIHBvaW50ZXJVbmxvY2soKTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNQb2ludGVyTG9ja2VkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICBib29sIGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKTsKICAgICBmbG9hdCBjbGFt
cFBhZ2VTY2FsZUZhY3RvclRvTGltaXRzKGZsb2F0IHNjYWxlKTsKQEAgLTUxOCw2ICs1MjgsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdm9pZCBwb2ludGVyTG9ja01vdXNlRXZl
bnQoY29uc3QgV2ViSW5wdXRFdmVudCYpOworI2VuZGlmCisKICAgICBXZWJWaWV3Q2xpZW50KiBt
X2NsaWVudDsKICAgICBXZWJBdXRvZmlsbENsaWVudCogbV9hdXRvZmlsbENsaWVudDsKICAgICBX
ZWJQZXJtaXNzaW9uQ2xpZW50KiBtX3Blcm1pc3Npb25DbGllbnQ7CkBAIC02NzksNiArNjkzLDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFVzZXJNZWRpYUNsaWVu
dEltcGwgbV91c2VyTWVkaWFDbGllbnRJbXBsOwogI2VuZGlmCisKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGE4YmI1NmU0YzQ3Njk5NzIzZTM0NmIyMTNjZDhhMGFkODk0NmMwY2IuLjY0ZWE5Mjg5
NjMwOGY2YmRiMTZmZjE0YTJlZmNhYjM0MDE1NDhkYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wMS0xMSAg
VmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBvaW50ZXIg
TG9jazogSW1wbGVtZW50IHBvaW50ZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIG5lY2Vzc2FyeSBmdW5jdGlvbmFp
bGl0eSBmb3IgcG9pbnRlciBsb2NrIGluIFdlYlZpZXdIb3N0CisgICAgICAgIGFuZCBhZGRlZCBo
b29rcyB0byBMYXlvdXRUZXN0Q29udHJvbGxlciBmb3IgdGVzdHM6CisgICAgICAgICAgICAgICBw
b2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2lu
dGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVy
LWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1s
b2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRCYWNraW5nU2NhbGVGYWN0
b3JDYWxsYmFjayk6CisgICAgICAgIChwb2ludGVyTG9ja0xvc3QpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cG9pbnRlckxvY2tMb3N0KToKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpwb2ludGVyTG9ja1dpbGxGYWlsQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXdIb3N0Ojpwb2ludGVyTG9jayk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6
cG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6aXNQb2ludGVyTG9ja2VkVG8p
OgorICAgICAgICAoV2ViVmlld0hvc3Q6OnBvaW50ZXJMb2NrUmVxdWVzdFJlc3VsdCk6CisgICAg
ICAgIChXZWJWaWV3SG9zdDo6cG9pbnRlckxvY2tMb3N0KToKKyAgICAgICAgKFdlYlZpZXdIb3N0
OjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
aDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpwb2ludGVyTG9ja1dpbGxGYWlsQXN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91
c2x5KToKKwogMjAxMi0wMS0wNiAgSnVuZ0ppayBMZWUgIDxqdW5namlrLmxlZUBzYW1zdW5nLmNv
bT4KIAogICAgICAgICBbRUZMXSBBZGQgcHJlLXJlbmRlciBoYW5kbGluZyBjb2RlIGluIEVXZWJM
YXVuY2hlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAppbmRleCA2YzEzZDkzMDk0NmQ1MTlmNjA1NzkwN2Y1YzQwZGQ2MmZmNzUwYzk3Li5lYjIyYTEy
MmJmMTYyMTc0YTBiOGJlMWE3OWU1YjI2Nzg4MTBjNWJlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMjA3LDYgKzIyMDcsMTUgQEAgc3Rh
dGljIEpTVmFsdWVSZWYgc2V0QmFja2luZ1NjYWxlRmFjdG9yQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmUKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHBvaW50ZXJMb2NrTG9zdChKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0
aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2Jq
ZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QmFja2luZ1NjYWxlRmFjdG9yKGJhY2tpbmdTY2Fs
ZUZhY3Rvcik7CisKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogLy8gU3RhdGljIFZhbHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRHbG9iYWxGbGFn
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpT
U3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDdmYzIxMzYyZjM0M2QzOWZhNTE0YmU1NDRjODYxMDNhY2UxYjgxMjkuLjhjNDY1YzNh
Mzg3ODNhYTBlNGQzYzc3Nzg5OTg5YWY1MWY2Y2E3ZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE0Miw2
ICsxNDIsOSBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVz
dFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJwYXRoVG9Mb2NhbFJlc291cmNlIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKICAgICBiaW5kTWV0aG9k
KCJwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQpOwogICAgIGJpbmRNZXRo
b2QoInBhdXNlVHJhbnNpdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKTsKKyAgICBiaW5k
TWV0aG9kKCJwb2ludGVyTG9ja0xvc3QiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBvaW50ZXJM
b2NrTG9zdCk7CisgICAgYmluZE1ldGhvZCgicG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91
c2x5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwb2ludGVyTG9ja1dpbGxGYWlsQXN5bmNocm9u
b3VzbHkpOworICAgIGJpbmRNZXRob2QoInBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpwb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNs
eSk7CiAgICAgYmluZE1ldGhvZCgicXVldWVCYWNrTmF2aWdhdGlvbiIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cXVldWVCYWNrTmF2aWdhdGlvbik7CiAgICAgYmluZE1ldGhvZCgicXVldWVGb3J3
YXJkTmF2aWdhdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6cXVldWVGb3J3YXJkTmF2aWdh
dGlvbik7CiAgICAgYmluZE1ldGhvZCgicXVldWVMb2FkaW5nU2NyaXB0IiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpxdWV1ZUxvYWRpbmdTY3JpcHQpOwpAQCAtMjE1MCwzICsyMTUzLDIyIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1ZGlvRGF0YShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyCiAKICAgICBzZXRTaG91bGREdW1wQXNBdWRpbyh0cnVlKTsK
IH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cG9pbnRlckxvY2tMb3N0KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVz
dWx0LT5zZXROdWxsKCk7CisgICAgbV9zaGVsbC0+d2ViVmlldygpLT5wb2ludGVyTG9ja0xvc3Qo
KTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cG9pbnRlckxvY2tXaWxsRmFpbEFz
eW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50
KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgbV9zaGVsbC0+d2ViVmll
d0hvc3QoKS0+cG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5KCk7Cit9CisKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+cG9pbnRl
ckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNzFiMWI0MjI2
OTQ3N2QzZGY1OGNhYzI4ZGVmM2ZlNGZlNDI3ZmU0My4uMWQxM2FlOWE4NTgwNTdlOGY3OTBlNzc1
MzJhYTQ3NDIzMjRjODZjNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC00MjksNiArNDI5LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGVuYWJsZUZpeGVkTGF5b3V0TW9kZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRGaXhlZExheW91dFNpemUoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgdm9pZCBwb2ludGVyTG9ja0xvc3QoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgcG9pbnRlckxvY2tXaWxs
RmFpbFN5bmNocm9ub3VzbHkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwor
ICAgIHZvaWQgcG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcg
bWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lkIHNldFdvcmtR
dWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4
IDFiMDY4N2RkMDZmNWQ5MTAzM2ZiMWYxYmU2YzQ5ZTJkNDBiNTVhY2YuLjdmOWM0ZTY0ZWJhNGU5
YzY0MjMyNzExMDlmMTA3MjY2MDU2YjYyYjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTc0OCw2ICs3NDgsNDggQEAgV2ViU2NyZWVuSW5m
byBXZWJWaWV3SG9zdDo6c2NyZWVuSW5mbygpCiAgICAgcmV0dXJuIGluZm87CiB9CiAKK2Jvb2wg
V2ViVmlld0hvc3Q6OnBvaW50ZXJMb2NrKFdlYktpdDo6V2ViV2lkZ2V0KikKK3sKKyAgICBzd2l0
Y2ggKG1fcG9pbnRlckxvY2tQbGFubmVkUmVzdWx0KSB7CisgICAgY2FzZSBQT0lOVEVSX0xPQ0tf
V0lMTF9TVUNDRUVEOgorICAgICAgICBtX3BvaW50ZXJMb2NrZWQgPSB0cnVlOworICAgICAgICBw
b3N0RGVsYXllZFRhc2sobmV3IEhvc3RNZXRob2RUYXNrKHRoaXMsICZXZWJWaWV3SG9zdDo6cG9p
bnRlckxvY2tSZXF1ZXN0UmVzdWx0KSwgMCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNh
c2UgUE9JTlRFUl9MT0NLX1dJTExfRkFJTF9BU1lOQzoKKyAgICAgICAgQVNTRVJUKCFtX3BvaW50
ZXJMb2NrZWQpOworICAgICAgICBwb3N0RGVsYXllZFRhc2sobmV3IEhvc3RNZXRob2RUYXNrKHRo
aXMsICZXZWJWaWV3SG9zdDo6cG9pbnRlckxvY2tSZXF1ZXN0UmVzdWx0KSwgMCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGNhc2UgUE9JTlRFUl9MT0NLX1dJTExfRkFJTF9TWU5DOgorICAg
ICAgICBBU1NFUlQoIW1fcG9pbnRlckxvY2tlZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJWaWV3SG9zdDo6cG9pbnRlclVubG9jayhXZWJL
aXQ6OldlYldpZGdldCopCit7CisgICAgbV9wb2ludGVyTG9ja2VkID0gZmFsc2U7CisgICAgcG9z
dERlbGF5ZWRUYXNrKG5ldyBIb3N0TWV0aG9kVGFzayh0aGlzLCAmV2ViVmlld0hvc3Q6OnBvaW50
ZXJMb2NrTG9zdCksIDApOworfQorCitib29sIFdlYlZpZXdIb3N0Ojppc1BvaW50ZXJMb2NrZWRU
byhXZWJLaXQ6OldlYldpZGdldCopCit7CisgICAgcmV0dXJuIG1fcG9pbnRlckxvY2tlZDsKK30K
Kwordm9pZCBXZWJWaWV3SG9zdDo6cG9pbnRlckxvY2tSZXF1ZXN0UmVzdWx0KCkKK3sKKyAgICB3
ZWJXaWRnZXQoKS0+cG9pbnRlckxvY2tSZXF1ZXN0UmVzdWx0KG1fcG9pbnRlckxvY2tlZCk7Cisg
ICAgd2ViVmlldygpLT5wb2ludGVyTG9ja1JlcXVlc3RSZXN1bHQobV9wb2ludGVyTG9ja2VkKTsK
K30KKwordm9pZCBXZWJWaWV3SG9zdDo6cG9pbnRlckxvY2tMb3N0KCkKK3sKKyAgICB3ZWJXaWRn
ZXQoKS0+cG9pbnRlckxvY2tMb3N0KCk7Cit9CisKIHZvaWQgV2ViVmlld0hvc3Q6OnNob3coV2Vi
TmF2aWdhdGlvblBvbGljeSkKIHsKICAgICBtX2hhc1dpbmRvdyA9IHRydWU7CkBAIC0xMjg0LDYg
KzEzMjYsOCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpyZXNldCgpCiAgICAgbV9yZXF1ZXN0UmV0dXJu
TnVsbCA9IGZhbHNlOwogICAgIG1faXNQYWludGluZyA9IGZhbHNlOwogICAgIG1fY2FudmFzLmNs
ZWFyKCk7CisgICAgbV9wb2ludGVyTG9ja2VkID0gZmFsc2U7CisgICAgbV9wb2ludGVyTG9ja1Bs
YW5uZWRSZXN1bHQgPSBQT0lOVEVSX0xPQ0tfV0lMTF9TVUNDRUVEOwogCiAgICAgbV9uYXZpZ2F0
aW9uQ29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBUZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIodGhp
cykpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRl
eCAwYmM0YzM4ZTY3Mzk1ZGRiMmM4ZDQ4ZGRhZTE0MWJjMGJlY2I2NjMzLi5jOTdlZDZjZGY4MTNj
MWE1ZTg1MjI1NDIxNzJlMjAyMDBjYTc1ODcyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTEwNCw2ICsxMDQsOSBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6Oldl
YlZpZXdDbAogCiAgICAgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKiBzcGVl
Y2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyByZXR1cm4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrLmdldCgpOyB9CiAKKyAgICB2b2lkIHBvaW50ZXJMb2NrV2lsbEZhaWxBc3luY2hyb25vdXNs
eSgpIHsgbV9wb2ludGVyTG9ja1BsYW5uZWRSZXN1bHQgPSBQT0lOVEVSX0xPQ0tfV0lMTF9GQUlM
X0FTWU5DOyB9CisgICAgdm9pZCBwb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpIHsg
bV9wb2ludGVyTG9ja1BsYW5uZWRSZXN1bHQgPSBQT0lOVEVSX0xPQ0tfV0lMTF9GQUlMX1NZTkM7
IH0KKwogICAgIC8vIE5hdmlnYXRpb25Ib3N0CiAgICAgdmlydHVhbCBib29sIG5hdmlnYXRlKGNv
bnN0IFRlc3ROYXZpZ2F0aW9uRW50cnkmLCBib29sIHJlbG9hZCk7CiAKQEAgLTE3MSw2ICsxNzQs
OSBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGll
bnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbAogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJSZWN0
IHJvb3RXaW5kb3dSZWN0KCk7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlJlY3Qgd2luZG93UmVz
aXplclJlY3QoKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU2NyZWVuSW5mbyBzY3JlZW5JbmZv
KCk7CisgICAgdmlydHVhbCBib29sIHBvaW50ZXJMb2NrKFdlYktpdDo6V2ViV2lkZ2V0Kik7Cisg
ICAgdmlydHVhbCB2b2lkIHBvaW50ZXJVbmxvY2soV2ViS2l0OjpXZWJXaWRnZXQqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNQb2ludGVyTG9ja2VkVG8oV2ViS2l0OjpXZWJXaWRnZXQqKTsKIAogICAg
IC8vIFdlYktpdDo6V2ViRnJhbWVDbGllbnQKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUGx1Z2lu
KiBjcmVhdGVQbHVnaW4oV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViUGx1Z2lu
UGFyYW1zJik7CkBAIC0yODAsNiArMjg2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0U2Ny
b2xsUmVjdCgpOwogICAgIHZvaWQgZGlzY2FyZEJhY2tpbmdTdG9yZSgpOwogCisgICAgdm9pZCBw
b2ludGVyTG9ja1JlcXVlc3RSZXN1bHQoKTsKKyAgICB2b2lkIHBvaW50ZXJMb2NrTG9zdCgpOwor
CiAgICAgLy8gQ2F1c2VzIG5hdmlnYXRpb24gYWN0aW9ucyBqdXN0IHByaW50b3V0IHRoZSBpbnRl
bmRlZCBuYXZpZ2F0aW9uIGluc3RlYWQKICAgICAvLyBvZiB0YWtpbmcgeW91IHRvIHRoZSBwYWdl
LiBUaGlzIGlzIHVzZWQgZm9yIGNhc2VzIGxpa2UgbWFpbHRvLCB3aGVyZSB5b3UKICAgICAvLyBk
b24ndCBhY3R1YWxseSB3YW50IHRvIG9wZW4gdGhlIG1haWwgcHJvZ3JhbS4KQEAgLTM2Myw2ICsz
NzIsMTMgQEAgcHJpdmF0ZToKIAogICAgIFRhc2tMaXN0IG1fdGFza0xpc3Q7CiAgICAgVmVjdG9y
PFdlYktpdDo6V2ViV2lkZ2V0Kj4gbV9wb3B1cG1lbnVzOworCisgICAgYm9vbCBtX3BvaW50ZXJM
b2NrZWQ7CisgICAgZW51bSB7CisgICAgICBQT0lOVEVSX0xPQ0tfV0lMTF9TVUNDRUVELAorICAg
ICAgUE9JTlRFUl9MT0NLX1dJTExfRkFJTF9BU1lOQywKKyAgICAgIFBPSU5URVJfTE9DS19XSUxM
X0ZBSUxfU1lOQworICAgIH0gbV9wb2ludGVyTG9ja1BsYW5uZWRSZXN1bHQ7CiB9OwogCiAjZW5k
aWYgLy8gV2ViVmlld0hvc3RfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllYmIxYmRmNzA4MGZlNDY0YWE2YWVhNGE0OTlk
ZTYzMDBjMjEwNDIuLjc4YzQzODk2Yzc5NDFiODJhNTc0N2MwNjdjNzJmZGNiNmU0ODZjZGEgMTAw
NzU1Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMS0xMSAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFBvaW50ZXIgTG9jazogSW1wbGVtZW50IHBvaW50ZXIg
aW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NTc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVzcG9uc2VzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxp
dmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0
LWV2ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0wNiAgQ3NhYmEgT3N6dHJv
Z29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJk
ZW5pbmcuIFNraXAgYSBuZXcgZmFpbGluZyB0ZXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJjNmI4MGU3OGZiYjczY2JhNTQxZWNiMWZlMTBhODUyYTczYjJkZTUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBjYWxsaW5nIGxvY2sgd2hlbiBhbHJlYWR5
IGluIGEgbG9ja2VkIHN0YXRlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBMb2NrIHRhcmdldDEgc3VjY2VlZGVkLgorUEFTUyBMb2NrIHRhcmdldDEgc3VjY2VlZGVkIGFn
YWluLgorUEFTUyBleHBlY3RUYXJnZXQxVW5sb2NrIGlzIHRydWUKK1BBU1MgTG9jayB0YXJnZXQy
IHN1Y2NlZWRlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5
LWxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2Nr
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mOWVhYzg3YjY4NGRjODBkODUxYTNiY2Y4MDE0N2VmMDE3MWM2
Y2FlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxy
ZWFkeS1sb2NrZWQuaHRtbApAQCAtMCwwICsxLDcyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+CisgIDxkaXYgaWQ9InRhcmdl
dDIiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGNhbGxp
bmcgbG9jayB3aGVuIGFscmVhZHkgaW4gYSBsb2NrZWQgc3RhdGUuIikKKyAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB0YXJnZXRkaXYxID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldDEiKTsKKyAgICB0YXJnZXRkaXYyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldDIiKTsKKworICAgIHZhciBleHBlY3RUYXJnZXQxVW5sb2NrID0gZmFsc2U7Cisg
ICAgdGFyZ2V0ZGl2MS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QiLAor
ICAgICAgICBmdW5jdGlvbiAoKSB7IHNob3VsZEJlKCJleHBlY3RUYXJnZXQxVW5sb2NrIiwgInRy
dWUiKTsgfSk7CisKKyAgICB0YXJnZXRkaXYyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdHBvaW50
ZXJsb2NrbG9zdCIsCisgICAgICAgIGZ1bmN0aW9uICgpIHsgdGVzdEZhaWxlZCgiVW5leHBlY3Rl
ZCB0YXJnZXRkaXYyIHBvaW50ZXJsb2NrbG9zdC4iKTsgfSk7CisKKyAgICBjdXJyZW50U3RlcCA9
IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXAr
K10oKTsKKyAgICB9CisgICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYxLAorICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9j
ayB0YXJnZXQxIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgp
OworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0s
CisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2lu
dGVyLmxvY2sodGFyZ2V0ZGl2MSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MSBzdWNjZWVkZWQgYWdhaW4u
Iik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGV4cGVjdFRhcmdldDFVbmxvY2sgPSB0cnVlOworICAgICAgICAg
ICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYyLAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0
YXJnZXQyIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOwor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSwK
KyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRl
ci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9p
bnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3
OGUzODNhNzgxNDg0N2JiNzQ5MGQ5OTJiMmFjN2E0ZTYwYjlkZmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBhc3luY2hyb25vdXMgcmVzdWx0cyBvZiBjYWxsaW5n
IGxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlciBpcyBkZWZpbmVkLgorUEFTUyBMb2NrIGZhaWxlZCAoYWZ0ZXIgd2Ug
Y2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91
c2x5KQorUEFTUyBMb2NrIGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9s
bGVyLnBvaW50ZXJMb2NrV2lsbEZhaWxBc3luY2hyb25vdXNseSkKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy5odG1sIGIvTGF5b3V0VGVzdHMvcG9p
bnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmRiMzg5OTc4
ODkwM2IyMGQzYWRkNDY2ZGJmY2Y5OTkxZDRmMzg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMuaHRtbApAQCAtMCwwICsxLDQ3
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGVzdCBhc3luY2hyb25vdXMgcmVzdWx0cyBvZiBjYWxsaW5nIGxvY2suIikKKyAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIiKTsKKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5jdGlv
biBkb05leHRTdGVwKCkgeworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOworICAgIH0KKyAg
ICB0b2RvID0gWworICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5wb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgpOworICAgICAgICAg
ICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayhkb2N1bWVudC5ib2R5LAorICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9j
ayBzdWNjZWVkZWQgdW5leHBlY3RlZGx5LiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayBmYWlsZWQgKGFmdGVyIHdl
IGNhbGxlZCBsYXlvdXRUZXN0Q29udHJvbGxlci5wb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25v
dXNseSkiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5wb2ludGVyTG9ja1dpbGxGYWlsQXN5bmNocm9ub3VzbHkoKTsK
KyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2soZG9jdW1lbnQuYm9keSwK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkxvY2sgc3VjY2VlZGVkIHVuZXhwZWN0ZWRseS4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgZmFpbGVk
IChhZnRlciB3ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIucG9pbnRlckxvY2tXaWxsRmFp
bEFzeW5jaHJvbm91c2x5KSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZpbmlzaEpTVGVzdAorICAg
IF07CisgICAgZG9OZXh0U3RlcCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVy
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtZGVs
aXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3OTdjMjdlNWY5OTEwMDE4M2JiMzhmZTQw
ZTI1NDJkMTJkNmNiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxv
Y2svbW91c2UtZXZlbnQtZGVsaXZlcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1Rl
c3QgbW91c2UgZXZlbnRzIGFyZSByb3V0ZWQgdG8gbG9jayB0YXJnZXQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5ldmVudFNlbmRlciBpcyBkZWZpbmVkLgor
UEFTUyBMb2NrIHRhcmdldDEgc3VjY2VlZGVkLgorV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBh
IGNsaWNrLgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MSwgcmVj
ZWl2ZWQgb246IHRhcmdldDEKK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRh
cmdldDEsIHJlY2VpdmVkIG9uOiBib2R5CitQQVNTIExvY2sgdGFyZ2V0MiBzdWNjZWVkZWQuCitX
aXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNl
ZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0
eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IGJvZHkKK0Vuc3Vy
ZSBkb3VibGUgY2xpY2tzIHdvcmsgYXMgZXhwZWN0ZWQsIHNlbmRpbmcgNCBjbGlja3MuCitDcmVh
dGluZyBhIGNsaWNrIGFuZCBkYmxjbGljay4KK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0
YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1v
dXNldXAsIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQg
dHlwZTogY2xpY2ssIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1Mg
ZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJn
ZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNldXAsIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQg
b246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogY2xpY2ssIHRhcmdldDogdGFyZ2V0MiwgcmVj
ZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogZGJsY2xpY2ssIHRhcmdldDogdGFy
Z2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK0Vuc3VyaW5nIG5vIGZhbHNlIGRibGNsaWNrcyBp
ZiB3ZSBjb250aW51ZS4KK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdl
dDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNldXAsIHRhcmdl
dDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogY2xpY2ss
IHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTog
bW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2
ZW50IHR5cGU6IG1vdXNldXAsIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIK
K1BBU1MgZXZlbnQgdHlwZTogY2xpY2ssIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRh
cmdldDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtZGVsaXZl
cnkuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNiYjJkMTk2Yjk2OWZkYWNjNDQ1NWU3YWE3MWJmZTc4MDk5NWI2MmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQt
ZGVsaXZlcnkuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBpZD0iYm9keSI+Cis8ZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQxIj48L2Rpdj4KKyAgPGRpdiBp
ZD0idGFyZ2V0MiI+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRl
c3QgbW91c2UgZXZlbnRzIGFyZSByb3V0ZWQgdG8gbG9jayB0YXJnZXQuIikKKyAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cuZXZlbnRT
ZW5kZXIiKTsKKworICAgIHRhcmdldGRpdjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0MSIpOworICAgIHRhcmdldGRpdjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0
MiIpOworCisgICAgZnVuY3Rpb24gZXZlbnROb3RFeHBlY3RlZChlKSB7CisgICAgICAgIHRlc3RG
YWlsZWQoIlVuZXhwZWN0ZWQgZXZlbnQgIiArIGUudHlwZSArICIgb24gIiArIGUuY3VycmVudFRh
cmdldC5pZCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICBmdW5jdGlvbiBl
dmVudEV4cGVjdGVkKGUpIHsKKyAgICAgIHRlc3RQYXNzZWQoImV2ZW50IHR5cGU6ICIgKyBlLnR5
cGUgKyAiLCB0YXJnZXQ6ICIgKyBlLnRhcmdldC5pZCArICIsIHJlY2VpdmVkIG9uOiAiICsgZS5j
dXJyZW50VGFyZ2V0LmlkKTsKKyAgICB9CisKKyAgICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVu
Y3Rpb24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9
CisgICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdh
dG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1
Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRlYnVnKCJXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5k
IGEgY2xpY2suIikKKyAgICAgICAgICAgIHRhcmdldGRpdjEub25tb3VzZWRvd24gPSBldmVudEV4
cGVjdGVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IGV2ZW50Tm90RXhw
ZWN0ZWQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9ubW91c2Vkb3duID0gZXZlbnRFeHBl
Y3RlZDsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsK
KyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAg
IHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB0YXJnZXRkaXYxLm9u
bW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93
biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub25tb3VzZWRvd24gPSB1
bmRlZmluZWQ7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2so
dGFyZ2V0ZGl2MiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MiBzdWNjZWVkZWQuIik7CisgICAgICAgICAg
ICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBm
YWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBkZWJ1ZygiV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLiIpCisgICAgICAgICAg
ICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gZXZlbnROb3RFeHBlY3RlZDsKKyAgICAgICAgICAg
IHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICB3aW5k
b3cuZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAgICAgICB3aW5kb3cuZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91
c2VVcCgpOworICAgICAgICAgICAgdGFyZ2V0ZGl2MS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsK
KyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5Lm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAg
ZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBkZWJ1ZygiRW5zdXJlIGRvdWJsZSBjbGlja3Mgd29yayBhcyBleHBlY3RlZCwgc2VuZGlu
ZyA0IGNsaWNrcy4iKQorICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IGV2ZW50
RXhwZWN0ZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2V1cCA9IGV2ZW50RXhwZWN0
ZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9uY2xpY2sgPSBldmVudEV4cGVjdGVkOworICAg
ICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmRibGNsaWNrID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAg
ICAgIGRlYnVnKCJDcmVhdGluZyBhIGNsaWNrIGFuZCBkYmxjbGljay4iKTsKKyAgICAgICAgICAg
IHdpbmRvdy5ldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAgIHdpbmRv
dy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRl
ci5tb3VzZVVwKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAg
ZGVidWcoIkVuc3VyaW5nIG5vIGZhbHNlIGRibGNsaWNrcyBpZiB3ZSBjb250aW51ZS4iKTsKKyAg
ICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdp
bmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgp
OworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAg
ICAgICAgIHRhcmdldGRpdjIub25tb3VzZXVwID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFy
Z2V0ZGl2Mi5vbmNsaWNrID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmRi
bGNsaWNrID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9
LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAgIGRvTmV4dFN0ZXAoKTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2lu
dGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZhZWVkZmM1MDFmMDY0MDY1YTg1YmM3MjRmM2IxNDYzNDI3MzdmMTYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IHRoYXQgcG9pbnRlcmxvY2tsb3N0IGV2
ZW50IGlzIGRpc3BhdGNoZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciBpcyBkZWZpbmVkLgorUEFTUyBMb2NrIHN1Y2Nl
ZWRlZC4KK1BBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAwCitQQVNTIHdl
YmtpdHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMQorUEFTUyBBbGwgZXhwZWN0ZWQgd2Vi
a2l0cG9pbnRlcmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
b2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9wb2lu
dGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY0ZjE4YWI3
MjFhMGI3ODcwZGZjZDZlYjVkNDA1ZjhiY2MxZjlmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQuaHRtbApAQCAtMCwwICsx
LDQyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFy
Z2V0Ij48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGF0
IHBvaW50ZXJsb2NrbG9zdCBldmVudCBpcyBkaXNwYXRjaGVkLiIpCisgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyIik7CisKKyAgICB0YXJnZXRkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0Iik7CisgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYsCisg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgc3VjY2Vl
ZGVkLiIpOworICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cG9p
bnRlcmxvY2tsb3N0IiwgbG9ja2xvc3RIYW5kbGVyKTsKKyAgICAgICAgICAgIHRhcmdldGRpdi5h
ZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QiLCBsb2NrbG9zdEhhbmRsZXIp
OworICAgICAgICAgICAgbG9ja2xvc3RoYW5kbGVycyA9IDI7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnBvaW50ZXJMb2NrTG9zdCgpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKworICAgIGxvY2tsb3N0cmVjZWlwdHMgPSAw
OworICAgIGZ1bmN0aW9uIGxvY2tsb3N0SGFuZGxlcigpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgi
d2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAiICsgbG9ja2xvc3RyZWNlaXB0cyk7
CisgICAgICAgIGxvY2tsb3N0cmVjZWlwdHMrKzsKKyAgICAgICAgaWYgKGxvY2tsb3N0cmVjZWlw
dHMgPT0gbG9ja2xvc3RoYW5kbGVycykgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIGV4
cGVjdGVkIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBldmVudHMgcmVjZWl2ZWQuIik7CisgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122697</attachid>
            <date>2012-01-16 17:26:42 -0800</date>
            <delta_ts>2012-01-24 14:07:28 -0800</delta_ts>
            <desc>Updated big patch, includes all subpatches</desc>
            <filename>bug-75762-20120116172641.patch</filename>
            <type>text/plain</type>
            <size>52274</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MDE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIzZWQ1Y2Y1ZmMyZDdk
YTY1MTE2NGNlZTBkOWU0ZDk3NDdiZTExYS4uMDI0MjY0ZDdkYmViYjdjMzFiOWE5NWE1OTliOThk
NjI2OTFkOWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTE2ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlciBj
bGFzcywgd2hpY2ggZXhpc3RzIHBlciBwYWdlLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojpwb2ludGVyTG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnQ6OnBvaW50ZXJVbmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50Ojppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6d2Via2l0UG9pbnRlcik6CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cG9pbnRlckxvY2tDb250
cm9sbGVyKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvaW50ZXJMb2NrOjpQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVy
TG9jazo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9jazo6dW5sb2NrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrOjppc0xvY2tlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQb2ludGVyTG9jazo6cGFnZSk6CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9jay5oOgorICAg
ICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJM
b2NrQ29udHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVy
TG9ja0NvbnRyb2xsZXI6OnVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0Nv
bnRyb2xsZXI6OmlzTG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJv
bGxlcjo6bG9ja1JlcXVlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tD
b250cm9sbGVyOjpsb2NrTG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRy
b2xsZXI6OmRpc3BhdGNoTG9ja2VkTW91c2VFdmVudCk6CisgICAgICAgICogcGFnZS9Qb2ludGVy
TG9ja0NvbnRyb2xsZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVy
TG9jay5oLgorCiAyMDEyLTAxLTEzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBbV2luZG93cywgV2luQ2Fpcm9dIEJ1aWxkIGNvcnJlY3Rpb24gYWZ0ZXIg
cjEwNDkxOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTA1ODU2OWI0MDg4NGU0YWNl
MWU4YjAxMmU2MGQyNjYxYjRlMmE2MC4uZDc2YzE3NjhlNmI0ZTExNTZhMzhmOTRkZDVmZmY1MGYz
YWQ4Y2FiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAx
Mi0wMS0xNiAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFBvaW50ZXIgTG9jazogSW1wbGVtZW50IHBvaW50ZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGluZyBwb2ludGVyIGxv
Y2sgQVBJIGNvbm5lY3RpbmcgdG8gV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyLgorCisg
ICAgICAgIEluZm9ybWF0aXZlIG9ubHkhIFdpbGwgYmUgbGFuZGVkIGJ5IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjQxMAorCisgICAgICAgICogcHVibGljL1dlYldp
ZGdldC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXQ6OnJlcXVlc3RQb2ludGVyTG9ja1Jl
c3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldpZGdldDo6cG9pbnRlckxvY2tMb3N0KToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYldp
ZGdldENsaWVudDo6cG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXRDbGll
bnQ6OnBvaW50ZXJVbmxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJXaWRnZXRDbGllbnQ6Omlz
UG9pbnRlckxvY2tlZFRvKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OnBvaW50ZXJMb2NrKToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6cG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJL
aXQ6OkNocm9tZUNsaWVudEltcGw6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogc3JjL0No
cm9tZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0UG9pbnRlckxvY2tSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
cG9pbnRlckxvY2tMb3N0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBvaW50ZXJM
b2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBvaW50ZXJVbmxvY2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aXNQb2ludGVyTG9ja2VkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnBvaW50ZXJMb2NrTW91c2VFdmVudCk6CisgICAgICAgICogc3Jj
L1dlYlZpZXdJbXBsLmg6CisKIDIwMTItMDEtMTMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEhXbmREQyBpcyBhIGJldHRlciBuYW1lIHRoYW4gSHduZERDLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGM5ZTU5NmFiZTE1YjI3MTc0ZjI4YTQ4YzcwZGI4ODc4MDllMjJi
MWMuLjFkNTQ5OTIxODczZTg0NTZmZmM4MGRjNjUyMTFiYTc4MDhmY2RlYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTMwNDAsNiArMzA0MCw4IEBACiAgICAgICAgICAgICAncGFnZS9QZXJmb3JtYW5j
ZVRpbWluZy5oJywKICAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrLmNwcCcsCiAgICAgICAg
ICAgICAncGFnZS9Qb2ludGVyTG9jay5oJywKKyAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2Nr
Q29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVy
LmgnLAogICAgICAgICAgICAgJ3BhZ2UvUHJpbnRDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAn
cGFnZS9TY3JlZW4uY3BwJywKICAgICAgICAgICAgICdwYWdlL1NjcmVlbi5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCmluZGV4IGRhMThiMjk1MWJhN2Q0OTM1NGQ0ZWE3Mjk4M2ZmNGI5NmMxM2M5
OTguLjY0NjRkOGMxMDBkMWE3NGM3MWRmYWIwNWJhODUyNjg2YjI0ZTRiZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaApAQCAtMTk3LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBcCiAgICAgbWFjcm8oc2hvdykgXAogICAgIFwKKyAgICBtYWNybyh3ZWJraXRwb2ludGVybG9j
a2xvc3QpIFwKKyAgICBcCiAKIC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggOTgyYTdjZDE1ZDVkMzhkOTIyNWRjMWI2
YmYxMjExZmQ3MzgxOGFhZi4uNDg2NjI1YTk4ZDIwZTFjMDNkNTE1ZWIyMjQ0MmQzODE0MmY4MTMw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMjgsNiArMzI4LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NWR0lt
YWdlQ2hyb21lQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisgICAgICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UG9pbnRlckxvY2soKSB7
IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBvaW50ZXJVbmxv
Y2soKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUG9pbnRlckxvY2tlZCgpIHsgcmV0dXJu
IGZhbHNlOyB9CisjZW5kaWYKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+Q2hy
b21lQ2xpZW50KCkgeyB9CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBj
MzVlOTk0OTYxYzUwYTgxYWJiOGMwMDg0M2Q4MmVjNDM2MTYxZGU0Li5kMTVmYzc3NTNjNGVjNmMz
NTZmYzJiN2Y4Y2U2ZWEwOTcyMDUzMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBA
IC0xNjIsNyArMTYyLDcgQEAgR2VvbG9jYXRpb24qIE5hdmlnYXRvcjo6Z2VvbG9jYXRpb24oKSBj
b25zdAogUG9pbnRlckxvY2sqIE5hdmlnYXRvcjo6d2Via2l0UG9pbnRlcigpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3BvaW50ZXIpCi0gICAgICAgIG1fcG9pbnRlciA9IFBvaW50ZXJMb2NrOjpjcmVh
dGUoKTsKKyAgICAgICAgbV9wb2ludGVyID0gUG9pbnRlckxvY2s6OmNyZWF0ZShtX2ZyYW1lLT5w
YWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpKTsKICAgICByZXR1cm4gbV9wb2ludGVyLmdl
dCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwYzZmZjU1YmExMjRjODliZmE4
OThjMmUwYTk3NTVhZTFlMzdkNzNhLi41NDQ2ODIyZTYyYzY5YTg0OGI2ZjBlMjIzM2I2N2FmZjEz
Njk3OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJQ
bHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBsdWdpblZp
ZXdCYXNlLmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
UHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCkBAIC0xNDYsNiArMTQ3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYg
cGFnZUNsaWVudHMpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNh
dGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKHRoaXMsIHBhZ2VD
bGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQorICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoYWRvcHRQdHIobmV3IFBvaW50ZXJM
b2NrQ29udHJvbGxlcih0aGlzKSkpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQog
ICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4MzcyNjFlNjI5
Nzg0ZTFhZThlLi5hYzljNTc4ZjgxOWI0NjQ5N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFz
cyBQbHVnaW5EYXRhOworICAgIGNsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlcjsKICAgICBjbGFz
cyBQcm9ncmVzc1RyYWNrZXI7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVuZGVyVGhl
bWU7CkBAIC0xOTAsNiArMTkxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQogICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKiBub3RpZmljYXRp
b25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25Db250cm9sbGVyLmdl
dCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICBQb2ludGVy
TG9ja0NvbnRyb2xsZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9pbnRlckxvY2tDb250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAt
Mzg2LDYgKzM5MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKICAgICAgICAgT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90aWZpY2F0
aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAg
IE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRlckxvY2tDb250cm9sbGVyOwor
I2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXRDbGll
bnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAgICAgICAgIE93blB0cjxTcGVlY2hJbnB1dD4gbV9z
cGVlY2hJbnB1dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKaW5kZXggZGZiM2NiNDlh
MDljODkwMjgxYjkwNjgyZmI4NWNkODQxYTZlY2E5MS4uMGQyMWU3N2FmNGE0OWYyMWIyMjY0NmNh
NDcxMTQzOWI5NzJiZTg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVy
TG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKQEAgLTI1
LDExICsyNSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2Nr
LmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQ
b2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJM
b2NrOjpQb2ludGVyTG9jayhQb2ludGVyTG9ja0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCisgICAg
OiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKIHsKIH0KIApAQCAtMzksMTggKzQ0LDE3IEBAIFBv
aW50ZXJMb2NrOjp+UG9pbnRlckxvY2soKQogCiB2b2lkIFBvaW50ZXJMb2NrOjpsb2NrKEVsZW1l
bnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTog
SW1wbGVtZW50CisgICAgcmV0dXJuIG1fY29udHJvbGxlci0+cmVxdWVzdFBvaW50ZXJMb2NrKHRh
cmdldCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2spOwogfQogCiB2b2lkIFBvaW50
ZXJMb2NrOjp1bmxvY2soKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICByZXR1cm4g
bV9jb250cm9sbGVyLT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOwogfQogCiBib29sIFBvaW50ZXJM
b2NrOjppc0xvY2tlZCgpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5pc0xvY2tlZCgpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrLmgKaW5kZXggYmU3YzMxNzhmNThmZTc5OWM2MTFjZjA2MWNjZGVk
ZTkzMmJhZGIwMy4uZTAxOTk5ZTgwMmNjODkyMmUxNmIwNDY0NmIzYTA5ZWE4YmNjZTBlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaApAQCAtMzQsMTAgKzM0LDExIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBQb2ludGVyTG9ja0NvbnRyb2xsZXI7
CiAKIGNsYXNzIFBvaW50ZXJMb2NrIDogcHVibGljIFJlZkNvdW50ZWQ8UG9pbnRlckxvY2s+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb2ludGVyTG9jaz4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50ZXJMb2NrKCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UG9pbnRlckxvY2s+IGNyZWF0ZShQb2ludGVyTG9ja0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb2ludGVyTG9jayhjb250cm9sbGVyKSk7IH0KIAogICAg
IH5Qb2ludGVyTG9jaygpOwogCkBAIC00Niw3ICs0Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlz
TG9ja2VkKCk7CiAKIHByaXZhdGU6Ci0gICAgUG9pbnRlckxvY2soKTsKKyAgICBQb2ludGVyTG9j
ayhQb2ludGVyTG9ja0NvbnRyb2xsZXIqKTsKKworICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciog
bV9jb250cm9sbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5ZDFhYmQw
MTgzNTEwZTI2ZjhlOTlmNDNjNTA3Y2VkMTY0MDYwNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVy
TG9ja0NvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BvaW50ZXJMb2NrQ29udHJvbGxlcjo6UG9pbnRlckxv
Y2tDb250cm9sbGVyKFBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwordm9p
ZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2ludGVyTG9jayhFbGVtZW50KiB0YXJn
ZXQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
Vm9pZENhbGxiYWNrPiBmYWlsdXJlQ2FsbGJhY2spCit7CisgICAgaWYgKGlzTG9ja2VkKCkpIHsK
KyAgICAgICAgaWYgKG1fZWxlbWVudCA9PSB0YXJnZXQpIHsKKyAgICAgICAgICAgIGlmIChzdWNj
ZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVu
dCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrKCk7
CisgICAgICAgICAgICBtX2VsZW1lbnQgPSB0YXJnZXQ7CisgICAgICAgICAgICBpZiAoc3VjY2Vz
c0NhbGxiYWNrKQorICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQo
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnJlcXVlc3RQb2ludGVyTG9jaygpKSB7CisgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKKyAg
ICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSBzdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIG1fZmFp
bHVyZUNhbGxiYWNrID0gZmFpbHVyZUNhbGxiYWNrOworICAgIH0gZWxzZSBpZiAoZmFpbHVyZUNh
bGxiYWNrKQorICAgICAgICBmYWlsdXJlQ2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7Cit9CisKK3Zv
aWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCit7CisgICAg
cmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZXF1ZXN0UG9pbnRlclVubG9jaygp
OworfQorCitib29sIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6aXNMb2NrZWQoKQoreworICAgIHJl
dHVybiBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+aXNQb2ludGVyTG9ja2VkKCk7Cit9CisK
K3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRDb21wbGV0ZVBvaW50ZXJMb2NrKCkKK3sK
KyAgICBpZiAoIW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFZvaWRD
YWxsYmFjaz4gY2FsbGJhY2tUb0lzc3VlKG1fc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBtX3N1Y2Nl
c3NDYWxsYmFjayA9IDA7CisgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSAwOworCisgICAgaWYgKGNh
bGxiYWNrVG9Jc3N1ZSkKKyAgICAgICAgY2FsbGJhY2tUb0lzc3VlLT5oYW5kbGVFdmVudCgpOwor
fQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90Q29tcGxldGVQb2ludGVyTG9j
aygpCit7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0
cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrVG9Jc3N1ZShtX2ZhaWx1cmVDYWxsYmFjayk7CisgICAg
bV9lbGVtZW50ID0gMDsKKyAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IDA7CisgICAgbV9mYWlsdXJl
Q2FsbGJhY2sgPSAwOworCisgICAgaWYgKGNhbGxiYWNrVG9Jc3N1ZSkKKyAgICAgICAgY2FsbGJh
Y2tUb0lzc3VlLT5oYW5kbGVFdmVudCgpOworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBpZiAobV9lbGVtZW50KSB7CisgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBlbGVtZW50VG9Ob3RpZnkobV9lbGVtZW50KTsKKyAg
ICAgICAgbV9lbGVtZW50ID0gMDsKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSAwOworICAg
ICAgICBtX2ZhaWx1cmVDYWxsYmFjayA9IDA7CisgICAgICAgIGVsZW1lbnRUb05vdGlmeS0+ZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRwb2ludGVybG9ja2xv
c3RFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKKyAgICB9Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250
cm9sbGVyOjpkaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCit7CisgICAgbV9lbGVtZW50
LT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50VHlwZSwgZXZlbnQuY2xpY2tDb3VudCgp
KTsKKworICAgIC8vIENyZWF0ZSBjbGljayBldmVudHMKKyAgICBpZiAoZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpCisgICAgICAgIG1fZWxlbWVudC0+ZGlzcGF0Y2hNb3Vz
ZUV2ZW50KGV2ZW50LCBldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZXZlbnQuY2xpY2tDb3VudCgp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5U
RVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlNjA3MzM4ZTJkYmM1MmRjZmQwN2ZlZmVmMDE4YTk2YzQ5YWRiNmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5o
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUG9pbnRlckxvY2tDb250
cm9sbGVyX2gKKyNkZWZpbmUgUG9pbnRlckxvY2tDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFBhZ2U7CitjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7CisKK2NsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUG9pbnRlckxvY2tDb250cm9sbGVyKTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQb2ludGVyTG9ja0NvbnRyb2xsZXIoUGFnZSopOwor
CisgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soV2ViQ29yZTo6RWxlbWVudCogdGFyZ2V0LCBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4gZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2Nr
KCk7CisgICAgYm9vbCBpc0xvY2tlZCgpOworCisgICAgdm9pZCBkaWRDb21wbGV0ZVBvaW50ZXJM
b2NrKCk7CisgICAgdm9pZCBkaWROb3RDb21wbGV0ZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBk
aWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpc3BhdGNoTG9ja2VkTW91c2VFdmVudChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7
CisKK3ByaXZhdGU6CisgICAgUGFnZSogbV9wYWdlOworICAgIFJlZlB0cjxXZWJDb3JlOjpFbGVt
ZW50PiBtX2VsZW1lbnQ7CisgICAgUmVmUHRyPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4gbV9zdWNj
ZXNzQ2FsbGJhY2s7CisgICAgUmVmUHRyPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4gbV9mYWlsdXJl
Q2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorCisjZW5kaWYgLy8gUG9pbnRlckxvY2tDb250cm9sbGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKaW5kZXggM2Y1OTRmMzY5NTUy
MmY2NmJhNTljYTNlZTU5NDQ3MzVmZGQ0ZWNhNi4uZDkxMGUyYzQzZjRhNzFmMWM2NzEwNjI0NTA4
ZWE5NDM1NzQ4MGIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViV2lkZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJJbnB1
dEV2ZW50OworY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYlN0cmluZzsKIHN0cnVjdCBX
ZWJQb2ludDsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CkBAIC0xNzAs
NiArMTcxLDEzIEBAIHB1YmxpYzoKICAgICAvLyB0byByZW5kZXIgaXRzIGNvbnRlbnRzLgogICAg
IHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisgICAgLy8gQXN5bmNocm9ub3VzIHJlc3VsdCB0byBhIHBlbmRpbmcg
cG9pbnRlciBsb2NrIHJlcXVlc3QuCisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUG9pbnRl
ckxvY2soKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkTm90Q29tcGxldGVQb2ludGVyTG9jaygp
IHsgfQorCisgICAgLy8gUG9pbnRlciBsb2NrIHdhcyBoZWxkLCBidXQgaGFzIGJlZW4gbG9zdC4K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCkgeyB9CisKIHByb3RlY3RlZDoK
ICAgICB+V2ViV2lkZ2V0KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViV2lkZ2V0Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJXaWRnZXRDbGllbnQuaAppbmRleCBlNWI0MDVkZWExMTI2MGNhYWY3Mjk1NzdlNTU0
MzQyMDYxMGNmYzg2Li4zOTkwNDljYzRlNmFmOTEyYWVkNWRmMWIwMjViMmJiZTBkMDE2NmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaApA
QCAtMTI2LDYgKzEyNiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gcmVzZXQgdGhlIGlucHV0IG1ldGhv
ZCBieSBjYW5jZWxsaW5nIGFueSBvbmdvaW5nIGNvbXBvc2l0aW9uLgogICAgIHZpcnR1YWwgdm9p
ZCByZXNldElucHV0TWV0aG9kKCkgeyB9CiAKKyAgICAvLyBSZXF1ZXN0cyB0byBsb2NrL3VubG9j
ayB0aGUgbW91c2UgY3Vyc29yCisgICAgdmlydHVhbCBib29sIHJlcXVlc3RQb2ludGVyTG9jaygp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2Nr
KCkgeyB9CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBNb3VzZSBMb2NrIGlzIGFjdGl2ZSBh
bmQgdGhlIHBvaW50ZXIgaXMgbG9ja2VkLgorICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2Nr
ZWQoKSB7IHJldHVybiBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYldpZGdldENsaWVu
dCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKaW5kZXggNWYyODUxYmI1ODc3YzlmZjc0MjZkN2E4YzFlNWQxMzg2NGZhMDJjZi4u
NTYyYWRlMmI1N2ZlNTE3MGFiMDA4NmJlMTE0YWYyODFmMmJkM2NkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTEwMTgsNCArMTAx
OCwyMSBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6Om51bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5n
ZWQodW5zaWduZWQgbnVtYmVyT2ZXaGVlbEhhbmRsZQogICAgIG1fd2ViVmlldy0+bnVtYmVyT2ZX
aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKG51bWJlck9mV2hlZWxIYW5kbGVycyk7CiB9CiAKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpyZXF1ZXN0UG9p
bnRlckxvY2soKQoreworICAgIHJldHVybiBtX3dlYlZpZXctPnJlcXVlc3RQb2ludGVyTG9jaygp
OworfQorCit2b2lkIENocm9tZUNsaWVudEltcGw6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKK3sK
KyAgICByZXR1cm4gbV93ZWJWaWV3LT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOworfQorCitib29s
IENocm9tZUNsaWVudEltcGw6OmlzUG9pbnRlckxvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fd2Vi
Vmlldy0+aXNQb2ludGVyTG9ja2VkKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5k
ZXggMjExM2VjMWFmNGY4MWQ3ZDE5YmVjYTY1MTg3MzIzMjE3N2FjNDdkZC4uOGZkMjQ4OGQ5ZWU2
NjEwZmUxMzg1OGI4ZWM5ZTU1ODBjNzU0MDUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMjA1LDYgKzIwNSwxMiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb24pIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2ZW50SGFuZGxl
cnNDaGFuZ2VkKHVuc2lnbmVkKTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgdmly
dHVhbCBib29sIHJlcXVlc3RQb2ludGVyTG9jaygpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
UG9pbnRlclVubG9jaygpOworICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgZ2V0UG9wdXBNZW51SW5mbyhXZWJDb3JlOjpQb3B1
cENvbnRhaW5lciosIFdlYlBvcHVwTWVudUluZm8qKTsKICAgICB2b2lkIHNldEN1cnNvcihjb25z
dCBXZWJDdXJzb3JJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKaW5kZXggYTE0NzQ4MzUzMTk3YjcyNzkzOTcyMDRmYTQ4MGRiYTMzNDA1OTdkNy4uMmVj
ZjM5ZTE2ZTQ2ZTE0YjNlOWZkYjcwMjdmMDY4OWNiMDAyOWE2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtOTAsNiArOTAsOCBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXgu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9j
ay5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBvcHVw
Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCkBAIC0xMDEyLDYgKzEwMTQsOSBAQCBXZWJWaWV3SW1wbCogV2ViVmll
d0ltcGw6OmZyb21QYWdlKFBhZ2UqIHBhZ2UpCiAKIHZvaWQgV2ViVmlld0ltcGw6OmNsb3NlKCkK
IHsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7
CisjZW5kaWYKICAgICBSZWZQdHI8V2ViRnJhbWVJbXBsPiBtYWluRnJhbWVJbXBsOwogCiAgICAg
aWYgKG1fcGFnZSkgewpAQCAtMTMzMSw2ICsxMzM2LDEzIEBAIGJvb2wgV2ViVmlld0ltcGw6Omhh
bmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgaW5wdXRFdmVudCkKIAogICAgIG1f
Y3VycmVudElucHV0RXZlbnQgPSAmaW5wdXRFdmVudDsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisgICAgaWYgKGlzUG9pbnRlckxvY2tlZCgpICYmIFdlYklucHV0RXZlbnQ6OmlzTW91c2VF
dmVudFR5cGUoaW5wdXRFdmVudC50eXBlKSkgeworICAgICAgcG9pbnRlckxvY2tNb3VzZUV2ZW50
KGlucHV0RXZlbnQpOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICBp
ZiAobV9tb3VzZUNhcHR1cmVOb2RlICYmIFdlYklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUo
aW5wdXRFdmVudC50eXBlKSkgewogICAgICAgICAvLyBTYXZlIG1fbW91c2VDYXB0dXJlTm9kZSBz
aW5jZSBtb3VzZUNhcHR1cmVMb3N0KCkgd2lsbCBjbGVhciBpdC4KICAgICAgICAgUmVmUHRyPE5v
ZGU+IG5vZGUgPSBtX21vdXNlQ2FwdHVyZU5vZGU7CkBAIC0xNzQyLDYgKzE3NTQsMzAgQEAgYm9v
bCBXZWJWaWV3SW1wbDo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3QKICNl
bmRpZgogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21wbGV0ZVBvaW50ZXJMb2NrKCkKK3sK
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlKCkpCisgICAgICAgIHBhZ2Uo
KS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZENvbXBsZXRlUG9pbnRlckxvY2soKTsKKyNl
bmRpZgorfQorCit2b2lkIFdlYlZpZXdJbXBsOjpkaWROb3RDb21wbGV0ZVBvaW50ZXJMb2NrKCkK
K3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlKCkpCisgICAgICAgIHBh
Z2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZE5vdENvbXBsZXRlUG9pbnRlckxvY2so
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlZpZXdJbXBsOjpkaWRMb3NlUG9pbnRlckxvY2soKQor
eworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFn
ZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisjZW5k
aWYKK30KKwogLy8gV2ViVmlldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJTZXR0aW5ncyogV2ViVmlld0lt
cGw6OnNldHRpbmdzKCkKQEAgLTMxNzcsNCArMzIxMyw0NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpy
ZXNldEdlc3R1cmVSZWNvZ25pemVyKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFBPSU5URVJf
TE9DSykKK2Jvb2wgV2ViVmlld0ltcGw6OnJlcXVlc3RQb2ludGVyTG9jaygpCit7CisgICAgcmV0
dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5yZXF1ZXN0UG9pbnRlckxvY2soKTsKK30KKwordm9p
ZCBXZWJWaWV3SW1wbDo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQoreworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7Cit9CisKK2Jvb2wg
V2ViVmlld0ltcGw6OmlzUG9pbnRlckxvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fY2xpZW50ICYm
IG1fY2xpZW50LT5pc1BvaW50ZXJMb2NrZWQoKTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6cG9p
bnRlckxvY2tNb3VzZUV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQoreworICAgIEF0
b21pY1N0cmluZyBldmVudFR5cGU7CisgICAgc3dpdGNoIChldmVudC50eXBlKSB7CisgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpNb3VzZURvd246CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFt
ZXMoKS5tb3VzZWRvd25FdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpNb3VzZVVwOgorICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2V1cEV2
ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlTW92ZToK
KyAgICAgICAgZXZlbnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50OworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisKKyAgICBjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViTW91c2VFdmVudCY+KGV2ZW50KTsKKworICAgIGlmIChwYWdlKCkpCisgICAgICAg
IHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpc3BhdGNoTG9ja2VkTW91c2VFdmVu
dCgKKyAgICAgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIobWFpbkZyYW1lSW1wbCgp
LT5mcmFtZVZpZXcoKSwgbW91c2VFdmVudCksCisgICAgICAgICAgICBldmVudFR5cGUpOworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKaW5kZXggNmVhMTk2YTc1YmJjMzk5YTQyNzM1MzMxZDFkMGVlOWVlYTEz
YjkxNi4uNWExYzQ3M2QxOGZiNzc2NTE2NDM2MWQyMDU1NDk2YzA0MDE2NTg4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xMjksNiArMTI5LDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBjYXJldE9yU2VsZWN0aW9uUmFuZ2Uoc2l6ZV90KiBsb2Nh
dGlvbiwgc2l6ZV90KiBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9u
KFdlYlRleHREaXJlY3Rpb24gZGlyZWN0aW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBs
ZXRlUG9pbnRlckxvY2soKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTm90Q29tcGxldGVQb2ludGVy
TG9jaygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soKTsKIAogICAgIC8v
IFdlYlZpZXcgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZU1haW5GcmFtZShX
ZWJGcmFtZUNsaWVudCopOwpAQCAtNDY4LDYgKzQ3MSwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7CiAgICAgYm9vbCBoYXNWZXJ0aWNhbFNjcm9sbGJhcigp
OwogCisgICAgLy8gUG9pbnRlciBMb2NrIGNhbGxzIGFsbG93IGEgcGFnZSB0byBjYXB0dXJlIGFs
bCBtb3VzZSBldmVudHMgYW5kCisgICAgLy8gZGlzYWJsZSB0aGUgc3lzdGVtIGN1cnNvci4KKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UG9pbnRlckxv
Y2soKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNQb2ludGVyTG9ja2VkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBib29s
IGNvbXB1dGVQYWdlU2NhbGVGYWN0b3JMaW1pdHMoKTsKICAgICBmbG9hdCBjbGFtcFBhZ2VTY2Fs
ZUZhY3RvclRvTGltaXRzKGZsb2F0IHNjYWxlKTsKQEAgLTUyMSw2ICs1MzIsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgdm9pZCBwb2ludGVyTG9ja01vdXNlRXZlbnQoY29uc3Qg
V2ViSW5wdXRFdmVudCYpOworI2VuZGlmCisKICAgICBXZWJWaWV3Q2xpZW50KiBtX2NsaWVudDsK
ICAgICBXZWJBdXRvZmlsbENsaWVudCogbV9hdXRvZmlsbENsaWVudDsKICAgICBXZWJQZXJtaXNz
aW9uQ2xpZW50KiBtX3Blcm1pc3Npb25DbGllbnQ7CkBAIC02ODIsNiArNjk3LDcgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFVzZXJNZWRpYUNsaWVudEltcGwgbV91
c2VyTWVkaWFDbGllbnRJbXBsOwogI2VuZGlmCisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFj
NjU1NGZiODdiNjJiN2M4NGYzOWJjNzU2NTU3ZTdmOTcyMGEwNWYuLjczNDM2YWNjZWZiMTRlZGEx
NGFhYjIyMjQzYmVlOTkxMjE4NDAwNDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wMS0xMSAgVmluY2VudCBT
Y2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBvaW50ZXIgTG9jazogSW1w
bGVtZW50IHBvaW50ZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluZm9ybWF0aXZlIG9ubHkhIFdpbGwgYmUgbGFuZGVkIGJ5IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjQxMQorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0QmFja2lu
Z1NjYWxlRmFjdG9yQ2FsbGJhY2spOgorICAgICAgICAocG9pbnRlckxvY2tMb3N0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBvaW50ZXJMb2NrTG9zdCk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwb2ludGVyTG9ja1dpbGxGYWlsU3luY2hy
b25vdXNseSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cG9pbnRlckxvY2spOgorICAgICAgICAoV2Vi
Vmlld0hvc3Q6OnBvaW50ZXJVbmxvY2spOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmlzUG9pbnRl
ckxvY2tlZFRvKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXF1ZXN0UG9pbnRlckxvY2tSZXN1
bHQpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnBvaW50ZXJMb2NrTG9zdCk6CisgICAgICAgIChX
ZWJWaWV3SG9zdDo6cmVzZXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cG9pbnRlckxvY2tXaWxsRmFpbEFz
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpwb2ludGVyTG9ja1dpbGxGYWls
U3luY2hyb25vdXNseSk6CisKIDIwMTItMDEtMTMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgLS1kcnktcnVuIHN1cHBvcnQgZnJvbSB3ZWJraXQtcGF0
Y2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAppbmRleCBmNjhlMGQ4NzJhZDEyYzE2M2FhODUwOTM5NDQxN2M3ZmZjN2Yz
OTYzLi43ZDFiMjcyOGNhMGRlMWRjZmIxOTUyY2VkMWUwNDBhYzRmNTI1MDE0IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC05Niw2ICs5Niw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29u
dHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoImNsZWFyQWxsRGF0YWJh
c2VzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckFsbERhdGFiYXNlcyk7CiAgICAgYmlu
ZE1ldGhvZCgiY2xvc2VXZWJJbnNwZWN0b3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsb3Nl
V2ViSW5zcGVjdG9yKTsKICAgICBiaW5kTWV0aG9kKCJjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJ
ZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQpOwor
ICAgIGJpbmRNZXRob2QoImRpZExvc2VQb2ludGVyTG9jayIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6ZGlkTG9zZVBvaW50ZXJMb2NrKTsKICAgICBiaW5kTWV0aG9kKCJkaXNhYmxlSW1hZ2VMb2Fk
aW5nIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpkaXNhYmxlSW1hZ2VMb2FkaW5nKTsKICAgICBi
aW5kTWV0aG9kKCJkaXNwbGF5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpkaXNwbGF5KTsKICAg
ICBiaW5kTWV0aG9kKCJkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24iLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmRpc3BsYXlJbnZhbGlkYXRlZFJlZ2lvbik7CkBAIC0xODEsNiArMTgyLDggQEAgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwp
CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKICAgICBiaW5kTWV0aG9k
KCJzZXRQYWdlVmlzaWJpbGl0eSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UGFnZVZpc2li
aWxpdHkpOwogICAgIGJpbmRNZXRob2QoInNldFBsdWdpbnNFbmFibGVkIiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpzZXRQbHVnaW5zRW5hYmxlZCk7CisgICAgYmluZE1ldGhvZCgic2V0UG9pbnRl
ckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRQ
b2ludGVyTG9ja1dpbGxGYWlsQXN5bmNocm9ub3VzbHkpOworICAgIGJpbmRNZXRob2QoInNldFBv
aW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSk7CiAgICAgYmluZE1ldGhvZCgic2V0
UG9wdXBCbG9ja2luZ0VuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxv
Y2tpbmdFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQT1NJWExvY2FsZSIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0UE9TSVhMb2NhbGUpOwogICAgIGJpbmRNZXRob2QoInNldFByaW50
aW5nIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRQcmludGluZyk7CkBAIC0yMTcxLDMgKzIx
NzQsMjIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXVkaW9EYXRhKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXIKIAogICAgIHNldFNob3VsZER1bXBBc0F1
ZGlvKHRydWUpOwogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkaWRMb3NlUG9pbnRl
ckxvY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBtX3NoZWxsLT53ZWJWaWV3SG9zdCgp
LT5kaWRMb3NlUG9pbnRlckxvY2soKTsKK30KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxs
KCk7CisgICAgbV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+c2V0UG9pbnRlckxvY2tXaWxsRmFpbEFz
eW5jaHJvbm91c2x5KCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvaW50
ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAg
bV9zaGVsbC0+d2ViVmlld0hvc3QoKS0+c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3Vz
bHkoKTsKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNjAzYjNiOTJlNDlhZGI5MWJjOGExZGFkZTZkZWZjNTMz
MzNlYWJkYS4uZWVmMTdmNzA3MzhjMjYxOWU2MWUxNWEyOWU5Mzg0MGQ5Y2U3MzI3MiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCkBAIC00MzAsNiArNDMwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZUZpeGVkTGF5
b3V0TW9kZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBz
ZXRGaXhlZExheW91dFNpemUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
CisgICAgdm9pZCBkaWRMb3NlUG9pbnRlckxvY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOworICAgIHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHko
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0UG9pbnRl
ckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKKwogcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90
IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihib29s
IGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IDcwYmViOWY3ZTc5NzM2
ZTA4ZGUxNjAyMGM0MDIyNTYwZDg3YTI0OTAuLjhiZmYzMzE2NmZkOTRlMGZhYTg0NmEyMzNhYTgx
NDcxNWQ5MzcwMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAKQEAgLTc3MSw2ICs3NzEsNTUgQEAgV2ViU2NyZWVuSW5mbyBXZWJWaWV3SG9zdDo6
c2NyZWVuSW5mbygpCiAgICAgcmV0dXJuIGluZm87CiB9CiAKK2Jvb2wgV2ViVmlld0hvc3Q6OnJl
cXVlc3RQb2ludGVyTG9jaygpCit7CisgICAgc3dpdGNoIChtX3BvaW50ZXJMb2NrUGxhbm5lZFJl
c3VsdCkgeworICAgIGNhc2UgUE9JTlRFUl9MT0NLX1dJTExfU1VDQ0VFRDoKKyAgICAgICAgcG9z
dERlbGF5ZWRUYXNrKG5ldyBIb3N0TWV0aG9kVGFzayh0aGlzLCAmV2ViVmlld0hvc3Q6OmRpZENv
bXBsZXRlUG9pbnRlckxvY2spLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBQ
T0lOVEVSX0xPQ0tfV0lMTF9GQUlMX0FTWU5DOgorICAgICAgICBBU1NFUlQoIW1fcG9pbnRlckxv
Y2tlZCk7CisgICAgICAgIHBvc3REZWxheWVkVGFzayhuZXcgSG9zdE1ldGhvZFRhc2sodGhpcywg
JldlYlZpZXdIb3N0OjpkaWROb3RDb21wbGV0ZVBvaW50ZXJMb2NrKSwgMCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGNhc2UgUE9JTlRFUl9MT0NLX1dJTExfRkFJTF9TWU5DOgorICAgICAg
ICBBU1NFUlQoIW1fcG9pbnRlckxvY2tlZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKwordm9pZCBXZWJWaWV3SG9zdDo6cmVxdWVzdFBvaW50ZXJVbmxvY2so
KQoreworICAgIHBvc3REZWxheWVkVGFzayhuZXcgSG9zdE1ldGhvZFRhc2sodGhpcywgJldlYlZp
ZXdIb3N0OjpkaWRMb3NlUG9pbnRlckxvY2spLCAwKTsKK30KKworYm9vbCBXZWJWaWV3SG9zdDo6
aXNQb2ludGVyTG9ja2VkKCkKK3sKKyAgICByZXR1cm4gbV9wb2ludGVyTG9ja2VkOworfQorCit2
b2lkIFdlYlZpZXdIb3N0OjpkaWRDb21wbGV0ZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBtX3BvaW50
ZXJMb2NrZWQgPSB0cnVlOworICAgIHdlYldpZGdldCgpLT5kaWRDb21wbGV0ZVBvaW50ZXJMb2Nr
KCk7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OmRpZE5vdENvbXBsZXRlUG9pbnRlckxvY2soKQor
eworICAgIEFTU0VSVCghbV9wb2ludGVyTG9ja2VkKTsKKyAgICBtX3BvaW50ZXJMb2NrZWQgPSBm
YWxzZTsKKyAgICB3ZWJXaWRnZXQoKS0+ZGlkTm90Q29tcGxldGVQb2ludGVyTG9jaygpOworfQor
Cit2b2lkIFdlYlZpZXdIb3N0OjpkaWRMb3NlUG9pbnRlckxvY2soKQoreworICAgIEFTU0VSVCht
X3BvaW50ZXJMb2NrZWQpOworICAgIG1fcG9pbnRlckxvY2tlZCA9IGZhbHNlOworICAgIHdlYldp
ZGdldCgpLT5kaWRMb3NlUG9pbnRlckxvY2soKTsKK30KKwogdm9pZCBXZWJWaWV3SG9zdDo6c2hv
dyhXZWJOYXZpZ2F0aW9uUG9saWN5KQogewogICAgIG1faGFzV2luZG93ID0gdHJ1ZTsKQEAgLTEz
MDIsNiArMTM1MSw4IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnJlc2V0KCkKICAgICBtX3JlcXVlc3RS
ZXR1cm5OdWxsID0gZmFsc2U7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAgICAgbV9jYW52
YXMuY2xlYXIoKTsKKyAgICBtX3BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKKyAgICBtX3BvaW50ZXJM
b2NrUGxhbm5lZFJlc3VsdCA9IFBPSU5URVJfTE9DS19XSUxMX1NVQ0NFRUQ7CiAKICAgICBtX25h
dmlnYXRpb25Db250cm9sbGVyID0gYWRvcHRQdHIobmV3IFRlc3ROYXZpZ2F0aW9uQ29udHJvbGxl
cih0aGlzKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5o
CmluZGV4IDIwZGExN2M5Mjc2MzIyMGY1MGNiYjQwMWZhZjZmMzMxZWQ1MzhiYzEuLjJjMDcyZWVj
ZGQ1OWQ0NThmOTIxNWRmM2E2ZDFlYmE2Njk4N2NhZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMTEwLDYgKzExMCwxMCBAQCBjbGFzcyBXZWJW
aWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJL
aXQ6OldlYlZpZXdDbAogCiAgICAgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
KiBzcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrKCkgeyByZXR1cm4gbV9zcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrLmdldCgpOyB9CiAKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAg
IHZvaWQgc2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5KCkgeyBtX3BvaW50ZXJM
b2NrUGxhbm5lZFJlc3VsdCA9IFBPSU5URVJfTE9DS19XSUxMX0ZBSUxfQVNZTkM7IH0KKyAgICB2
b2lkIHNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCkgeyBtX3BvaW50ZXJMb2Nr
UGxhbm5lZFJlc3VsdCA9IFBPSU5URVJfTE9DS19XSUxMX0ZBSUxfU1lOQzsgfQorCiAgICAgLy8g
TmF2aWdhdGlvbkhvc3QKICAgICB2aXJ0dWFsIGJvb2wgbmF2aWdhdGUoY29uc3QgVGVzdE5hdmln
YXRpb25FbnRyeSYsIGJvb2wgcmVsb2FkKTsKIApAQCAtMTc5LDYgKzE4Myw5IEBAIGNsYXNzIFdl
YlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVudCwgcHVibGljIFdl
YktpdDo6V2ViVmlld0NsCiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlJlY3Qgcm9vdFdpbmRvd1Jl
Y3QoKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUmVjdCB3aW5kb3dSZXNpemVyUmVjdCgpOwog
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTY3JlZW5JbmZvIHNjcmVlbkluZm8oKTsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2NrKCk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQ
b2ludGVyVW5sb2NrKCk7CisgICAgdmlydHVhbCBib29sIGlzUG9pbnRlckxvY2tlZCgpOwogCiAg
ICAgLy8gV2ViS2l0OjpXZWJGcmFtZUNsaWVudAogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJQbHVn
aW4qIGNyZWF0ZVBsdWdpbihXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJQbHVn
aW5QYXJhbXMmKTsKQEAgLTI4Nyw2ICsyOTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRT
Y3JvbGxSZWN0KCk7CiAgICAgdm9pZCBkaXNjYXJkQmFja2luZ1N0b3JlKCk7CiAKKyAgICB2b2lk
IGRpZENvbXBsZXRlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5vdENvbXBsZXRlUG9pbnRl
ckxvY2soKTsKKwogICAgIFdlYktpdDo6V2ViVXNlck1lZGlhQ2xpZW50TW9jayogdXNlck1lZGlh
Q2xpZW50TW9jaygpOwogICAgIHdlYmtpdF9zdXBwb3J0OjpNZWRpYVN0cmVhbVV0aWwqIG1lZGlh
U3RyZWFtVXRpbCgpOwogICAgIHdlYmtpdF9zdXBwb3J0OjpUZXN0TWVkaWFTdHJlYW1DbGllbnQq
IHRlc3RNZWRpYVN0cmVhbUNsaWVudCgpOwpAQCAtMzc3LDYgKzM4NywxMyBAQCBwcml2YXRlOgog
CiAgICAgVGFza0xpc3QgbV90YXNrTGlzdDsKICAgICBWZWN0b3I8V2ViS2l0OjpXZWJXaWRnZXQq
PiBtX3BvcHVwbWVudXM7CisKKyAgICBib29sIG1fcG9pbnRlckxvY2tlZDsKKyAgICBlbnVtIHsK
KyAgICAgIFBPSU5URVJfTE9DS19XSUxMX1NVQ0NFRUQsCisgICAgICBQT0lOVEVSX0xPQ0tfV0lM
TF9GQUlMX0FTWU5DLAorICAgICAgUE9JTlRFUl9MT0NLX1dJTExfRkFJTF9TWU5DCisgICAgfSBt
X3BvaW50ZXJMb2NrUGxhbm5lZFJlc3VsdDsKIH07CiAKICNlbmRpZiAvLyBXZWJWaWV3SG9zdF9o
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMjFlOTA1N2M1MjBhOWRmYjMwOTI3ODY4MzYxYmJmZjMyZjEzZTUzZC4uNDlhYjY5
NWZhOTZhYjU3OTU0ZDViNzIzMWY0YmZiNjU2YmY5NDI2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDEyLTAxLTE2ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUG9pbnRlciBMb2NrOiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9j
ay1hbHJlYWR5LWxvY2tlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXIt
bG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXIt
bG9jay9sb2NrLWZhaWwtcmVzcG9uc2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMuaHRtbDogQWRkZWQuCisgICAgICAgICog
cG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50Lmh0
bWw6IEFkZGVkLgorCiAyMDEyLTAxLTEzICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUG9pbnRlciBMb2NrOiBDaGFuZ2UgaXNMb2NrZWQoKSBmcm9tIG9w
ZXJhdG9yIHRvIGF0dHJpYnV0ZSBpc0xvY2tlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9p
bnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc2MTNhY2E4YWJiNDkzN2ZmYzc0NDg4Njg3NWEyNmJiZTI5NDA4ODgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdCBjYWxsaW5nIGxvY2sgd2hlbiBhbHJlYWR5IGlu
IGEgbG9ja2VkIHN0YXRlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
YXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyBmYWxzZQorUEFTUyBMb2NrIHRhcmdl
dDEgc3VjY2VlZGVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0
cnVlCitQQVNTIExvY2sgdGFyZ2V0MSBzdWNjZWVkZWQgYWdhaW4uCitQQVNTIG5hdmlnYXRvci53
ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK1BBU1MgZXhwZWN0VGFyZ2V0MVVubG9jayBp
cyB0cnVlCitQQVNTIExvY2sgdGFyZ2V0MiBzdWNjZWVkZWQuCitQQVNTIG5hdmlnYXRvci53ZWJr
aXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xv
Y2stYWxyZWFkeS1sb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODNiNzhlOTQ5ZGI3MWFjZWM3ZDE3
M2E0NDQ3OTQyNzYzMWZjMzlkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRl
ci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQuaHRtbApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+Cisg
IDxkaXYgaWQ9InRhcmdldDIiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0
aW9uKCJUZXN0IGNhbGxpbmcgbG9jayB3aGVuIGFscmVhZHkgaW4gYSBsb2NrZWQgc3RhdGUuIikK
KyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB0YXJnZXRkaXYxID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDEiKTsKKyAgICB0YXJnZXRkaXYyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDIiKTsKKworICAgIHZhciBleHBlY3RUYXJnZXQxVW5s
b2NrID0gZmFsc2U7CisgICAgdGFyZ2V0ZGl2MS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2lu
dGVybG9ja2xvc3QiLAorICAgICAgICBmdW5jdGlvbiAoKSB7IHNob3VsZEJlKCJleHBlY3RUYXJn
ZXQxVW5sb2NrIiwgInRydWUiKTsgfSk7CisKKyAgICB0YXJnZXRkaXYyLmFkZEV2ZW50TGlzdGVu
ZXIoIndlYmtpdHBvaW50ZXJsb2NrbG9zdCIsCisgICAgICAgIGZ1bmN0aW9uICgpIHsgdGVzdEZh
aWxlZCgiVW5leHBlY3RlZCB0YXJnZXRkaXYyIHBvaW50ZXJsb2NrbG9zdC4iKTsgfSk7CisKKyAg
ICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRv
ZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlz
TG9ja2VkIiwgImZhbHNlIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5s
b2NrKHRhcmdldGRpdjEsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDEgc3VjY2VlZGVkLiIpOworICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQi
LCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJn
ZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZCBhZ2Fpbi4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwg
InRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZXhwZWN0VGFyZ2V0MVVubG9jayA9IHRydWU7CisgICAg
ICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdjIsCisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJM
b2NrIHRhcmdldDIgc3VjY2VlZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgi
bmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAg
ICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFp
bGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAg
IGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJlOWEyZGE4ZDY1MWQxOGY3OTBlNGRmNGM5YmYxZDBmZTI3
NDg1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZh
aWwtcmVzcG9uc2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0IGFzeW5jaHJv
bm91cyByZXN1bHRzIG9mIGNhbGxpbmcgbG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIGlzIGRlZmluZWQuCitQQVNT
IExvY2sgZmFpbGVkIChhZnRlciB3ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9p
bnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpCitQQVNTIExvY2sgZmFpbGVkIChhZnRlciB3
ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5j
aHJvbm91c2x5KQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVz
cG9uc2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNl
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMzN2VlNGQxNmVhMTMyM2Q2MmZkN2MwYzNkY2JlMzU0ODdiZDIy
YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWls
LXJlc3BvbnNlcy5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IGFzeW5jaHJvbm91cyByZXN1bHRz
IG9mIGNhbGxpbmcgbG9jay4iKQorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAg
ICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciIpOworCisgICAg
Y3VycmVudFN0ZXAgPSAwOworICAgIGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2Rv
W2N1cnJlbnRTdGVwKytdKCk7CisgICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2ls
bEZhaWxTeW5jaHJvbm91c2x5KCk7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRl
ci5sb2NrKGRvY3VtZW50LmJvZHksCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHku
Iik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJMb2NrIGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9s
bGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KSIpOworICAgICAgICAgICAg
ICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dFBvaW50ZXJMb2NrV2lsbEZhaWxBc3luY2hyb25vdXNseSgpOworICAgICAgICAgICAgbmF2aWdh
dG9yLndlYmtpdFBvaW50ZXIubG9jayhkb2N1bWVudC5ib2R5LAorICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBzdWNjZWVk
ZWQgdW5leHBlY3RlZGx5LiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayBmYWlsZWQgKGFmdGVyIHdlIGNhbGxlZCBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWlsQXN5bmNocm9ub3VzbHkp
Iik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRT
dGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTc5N2MyN2U1Zjk5MTAwMTgzYmIzOGZlNDBlMjU0MmQxMmQ2Y2JlMAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1k
ZWxpdmVyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorVGVzdCBtb3VzZSBldmVudHMg
YXJlIHJvdXRlZCB0byBsb2NrIHRhcmdldC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1Mgd2luZG93LmV2ZW50U2VuZGVyIGlzIGRlZmluZWQuCitQQVNTIExvY2sgdGFyZ2V0
MSBzdWNjZWVkZWQuCitXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suCitQQVNTIGV2
ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQxLCByZWNlaXZlZCBvbjogdGFyZ2V0
MQorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQg
b246IGJvZHkKK1BBU1MgTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4KK1dpdGggYSBsb2NrIGluIHBs
YWNlIHNlbmQgYSBjbGljay4KK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRh
cmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwg
dGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogYm9keQorRW5zdXJlIGRvdWJsZSBjbGlja3Mg
d29yayBhcyBleHBlY3RlZCwgc2VuZGluZyA0IGNsaWNrcy4KK0NyZWF0aW5nIGEgY2xpY2sgYW5k
IGRibGNsaWNrLgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0Miwg
cmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0
YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFy
Z2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3Vz
ZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQg
dHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFT
UyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0
MgorUEFTUyBldmVudCB0eXBlOiBkYmxjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBv
bjogdGFyZ2V0MgorRW5zdXJpbmcgbm8gZmFsc2UgZGJsY2xpY2tzIGlmIHdlIGNvbnRpbnVlLgor
UEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246
IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNl
aXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQy
LCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdl
dDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1
cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBl
OiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sIGIvTGF5b3V0
VGVzdHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2JiMmQxOTZiOTY5ZmRhY2M0NDU1ZTdhYTcxYmZlNzgwOTk1YjYyZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sCkBA
IC0wLDAgKzEsMTA5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKzxk
aXY+CisgIDxkaXYgaWQ9InRhcmdldDEiPjwvZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQyIj48L2Rp
dj4KKzwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBtb3VzZSBldmVudHMg
YXJlIHJvdXRlZCB0byBsb2NrIHRhcmdldC4iKQorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5ldmVudFNlbmRlciIpOworCisgICAg
dGFyZ2V0ZGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQxIik7CisgICAgdGFy
Z2V0ZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQyIik7CisKKyAgICBmdW5j
dGlvbiBldmVudE5vdEV4cGVjdGVkKGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3Rl
ZCBldmVudCAiICsgZS50eXBlICsgIiBvbiAiICsgZS5jdXJyZW50VGFyZ2V0LmlkKTsKKyAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIGZ1bmN0aW9uIGV2ZW50RXhwZWN0ZWQoZSkg
eworICAgICAgdGVzdFBhc3NlZCgiZXZlbnQgdHlwZTogIiArIGUudHlwZSArICIsIHRhcmdldDog
IiArIGUudGFyZ2V0LmlkICsgIiwgcmVjZWl2ZWQgb246ICIgKyBlLmN1cnJlbnRUYXJnZXQuaWQp
OworICAgIH0KKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5jdGlvbiBkb05leHRTdGVw
KCkgeworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOworICAgIH0KKyAgICB0b2RvID0gWwor
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRl
ci5sb2NrKHRhcmdldGRpdjEsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDEgc3VjY2VlZGVkLiIpOworICAg
ICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
IkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgZGVidWcoIldpdGggYSBsb2NrIGluIHBsYWNlIHNlbmQgYSBjbGljay4iKQorICAg
ICAgICAgICAgdGFyZ2V0ZGl2MS5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAg
ICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gZXZlbnROb3RFeHBlY3RlZDsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAg
ICAgd2luZG93LmV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMDApOworICAgICAgICAgICAgd2lu
ZG93LmV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgIHRhcmdldGRpdjEub25tb3VzZWRvd24gPSB1bmRl
ZmluZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAg
ICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYyLAorICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0
U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRlYnVnKCJXaXRoIGEg
bG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suIikKKyAgICAgICAgICAgIHRhcmdldGRpdjEub25t
b3VzZWRvd24gPSBldmVudE5vdEV4cGVjdGVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1v
dXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9ubW91
c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5s
ZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAg
ICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFy
Z2V0ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7Cisg
ICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRlYnVnKCJFbnN1
cmUgZG91YmxlIGNsaWNrcyB3b3JrIGFzIGV4cGVjdGVkLCBzZW5kaW5nIDQgY2xpY2tzLiIpCisg
ICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAg
ICAgICAgIHRhcmdldGRpdjIub25tb3VzZXVwID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAg
IHRhcmdldGRpdjIub25jbGljayA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICB0YXJnZXRk
aXYyLm9uZGJsY2xpY2sgPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgZGVidWcoIkNyZWF0
aW5nIGEgY2xpY2sgYW5kIGRibGNsaWNrLiIpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2Vu
ZGVyLmxlYXBGb3J3YXJkKDEwMDApOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdp
bmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICBkZWJ1ZygiRW5zdXJpbmcg
bm8gZmFsc2UgZGJsY2xpY2tzIGlmIHdlIGNvbnRpbnVlLiIpOworICAgICAgICAgICAgd2luZG93
LmV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsK
KyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB0
YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2
Mi5vbm1vdXNldXAgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9uY2xpY2sg
PSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9uZGJsY2xpY2sgPSB1bmRlZmlu
ZWQ7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAgIGZpbmlz
aEpTVGVzdAorICAgIF07CisgICAgZG9OZXh0U3RlcCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVy
bG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3Bv
aW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTgzMjQwMGVhMTE4
ODkzNTAzMDlmYjQyOTg4M2FiZGI1MmRmYWY0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjIgQEAKK1Rlc3QgdGhhdCBwb2ludGVybG9ja2xvc3QgZXZlbnQgaXMgZGlzcGF0Y2hl
ZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyIGlzIGRlZmluZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlz
TG9ja2VkIGlzIHRydWUKK0phdmFTY3JpcHQgaW5pdGlhdGVkIHVubG9jay4KK1BBU1Mgd2Via2l0
cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAwCitQQVNTIHdlYmtpdHBvaW50ZXJsb2NrbG9z
dCBoYW5kbGVyIGNhbGwgMQorUEFTUyBBbGwgZXhwZWN0ZWQgd2Via2l0cG9pbnRlcmxvY2tsb3N0
IGV2ZW50cyByZWNlaXZlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQg
aXMgZmFsc2UKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQor
SG9zdCBpbml0aWF0ZWQgdW5sb2NrLgorUEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxl
ciBjYWxsIDAKK1BBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAxCitQQVNT
IEFsbCBleHBlY3RlZCB3ZWJraXRwb2ludGVybG9ja2xvc3QgZXZlbnRzIHJlY2VpdmVkLgorUEFT
UyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyBmYWxzZQorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQuaHRtbCBiL0xheW91dFRl
c3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NmE3NGMxZTk1ZGFjYWE4ODM1MDAyNWU1Nzg3NTZmYThhMTA3ZTUyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5odG1sCkBA
IC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICA8ZGl2
IGlkPSJ0YXJnZXQiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
ZXN0IHRoYXQgcG9pbnRlcmxvY2tsb3N0IGV2ZW50IGlzIGRpc3BhdGNoZWQuIikKKyAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIiKTsKKworICAgIHRhcmdldGRpdiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0YXJnZXQiKTsKKworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtp
dHBvaW50ZXJsb2NrbG9zdCIsIGxvY2tsb3N0SGFuZGxlcik7CisgICAgdGFyZ2V0ZGl2LmFkZEV2
ZW50TGlzdGVuZXIoIndlYmtpdHBvaW50ZXJsb2NrbG9zdCIsIGxvY2tsb3N0SGFuZGxlcik7Cisg
ICAgbG9ja2xvc3RoYW5kbGVycyA9IDI7CisKKyAgICBsb2NrbG9zdHJlY2VpcHRzID0gMDsKKyAg
ICBmdW5jdGlvbiBsb2NrbG9zdEhhbmRsZXIoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIndlYmtp
dHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgIiArIGxvY2tsb3N0cmVjZWlwdHMpOworICAg
ICAgICBsb2NrbG9zdHJlY2VpcHRzKys7CisgICAgICAgIGlmIChsb2NrbG9zdHJlY2VpcHRzID09
IGxvY2tsb3N0aGFuZGxlcnMpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkFsbCBleHBlY3Rl
ZCB3ZWJraXRwb2ludGVybG9ja2xvc3QgZXZlbnRzIHJlY2VpdmVkLiIpOworICAgICAgICAgICAg
ZG9OZXh0U3RlcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgY3VycmVudFN0ZXAgPSAwOwor
ICAgIGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7
CisgICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2LAorICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53
ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgInRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9O
ZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRlYnVnKCJKYXZh
U2NyaXB0IGluaXRpYXRlZCB1bmxvY2suIikKKyAgICAgICAgICAgIGxvY2tsb3N0cmVjZWlwdHMg
PSAwOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIudW5sb2NrKCk7CisgICAg
ICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIC8vIGxvY2tsb3N0SGFu
ZGxlciB3aWxsIGNhdGNoIHVubG9ja3MgYW5kIGNhbGwgZG9OZXh0U3RlcCB0byBicmluZyB1cyBo
ZXJlLgorICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9j
a2VkIiwgImZhbHNlIik7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVy
LmxvY2sodGFyZ2V0ZGl2LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwg
InRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGRlYnVnKCJIb3N0IGluaXRpYXRlZCB1bmxvY2suIikKKyAg
ICAgICAgICAgIGxvY2tsb3N0cmVjZWlwdHMgPSAwOworICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIC8vIGxvY2tsb3N0SGFuZGxlciB3aWxsIGNhdGNoIHVubG9j
a3MgYW5kIGNhbGwgZG9OZXh0U3RlcCB0byBicmluZyB1cyBoZXJlLgorICAgICAgICAgICAgc2hv
dWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgImZhbHNlIik7CisgICAg
ICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAgIGZpbmlzaEpTVGVzdAor
ICAgIF07CisgICAgZG9OZXh0U3RlcCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122698</attachid>
            <date>2012-01-16 17:35:55 -0800</date>
            <delta_ts>2012-01-24 14:07:34 -0800</delta_ts>
            <desc>Small patch, no subpatches</desc>
            <filename>bug-75762-20120116173554.patch</filename>
            <type>text/plain</type>
            <size>36522</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBlNzFjODQ1OWMyMTI1
NjYxMGI3ZjBiMzhlYjQ0NjMxZWNjMTIzNC4uYWViMmM2OGMxYzQ4ZTFiMWRjOGY5OGM4MTU0MDEz
NjU4ZWNmY2M4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTE2ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlciBj
bGFzcywgd2hpY2ggZXhpc3RzIHBlciBwYWdlLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojpwb2ludGVyTG9jayk6CisgICAgICAgIChXZWJD
b3JlOjpDaHJvbWVDbGllbnQ6OnBvaW50ZXJVbmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lQ2xpZW50Ojppc1BvaW50ZXJMb2NrZWQpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6d2Via2l0UG9pbnRlcik6CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cG9pbnRlckxvY2tDb250
cm9sbGVyKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvaW50ZXJMb2NrOjpQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVy
TG9jazo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9jazo6dW5sb2NrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrOjppc0xvY2tlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQb2ludGVyTG9jazo6cGFnZSk6CisgICAgICAgICogcGFnZS9Qb2ludGVyTG9jay5oOgorICAg
ICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJM
b2NrQ29udHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVy
TG9ja0NvbnRyb2xsZXI6OnVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0Nv
bnRyb2xsZXI6OmlzTG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJv
bGxlcjo6bG9ja1JlcXVlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tD
b250cm9sbGVyOjpsb2NrTG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRy
b2xsZXI6OmRpc3BhdGNoTG9ja2VkTW91c2VFdmVudCk6CisgICAgICAgICogcGFnZS9Qb2ludGVy
TG9ja0NvbnRyb2xsZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVy
TG9jay5oLgorCiAyMDEyLTAxLTE2ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBCdWlsZCBmaXggZm9yIHIxMDUwODYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDhhNTIzZmE1
N2E0NDcxNDNhNmM5ZWVhMjUxNTQ4YTI0YWU1MThiMi4uZTM3ZGRiODQ5NWU2MTFjZjRiNmQ3MmFj
ZTI1MWQ3NDU3ODhkNjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzA0MCw2ICszMDQwLDggQEAK
ICAgICAgICAgICAgICdwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmgnLAogICAgICAgICAgICAgJ3Bh
Z2UvUG9pbnRlckxvY2suY3BwJywKICAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrLmgnLAor
ICAgICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAg
ICAncGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9Qcmlu
dENvbnRleHQuY3BwJywKICAgICAgICAgICAgICdwYWdlL1NjcmVlbi5jcHAnLAogICAgICAgICAg
ICAgJ3BhZ2UvU2NyZWVuLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggZGExOGIyOTUx
YmE3ZDQ5MzU0ZDRlYTcyOTgzZmY0Yjk2YzEzYzk5OC4uNjQ2NGQ4YzEwMGQxYTc0YzcxZGZhYjA1
YmE4NTI2ODZiMjRlNGJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xOTcsNiArMTk3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAgICBtYWNybyhzaG93KSBcCiAgICAg
XAorICAgIG1hY3JvKHdlYmtpdHBvaW50ZXJsb2NrbG9zdCkgXAorICAgIFwKIAogLy8gZW5kIG9m
IERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApp
bmRleCA5ODJhN2NkMTVkNWQzOGQ5MjI1ZGMxYjZiZjEyMTFmZDczODE4YWFmLi40ODY2MjVhOThk
MjBlMWMwM2Q1MTVlYjIyNDQyZDM4MTQyZjgxMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xp
ZW50LmgKQEAgLTMyOCw2ICszMjgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2VDaHJvbWVDbGllbnQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAgICAgdmlydHVh
bCBib29sIHJlcXVlc3RQb2ludGVyTG9jaygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0UG9pbnRlclVubG9jaygpIHsgfQorICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNQb2ludGVyTG9ja2VkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IGMzNWU5OTQ5NjFjNTBhODFhYmI4YzAwODQzZDgy
ZWM0MzYxNjFkZTQuLmQxNWZjNzc1M2M0ZWM2YzM1NmZjMmI3ZjhjZTZlYTA5NzIwNTMxY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBHZW9sb2NhdGlv
biogTmF2aWdhdG9yOjpnZW9sb2NhdGlvbigpIGNvbnN0CiBQb2ludGVyTG9jayogTmF2aWdhdG9y
Ojp3ZWJraXRQb2ludGVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcG9pbnRlcikKLSAgICAgICAg
bV9wb2ludGVyID0gUG9pbnRlckxvY2s6OmNyZWF0ZSgpOworICAgICAgICBtX3BvaW50ZXIgPSBQ
b2ludGVyTG9jazo6Y3JlYXRlKG1fZnJhbWUtPnBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVy
KCkpOwogICAgIHJldHVybiBtX3BvaW50ZXIuZ2V0KCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDBjNmZmNTViYTEyNGM4OWJmYTg5OGMyZTBhOTc1NWFlMWUzN2Q3M2EuLjU0NDY4
MjJlNjJjNjlhODQ4YjZmMGUyMjMzYjY3YWZmMTM2OTc5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVn
aW5WaWV3LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKKyNpbmNsdWRlICJQb2ludGVy
TG9ja0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTE0Niw2ICsxNDcs
OSBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKICAgICAsIG1fbm90aWZpY2F0aW9uQ29udHJvbGxlcihOb3RpZmljYXRpb25D
b250cm9sbGVyOjpjcmVhdGUodGhpcywgcGFnZUNsaWVudHMubm90aWZpY2F0aW9uQ2xpZW50KSkK
ICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgLCBtX3BvaW50ZXJMb2NrQ29u
dHJvbGxlcihhZG9wdFB0cihuZXcgUG9pbnRlckxvY2tDb250cm9sbGVyKHRoaXMpKSkKKyNlbmRp
ZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KHBh
Z2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50KQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGVm
MWQxZDlmYzI3NDRkNDUyZjUxNTgzNzI2MWU2Mjk3ODRlMWFlOGUuLmFjOWM1NzhmODE5YjQ2NDk3
YmIyYzVjZDNiZWYyODczMTZmYjg5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC03Niw2ICs3Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAg
ICAgY2xhc3MgUGFnZUdyb3VwOwogICAgIGNsYXNzIFBsdWdpbkRhdGE7CisgICAgY2xhc3MgUG9p
bnRlckxvY2tDb250cm9sbGVyOwogICAgIGNsYXNzIFByb2dyZXNzVHJhY2tlcjsKICAgICBjbGFz
cyBSYW5nZTsKICAgICBjbGFzcyBSZW5kZXJUaGVtZTsKQEAgLTE5MCw2ICsxOTEsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgICAgIE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXIqIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biBtX25vdGlmaWNhdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisgICAgICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciogcG9pbnRlckxvY2tD
b250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIuZ2V0KCk7
IH0KKyNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgICAgIFNwZWVjaElucHV0
KiBzcGVlY2hJbnB1dCgpOwogI2VuZGlmCkBAIC0zODYsNiArMzkwLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBPd25QdHI8Tm90aWZp
Y2F0aW9uQ29udHJvbGxlcj4gbV9ub3RpZmljYXRpb25Db250cm9sbGVyOwogI2VuZGlmCisjaWYg
RU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICAgICAgT3duUHRyPFBvaW50ZXJMb2NrQ29udHJvbGxl
cj4gbV9wb2ludGVyTG9ja0NvbnRyb2xsZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQogICAgICAgICBTcGVlY2hJbnB1dENsaWVudCogbV9zcGVlY2hJbnB1dENsaWVudDsKICAg
ICAgICAgT3duUHRyPFNwZWVjaElucHV0PiBtX3NwZWVjaElucHV0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bv
aW50ZXJMb2NrLmNwcAppbmRleCBkZmIzY2I0OWEwOWM4OTAyODFiOTA2ODJmYjg1Y2Q4NDFhNmVj
YTkxLi4wZDIxZTc3YWY0YTQ5ZjIxYjIyNjQ2Y2E0NzExNDM5Yjk3MmJlODg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrLmNwcApAQCAtMjUsMTEgKzI1LDE2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2suaCIKIAorI2luY2x1ZGUgIkZyYW1lLmgiCisj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgorCiAj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Qb2ludGVy
TG9jazo6UG9pbnRlckxvY2soKQorUG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKFBvaW50ZXJMb2Nr
Q29udHJvbGxlciogY29udHJvbGxlcikKKyAgICA6IG1fY29udHJvbGxlcihjb250cm9sbGVyKQog
ewogfQogCkBAIC0zOSwxOCArNDQsMTcgQEAgUG9pbnRlckxvY2s6On5Qb2ludGVyTG9jaygpCiAK
IHZvaWQgUG9pbnRlckxvY2s6OmxvY2soRWxlbWVudCogdGFyZ2V0LCBQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gZmFpbHVy
ZUNhbGxiYWNrKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICByZXR1cm4gbV9jb250
cm9sbGVyLT5yZXF1ZXN0UG9pbnRlckxvY2sodGFyZ2V0LCBzdWNjZXNzQ2FsbGJhY2ssIGZhaWx1
cmVDYWxsYmFjayk7CiB9CiAKIHZvaWQgUG9pbnRlckxvY2s6OnVubG9jaygpCiB7Ci0gICAgLy8g
RklYTUU6IEltcGxlbWVudAorICAgIHJldHVybiBtX2NvbnRyb2xsZXItPnJlcXVlc3RQb2ludGVy
VW5sb2NrKCk7CiB9CiAKIGJvb2wgUG9pbnRlckxvY2s6OmlzTG9ja2VkKCkKIHsKLSAgICAvLyBG
SVhNRTogSW1wbGVtZW50Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRyb2xs
ZXItPmlzTG9ja2VkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UG9pbnRlckxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaAppbmRleCBi
ZTdjMzE3OGY1OGZlNzk5YzYxMWNmMDYxY2NkZWRlOTMyYmFkYjAzLi5lMDE5OTllODAyY2M4OTIy
ZTE2YjA0NjQ2YjNhMDllYThiY2NlMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BvaW50ZXJMb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5oCkBA
IC0zNCwxMCArMzQsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsK
K2NsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlcjsKIAogY2xhc3MgUG9pbnRlckxvY2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxQb2ludGVyTG9jaz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBvaW50ZXJMb2NrPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgUG9pbnRlckxv
Y2soKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb2ludGVyTG9jaz4gY3JlYXRlKFBvaW50
ZXJMb2NrQ29udHJvbGxlciogY29udHJvbGxlcikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50
ZXJMb2NrKGNvbnRyb2xsZXIpKTsgfQogCiAgICAgflBvaW50ZXJMb2NrKCk7CiAKQEAgLTQ2LDcg
KzQ3LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNMb2NrZWQoKTsKIAogcHJpdmF0ZToKLSAgICBQ
b2ludGVyTG9jaygpOworICAgIFBvaW50ZXJMb2NrKFBvaW50ZXJMb2NrQ29udHJvbGxlciopOwor
CisgICAgUG9pbnRlckxvY2tDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJM
b2NrQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJv
bGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTlkMWFiZDAxODM1MTBlMjZmOGU5OWY0M2M1MDdjZWQxNjQw
NjA3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tD
b250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgorCisjaW5jbHVk
ZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIK
KworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUG9p
bnRlckxvY2tDb250cm9sbGVyOjpQb2ludGVyTG9ja0NvbnRyb2xsZXIoUGFnZSogcGFnZSkKKyAg
ICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVx
dWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFj
aykKK3sKKyAgICBpZiAoaXNMb2NrZWQoKSkgeworICAgICAgICBpZiAobV9lbGVtZW50ID09IHRh
cmdldCkgeworICAgICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgICAgICAg
ICBzdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICAgICAgICAgIG1fZWxlbWVudCA9IHRh
cmdldDsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlm
IChtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cmVxdWVzdFBvaW50ZXJMb2NrKCkpIHsKKyAg
ICAgICAgbV9lbGVtZW50ID0gdGFyZ2V0OworICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IHN1
Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSBmYWlsdXJlQ2FsbGJh
Y2s7CisgICAgfSBlbHNlIGlmIChmYWlsdXJlQ2FsbGJhY2spCisgICAgICAgIGZhaWx1cmVDYWxs
YmFjay0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJl
cXVlc3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7Cit9CisKK2Jvb2wgUG9pbnRlckxvY2tDb250
cm9sbGVyOjppc0xvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5pc1BvaW50ZXJMb2NrZWQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6
OmRpZENvbXBsZXRlUG9pbnRlckxvY2soKQoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFja1RvSXNzdWUobV9z
dWNjZXNzQ2FsbGJhY2spOworICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gMDsKKyAgICBtX2ZhaWx1
cmVDYWxsYmFjayA9IDA7CisKKyAgICBpZiAoY2FsbGJhY2tUb0lzc3VlKQorICAgICAgICBjYWxs
YmFja1RvSXNzdWUtPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9s
bGVyOjpkaWROb3RDb21wbGV0ZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2tUb0lz
c3VlKG1fZmFpbHVyZUNhbGxiYWNrKTsKKyAgICBtX2VsZW1lbnQgPSAwOworICAgIG1fc3VjY2Vz
c0NhbGxiYWNrID0gMDsKKyAgICBtX2ZhaWx1cmVDYWxsYmFjayA9IDA7CisKKyAgICBpZiAoY2Fs
bGJhY2tUb0lzc3VlKQorICAgICAgICBjYWxsYmFja1RvSXNzdWUtPmhhbmRsZUV2ZW50KCk7Cit9
CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRMb3NlUG9pbnRlckxvY2soKQorewor
ICAgIGlmIChtX2VsZW1lbnQpIHsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGVs
ZW1lbnRUb05vdGlmeShtX2VsZW1lbnQpOworICAgICAgICBtX2VsZW1lbnQgPSAwOworICAgICAg
ICBtX3N1Y2Nlc3NDYWxsYmFjayA9IDA7CisgICAgICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gMDsK
KyAgICAgICAgZWxlbWVudFRvTm90aWZ5LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrbG9zdEV2ZW50LCB0cnVlLCBmYWxzZSkpOworICAg
IH0KK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpc3BhdGNoTG9ja2VkTW91c2VF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSkKK3sKKyAgICBtX2VsZW1lbnQtPmRpc3BhdGNoTW91c2VFdmVudChldmVudCwg
ZXZlbnRUeXBlLCBldmVudC5jbGlja0NvdW50KCkpOworCisgICAgLy8gQ3JlYXRlIGNsaWNrIGV2
ZW50cworICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkKKyAg
ICAgICAgbV9lbGVtZW50LT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50TmFtZXMoKS5j
bGlja0V2ZW50LCBldmVudC5jbGlja0NvdW50KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU2MDczMzhlMmRiYzUyZGNm
ZDA3ZmVmZWYwMThhOTZjNDlhZGI2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBQb2ludGVyTG9ja0NvbnRyb2xsZXJfaAorI2RlZmluZSBQb2ludGVyTG9j
a0NvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIlZv
aWRDYWxsYmFjay5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbGVtZW50
OworY2xhc3MgUGFnZTsKK2NsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKKworY2xhc3MgUG9pbnRl
ckxvY2tDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2ludGVyTG9ja0Nv
bnRyb2xsZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFBv
aW50ZXJMb2NrQ29udHJvbGxlcihQYWdlKik7CisKKyAgICB2b2lkIHJlcXVlc3RQb2ludGVyTG9j
ayhXZWJDb3JlOjpFbGVtZW50KiB0YXJnZXQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBmYWlsdXJlQ2FsbGJhY2spOwor
ICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKKyAgICBib29sIGlzTG9ja2VkKCk7CisK
KyAgICB2b2lkIGRpZENvbXBsZXRlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5vdENvbXBs
ZXRlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAgIHZv
aWQgZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKKworcHJpdmF0ZToKKyAgICBQYWdlKiBtX3Bh
Z2U7CisgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6Vm9pZENhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6Vm9pZENhbGxiYWNrPiBtX2ZhaWx1cmVDYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAv
LyBQb2ludGVyTG9ja0NvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCmluZGV4IGExNDc0ODM1MzE5N2I3Mjc5Mzk3MjA0ZmE0ODBkYmEzMzQwNTk3
ZDcuLjJlY2YzOWUxNmU0NmUxNGIzZTlmZGI3MDI3ZjA2ODljYjAwMjlhNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTkwLDYgKzkwLDggQEAKICNp
bmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhlbWVDaHJvbWl1
bUxpbnV4LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUG9p
bnRlckxvY2suaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJQb3B1cENvbnRhaW5lci5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2luY2x1
ZGUgIlByb2dyZXNzVHJhY2tlci5oIgpAQCAtMTAxMiw2ICsxMDE0LDkgQEAgV2ViVmlld0ltcGwq
IFdlYlZpZXdJbXBsOjpmcm9tUGFnZShQYWdlKiBwYWdlKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpj
bG9zZSgpCiB7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXF1ZXN0UG9pbnRlclVu
bG9jaygpOworI2VuZGlmCiAgICAgUmVmUHRyPFdlYkZyYW1lSW1wbD4gbWFpbkZyYW1lSW1wbDsK
IAogICAgIGlmIChtX3BhZ2UpIHsKQEAgLTEzMzEsNiArMTMzNiwxMyBAQCBib29sIFdlYlZpZXdJ
bXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQpCiAK
ICAgICBtX2N1cnJlbnRJbnB1dEV2ZW50ID0gJmlucHV0RXZlbnQ7CiAKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgIGlmIChpc1BvaW50ZXJMb2NrZWQoKSAmJiBXZWJJbnB1dEV2ZW50Ojpp
c01vdXNlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKKyAgICAgIHBvaW50ZXJMb2NrTW91
c2VFdmVudChpbnB1dEV2ZW50KTsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgor
CiAgICAgaWYgKG1fbW91c2VDYXB0dXJlTm9kZSAmJiBXZWJJbnB1dEV2ZW50Ojppc01vdXNlRXZl
bnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKICAgICAgICAgLy8gU2F2ZSBtX21vdXNlQ2FwdHVy
ZU5vZGUgc2luY2UgbW91c2VDYXB0dXJlTG9zdCgpIHdpbGwgY2xlYXIgaXQuCiAgICAgICAgIFJl
ZlB0cjxOb2RlPiBub2RlID0gbV9tb3VzZUNhcHR1cmVOb2RlOwpAQCAtMTc0Miw2ICsxNzU0LDMw
IEBAIGJvb2wgV2ViVmlld0ltcGw6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpIGNv
bnN0CiAjZW5kaWYKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6ZGlkQ29tcGxldGVQb2ludGVyTG9j
aygpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAocGFnZSgpKQorICAgICAg
ICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaWRDb21wbGV0ZVBvaW50ZXJMb2Nr
KCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6ZGlkTm90Q29tcGxldGVQb2ludGVy
TG9jaygpCit7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAocGFnZSgpKQorICAg
ICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaWROb3RDb21wbGV0ZVBvaW50
ZXJMb2NrKCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6ZGlkTG9zZVBvaW50ZXJM
b2NrKCkKK3sKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlKCkpCisgICAg
ICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZExvc2VQb2ludGVyTG9jaygp
OworI2VuZGlmCit9CisKIC8vIFdlYlZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViU2V0dGluZ3MqIFdl
YlZpZXdJbXBsOjpzZXR0aW5ncygpCkBAIC0zMTc3LDQgKzMyMTMsNDcgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6cmVzZXRHZXN0dXJlUmVjb2duaXplcigpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCitib29sIFdlYlZpZXdJbXBsOjpyZXF1ZXN0UG9pbnRlckxvY2soKQorewor
ICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+cmVxdWVzdFBvaW50ZXJMb2NrKCk7Cit9
CisKK3ZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOworfQor
Citib29sIFdlYlZpZXdJbXBsOjppc1BvaW50ZXJMb2NrZWQoKQoreworICAgIHJldHVybiBtX2Ns
aWVudCAmJiBtX2NsaWVudC0+aXNQb2ludGVyTG9ja2VkKCk7Cit9CisKK3ZvaWQgV2ViVmlld0lt
cGw6OnBvaW50ZXJMb2NrTW91c2VFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKK3sK
KyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlOworICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VEb3duOgorICAgICAgICBldmVudFR5cGUgPSBl
dmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6TW91c2VVcDoKKyAgICAgICAgZXZlbnRUeXBlID0gZXZlbnROYW1lcygpLm1v
dXNldXBFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3Vz
ZU1vdmU6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudDsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorCisgICAgY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCA9IHN0YXRp
Y19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPihldmVudCk7CisKKyAgICBpZiAocGFnZSgpKQor
ICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaXNwYXRjaExvY2tlZE1v
dXNlRXZlbnQoCisgICAgICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWVWaWV3KCksIG1vdXNlRXZlbnQpLAorICAgICAgICAgICAgZXZlbnRUeXBl
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NTk3YzhmYTI0
ODRlZDBkYTYzNWFjOTc4MjY0OTk1MjNkZjQ1MjUzLi5kNmQzYjYwOGQ0MTBkODBlN2VhZWI4OGFi
YTdiZWJkMWI5MTMxODA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDEtMTYgIFZpbmNl
bnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb2ludGVyIExvY2s6
IEltcGxlbWVudCBwb2ludGVyIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1s
b2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNw
b25zZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1m
YWlsLXJlc3BvbnNlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svbW91c2Ut
ZXZlbnQtZGVsaXZlcnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxv
Y2svbW91c2UtZXZlbnQtZGVsaXZlcnkuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1s
b2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMTIt
MDEtMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
Qm9yZGVycyBhbmQgYm94IG1hc2tzIGJlaGF2ZSBpbmNvcnJlY3RseSB3aXRoIG92ZXJsYXBwaW5n
IG9mZnNldHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVh
ZHktbG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFs
cmVhZHktbG9ja2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjEzYWNhOGFiYjQ5MzdmZmM3
NDQ4ODY4NzVhMjZiYmUyOTQwODg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9p
bnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcg
QEAKK1Rlc3QgY2FsbGluZyBsb2NrIHdoZW4gYWxyZWFkeSBpbiBhIGxvY2tlZCBzdGF0ZS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIuaXNMb2NrZWQgaXMgZmFsc2UKK1BBU1MgTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4KK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorUEFTUyBMb2NrIHRhcmdl
dDEgc3VjY2VlZGVkIGFnYWluLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tl
ZCBpcyB0cnVlCitQQVNTIGV4cGVjdFRhcmdldDFVbmxvY2sgaXMgdHJ1ZQorUEFTUyBMb2NrIHRh
cmdldDIgc3VjY2VlZGVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBp
cyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2Nr
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgzYjc4ZTk0OWRiNzFhY2VjN2QxNzNhNDQ0Nzk0Mjc2MzFmYzM5ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHkt
bG9ja2VkLmh0bWwKQEAgLTAsMCArMSw3NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXY+CisgIDxkaXYgaWQ9InRhcmdldDEiPjwvZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQyIj48
L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBjYWxsaW5nIGxv
Y2sgd2hlbiBhbHJlYWR5IGluIGEgbG9ja2VkIHN0YXRlLiIpCisgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgdGFyZ2V0ZGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXQxIik7CisgICAgdGFyZ2V0ZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQyIik7CisKKyAgICB2YXIgZXhwZWN0VGFyZ2V0MVVubG9jayA9IGZhbHNlOworICAgIHRh
cmdldGRpdjEuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cG9pbnRlcmxvY2tsb3N0IiwKKyAgICAg
ICAgZnVuY3Rpb24gKCkgeyBzaG91bGRCZSgiZXhwZWN0VGFyZ2V0MVVubG9jayIsICJ0cnVlIik7
IH0pOworCisgICAgdGFyZ2V0ZGl2Mi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9j
a2xvc3QiLAorICAgICAgICBmdW5jdGlvbiAoKSB7IHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgdGFy
Z2V0ZGl2MiBwb2ludGVybG9ja2xvc3QuIik7IH0pOworCisgICAgY3VycmVudFN0ZXAgPSAwOwor
ICAgIGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7
CisgICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIpOwor
ICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYxLAorICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxk
QmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgInRydWUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2Nr
IGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2MSwKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sg
dGFyZ2V0MSBzdWNjZWVkZWQgYWdhaW4uIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJ0cnVlIik7CisgICAgICAgICAg
ICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBm
YWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAg
ICAgICAgIH0pOworCisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIGV4cGVjdFRhcmdldDFVbmxvY2sgPSB0cnVlOworICAgICAgICAgICAgbmF2aWdhdG9yLndl
YmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYyLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQyIHN1Y2NlZWRl
ZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2lu
dGVyLmlzTG9ja2VkIiwgInRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgp
OworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
fSwKKyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9p
bnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFiZTlhMmRhOGQ2NTFkMThmNzkwZTRkZjRjOWJmMWQwZmUyNzQ4NWEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBhc3luY2hyb25vdXMgcmVzdWx0cyBvZiBjYWxs
aW5nIGxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciBpcyBkZWZpbmVkLgorUEFTUyBMb2NrIGZhaWxlZCAoYWZ0ZXIg
d2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5j
aHJvbm91c2x5KQorUEFTUyBMb2NrIGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxBc3luY2hyb25vdXNseSkKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy5odG1sIGIvTGF5b3V0
VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MzdlZTRkMTZlYTEzMjNkNjJmZDdjMGMzZGNiZTM1NDg3YmQyMmIwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMuaHRtbApAQCAt
MCwwICsxLDQ3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBk
ZXNjcmlwdGlvbigiVGVzdCBhc3luY2hyb25vdXMgcmVzdWx0cyBvZiBjYWxsaW5nIGxvY2suIikK
KyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAg
ICBmdW5jdGlvbiBkb05leHRTdGVwKCkgeworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOwor
ICAgIH0KKyAgICB0b2RvID0gWworICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgp
OworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayhkb2N1bWVudC5ib2R5
LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiTG9jayBzdWNjZWVkZWQgdW5leHBlY3RlZGx5LiIpOworICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayBmYWls
ZWQgKGFmdGVyIHdlIGNhbGxlZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dp
bGxGYWlsU3luY2hyb25vdXNseSkiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWls
QXN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxv
Y2soZG9jdW1lbnQuYm9keSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgc3VjY2VlZGVkIHVuZXhwZWN0ZWRseS4iKTsK
KyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkxvY2sgZmFpbGVkIChhZnRlciB3ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5KSIpOworICAgICAgICAgICAgICAg
ICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAg
ICAgIGZpbmlzaEpTVGVzdAorICAgIF07CisgICAgZG9OZXh0U3RlcCgpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9j
ay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVy
LWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3OTdj
MjdlNWY5OTEwMDE4M2JiMzhmZTQwZTI1NDJkMTJkNmNiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzQgQEAKK1Rlc3QgbW91c2UgZXZlbnRzIGFyZSByb3V0ZWQgdG8gbG9jayB0
YXJnZXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5ldmVu
dFNlbmRlciBpcyBkZWZpbmVkLgorUEFTUyBMb2NrIHRhcmdldDEgc3VjY2VlZGVkLgorV2l0aCBh
IGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24s
IHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQgb246IHRhcmdldDEKK1BBU1MgZXZlbnQgdHlwZTog
bW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDEsIHJlY2VpdmVkIG9uOiBib2R5CitQQVNTIExvY2sg
dGFyZ2V0MiBzdWNjZWVkZWQuCitXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suCitQ
QVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjog
dGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVj
ZWl2ZWQgb246IGJvZHkKK0Vuc3VyZSBkb3VibGUgY2xpY2tzIHdvcmsgYXMgZXhwZWN0ZWQsIHNl
bmRpbmcgNCBjbGlja3MuCitDcmVhdGluZyBhIGNsaWNrIGFuZCBkYmxjbGljay4KK1BBU1MgZXZl
bnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQy
CitQQVNTIGV2ZW50IHR5cGU6IG1vdXNldXAsIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246
IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogY2xpY2ssIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2
ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdl
dDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNldXAsIHRhcmdl
dDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogY2xpY2ss
IHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTog
ZGJsY2xpY2ssIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK0Vuc3VyaW5n
IG5vIGZhbHNlIGRibGNsaWNrcyBpZiB3ZSBjb250aW51ZS4KK1BBU1MgZXZlbnQgdHlwZTogbW91
c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50
IHR5cGU6IG1vdXNldXAsIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BB
U1MgZXZlbnQgdHlwZTogY2xpY2ssIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdl
dDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVk
IG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNldXAsIHRhcmdldDogdGFyZ2V0Miwg
cmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogY2xpY2ssIHRhcmdldDogdGFy
Z2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxv
Y2svbW91c2UtZXZlbnQtZGVsaXZlcnkuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9t
b3VzZS1ldmVudC1kZWxpdmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiYjJkMTk2Yjk2OWZkYWNjNDQ1
NWU3YWE3MWJmZTc4MDk5NWI2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2lu
dGVyLWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnkuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8ZGl2PgorICA8ZGl2IGlkPSJ0YXJn
ZXQxIj48L2Rpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MiI+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+
CisgICAgZGVzY3JpcHRpb24oIlRlc3QgbW91c2UgZXZlbnRzIGFyZSByb3V0ZWQgdG8gbG9jayB0
YXJnZXQuIikKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgc2hvdWxkQmVE
ZWZpbmVkKCJ3aW5kb3cuZXZlbnRTZW5kZXIiKTsKKworICAgIHRhcmdldGRpdjEgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MSIpOworICAgIHRhcmdldGRpdjIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGFyZ2V0MiIpOworCisgICAgZnVuY3Rpb24gZXZlbnROb3RFeHBlY3Rl
ZChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgZXZlbnQgIiArIGUudHlwZSAr
ICIgb24gIiArIGUuY3VycmVudFRhcmdldC5pZCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgIH0KKyAgICBmdW5jdGlvbiBldmVudEV4cGVjdGVkKGUpIHsKKyAgICAgIHRlc3RQYXNzZWQo
ImV2ZW50IHR5cGU6ICIgKyBlLnR5cGUgKyAiLCB0YXJnZXQ6ICIgKyBlLnRhcmdldC5pZCArICIs
IHJlY2VpdmVkIG9uOiAiICsgZS5jdXJyZW50VGFyZ2V0LmlkKTsKKyAgICB9CisKKyAgICBjdXJy
ZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3Vy
cmVudFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYxLAor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9O
ZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRlYnVnKCJXaXRo
IGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suIikKKyAgICAgICAgICAgIHRhcmdldGRpdjEu
b25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1v
dXNlZG93biA9IGV2ZW50Tm90RXhwZWN0ZWQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9u
bW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRl
ci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAg
ICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAg
dGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7
CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRv
ci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2MiwKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MiBzdWNj
ZWVkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBh
IGNsaWNrLiIpCisgICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gZXZlbnROb3RF
eHBlY3RlZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBldmVudEV4cGVj
dGVkOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0
ZWQ7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7Cisg
ICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3
aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgdGFyZ2V0ZGl2MS5vbm1v
dXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24g
PSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9ubW91c2Vkb3duID0gdW5k
ZWZpbmVkOworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiRW5zdXJlIGRvdWJsZSBjbGlja3Mgd29y
ayBhcyBleHBlY3RlZCwgc2VuZGluZyA0IGNsaWNrcy4iKQorICAgICAgICAgICAgdGFyZ2V0ZGl2
Mi5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9u
bW91c2V1cCA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9uY2xpY2sg
PSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmRibGNsaWNrID0gZXZl
bnRFeHBlY3RlZDsKKyAgICAgICAgICAgIGRlYnVnKCJDcmVhdGluZyBhIGNsaWNrIGFuZCBkYmxj
bGljay4iKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAw
KTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAg
ICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91
c2VVcCgpOworICAgICAgICAgICAgZGVidWcoIkVuc3VyaW5nIG5vIGZhbHNlIGRibGNsaWNrcyBp
ZiB3ZSBjb250aW51ZS4iKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAg
ICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cu
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93
biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZXVwID0gdW5kZWZp
bmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmNsaWNrID0gdW5kZWZpbmVkOworICAgICAg
ICAgICAgdGFyZ2V0ZGl2Mi5vbmRibGNsaWNrID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9O
ZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAg
IGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MzI0MDBlYTExODg5MzUwMzA5ZmI0Mjk4ODNhYmRi
NTJkZmFmNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9p
bnRlcmxvY2tsb3N0LWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHRo
YXQgcG9pbnRlcmxvY2tsb3N0IGV2ZW50IGlzIGRpc3BhdGNoZWQuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciBpcyBkZWZp
bmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0cnVlCitKYXZh
U2NyaXB0IGluaXRpYXRlZCB1bmxvY2suCitQQVNTIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBoYW5k
bGVyIGNhbGwgMAorUEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxsIDEKK1BB
U1MgQWxsIGV4cGVjdGVkIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBldmVudHMgcmVjZWl2ZWQuCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIGZhbHNlCitQQVNTIG5hdmln
YXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK0hvc3QgaW5pdGlhdGVkIHVubG9j
ay4KK1BBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAwCitQQVNTIHdlYmtp
dHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMQorUEFTUyBBbGwgZXhwZWN0ZWQgd2Via2l0
cG9pbnRlcmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBv
aW50ZXIuaXNMb2NrZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2sv
cG9pbnRlcmxvY2tsb3N0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9p
bnRlcmxvY2tsb3N0LWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzZhNzRjMWU5NWRhY2FhODgzNTAw
MjVlNTc4NzU2ZmE4YTEwN2U1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50
ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQuaHRtbApAQCAtMCwwICsxLDg1IEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4K
KzwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBvaW50ZXJsb2Nr
bG9zdCBldmVudCBpcyBkaXNwYXRjaGVkLiIpCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIik7
CisKKyAgICB0YXJnZXRkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisK
KyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QiLCBs
b2NrbG9zdEhhbmRsZXIpOworICAgIHRhcmdldGRpdi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRw
b2ludGVybG9ja2xvc3QiLCBsb2NrbG9zdEhhbmRsZXIpOworICAgIGxvY2tsb3N0aGFuZGxlcnMg
PSAyOworCisgICAgbG9ja2xvc3RyZWNlaXB0cyA9IDA7CisgICAgZnVuY3Rpb24gbG9ja2xvc3RI
YW5kbGVyKCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFu
ZGxlciBjYWxsICIgKyBsb2NrbG9zdHJlY2VpcHRzKTsKKyAgICAgICAgbG9ja2xvc3RyZWNlaXB0
cysrOworICAgICAgICBpZiAobG9ja2xvc3RyZWNlaXB0cyA9PSBsb2NrbG9zdGhhbmRsZXJzKSB7
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgZXhwZWN0ZWQgd2Via2l0cG9pbnRlcmxvY2ts
b3N0IGV2ZW50cyByZWNlaXZlZC4iKTsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5jdGlvbiBkb05leHRT
dGVwKCkgeworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOworICAgIH0KKyAgICB0b2RvID0g
WworICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9p
bnRlci5sb2NrKHRhcmdldGRpdiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tl
ZCIsICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiSmF2YVNjcmlwdCBpbml0aWF0ZWQgdW5s
b2NrLiIpCisgICAgICAgICAgICBsb2NrbG9zdHJlY2VpcHRzID0gMDsKKyAgICAgICAgICAgIG5h
dmlnYXRvci53ZWJraXRQb2ludGVyLnVubG9jaygpOworICAgICAgICB9LAorICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAvLyBsb2NrbG9zdEhhbmRsZXIgd2lsbCBjYXRjaCB1bmxv
Y2tzIGFuZCBjYWxsIGRvTmV4dFN0ZXAgdG8gYnJpbmcgdXMgaGVyZS4KKyAgICAgICAgICAgIHNo
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIpOworICAg
ICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdiwKKyAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJ0cnVlIik7CisgICAgICAgICAg
ICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBm
YWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICBkZWJ1ZygiSG9zdCBpbml0aWF0ZWQgdW5sb2NrLiIpCisgICAgICAgICAgICBsb2NrbG9zdHJl
Y2VpcHRzID0gMDsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpZExvc2VQb2lu
dGVyTG9jaygpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAvLyBsb2NrbG9zdEhhbmRsZXIgd2lsbCBjYXRjaCB1bmxvY2tzIGFuZCBjYWxsIGRvTmV4dFN0
ZXAgdG8gYnJpbmcgdXMgaGVyZS4KKyAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Vi
a2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgZG9OZXh0U3RlcCgp
OworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAgIGRvTmV4dFN0
ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123805</attachid>
            <date>2012-01-24 14:07:37 -0800</date>
            <delta_ts>2012-01-25 11:09:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75762-20120124140736.patch</filename>
            <type>text/plain</type>
            <size>37627</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTViM2QyY2MxY2E0NDE5
ZDI3NDU4YWY1NmVkZjYyZmY5OWYwZDBmMC4uZWUyMDMyZjdjYjRhZjAwMDUxMjNlOTA5ZDBhNzA5
ZDNlZTljZjY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlciBj
bGFzcywgd2hpY2ggZXhpc3RzIHBlciBwYWdlLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRQb2lu
dGVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
b2ludGVyTG9ja0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2Nr
Ojp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OmlzTG9ja2VkKToKKyAg
ICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
azo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpy
ZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9s
bGVyOjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXI6OmlzTG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29u
dHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50
ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmguCisKIDIwMTItMDEtMjQgIE1hcmlv
IFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJl
ZmFjdG9yIEdUSydzIGFjY2Vzc2liaWxpdGl0eSBjb2RlIHRvIGJlIG1vcmUgbW9kdWxhcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxMWRkNDc4ODZmNzVmZDY3ZDg3MDMwZjY5NTgxMTU1
M2JlMmRjZGMzLi5mZWY4MzIwMGQ4Mjc1MzQ2MzQ4ZGFhZmUxZmE0OTA0NTFjMTczNmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgQWRkIGNhbGxzIHRvIHRoZSBQ
b2ludGVyTG9ja0NvbnRyb2xsZXIgYWRkZWQgaW4gdGhpcyBwYXRjaCB0byBXZWJDb3JlLgorCisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZEFjcXVpcmVQb2lu
dGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWROb3RBY3F1aXJlUG9p
bnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkTG9zZVBvaW50ZXJM
b2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBvaW50ZXJMb2NrTW91c2VFdmVu
dCk6CisKIDIwMTItMDEtMjQgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkOiByZW1vdmluZyBXZWJXb3JrZXIuaCBhZ2FpbiBhZnRlciByMTA1
Njg0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDE2MTRmYjQ2NDFkYTJlN2U4NjczOTBhYWFkZjA3ZDZm
MDhjYmMxZGYuLjM2MTdjMDdiYTU0ZGQ4ZDZmMzdiNWIxODFiYWVkNzIwYjQwNjRlZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTI2NDYsNiArMjY0Niw4IEBACiAgICAgICAgICAgICAncGFnZS9QZXJm
b3JtYW5jZVRpbWluZy5oJywKICAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrLmNwcCcsCiAg
ICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9jay5oJywKKyAgICAgICAgICAgICdwYWdlL1BvaW50
ZXJMb2NrQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvUHJpbnRDb250ZXh0LmNwcCcsCiAgICAgICAg
ICAgICAncGFnZS9TY3JlZW4uY3BwJywKICAgICAgICAgICAgICdwYWdlL1NjcmVlbi5oJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGRhMThiMjk1MWJhN2Q0OTM1NGQ0ZWE3Mjk4M2ZmNGI5
NmMxM2M5OTguLjY0NjRkOGMxMDBkMWE3NGM3MWRmYWIwNWJhODUyNjg2YjI0ZTRiZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTk3LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBcCiAgICAgbWFjcm8oc2hvdykgXAogICAgIFwKKyAgICBtYWNybyh3ZWJraXRwb2lu
dGVybG9ja2xvc3QpIFwKKyAgICBcCiAKIC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VB
Q0gKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggOTgyYTdjZDE1ZDVkMzhkOTIy
NWRjMWI2YmYxMjExZmQ3MzgxOGFhZi4uNDg2NjI1YTk4ZDIwZTFjMDNkNTE1ZWIyMjQ0MmQzODE0
MmY4MTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMjgsNiArMzI4LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UG9pbnRlckxv
Y2soKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBvaW50
ZXJVbmxvY2soKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUG9pbnRlckxvY2tlZCgpIHsg
cmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVh
bCB+Q2hyb21lQ2xpZW50KCkgeyB9CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApp
bmRleCBjMzVlOTk0OTYxYzUwYTgxYWJiOGMwMDg0M2Q4MmVjNDM2MTYxZGU0Li5kMTVmYzc3NTNj
NGVjNmMzNTZmYzJiN2Y4Y2U2ZWEwOTcyMDUzMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgR2VvbG9jYXRpb24qIE5hdmlnYXRvcjo6Z2VvbG9jYXRp
b24oKSBjb25zdAogUG9pbnRlckxvY2sqIE5hdmlnYXRvcjo6d2Via2l0UG9pbnRlcigpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3BvaW50ZXIpCi0gICAgICAgIG1fcG9pbnRlciA9IFBvaW50ZXJMb2Nr
OjpjcmVhdGUoKTsKKyAgICAgICAgbV9wb2ludGVyID0gUG9pbnRlckxvY2s6OmNyZWF0ZShtX2Zy
YW1lLT5wYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpKTsKICAgICByZXR1cm4gbV9wb2lu
dGVyLmdldCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwYzZmZjU1YmExMjRj
ODliZmE4OThjMmUwYTk3NTVhZTFlMzdkNzNhLi41NDQ2ODIyZTYyYzY5YTg0OGI2ZjBlMjIzM2I2
N2FmZjEzNjk3OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNs
dWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBs
dWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xNDYsNiArMTQ3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xp
ZW50cyYgcGFnZUNsaWVudHMpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLCBtX25v
dGlmaWNhdGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKHRoaXMs
IHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoYWRvcHRQdHIobmV3IFBv
aW50ZXJMb2NrQ29udHJvbGxlcih0aGlzKSkpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENs
aWVudCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4Mzcy
NjFlNjI5Nzg0ZTFhZThlLi5hYzljNTc4ZjgxOWI0NjQ5N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAg
ICBjbGFzcyBQbHVnaW5EYXRhOworICAgIGNsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlcjsKICAg
ICBjbGFzcyBQcm9ncmVzc1RyYWNrZXI7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVu
ZGVyVGhlbWU7CkBAIC0xOTAsNiArMTkxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKiBub3Rp
ZmljYXRpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25Db250cm9s
bGVyLmdldCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICBQ
b2ludGVyTG9ja0NvbnRyb2xsZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pbnRlckxvY2tDb250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRp
ZgpAQCAtMzg2LDYgKzM5MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKICAgICAgICAgT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90
aWZpY2F0aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgICAgIE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRlckxvY2tDb250cm9s
bGVyOworI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5w
dXRDbGllbnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAgICAgICAgIE93blB0cjxTcGVlY2hJbnB1
dD4gbV9zcGVlY2hJbnB1dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRl
ckxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKaW5kZXggZGZi
M2NiNDlhMDljODkwMjgxYjkwNjgyZmI4NWNkODQxYTZlY2E5MS4uNGJlNjQ5ZjY0ODY3YzE3ZTc1
N2QxMDdlNGUzZjhlODcwZjgxYmFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAK
QEAgLTI1LDExICsyNSwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvaW50
ZXJMb2NrLmgiCiAKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKwogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRlckxvY2s6
OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJMb2NrOjpQb2ludGVyTG9jayhQb2ludGVyTG9ja0NvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpCisgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKIHsKIH0K
IApAQCAtMzksMTggKzQyLDE3IEBAIFBvaW50ZXJMb2NrOjp+UG9pbnRlckxvY2soKQogCiB2b2lk
IFBvaW50ZXJMb2NrOjpsb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxs
YmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgcmV0dXJuIG1fY29udHJvbGxl
ci0+cmVxdWVzdFBvaW50ZXJMb2NrKHRhcmdldCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2Fs
bGJhY2spOwogfQogCiB2b2lkIFBvaW50ZXJMb2NrOjp1bmxvY2soKQogewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5yZXF1ZXN0UG9pbnRlclVubG9j
aygpOwogfQogCiBib29sIFBvaW50ZXJMb2NrOjppc0xvY2tlZCgpCiB7Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5p
c0xvY2tlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50
ZXJMb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmgKaW5kZXggYmU3YzMx
NzhmNThmZTc5OWM2MTFjZjA2MWNjZGVkZTkzMmJhZGIwMy4uZTAxOTk5ZTgwMmNjODkyMmUxNmIw
NDY0NmIzYTA5ZWE4YmNjZTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaApAQCAtMzQs
MTAgKzM0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CitjbGFz
cyBQb2ludGVyTG9ja0NvbnRyb2xsZXI7CiAKIGNsYXNzIFBvaW50ZXJMb2NrIDogcHVibGljIFJl
ZkNvdW50ZWQ8UG9pbnRlckxvY2s+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
b2ludGVyTG9jaz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50ZXJMb2NrKCkp
OyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9pbnRlckxvY2s+IGNyZWF0ZShQb2ludGVyTG9j
a0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb2ludGVyTG9j
ayhjb250cm9sbGVyKSk7IH0KIAogICAgIH5Qb2ludGVyTG9jaygpOwogCkBAIC00Niw3ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9ja2VkKCk7CiAKIHByaXZhdGU6Ci0gICAgUG9pbnRl
ckxvY2soKTsKKyAgICBQb2ludGVyTG9jayhQb2ludGVyTG9ja0NvbnRyb2xsZXIqKTsKKworICAg
IFBvaW50ZXJMb2NrQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1NTRjNTI5MjUyZmFhZTcwYjYzYTRkNGJjYjcyNTY3ZWY0MmE4MGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJv
bGxlci5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkNo
cm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BvaW50ZXJM
b2NrQ29udHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9sbGVyKFBhZ2UqIHBhZ2UpCisgICAgOiBt
X3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQ
b2ludGVyTG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBmYWlsdXJlQ2FsbGJhY2spCit7
CisgICAgaWYgKGlzTG9ja2VkKCkpIHsKKyAgICAgICAgaWYgKG1fZWxlbWVudCA9PSB0YXJnZXQp
IHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgc3Vj
Y2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgICAgICAgICBtX2VsZW1lbnQgPSB0YXJnZXQ7
CisgICAgICAgICAgICBpZiAoc3VjY2Vzc0NhbGxiYWNrKQorICAgICAgICAgICAgICAgIHN1Y2Nl
c3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9w
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnJlcXVlc3RQb2ludGVyTG9jaygpKSB7CisgICAgICAg
IG1fZWxlbWVudCA9IHRhcmdldDsKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSBzdWNjZXNz
Q2FsbGJhY2s7CisgICAgICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gZmFpbHVyZUNhbGxiYWNrOwor
ICAgIH0gZWxzZSBpZiAoZmFpbHVyZUNhbGxiYWNrKQorICAgICAgICBmYWlsdXJlQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0
UG9pbnRlclVubG9jaygpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOworfQorCitib29sIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6aXNMb2NrZWQoKQoreworICAgIHJldHVybiBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+
aXNQb2ludGVyTG9ja2VkKCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRB
Y3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFja1RvSXNzdWUobV9zdWNjZXNz
Q2FsbGJhY2spOworICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gMDsKKyAgICBtX2ZhaWx1cmVDYWxs
YmFjayA9IDA7CisKKyAgICBpZiAoY2FsbGJhY2tUb0lzc3VlKQorICAgICAgICBjYWxsYmFja1Rv
SXNzdWUtPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpk
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFja1RvSXNzdWUobV9m
YWlsdXJlQ2FsbGJhY2spOworICAgIG1fZWxlbWVudCA9IDA7CisgICAgbV9zdWNjZXNzQ2FsbGJh
Y2sgPSAwOworICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gMDsKKworICAgIGlmIChjYWxsYmFja1Rv
SXNzdWUpCisgICAgICAgIGNhbGxiYWNrVG9Jc3N1ZS0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9p
ZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgaWYg
KG1fZWxlbWVudCkgeworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gZWxlbWVudFRv
Tm90aWZ5KG1fZWxlbWVudCk7CisgICAgICAgIG1fZWxlbWVudCA9IDA7CisgICAgICAgIG1fc3Vj
Y2Vzc0NhbGxiYWNrID0gMDsKKyAgICAgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSAwOworICAgICAg
ICBlbGVtZW50VG9Ob3RpZnktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkud2Via2l0cG9pbnRlcmxvY2tsb3N0RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgfQorfQor
Cit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKQoreworICAgIG1fZWxlbWVudC0+ZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50LCBldmVudFR5
cGUsIGV2ZW50LmNsaWNrQ291bnQoKSk7CisKKyAgICAvLyBDcmVhdGUgY2xpY2sgZXZlbnRzCisg
ICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQorICAgICAgICBt
X2VsZW1lbnQtPmRpc3BhdGNoTW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQsIGV2ZW50LmNsaWNrQ291bnQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTJhMDU1OGNjZjBiMjc5YmExOTRjOThh
ZWJmM2Y5MGE4NmMzOTlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFBvaW50ZXJMb2NrQ29udHJvbGxlcl9oCisjZGVmaW5lIFBvaW50ZXJMb2NrQ29udHJv
bGxlcl9oCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiVm9pZENhbGxi
YWNrLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFz
cyBQYWdlOworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworCitjbGFzcyBQb2ludGVyTG9ja0Nv
bnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJMb2NrQ29udHJvbGxl
cik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUG9pbnRlckxv
Y2tDb250cm9sbGVyKFBhZ2UqKTsKKworICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKFdlYkNv
cmU6OkVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjayk7CisgICAgdm9p
ZCByZXF1ZXN0UG9pbnRlclVubG9jaygpOworICAgIGJvb2wgaXNMb2NrZWQoKTsKKworICAgIHZv
aWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRl
ckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlzcGF0
Y2hMb2NrZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKTsKKworcHJpdmF0ZToKKyAgICBQYWdlKiBtX3BhZ2U7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Vm9pZENhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Vm9p
ZENhbGxiYWNrPiBtX2ZhaWx1cmVDYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBQb2ludGVy
TG9ja0NvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDUyMTczYzNmZGFkZTEyNjA3YTdlMzUxMDM0NDVkZGYyODM5MzY3YjUuLjZkOTQ4
MmUxM2M3ODc4OGVlNGRjYjg1ODdhY2Y3NjBkMGE1ZmM4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTkwLDYgKzkwLDggQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2su
aCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQb3B1cENv
bnRhaW5lci5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlByb2dy
ZXNzVHJhY2tlci5oIgpAQCAtMTAxMiw2ICsxMDE0LDkgQEAgV2ViVmlld0ltcGwqIFdlYlZpZXdJ
bXBsOjpmcm9tUGFnZShQYWdlKiBwYWdlKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpjbG9zZSgpCiB7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXF1ZXN0UG9pbnRlclVubG9jaygpOwor
I2VuZGlmCiAgICAgUmVmUHRyPFdlYkZyYW1lSW1wbD4gbWFpbkZyYW1lSW1wbDsKIAogICAgIGlm
IChtX3BhZ2UpIHsKQEAgLTE3NTEsMTcgKzE3NTYsMjYgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3QKIAogdm9pZCBXZWJWaWV3SW1wbDo6
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdoZW4g
UG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6
ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdo
ZW4gUG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIo
KS0+ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3
SW1wbDo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdo
ZW4gUG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIo
KS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKIH0KIAogLy8gV2ViVmlldyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMzIxNyw2ICszMjMxLDI3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmlzUG9pbnRlckxv
Y2tlZCgpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnBvaW50ZXJMb2NrTW91c2VFdmVudChjb25zdCBX
ZWJJbnB1dEV2ZW50JiBldmVudCkKIHsKKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlOworICAg
IHN3aXRjaCAoZXZlbnQudHlwZSkgeworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VEb3du
OgorICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VVcDoKKyAgICAgICAgZXZl
bnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50
TmFtZXMoKS5tb3VzZW1vdmVFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgY29uc3QgV2ViTW91c2VF
dmVudCYgbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPihldmVu
dCk7CisKKyAgICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJv
bGxlcigpLT5kaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoCisgICAgICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIG1vdXNlRXZlbnQp
LAorICAgICAgICAgICAgZXZlbnRUeXBlKTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdoZW4g
UG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTkzYzY3MGQ4
NWMxN2ZhYzdhNjgxN2NiNTcyODcxNGRlN2M2YThmYS4uZDA4Mzk0ZDI3MjE1YTU0MGZlNjc0NzIx
MTQ3YTg4ZmM2M2U2MDk4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWFscmVhZHkt
bG9ja2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVz
cG9uc2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL2xvY2st
ZmFpbC1yZXNwb25zZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL21vdXNl
LWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1s
b2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXIt
bG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEy
LTAxLTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2hyb21p
dW0gTWFjIExlcG9hcmQgb3ZlcnJpZGVzIGZvbGxvd2luZyB0aGUgQ2hyb21pdW0gTWFjIFNub3cg
TGVvcGFyZCBiYXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2sv
bG9jay1hbHJlYWR5LWxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxM2FjYThh
YmI0OTM3ZmZjNzQ0ODg2ODc1YTI2YmJlMjk0MDg4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE3IEBACitUZXN0IGNhbGxpbmcgbG9jayB3aGVuIGFscmVhZHkgaW4gYSBsb2NrZWQg
c3RhdGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRvci53
ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIGZhbHNlCitQQVNTIExvY2sgdGFyZ2V0MSBzdWNjZWVk
ZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK1BBU1Mg
TG9jayB0YXJnZXQxIHN1Y2NlZWRlZCBhZ2Fpbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorUEFTUyBleHBlY3RUYXJnZXQxVW5sb2NrIGlzIHRydWUKK1BB
U1MgTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIu
aXNMb2NrZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFs
cmVhZHktbG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5
LWxvY2tlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMjhlODhlZGYxNWU3NThiYzNmZWZkMjJjNGFjMGY5
NDNiODBlMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9j
ay1hbHJlYWR5LWxvY2tlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzwhRE9DVFlQRSBIVE1MPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxkaXYgaWQ9InRh
cmdldDEiPjwvZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQyIj48L2Rpdj4KKzwvZGl2PgorPHNjcmlw
dD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBjYWxsaW5nIGxvY2sgd2hlbiBhbHJlYWR5IGluIGEg
bG9ja2VkIHN0YXRlLiIpCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
dGFyZ2V0ZGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQxIik7CisgICAgdGFy
Z2V0ZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQyIik7CisKKyAgICB2YXIg
ZXhwZWN0VGFyZ2V0MVVubG9jayA9IGZhbHNlOworICAgIHRhcmdldGRpdjEuYWRkRXZlbnRMaXN0
ZW5lcigid2Via2l0cG9pbnRlcmxvY2tsb3N0IiwKKyAgICAgICAgZnVuY3Rpb24gKCkgeyBzaG91
bGRCZSgiZXhwZWN0VGFyZ2V0MVVubG9jayIsICJ0cnVlIik7IH0pOworCisgICAgdGFyZ2V0ZGl2
Mi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QiLAorICAgICAgICBmdW5j
dGlvbiAoKSB7IHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgdGFyZ2V0ZGl2MiBwb2ludGVybG9ja2xv
c3QuIik7IH0pOworCisgICAgY3VycmVudFN0ZXAgPSAwOworICAgIGZ1bmN0aW9uIGRvTmV4dFN0
ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7CisgICAgfQorICAgIHRvZG8gPSBb
CisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iu
d2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgbmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2Nl
ZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQ
b2ludGVyLmlzTG9ja2VkIiwgInRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3Rl
cCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
IH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQ
b2ludGVyLmxvY2sodGFyZ2V0ZGl2MSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MSBzdWNjZWVkZWQgYWdh
aW4uIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9p
bnRlci5pc0xvY2tlZCIsICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAo
KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
IH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV4cGVjdFRhcmdldDFVbmxv
Y2sgPSB0cnVlOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJn
ZXRkaXYyLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgInRydWUi
KTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNU
ZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1y
ZXNwb25zZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFp
bC1yZXNwb25zZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZTlhMmRhOGQ2NTFkMThmNzkw
ZTRkZjRjOWJmMWQwZmUyNzQ4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2lu
dGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorVGVzdCBhc3luY2hyb25vdXMgcmVzdWx0cyBvZiBjYWxsaW5nIGxvY2suCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciBp
cyBkZWZpbmVkLgorUEFTUyBMb2NrIGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KQorUEFTUyBMb2Nr
IGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJM
b2NrV2lsbEZhaWxBc3luY2hyb25vdXNseSkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxv
Y2svbG9jay1mYWlsLXJlc3BvbnNlcy5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xv
Y2stZmFpbC1yZXNwb25zZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTY3ZDY1ZGJlNDY4YTNjYjlhMDMx
YTBiZjNjODUxY2YyODViYzk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRl
ci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZ
UEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUZXN0IGFzeW5jaHJvbm91cyByZXN1bHRzIG9mIGNhbGxpbmcgbG9j
ay4iKQorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBzaG91bGRCZURlZmlu
ZWQoIndpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciIpOworCisgICAgY3VycmVudFN0ZXAgPSAw
OworICAgIGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytd
KCk7CisgICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91
c2x5KCk7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKGRvY3VtZW50
LmJvZHksCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NrIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkuIik7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2Nr
IGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJM
b2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRT
dGVwKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2ls
bEZhaWxBc3luY2hyb25vdXNseSgpOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIubG9jayhkb2N1bWVudC5ib2R5LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBzdWNjZWVkZWQgdW5leHBlY3RlZGx5
LiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiTG9jayBmYWlsZWQgKGFmdGVyIHdlIGNhbGxlZCBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWlsQXN5bmNocm9ub3VzbHkpIik7CisgICAgICAgICAg
ICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwK
KyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRl
ci1sb2NrL21vdXNlLWV2ZW50LWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21v
dXNlLWV2ZW50LWFwaS5odG1sCmluZGV4IGVmYjQxMjFkNTJiNzA4ZjllNzA0MzhiYzU0Y2NmZTY0
YzQ2YjkwMmQuLjJmZWVmM2FkMzQyM2YwMmYzNDRkZDZhMTQzYjQxZmJkY2ZjYzc3OTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1hcGkuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtYXBpLmh0bWwKQEAgLTEsNCAr
MSw0IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
IURPQ1RZUEUgSFRNTD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTc5N2MyN2U1Zjk5MTAwMTgzYmIzOGZlNDBlMjU0MmQxMmQ2Y2JlMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVy
eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorVGVzdCBtb3VzZSBldmVudHMgYXJlIHJv
dXRlZCB0byBsb2NrIHRhcmdldC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgd2luZG93LmV2ZW50U2VuZGVyIGlzIGRlZmluZWQuCitQQVNTIExvY2sgdGFyZ2V0MSBzdWNj
ZWVkZWQuCitXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suCitQQVNTIGV2ZW50IHR5
cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQxLCByZWNlaXZlZCBvbjogdGFyZ2V0MQorUEFT
UyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQgb246IGJv
ZHkKK1BBU1MgTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4KK1dpdGggYSBsb2NrIGluIHBsYWNlIHNl
bmQgYSBjbGljay4KK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIs
IHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0
OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogYm9keQorRW5zdXJlIGRvdWJsZSBjbGlja3Mgd29yayBh
cyBleHBlY3RlZCwgc2VuZGluZyA0IGNsaWNrcy4KK0NyZWF0aW5nIGEgY2xpY2sgYW5kIGRibGNs
aWNrLgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2
ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQy
LCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0
YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24s
IHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTog
bW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVu
dCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFT
UyBldmVudCB0eXBlOiBkYmxjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFy
Z2V0MgorRW5zdXJpbmcgbm8gZmFsc2UgZGJsY2xpY2tzIGlmIHdlIGNvbnRpbnVlLgorUEFTUyBl
dmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdl
dDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBv
bjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNl
aXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFy
Z2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFy
Z2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGlj
aywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiNGUy
ODgxMDg2YWNjZmJlMmRkNDI4YzlkZjViOWU3YTJiZjE5NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sCkBAIC0wLDAg
KzEsMTA5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgaWQ9ImJvZHkiPgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+CisgIDxk
aXYgaWQ9InRhcmdldDIiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUZXN0IG1vdXNlIGV2ZW50cyBhcmUgcm91dGVkIHRvIGxvY2sgdGFyZ2V0LiIpCisgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmV2
ZW50U2VuZGVyIik7CisKKyAgICB0YXJnZXRkaXYxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldDEiKTsKKyAgICB0YXJnZXRkaXYyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldDIiKTsKKworICAgIGZ1bmN0aW9uIGV2ZW50Tm90RXhwZWN0ZWQoZSkgeworICAgICAgICB0
ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIGV2ZW50ICIgKyBlLnR5cGUgKyAiIG9uICIgKyBlLmN1cnJl
bnRUYXJnZXQuaWQpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisgICAgZnVuY3Rp
b24gZXZlbnRFeHBlY3RlZChlKSB7CisgICAgICB0ZXN0UGFzc2VkKCJldmVudCB0eXBlOiAiICsg
ZS50eXBlICsgIiwgdGFyZ2V0OiAiICsgZS50YXJnZXQuaWQgKyAiLCByZWNlaXZlZCBvbjogIiAr
IGUuY3VycmVudFRhcmdldC5pZCk7CisgICAgfQorCisgICAgY3VycmVudFN0ZXAgPSAwOworICAg
IGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7Cisg
ICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5h
dmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2MSwKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0
MSBzdWNjZWVkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiV2l0aCBhIGxvY2sgaW4gcGxhY2Ug
c2VuZCBhIGNsaWNrLiIpCisgICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gZXZl
bnRFeHBlY3RlZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBldmVudE5v
dEV4cGVjdGVkOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IGV2ZW50
RXhwZWN0ZWQ7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAw
MCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAg
ICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgdGFyZ2V0ZGl2
MS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3Vz
ZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9ubW91c2Vkb3du
ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5s
b2NrKHRhcmdldGRpdjIsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDIgc3VjY2VlZGVkLiIpOworICAgICAg
ICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxv
Y2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgZGVidWcoIldpdGggYSBsb2NrIGluIHBsYWNlIHNlbmQgYSBjbGljay4iKQorICAgICAg
ICAgICAgdGFyZ2V0ZGl2MS5vbm1vdXNlZG93biA9IGV2ZW50Tm90RXhwZWN0ZWQ7CisgICAgICAg
ICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAg
d2luZG93LmV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMDApOworICAgICAgICAgICAgd2luZG93
LmV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKKyAgICAgICAgICAgIHRhcmdldGRpdjEub25tb3VzZWRvd24gPSB1bmRlZmlu
ZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAg
ICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgZGVidWcoIkVuc3VyZSBkb3VibGUgY2xpY2tzIHdvcmsgYXMgZXhwZWN0ZWQsIHNl
bmRpbmcgNCBjbGlja3MuIikKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBl
dmVudEV4cGVjdGVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNldXAgPSBldmVudEV4
cGVjdGVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmNsaWNrID0gZXZlbnRFeHBlY3RlZDsK
KyAgICAgICAgICAgIHRhcmdldGRpdjIub25kYmxjbGljayA9IGV2ZW50RXhwZWN0ZWQ7CisgICAg
ICAgICAgICBkZWJ1ZygiQ3JlYXRpbmcgYSBjbGljayBhbmQgZGJsY2xpY2suIik7CisgICAgICAg
ICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAgICAgICB3
aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRT
ZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAg
ICAgIGRlYnVnKCJFbnN1cmluZyBubyBmYWxzZSBkYmxjbGlja3MgaWYgd2UgY29udGludWUuIik7
CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAg
ICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgd2luZG93LmV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7Cisg
ICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2V1cCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IHRhcmdldGRpdjIub25jbGljayA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIu
b25kYmxjbGljayA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXIt
bG9jay9wb2ludGVyLWxvY2stYXBpLmh0bWwKaW5kZXggMzE4Yjk5MGZhMjU3MzQ1ZjgxZjBmZGRh
MjgyYTIzMTI1NTk3NGYxMC4uOGRkNDFhNTcxNjJlNWFiNzU1ZGMwNjRlYjFmMTFjZjQxNDQwY2Fi
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGku
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS5odG1s
CkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPCFET0NUWVBFIEhUTUw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTgzMjQwMGVhMTE4ODkzNTAzMDlmYjQyOTg4M2FiZGI1MmRm
YWY0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVy
bG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgdGhhdCBw
b2ludGVybG9ja2xvc3QgZXZlbnQgaXMgZGlzcGF0Y2hlZC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIGlzIGRlZmluZWQu
CitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK0phdmFTY3Jp
cHQgaW5pdGlhdGVkIHVubG9jay4KK1BBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIg
Y2FsbCAwCitQQVNTIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMQorUEFTUyBB
bGwgZXhwZWN0ZWQgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4KK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgZmFsc2UKK1BBU1MgbmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorSG9zdCBpbml0aWF0ZWQgdW5sb2NrLgor
UEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxsIDAKK1BBU1Mgd2Via2l0cG9p
bnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAxCitQQVNTIEFsbCBleHBlY3RlZCB3ZWJraXRwb2lu
dGVybG9ja2xvc3QgZXZlbnRzIHJlY2VpdmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRl
ci5pc0xvY2tlZCBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2lu
dGVybG9ja2xvc3QtZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVy
bG9ja2xvc3QtZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODdjY2UyYzVmNzUzY2ZlOTc1MGE0Nzcx
NTJlODFjMWU2OTUyZDdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1s
b2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQ
RSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxk
aXYgaWQ9InRhcmdldCI+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24o
IlRlc3QgdGhhdCBwb2ludGVybG9ja2xvc3QgZXZlbnQgaXMgZGlzcGF0Y2hlZC4iKQorICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciIpOworCisgICAgdGFyZ2V0ZGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldCIpOworCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Vi
a2l0cG9pbnRlcmxvY2tsb3N0IiwgbG9ja2xvc3RIYW5kbGVyKTsKKyAgICB0YXJnZXRkaXYuYWRk
RXZlbnRMaXN0ZW5lcigid2Via2l0cG9pbnRlcmxvY2tsb3N0IiwgbG9ja2xvc3RIYW5kbGVyKTsK
KyAgICBsb2NrbG9zdGhhbmRsZXJzID0gMjsKKworICAgIGxvY2tsb3N0cmVjZWlwdHMgPSAwOwor
ICAgIGZ1bmN0aW9uIGxvY2tsb3N0SGFuZGxlcigpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgid2Vi
a2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAiICsgbG9ja2xvc3RyZWNlaXB0cyk7Cisg
ICAgICAgIGxvY2tsb3N0cmVjZWlwdHMrKzsKKyAgICAgICAgaWYgKGxvY2tsb3N0cmVjZWlwdHMg
PT0gbG9ja2xvc3RoYW5kbGVycykgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIGV4cGVj
dGVkIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBldmVudHMgcmVjZWl2ZWQuIik7CisgICAgICAgICAg
ICBkb05leHRTdGVwKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjdXJyZW50U3RlcCA9IDA7
CisgICAgZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10o
KTsKKyAgICB9CisgICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYsCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBk
b05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOwor
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoIkph
dmFTY3JpcHQgaW5pdGlhdGVkIHVubG9jay4iKQorICAgICAgICAgICAgbG9ja2xvc3RyZWNlaXB0
cyA9IDA7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci51bmxvY2soKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgLy8gbG9ja2xvc3RI
YW5kbGVyIHdpbGwgY2F0Y2ggdW5sb2NrcyBhbmQgY2FsbCBkb05leHRTdGVwIHRvIGJyaW5nIHVz
IGhlcmUuCisgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNM
b2NrZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwK
KyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIubG9jayh0YXJnZXRkaXYsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQi
LCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoIkhvc3QgaW5pdGlhdGVkIHVubG9jay4iKQor
ICAgICAgICAgICAgbG9ja2xvc3RyZWNlaXB0cyA9IDA7CisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgLy8gbG9ja2xvc3RIYW5kbGVyIHdpbGwgY2F0Y2ggdW5s
b2NrcyBhbmQgY2FsbCBkb05leHRTdGVwIHRvIGJyaW5nIHVzIGhlcmUuCisgICAgICAgICAgICBz
aG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAiZmFsc2UiKTsKKyAg
ICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNUZXN0
CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123832</attachid>
            <date>2012-01-24 15:47:55 -0800</date>
            <delta_ts>2012-01-25 11:09:23 -0800</delta_ts>
            <desc>Rerun EWS</desc>
            <filename>bug-75762-20120124154754.patch</filename>
            <type>text/plain</type>
            <size>37627</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTViM2QyY2MxY2E0NDE5
ZDI3NDU4YWY1NmVkZjYyZmY5OWYwZDBmMC4uZWUyMDMyZjdjYjRhZjAwMDUxMjNlOTA5ZDBhNzA5
ZDNlZTljZjY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlciBj
bGFzcywgd2hpY2ggZXhpc3RzIHBlciBwYWdlLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRQb2lu
dGVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
b2ludGVyTG9ja0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2Nr
Ojp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OmlzTG9ja2VkKToKKyAg
ICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
azo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpy
ZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9s
bGVyOjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXI6OmlzTG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29u
dHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50
ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmguCisKIDIwMTItMDEtMjQgIE1hcmlv
IFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJl
ZmFjdG9yIEdUSydzIGFjY2Vzc2liaWxpdGl0eSBjb2RlIHRvIGJlIG1vcmUgbW9kdWxhcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxMWRkNDc4ODZmNzVmZDY3ZDg3MDMwZjY5NTgxMTU1
M2JlMmRjZGMzLi5mZWY4MzIwMGQ4Mjc1MzQ2MzQ4ZGFhZmUxZmE0OTA0NTFjMTczNmI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgQWRkIGNhbGxzIHRvIHRoZSBQ
b2ludGVyTG9ja0NvbnRyb2xsZXIgYWRkZWQgaW4gdGhpcyBwYXRjaCB0byBXZWJDb3JlLgorCisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmNsb3NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZEFjcXVpcmVQb2lu
dGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWROb3RBY3F1aXJlUG9p
bnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkTG9zZVBvaW50ZXJM
b2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBvaW50ZXJMb2NrTW91c2VFdmVu
dCk6CisKIDIwMTItMDEtMjQgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkOiByZW1vdmluZyBXZWJXb3JrZXIuaCBhZ2FpbiBhZnRlciByMTA1
Njg0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDE2MTRmYjQ2NDFkYTJlN2U4NjczOTBhYWFkZjA3ZDZm
MDhjYmMxZGYuLjM2MTdjMDdiYTU0ZGQ4ZDZmMzdiNWIxODFiYWVkNzIwYjQwNjRlZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTI2NDYsNiArMjY0Niw4IEBACiAgICAgICAgICAgICAncGFnZS9QZXJm
b3JtYW5jZVRpbWluZy5oJywKICAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrLmNwcCcsCiAg
ICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9jay5oJywKKyAgICAgICAgICAgICdwYWdlL1BvaW50
ZXJMb2NrQ29udHJvbGxlci5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvUHJpbnRDb250ZXh0LmNwcCcsCiAgICAgICAg
ICAgICAncGFnZS9TY3JlZW4uY3BwJywKICAgICAgICAgICAgICdwYWdlL1NjcmVlbi5oJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IGRhMThiMjk1MWJhN2Q0OTM1NGQ0ZWE3Mjk4M2ZmNGI5
NmMxM2M5OTguLjY0NjRkOGMxMDBkMWE3NGM3MWRmYWIwNWJhODUyNjg2YjI0ZTRiZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTk3LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBcCiAgICAgbWFjcm8oc2hvdykgXAogICAgIFwKKyAgICBtYWNybyh3ZWJraXRwb2lu
dGVybG9ja2xvc3QpIFwKKyAgICBcCiAKIC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VB
Q0gKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggOTgyYTdjZDE1ZDVkMzhkOTIy
NWRjMWI2YmYxMjExZmQ3MzgxOGFhZi4uNDg2NjI1YTk4ZDIwZTFjMDNkNTE1ZWIyMjQ0MmQzODE0
MmY4MTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC0zMjgsNiArMzI4LDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1NWR0ltYWdlQ2hyb21lQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0UG9pbnRlckxv
Y2soKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBvaW50
ZXJVbmxvY2soKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUG9pbnRlckxvY2tlZCgpIHsg
cmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVh
bCB+Q2hyb21lQ2xpZW50KCkgeyB9CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApp
bmRleCBjMzVlOTk0OTYxYzUwYTgxYWJiOGMwMDg0M2Q4MmVjNDM2MTYxZGU0Li5kMTVmYzc3NTNj
NGVjNmMzNTZmYzJiN2Y4Y2U2ZWEwOTcyMDUzMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgR2VvbG9jYXRpb24qIE5hdmlnYXRvcjo6Z2VvbG9jYXRp
b24oKSBjb25zdAogUG9pbnRlckxvY2sqIE5hdmlnYXRvcjo6d2Via2l0UG9pbnRlcigpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3BvaW50ZXIpCi0gICAgICAgIG1fcG9pbnRlciA9IFBvaW50ZXJMb2Nr
OjpjcmVhdGUoKTsKKyAgICAgICAgbV9wb2ludGVyID0gUG9pbnRlckxvY2s6OmNyZWF0ZShtX2Zy
YW1lLT5wYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpKTsKICAgICByZXR1cm4gbV9wb2lu
dGVyLmdldCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwYzZmZjU1YmExMjRj
ODliZmE4OThjMmUwYTk3NTVhZTFlMzdkNzNhLi41NDQ2ODIyZTYyYzY5YTg0OGI2ZjBlMjIzM2I2
N2FmZjEzNjk3OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNs
dWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBs
dWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xNDYsNiArMTQ3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xp
ZW50cyYgcGFnZUNsaWVudHMpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLCBtX25v
dGlmaWNhdGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKHRoaXMs
IHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoYWRvcHRQdHIobmV3IFBv
aW50ZXJMb2NrQ29udHJvbGxlcih0aGlzKSkpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENs
aWVudCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4Mzcy
NjFlNjI5Nzg0ZTFhZThlLi5hYzljNTc4ZjgxOWI0NjQ5N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAg
ICBjbGFzcyBQbHVnaW5EYXRhOworICAgIGNsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlcjsKICAg
ICBjbGFzcyBQcm9ncmVzc1RyYWNrZXI7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVu
ZGVyVGhlbWU7CkBAIC0xOTAsNiArMTkxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKiBub3Rp
ZmljYXRpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25Db250cm9s
bGVyLmdldCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICBQ
b2ludGVyTG9ja0NvbnRyb2xsZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pbnRlckxvY2tDb250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRp
ZgpAQCAtMzg2LDYgKzM5MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKICAgICAgICAgT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90
aWZpY2F0aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgICAgIE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRlckxvY2tDb250cm9s
bGVyOworI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5w
dXRDbGllbnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAgICAgICAgIE93blB0cjxTcGVlY2hJbnB1
dD4gbV9zcGVlY2hJbnB1dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRl
ckxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKaW5kZXggZGZi
M2NiNDlhMDljODkwMjgxYjkwNjgyZmI4NWNkODQxYTZlY2E5MS4uNGJlNjQ5ZjY0ODY3YzE3ZTc1
N2QxMDdlNGUzZjhlODcwZjgxYmFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAK
QEAgLTI1LDExICsyNSwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvaW50
ZXJMb2NrLmgiCiAKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKwogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRlckxvY2s6
OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJMb2NrOjpQb2ludGVyTG9jayhQb2ludGVyTG9ja0NvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpCisgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKIHsKIH0K
IApAQCAtMzksMTggKzQyLDE3IEBAIFBvaW50ZXJMb2NrOjp+UG9pbnRlckxvY2soKQogCiB2b2lk
IFBvaW50ZXJMb2NrOjpsb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxs
YmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgcmV0dXJuIG1fY29udHJvbGxl
ci0+cmVxdWVzdFBvaW50ZXJMb2NrKHRhcmdldCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2Fs
bGJhY2spOwogfQogCiB2b2lkIFBvaW50ZXJMb2NrOjp1bmxvY2soKQogewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5yZXF1ZXN0UG9pbnRlclVubG9j
aygpOwogfQogCiBib29sIFBvaW50ZXJMb2NrOjppc0xvY2tlZCgpCiB7Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5p
c0xvY2tlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50
ZXJMb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmgKaW5kZXggYmU3YzMx
NzhmNThmZTc5OWM2MTFjZjA2MWNjZGVkZTkzMmJhZGIwMy4uZTAxOTk5ZTgwMmNjODkyMmUxNmIw
NDY0NmIzYTA5ZWE4YmNjZTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaApAQCAtMzQs
MTAgKzM0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CitjbGFz
cyBQb2ludGVyTG9ja0NvbnRyb2xsZXI7CiAKIGNsYXNzIFBvaW50ZXJMb2NrIDogcHVibGljIFJl
ZkNvdW50ZWQ8UG9pbnRlckxvY2s+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
b2ludGVyTG9jaz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50ZXJMb2NrKCkp
OyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9pbnRlckxvY2s+IGNyZWF0ZShQb2ludGVyTG9j
a0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb2ludGVyTG9j
ayhjb250cm9sbGVyKSk7IH0KIAogICAgIH5Qb2ludGVyTG9jaygpOwogCkBAIC00Niw3ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9ja2VkKCk7CiAKIHByaXZhdGU6Ci0gICAgUG9pbnRl
ckxvY2soKTsKKyAgICBQb2ludGVyTG9jayhQb2ludGVyTG9ja0NvbnRyb2xsZXIqKTsKKworICAg
IFBvaW50ZXJMb2NrQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1NTRjNTI5MjUyZmFhZTcwYjYzYTRkNGJjYjcyNTY3ZWY0MmE4MGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJv
bGxlci5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkNo
cm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BvaW50ZXJM
b2NrQ29udHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9sbGVyKFBhZ2UqIHBhZ2UpCisgICAgOiBt
X3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQ
b2ludGVyTG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBmYWlsdXJlQ2FsbGJhY2spCit7
CisgICAgaWYgKGlzTG9ja2VkKCkpIHsKKyAgICAgICAgaWYgKG1fZWxlbWVudCA9PSB0YXJnZXQp
IHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgc3Vj
Y2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgICAgICAgICBtX2VsZW1lbnQgPSB0YXJnZXQ7
CisgICAgICAgICAgICBpZiAoc3VjY2Vzc0NhbGxiYWNrKQorICAgICAgICAgICAgICAgIHN1Y2Nl
c3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9w
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnJlcXVlc3RQb2ludGVyTG9jaygpKSB7CisgICAgICAg
IG1fZWxlbWVudCA9IHRhcmdldDsKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSBzdWNjZXNz
Q2FsbGJhY2s7CisgICAgICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gZmFpbHVyZUNhbGxiYWNrOwor
ICAgIH0gZWxzZSBpZiAoZmFpbHVyZUNhbGxiYWNrKQorICAgICAgICBmYWlsdXJlQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0
UG9pbnRlclVubG9jaygpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOworfQorCitib29sIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6aXNMb2NrZWQoKQoreworICAgIHJldHVybiBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+
aXNQb2ludGVyTG9ja2VkKCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRB
Y3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFja1RvSXNzdWUobV9zdWNjZXNz
Q2FsbGJhY2spOworICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gMDsKKyAgICBtX2ZhaWx1cmVDYWxs
YmFjayA9IDA7CisKKyAgICBpZiAoY2FsbGJhY2tUb0lzc3VlKQorICAgICAgICBjYWxsYmFja1Rv
SXNzdWUtPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpk
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFja1RvSXNzdWUobV9m
YWlsdXJlQ2FsbGJhY2spOworICAgIG1fZWxlbWVudCA9IDA7CisgICAgbV9zdWNjZXNzQ2FsbGJh
Y2sgPSAwOworICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gMDsKKworICAgIGlmIChjYWxsYmFja1Rv
SXNzdWUpCisgICAgICAgIGNhbGxiYWNrVG9Jc3N1ZS0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9p
ZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgaWYg
KG1fZWxlbWVudCkgeworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gZWxlbWVudFRv
Tm90aWZ5KG1fZWxlbWVudCk7CisgICAgICAgIG1fZWxlbWVudCA9IDA7CisgICAgICAgIG1fc3Vj
Y2Vzc0NhbGxiYWNrID0gMDsKKyAgICAgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSAwOworICAgICAg
ICBlbGVtZW50VG9Ob3RpZnktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkud2Via2l0cG9pbnRlcmxvY2tsb3N0RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgfQorfQor
Cit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKQoreworICAgIG1fZWxlbWVudC0+ZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50LCBldmVudFR5
cGUsIGV2ZW50LmNsaWNrQ291bnQoKSk7CisKKyAgICAvLyBDcmVhdGUgY2xpY2sgZXZlbnRzCisg
ICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQorICAgICAgICBt
X2VsZW1lbnQtPmRpc3BhdGNoTW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQsIGV2ZW50LmNsaWNrQ291bnQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTJhMDU1OGNjZjBiMjc5YmExOTRjOThh
ZWJmM2Y5MGE4NmMzOTlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFBvaW50ZXJMb2NrQ29udHJvbGxlcl9oCisjZGVmaW5lIFBvaW50ZXJMb2NrQ29udHJv
bGxlcl9oCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiVm9pZENhbGxi
YWNrLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFz
cyBQYWdlOworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworCitjbGFzcyBQb2ludGVyTG9ja0Nv
bnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJMb2NrQ29udHJvbGxl
cik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUG9pbnRlckxv
Y2tDb250cm9sbGVyKFBhZ2UqKTsKKworICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKFdlYkNv
cmU6OkVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjayk7CisgICAgdm9p
ZCByZXF1ZXN0UG9pbnRlclVubG9jaygpOworICAgIGJvb2wgaXNMb2NrZWQoKTsKKworICAgIHZv
aWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRl
ckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlzcGF0
Y2hMb2NrZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKTsKKworcHJpdmF0ZToKKyAgICBQYWdlKiBtX3BhZ2U7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Vm9pZENhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Vm9p
ZENhbGxiYWNrPiBtX2ZhaWx1cmVDYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBQb2ludGVy
TG9ja0NvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDUyMTczYzNmZGFkZTEyNjA3YTdlMzUxMDM0NDVkZGYyODM5MzY3YjUuLjZkOTQ4
MmUxM2M3ODc4OGVlNGRjYjg1ODdhY2Y3NjBkMGE1ZmM4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTkwLDYgKzkwLDggQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2su
aCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQb3B1cENv
bnRhaW5lci5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlByb2dy
ZXNzVHJhY2tlci5oIgpAQCAtMTAxMiw2ICsxMDE0LDkgQEAgV2ViVmlld0ltcGwqIFdlYlZpZXdJ
bXBsOjpmcm9tUGFnZShQYWdlKiBwYWdlKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpjbG9zZSgpCiB7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXF1ZXN0UG9pbnRlclVubG9jaygpOwor
I2VuZGlmCiAgICAgUmVmUHRyPFdlYkZyYW1lSW1wbD4gbWFpbkZyYW1lSW1wbDsKIAogICAgIGlm
IChtX3BhZ2UpIHsKQEAgLTE3NTEsMTcgKzE3NTYsMjYgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3QKIAogdm9pZCBXZWJWaWV3SW1wbDo6
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdoZW4g
UG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6
ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdo
ZW4gUG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIo
KS0+ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3
SW1wbDo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdo
ZW4gUG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIo
KS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKIH0KIAogLy8gV2ViVmlldyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMzIxNyw2ICszMjMxLDI3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmlzUG9pbnRlckxv
Y2tlZCgpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnBvaW50ZXJMb2NrTW91c2VFdmVudChjb25zdCBX
ZWJJbnB1dEV2ZW50JiBldmVudCkKIHsKKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlOworICAg
IHN3aXRjaCAoZXZlbnQudHlwZSkgeworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VEb3du
OgorICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VVcDoKKyAgICAgICAgZXZl
bnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50
TmFtZXMoKS5tb3VzZW1vdmVFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgY29uc3QgV2ViTW91c2VF
dmVudCYgbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPihldmVu
dCk7CisKKyAgICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJv
bGxlcigpLT5kaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoCisgICAgICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIG1vdXNlRXZlbnQp
LAorICAgICAgICAgICAgZXZlbnRUeXBlKTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdoZW4g
UG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTkzYzY3MGQ4
NWMxN2ZhYzdhNjgxN2NiNTcyODcxNGRlN2M2YThmYS4uZDA4Mzk0ZDI3MjE1YTU0MGZlNjc0NzIx
MTQ3YTg4ZmM2M2U2MDk4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWFscmVhZHkt
bG9ja2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVz
cG9uc2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL2xvY2st
ZmFpbC1yZXNwb25zZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL21vdXNl
LWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1s
b2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXIt
bG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEy
LTAxLTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2hyb21p
dW0gTWFjIExlcG9hcmQgb3ZlcnJpZGVzIGZvbGxvd2luZyB0aGUgQ2hyb21pdW0gTWFjIFNub3cg
TGVvcGFyZCBiYXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2sv
bG9jay1hbHJlYWR5LWxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxM2FjYThh
YmI0OTM3ZmZjNzQ0ODg2ODc1YTI2YmJlMjk0MDg4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE3IEBACitUZXN0IGNhbGxpbmcgbG9jayB3aGVuIGFscmVhZHkgaW4gYSBsb2NrZWQg
c3RhdGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRvci53
ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIGZhbHNlCitQQVNTIExvY2sgdGFyZ2V0MSBzdWNjZWVk
ZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK1BBU1Mg
TG9jayB0YXJnZXQxIHN1Y2NlZWRlZCBhZ2Fpbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorUEFTUyBleHBlY3RUYXJnZXQxVW5sb2NrIGlzIHRydWUKK1BB
U1MgTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIu
aXNMb2NrZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFs
cmVhZHktbG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5
LWxvY2tlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMjhlODhlZGYxNWU3NThiYzNmZWZkMjJjNGFjMGY5
NDNiODBlMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9j
ay1hbHJlYWR5LWxvY2tlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzwhRE9DVFlQRSBIVE1MPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxkaXYgaWQ9InRh
cmdldDEiPjwvZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQyIj48L2Rpdj4KKzwvZGl2PgorPHNjcmlw
dD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCBjYWxsaW5nIGxvY2sgd2hlbiBhbHJlYWR5IGluIGEg
bG9ja2VkIHN0YXRlLiIpCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
dGFyZ2V0ZGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQxIik7CisgICAgdGFy
Z2V0ZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQyIik7CisKKyAgICB2YXIg
ZXhwZWN0VGFyZ2V0MVVubG9jayA9IGZhbHNlOworICAgIHRhcmdldGRpdjEuYWRkRXZlbnRMaXN0
ZW5lcigid2Via2l0cG9pbnRlcmxvY2tsb3N0IiwKKyAgICAgICAgZnVuY3Rpb24gKCkgeyBzaG91
bGRCZSgiZXhwZWN0VGFyZ2V0MVVubG9jayIsICJ0cnVlIik7IH0pOworCisgICAgdGFyZ2V0ZGl2
Mi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QiLAorICAgICAgICBmdW5j
dGlvbiAoKSB7IHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgdGFyZ2V0ZGl2MiBwb2ludGVybG9ja2xv
c3QuIik7IH0pOworCisgICAgY3VycmVudFN0ZXAgPSAwOworICAgIGZ1bmN0aW9uIGRvTmV4dFN0
ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7CisgICAgfQorICAgIHRvZG8gPSBb
CisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iu
d2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgbmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2Nl
ZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQ
b2ludGVyLmlzTG9ja2VkIiwgInRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3Rl
cCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
IH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQ
b2ludGVyLmxvY2sodGFyZ2V0ZGl2MSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MSBzdWNjZWVkZWQgYWdh
aW4uIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9p
bnRlci5pc0xvY2tlZCIsICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAo
KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
IH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV4cGVjdFRhcmdldDFVbmxv
Y2sgPSB0cnVlOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJn
ZXRkaXYyLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgInRydWUi
KTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNU
ZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1y
ZXNwb25zZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFp
bC1yZXNwb25zZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZTlhMmRhOGQ2NTFkMThmNzkw
ZTRkZjRjOWJmMWQwZmUyNzQ4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2lu
dGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorVGVzdCBhc3luY2hyb25vdXMgcmVzdWx0cyBvZiBjYWxsaW5nIGxvY2suCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciBp
cyBkZWZpbmVkLgorUEFTUyBMb2NrIGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KQorUEFTUyBMb2Nr
IGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJM
b2NrV2lsbEZhaWxBc3luY2hyb25vdXNseSkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxv
Y2svbG9jay1mYWlsLXJlc3BvbnNlcy5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xv
Y2stZmFpbC1yZXNwb25zZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTY3ZDY1ZGJlNDY4YTNjYjlhMDMx
YTBiZjNjODUxY2YyODViYzk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRl
ci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZ
UEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUZXN0IGFzeW5jaHJvbm91cyByZXN1bHRzIG9mIGNhbGxpbmcgbG9j
ay4iKQorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBzaG91bGRCZURlZmlu
ZWQoIndpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciIpOworCisgICAgY3VycmVudFN0ZXAgPSAw
OworICAgIGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytd
KCk7CisgICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91
c2x5KCk7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKGRvY3VtZW50
LmJvZHksCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NrIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkuIik7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2Nr
IGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJM
b2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRT
dGVwKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2ls
bEZhaWxBc3luY2hyb25vdXNseSgpOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIubG9jayhkb2N1bWVudC5ib2R5LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBzdWNjZWVkZWQgdW5leHBlY3RlZGx5
LiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiTG9jayBmYWlsZWQgKGFmdGVyIHdlIGNhbGxlZCBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWlsQXN5bmNocm9ub3VzbHkpIik7CisgICAgICAgICAg
ICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwK
KyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRl
ci1sb2NrL21vdXNlLWV2ZW50LWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21v
dXNlLWV2ZW50LWFwaS5odG1sCmluZGV4IGVmYjQxMjFkNTJiNzA4ZjllNzA0MzhiYzU0Y2NmZTY0
YzQ2YjkwMmQuLjJmZWVmM2FkMzQyM2YwMmYzNDRkZDZhMTQzYjQxZmJkY2ZjYzc3OTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1hcGkuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtYXBpLmh0bWwKQEAgLTEsNCAr
MSw0IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
IURPQ1RZUEUgSFRNTD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTc5N2MyN2U1Zjk5MTAwMTgzYmIzOGZlNDBlMjU0MmQxMmQ2Y2JlMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVy
eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNCBAQAorVGVzdCBtb3VzZSBldmVudHMgYXJlIHJv
dXRlZCB0byBsb2NrIHRhcmdldC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgd2luZG93LmV2ZW50U2VuZGVyIGlzIGRlZmluZWQuCitQQVNTIExvY2sgdGFyZ2V0MSBzdWNj
ZWVkZWQuCitXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suCitQQVNTIGV2ZW50IHR5
cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQxLCByZWNlaXZlZCBvbjogdGFyZ2V0MQorUEFT
UyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQgb246IGJv
ZHkKK1BBU1MgTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4KK1dpdGggYSBsb2NrIGluIHBsYWNlIHNl
bmQgYSBjbGljay4KK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIs
IHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0
OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogYm9keQorRW5zdXJlIGRvdWJsZSBjbGlja3Mgd29yayBh
cyBleHBlY3RlZCwgc2VuZGluZyA0IGNsaWNrcy4KK0NyZWF0aW5nIGEgY2xpY2sgYW5kIGRibGNs
aWNrLgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2
ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQy
LCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0
YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24s
IHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTog
bW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVu
dCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFT
UyBldmVudCB0eXBlOiBkYmxjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFy
Z2V0MgorRW5zdXJpbmcgbm8gZmFsc2UgZGJsY2xpY2tzIGlmIHdlIGNvbnRpbnVlLgorUEFTUyBl
dmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdl
dDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBv
bjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNl
aXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFy
Z2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFy
Z2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGlj
aywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiNGUy
ODgxMDg2YWNjZmJlMmRkNDI4YzlkZjViOWU3YTJiZjE5NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sCkBAIC0wLDAg
KzEsMTA5IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgaWQ9ImJvZHkiPgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+CisgIDxk
aXYgaWQ9InRhcmdldDIiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9u
KCJUZXN0IG1vdXNlIGV2ZW50cyBhcmUgcm91dGVkIHRvIGxvY2sgdGFyZ2V0LiIpCisgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmV2
ZW50U2VuZGVyIik7CisKKyAgICB0YXJnZXRkaXYxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldDEiKTsKKyAgICB0YXJnZXRkaXYyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldDIiKTsKKworICAgIGZ1bmN0aW9uIGV2ZW50Tm90RXhwZWN0ZWQoZSkgeworICAgICAgICB0
ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIGV2ZW50ICIgKyBlLnR5cGUgKyAiIG9uICIgKyBlLmN1cnJl
bnRUYXJnZXQuaWQpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisgICAgZnVuY3Rp
b24gZXZlbnRFeHBlY3RlZChlKSB7CisgICAgICB0ZXN0UGFzc2VkKCJldmVudCB0eXBlOiAiICsg
ZS50eXBlICsgIiwgdGFyZ2V0OiAiICsgZS50YXJnZXQuaWQgKyAiLCByZWNlaXZlZCBvbjogIiAr
IGUuY3VycmVudFRhcmdldC5pZCk7CisgICAgfQorCisgICAgY3VycmVudFN0ZXAgPSAwOworICAg
IGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7Cisg
ICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5h
dmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2MSwKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0
MSBzdWNjZWVkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiV2l0aCBhIGxvY2sgaW4gcGxhY2Ug
c2VuZCBhIGNsaWNrLiIpCisgICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gZXZl
bnRFeHBlY3RlZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBldmVudE5v
dEV4cGVjdGVkOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IGV2ZW50
RXhwZWN0ZWQ7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAw
MCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAg
ICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgdGFyZ2V0ZGl2
MS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3Vz
ZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9ubW91c2Vkb3du
ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5s
b2NrKHRhcmdldGRpdjIsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDIgc3VjY2VlZGVkLiIpOworICAgICAg
ICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxv
Y2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgZGVidWcoIldpdGggYSBsb2NrIGluIHBsYWNlIHNlbmQgYSBjbGljay4iKQorICAgICAg
ICAgICAgdGFyZ2V0ZGl2MS5vbm1vdXNlZG93biA9IGV2ZW50Tm90RXhwZWN0ZWQ7CisgICAgICAg
ICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAg
d2luZG93LmV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMDApOworICAgICAgICAgICAgd2luZG93
LmV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKKyAgICAgICAgICAgIHRhcmdldGRpdjEub25tb3VzZWRvd24gPSB1bmRlZmlu
ZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAg
ICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgZGVidWcoIkVuc3VyZSBkb3VibGUgY2xpY2tzIHdvcmsgYXMgZXhwZWN0ZWQsIHNl
bmRpbmcgNCBjbGlja3MuIikKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBl
dmVudEV4cGVjdGVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNldXAgPSBldmVudEV4
cGVjdGVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmNsaWNrID0gZXZlbnRFeHBlY3RlZDsK
KyAgICAgICAgICAgIHRhcmdldGRpdjIub25kYmxjbGljayA9IGV2ZW50RXhwZWN0ZWQ7CisgICAg
ICAgICAgICBkZWJ1ZygiQ3JlYXRpbmcgYSBjbGljayBhbmQgZGJsY2xpY2suIik7CisgICAgICAg
ICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAgICAgICB3
aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRT
ZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAg
ICAgIGRlYnVnKCJFbnN1cmluZyBubyBmYWxzZSBkYmxjbGlja3MgaWYgd2UgY29udGludWUuIik7
CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAg
ICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgd2luZG93LmV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7Cisg
ICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2V1cCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IHRhcmdldGRpdjIub25jbGljayA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIu
b25kYmxjbGljayA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXIt
bG9jay9wb2ludGVyLWxvY2stYXBpLmh0bWwKaW5kZXggMzE4Yjk5MGZhMjU3MzQ1ZjgxZjBmZGRh
MjgyYTIzMTI1NTk3NGYxMC4uOGRkNDFhNTcxNjJlNWFiNzU1ZGMwNjRlYjFmMTFjZjQxNDQwY2Fi
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGku
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS5odG1s
CkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPCFET0NUWVBFIEhUTUw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTgzMjQwMGVhMTE4ODkzNTAzMDlmYjQyOTg4M2FiZGI1MmRm
YWY0MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVy
bG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgdGhhdCBw
b2ludGVybG9ja2xvc3QgZXZlbnQgaXMgZGlzcGF0Y2hlZC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1Mgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIGlzIGRlZmluZWQu
CitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK0phdmFTY3Jp
cHQgaW5pdGlhdGVkIHVubG9jay4KK1BBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIg
Y2FsbCAwCitQQVNTIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMQorUEFTUyBB
bGwgZXhwZWN0ZWQgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4KK1BBU1Mg
bmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgZmFsc2UKK1BBU1MgbmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorSG9zdCBpbml0aWF0ZWQgdW5sb2NrLgor
UEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxsIDAKK1BBU1Mgd2Via2l0cG9p
bnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAxCitQQVNTIEFsbCBleHBlY3RlZCB3ZWJraXRwb2lu
dGVybG9ja2xvc3QgZXZlbnRzIHJlY2VpdmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRl
ci5pc0xvY2tlZCBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2lu
dGVybG9ja2xvc3QtZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVy
bG9ja2xvc3QtZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODdjY2UyYzVmNzUzY2ZlOTc1MGE0Nzcx
NTJlODFjMWU2OTUyZDdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1s
b2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQ
RSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxk
aXYgaWQ9InRhcmdldCI+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24o
IlRlc3QgdGhhdCBwb2ludGVybG9ja2xvc3QgZXZlbnQgaXMgZGlzcGF0Y2hlZC4iKQorICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciIpOworCisgICAgdGFyZ2V0ZGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldCIpOworCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Vi
a2l0cG9pbnRlcmxvY2tsb3N0IiwgbG9ja2xvc3RIYW5kbGVyKTsKKyAgICB0YXJnZXRkaXYuYWRk
RXZlbnRMaXN0ZW5lcigid2Via2l0cG9pbnRlcmxvY2tsb3N0IiwgbG9ja2xvc3RIYW5kbGVyKTsK
KyAgICBsb2NrbG9zdGhhbmRsZXJzID0gMjsKKworICAgIGxvY2tsb3N0cmVjZWlwdHMgPSAwOwor
ICAgIGZ1bmN0aW9uIGxvY2tsb3N0SGFuZGxlcigpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgid2Vi
a2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAiICsgbG9ja2xvc3RyZWNlaXB0cyk7Cisg
ICAgICAgIGxvY2tsb3N0cmVjZWlwdHMrKzsKKyAgICAgICAgaWYgKGxvY2tsb3N0cmVjZWlwdHMg
PT0gbG9ja2xvc3RoYW5kbGVycykgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIGV4cGVj
dGVkIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBldmVudHMgcmVjZWl2ZWQuIik7CisgICAgICAgICAg
ICBkb05leHRTdGVwKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjdXJyZW50U3RlcCA9IDA7
CisgICAgZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10o
KTsKKyAgICB9CisgICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYsCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBk
b05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOwor
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoIkph
dmFTY3JpcHQgaW5pdGlhdGVkIHVubG9jay4iKQorICAgICAgICAgICAgbG9ja2xvc3RyZWNlaXB0
cyA9IDA7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci51bmxvY2soKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgLy8gbG9ja2xvc3RI
YW5kbGVyIHdpbGwgY2F0Y2ggdW5sb2NrcyBhbmQgY2FsbCBkb05leHRTdGVwIHRvIGJyaW5nIHVz
IGhlcmUuCisgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNM
b2NrZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwK
KyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIubG9jayh0YXJnZXRkaXYsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQi
LCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoIkhvc3QgaW5pdGlhdGVkIHVubG9jay4iKQor
ICAgICAgICAgICAgbG9ja2xvc3RyZWNlaXB0cyA9IDA7CisgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgLy8gbG9ja2xvc3RIYW5kbGVyIHdpbGwgY2F0Y2ggdW5s
b2NrcyBhbmQgY2FsbCBkb05leHRTdGVwIHRvIGJyaW5nIHVzIGhlcmUuCisgICAgICAgICAgICBz
aG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAiZmFsc2UiKTsKKyAg
ICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNUZXN0
CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123976</attachid>
            <date>2012-01-25 11:09:28 -0800</date>
            <delta_ts>2012-01-25 17:17:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75762-20120125110927.patch</filename>
            <type>text/plain</type>
            <size>37736</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAxNzI5YWJiNDI2NGI1
NWE5MGQwM2UwZTNhMWE3YjFhZjUyNGIzMy4uMDJmZjEzYzYzOWNkMGY1NDMxODgyOWFhZmE3NmMw
MDYyNWNlMGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlciBj
bGFzcywgd2hpY2ggZXhpc3RzIHBlciBwYWdlLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRQb2lu
dGVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
b2ludGVyTG9ja0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2Nr
Ojp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OmlzTG9ja2VkKToKKyAg
ICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
azo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpy
ZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9s
bGVyOjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXI6OmlzTG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29u
dHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50
ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmguCisKIDIwMTItMDEtMjUgIEFsZXhp
cyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgYm9yZGVy
LWltYWdlIHNob3VsZCBub3QgY3Jhc2ggd2hlbiB0aGUgc291cmNlIGlzIG5vdCBzcGVjaWZpZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGU2YzY2NTk3ZjJjOGNmMDRkZDhhNTIxMmE4
YjEwOWNmMWM2NThlZmUuLjE0Mzg3YWZlOTkyOTU5OTQyNTYwNjJhMDgwNzAzOWIxYjBhNWE3ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjQg
IFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb2ludGVy
IExvY2s6IEltcGxlbWVudCBwb2ludGVyIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NjIKKworICAgICAgICBBZGQgY2FsbHMgdG8g
dGhlIFBvaW50ZXJMb2NrQ29udHJvbGxlciBhZGRlZCBpbiB0aGlzIHBhdGNoIHRvIFdlYkNvcmUu
CisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkQWNxdWly
ZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZE5vdEFjcXVp
cmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRMb3NlUG9p
bnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cG9pbnRlckxvY2tNb3Vz
ZUV2ZW50KToKKwogMjAxMi0wMS0yNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEluZGV4ZWREQjogTmVlZCB0byBkaXN0aW5ndWlzaCBrZXkgcGF0aHMgdGhh
dCBkb24ndCB5aWVsZCB2YWx1ZSB2cy4geWllbGQgaW52YWxpZCBrZXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAxYzg4NDIxOWEzMzc2MTAzMjg5MjRlYjJlZTI2ZWU2ZGFmOTUyZmRhLi41NDBhN2M5YWJh
OTdkZmY1MDZlNDVlOWYxZjlhN2RlYzQ4YmFhZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNjQ2
LDYgKzI2NDYsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaCcsCiAg
ICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9jay5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvUG9p
bnRlckxvY2suaCcsCisgICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3Bw
JywKKyAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oJywKICAgICAgICAg
ICAgICdwYWdlL1ByaW50Q29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU2NyZWVuLmNw
cCcsCiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApp
bmRleCBkYTE4YjI5NTFiYTdkNDkzNTRkNGVhNzI5ODNmZjRiOTZjMTNjOTk4Li42NDY0ZDhjMTAw
ZDFhNzRjNzFkZmFiMDViYTg1MjY4NmIyNGU0YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
QEAgLTE5Nyw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1hY3Jv
KHNob3cpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0cG9pbnRlcmxvY2tsb3N0KSBcCisgICAg
XAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCmluZGV4IDk4MmE3Y2QxNWQ1ZDM4ZDkyMjVkYzFiNmJmMTIxMWZkNzM4MThh
YWYuLjQ4NjYyNWE5OGQyMGUxYzAzZDUxNWViMjI0NDJkMzgxNDJmODEzMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI4LDYgKzMyOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZUNocm9tZUNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2NrKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKSB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudCgpIHsg
fQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYzM1ZTk5NDk2MWM1MGE4
MWFiYjhjMDA4NDNkODJlYzQzNjE2MWRlNC4uNmZkNDFlYTBjOTIzMjk3OGU5MDliNTkxZjVmMzRm
ZTAxYzQ0NGZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMTYxLDggKzE2MSw4
IEBAIEdlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0aW9uKCkgY29uc3QKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogUG9pbnRlckxvY2sqIE5hdmlnYXRvcjo6d2Via2l0UG9pbnRlcigp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvaW50ZXIpCi0gICAgICAgIG1fcG9pbnRlciA9IFBvaW50
ZXJMb2NrOjpjcmVhdGUoKTsKKyAgICBpZiAoIW1fcG9pbnRlciAmJiBtX2ZyYW1lICYmIG1fZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgbV9wb2ludGVyID0gUG9pbnRlckxvY2s6OmNyZWF0ZShtX2Zy
YW1lLT5wYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpKTsKICAgICByZXR1cm4gbV9wb2lu
dGVyLmdldCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwYzZmZjU1YmExMjRj
ODliZmE4OThjMmUwYTk3NTVhZTFlMzdkNzNhLi41NDQ2ODIyZTYyYzY5YTg0OGI2ZjBlMjIzM2I2
N2FmZjEzNjk3OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNs
dWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBs
dWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xNDYsNiArMTQ3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xp
ZW50cyYgcGFnZUNsaWVudHMpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLCBtX25v
dGlmaWNhdGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKHRoaXMs
IHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9J
TlRFUl9MT0NLKQorICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoYWRvcHRQdHIobmV3IFBv
aW50ZXJMb2NrQ29udHJvbGxlcih0aGlzKSkpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BF
RUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENs
aWVudCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBlZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4Mzcy
NjFlNjI5Nzg0ZTFhZThlLi5hYzljNTc4ZjgxOWI0NjQ5N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaApAQCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAg
ICBjbGFzcyBQbHVnaW5EYXRhOworICAgIGNsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlcjsKICAg
ICBjbGFzcyBQcm9ncmVzc1RyYWNrZXI7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVu
ZGVyVGhlbWU7CkBAIC0xOTAsNiArMTkxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKiBub3Rp
ZmljYXRpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25Db250cm9s
bGVyLmdldCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICBQ
b2ludGVyTG9ja0NvbnRyb2xsZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pbnRlckxvY2tDb250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRp
ZgpAQCAtMzg2LDYgKzM5MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykKICAgICAgICAgT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90
aWZpY2F0aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgICAgIE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRlckxvY2tDb250cm9s
bGVyOworI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5w
dXRDbGllbnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAgICAgICAgIE93blB0cjxTcGVlY2hJbnB1
dD4gbV9zcGVlY2hJbnB1dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRl
ckxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKaW5kZXggZGZi
M2NiNDlhMDljODkwMjgxYjkwNjgyZmI4NWNkODQxYTZlY2E5MS4uNGJlNjQ5ZjY0ODY3YzE3ZTc1
N2QxMDdlNGUzZjhlODcwZjgxYmFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAK
QEAgLTI1LDExICsyNSwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvaW50
ZXJMb2NrLmgiCiAKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKwogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRlckxvY2s6
OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJMb2NrOjpQb2ludGVyTG9jayhQb2ludGVyTG9ja0NvbnRy
b2xsZXIqIGNvbnRyb2xsZXIpCisgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKIHsKIH0K
IApAQCAtMzksMTggKzQyLDE3IEBAIFBvaW50ZXJMb2NrOjp+UG9pbnRlckxvY2soKQogCiB2b2lk
IFBvaW50ZXJMb2NrOjpsb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxs
YmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgcmV0dXJuIG1fY29udHJvbGxl
ci0+cmVxdWVzdFBvaW50ZXJMb2NrKHRhcmdldCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2Fs
bGJhY2spOwogfQogCiB2b2lkIFBvaW50ZXJMb2NrOjp1bmxvY2soKQogewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5yZXF1ZXN0UG9pbnRlclVubG9j
aygpOwogfQogCiBib29sIFBvaW50ZXJMb2NrOjppc0xvY2tlZCgpCiB7Ci0gICAgLy8gRklYTUU6
IEltcGxlbWVudAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyLT5p
c0xvY2tlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50
ZXJMb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmgKaW5kZXggYmU3YzMx
NzhmNThmZTc5OWM2MTFjZjA2MWNjZGVkZTkzMmJhZGIwMy4uZTAxOTk5ZTgwMmNjODkyMmUxNmIw
NDY0NmIzYTA5ZWE4YmNjZTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaApAQCAtMzQs
MTAgKzM0LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CitjbGFz
cyBQb2ludGVyTG9ja0NvbnRyb2xsZXI7CiAKIGNsYXNzIFBvaW50ZXJMb2NrIDogcHVibGljIFJl
ZkNvdW50ZWQ8UG9pbnRlckxvY2s+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
b2ludGVyTG9jaz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50ZXJMb2NrKCkp
OyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9pbnRlckxvY2s+IGNyZWF0ZShQb2ludGVyTG9j
a0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb2ludGVyTG9j
ayhjb250cm9sbGVyKSk7IH0KIAogICAgIH5Qb2ludGVyTG9jaygpOwogCkBAIC00Niw3ICs0Nyw5
IEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9ja2VkKCk7CiAKIHByaXZhdGU6Ci0gICAgUG9pbnRl
ckxvY2soKTsKKyAgICBQb2ludGVyTG9jayhQb2ludGVyTG9ja0NvbnRyb2xsZXIqKTsKKworICAg
IFBvaW50ZXJMb2NrQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1NTRjNTI5MjUyZmFhZTcwYjYzYTRkNGJjYjcyNTY3ZWY0MmE4MGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJv
bGxlci5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkNo
cm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BvaW50ZXJM
b2NrQ29udHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9sbGVyKFBhZ2UqIHBhZ2UpCisgICAgOiBt
X3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQ
b2ludGVyTG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBmYWlsdXJlQ2FsbGJhY2spCit7
CisgICAgaWYgKGlzTG9ja2VkKCkpIHsKKyAgICAgICAgaWYgKG1fZWxlbWVudCA9PSB0YXJnZXQp
IHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgc3Vj
Y2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgICAgICAgICBtX2VsZW1lbnQgPSB0YXJnZXQ7
CisgICAgICAgICAgICBpZiAoc3VjY2Vzc0NhbGxiYWNrKQorICAgICAgICAgICAgICAgIHN1Y2Nl
c3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobV9w
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnJlcXVlc3RQb2ludGVyTG9jaygpKSB7CisgICAgICAg
IG1fZWxlbWVudCA9IHRhcmdldDsKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSBzdWNjZXNz
Q2FsbGJhY2s7CisgICAgICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gZmFpbHVyZUNhbGxiYWNrOwor
ICAgIH0gZWxzZSBpZiAoZmFpbHVyZUNhbGxiYWNrKQorICAgICAgICBmYWlsdXJlQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0
UG9pbnRlclVubG9jaygpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOworfQorCitib29sIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6aXNMb2NrZWQoKQoreworICAgIHJldHVybiBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+
aXNQb2ludGVyTG9ja2VkKCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRB
Y3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFja1RvSXNzdWUobV9zdWNjZXNz
Q2FsbGJhY2spOworICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gMDsKKyAgICBtX2ZhaWx1cmVDYWxs
YmFjayA9IDA7CisKKyAgICBpZiAoY2FsbGJhY2tUb0lzc3VlKQorICAgICAgICBjYWxsYmFja1Rv
SXNzdWUtPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpk
aWROb3RBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIGlmICghbV9lbGVtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFja1RvSXNzdWUobV9m
YWlsdXJlQ2FsbGJhY2spOworICAgIG1fZWxlbWVudCA9IDA7CisgICAgbV9zdWNjZXNzQ2FsbGJh
Y2sgPSAwOworICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gMDsKKworICAgIGlmIChjYWxsYmFja1Rv
SXNzdWUpCisgICAgICAgIGNhbGxiYWNrVG9Jc3N1ZS0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9p
ZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgaWYg
KG1fZWxlbWVudCkgeworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gZWxlbWVudFRv
Tm90aWZ5KG1fZWxlbWVudCk7CisgICAgICAgIG1fZWxlbWVudCA9IDA7CisgICAgICAgIG1fc3Vj
Y2Vzc0NhbGxiYWNrID0gMDsKKyAgICAgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSAwOworICAgICAg
ICBlbGVtZW50VG9Ob3RpZnktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkud2Via2l0cG9pbnRlcmxvY2tsb3N0RXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgfQorfQor
Cit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKQoreworICAgIG1fZWxlbWVudC0+ZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50LCBldmVudFR5
cGUsIGV2ZW50LmNsaWNrQ291bnQoKSk7CisKKyAgICAvLyBDcmVhdGUgY2xpY2sgZXZlbnRzCisg
ICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQorICAgICAgICBt
X2VsZW1lbnQtPmRpc3BhdGNoTW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQsIGV2ZW50LmNsaWNrQ291bnQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTJhMDU1OGNjZjBiMjc5YmExOTRjOThh
ZWJmM2Y5MGE4NmMzOTlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFBvaW50ZXJMb2NrQ29udHJvbGxlcl9oCisjZGVmaW5lIFBvaW50ZXJMb2NrQ29udHJv
bGxlcl9oCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiVm9pZENhbGxi
YWNrLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFz
cyBQYWdlOworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworCitjbGFzcyBQb2ludGVyTG9ja0Nv
bnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJMb2NrQ29udHJvbGxl
cik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUG9pbnRlckxv
Y2tDb250cm9sbGVyKFBhZ2UqKTsKKworICAgIHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKFdlYkNv
cmU6OkVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjayk7CisgICAgdm9p
ZCByZXF1ZXN0UG9pbnRlclVubG9jaygpOworICAgIGJvb2wgaXNMb2NrZWQoKTsKKworICAgIHZv
aWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1aXJlUG9pbnRl
ckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlzcGF0
Y2hMb2NrZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKTsKKworcHJpdmF0ZToKKyAgICBQYWdlKiBtX3BhZ2U7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Vm9pZENhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Vm9p
ZENhbGxiYWNrPiBtX2ZhaWx1cmVDYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKKyNlbmRpZiAvLyBQb2ludGVy
TG9ja0NvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDUyMTczYzNmZGFkZTEyNjA3YTdlMzUxMDM0NDVkZGYyODM5MzY3YjUuLjZkOTQ4
MmUxM2M3ODc4OGVlNGRjYjg1ODdhY2Y3NjBkMGE1ZmM4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTkwLDYgKzkwLDggQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2su
aCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQb3B1cENv
bnRhaW5lci5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlByb2dy
ZXNzVHJhY2tlci5oIgpAQCAtMTAxMiw2ICsxMDE0LDkgQEAgV2ViVmlld0ltcGwqIFdlYlZpZXdJ
bXBsOjpmcm9tUGFnZShQYWdlKiBwYWdlKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpjbG9zZSgpCiB7
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICByZXF1ZXN0UG9pbnRlclVubG9jaygpOwor
I2VuZGlmCiAgICAgUmVmUHRyPFdlYkZyYW1lSW1wbD4gbWFpbkZyYW1lSW1wbDsKIAogICAgIGlm
IChtX3BhZ2UpIHsKQEAgLTE3NTEsMTcgKzE3NTYsMjYgQEAgYm9vbCBXZWJWaWV3SW1wbDo6aXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3QKIAogdm9pZCBXZWJWaWV3SW1wbDo6
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdoZW4g
UG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisg
ICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+
ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6
ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdo
ZW4gUG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIo
KS0+ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJWaWV3
SW1wbDo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdo
ZW4gUG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisgICAgaWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIo
KS0+ZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisjZW5kaWYKIH0KIAogLy8gV2ViVmlldyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMzIxNyw2ICszMjMxLDI3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmlzUG9pbnRlckxv
Y2tlZCgpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnBvaW50ZXJMb2NrTW91c2VFdmVudChjb25zdCBX
ZWJJbnB1dEV2ZW50JiBldmVudCkKIHsKKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlOworICAg
IHN3aXRjaCAoZXZlbnQudHlwZSkgeworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VEb3du
OgorICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VVcDoKKyAgICAgICAgZXZl
bnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50
TmFtZXMoKS5tb3VzZW1vdmVFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgY29uc3QgV2ViTW91c2VF
dmVudCYgbW91c2VFdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPihldmVu
dCk7CisKKyAgICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJv
bGxlcigpLT5kaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoCisgICAgICAgICAgICBQbGF0Zm9ybU1v
dXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIG1vdXNlRXZlbnQp
LAorICAgICAgICAgICAgZXZlbnRUeXBlKTsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHdoZW4g
UG9pbnRlckxvY2tDb250cm9sbGVyIGxhbmRzLgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmY1ODBiYzVi
MjU3ZGVhMGUwYzhiMzNhYmExYWFlZmZjNGQ1Y2FhZS4uZTQ2MWRlOWE3YWJjMjE0MTZiM2E0YmUx
M2NiZTE3MmNiNWNjZTZhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWFscmVhZHkt
bG9ja2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVz
cG9uc2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL2xvY2st
ZmFpbC1yZXNwb25zZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL21vdXNl
LWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1s
b2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXIt
bG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEy
LTAxLTI1ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAg
ICAgICAgIGJvcmRlci1pbWFnZSBzaG91bGQgbm90IGNyYXNoIHdoZW4gdGhlIHNvdXJjZSBpcyBu
b3Qgc3BlY2lmaWVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2st
YWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xv
Y2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MTNhY2E4YWJiNDkz
N2ZmYzc0NDg4Njg3NWEyNmJiZTI5NDA4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNyBAQAorVGVzdCBjYWxsaW5nIGxvY2sgd2hlbiBhbHJlYWR5IGluIGEgbG9ja2VkIHN0YXRl
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBuYXZpZ2F0b3Iud2Via2l0
UG9pbnRlci5pc0xvY2tlZCBpcyBmYWxzZQorUEFTUyBMb2NrIHRhcmdldDEgc3VjY2VlZGVkLgor
UEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0cnVlCitQQVNTIExvY2sg
dGFyZ2V0MSBzdWNjZWVkZWQgYWdhaW4uCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlz
TG9ja2VkIGlzIHRydWUKK1BBU1MgZXhwZWN0VGFyZ2V0MVVubG9jayBpcyB0cnVlCitQQVNTIExv
Y2sgdGFyZ2V0MiBzdWNjZWVkZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9j
a2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5
LWxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2Nr
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YTI4ZTg4ZWRmMTVlNzU4YmMzZmVmZDIyYzRhYzBmOTQzYjgw
ZTM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxy
ZWFkeS1sb2NrZWQuaHRtbApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQx
Ij48L2Rpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MiI+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+Cisg
ICAgZGVzY3JpcHRpb24oIlRlc3QgY2FsbGluZyBsb2NrIHdoZW4gYWxyZWFkeSBpbiBhIGxvY2tl
ZCBzdGF0ZS4iKQorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHRhcmdl
dGRpdjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MSIpOworICAgIHRhcmdldGRp
djIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MiIpOworCisgICAgdmFyIGV4cGVj
dFRhcmdldDFVbmxvY2sgPSBmYWxzZTsKKyAgICB0YXJnZXRkaXYxLmFkZEV2ZW50TGlzdGVuZXIo
IndlYmtpdHBvaW50ZXJsb2NrbG9zdCIsCisgICAgICAgIGZ1bmN0aW9uICgpIHsgc2hvdWxkQmUo
ImV4cGVjdFRhcmdldDFVbmxvY2siLCAidHJ1ZSIpOyB9KTsKKworICAgIHRhcmdldGRpdjIuYWRk
RXZlbnRMaXN0ZW5lcigid2Via2l0cG9pbnRlcmxvY2tsb3N0IiwKKyAgICAgICAgZnVuY3Rpb24g
KCkgeyB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIHRhcmdldGRpdjIgcG9pbnRlcmxvY2tsb3N0LiIp
OyB9KTsKKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5jdGlvbiBkb05leHRTdGVwKCkg
eworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOworICAgIH0KKyAgICB0b2RvID0gWworICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtp
dFBvaW50ZXIuaXNMb2NrZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJr
aXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2MSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MSBzdWNjZWVkZWQu
Iik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRl
ci5pc0xvY2tlZCIsICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAor
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRl
ci5sb2NrKHRhcmdldGRpdjEsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDEgc3VjY2VlZGVkIGFnYWluLiIp
OworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIu
aXNMb2NrZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7Cisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICB9LAor
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBleHBlY3RUYXJnZXQxVW5sb2NrID0g
dHJ1ZTsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2
MiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIkxvY2sgdGFyZ2V0MiBzdWNjZWVkZWQuIik7CisgICAgICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJ0cnVlIik7Cisg
ICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgIH0sCisgICAgICAgIGZpbmlzaEpTVGVzdAor
ICAgIF07CisgICAgZG9OZXh0U3RlcCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVzcG9u
c2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVz
cG9uc2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmU5YTJkYThkNjUxZDE4Zjc5MGU0ZGY0
YzliZjFkMGZlMjc0ODVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1s
b2NrL2xvY2stZmFpbC1yZXNwb25zZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rl
c3QgYXN5bmNocm9ub3VzIHJlc3VsdHMgb2YgY2FsbGluZyBsb2NrLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgaXMgZGVm
aW5lZC4KK1BBU1MgTG9jayBmYWlsZWQgKGFmdGVyIHdlIGNhbGxlZCBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSkKK1BBU1MgTG9jayBmYWls
ZWQgKGFmdGVyIHdlIGNhbGxlZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dp
bGxGYWlsQXN5bmNocm9ub3VzbHkpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xv
Y2stZmFpbC1yZXNwb25zZXMuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZh
aWwtcmVzcG9uc2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU2N2Q2NWRiZTQ2OGEzY2I5YTAzMWEwYmYz
Yzg1MWNmMjg1YmM5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9j
ay9sb2NrLWZhaWwtcmVzcG9uc2VzLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIEhU
TUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBk
ZXNjcmlwdGlvbigiVGVzdCBhc3luY2hyb25vdXMgcmVzdWx0cyBvZiBjYWxsaW5nIGxvY2suIikK
KyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAg
ICBmdW5jdGlvbiBkb05leHRTdGVwKCkgeworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOwor
ICAgIH0KKyAgICB0b2RvID0gWworICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWlsU3luY2hyb25vdXNseSgp
OworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayhkb2N1bWVudC5ib2R5
LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiTG9jayBzdWNjZWVkZWQgdW5leHBlY3RlZGx5LiIpOworICAgICAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayBmYWls
ZWQgKGFmdGVyIHdlIGNhbGxlZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dp
bGxGYWlsU3luY2hyb25vdXNseSkiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWls
QXN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxv
Y2soZG9jdW1lbnQuYm9keSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgc3VjY2VlZGVkIHVuZXhwZWN0ZWRseS4iKTsK
KyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkxvY2sgZmFpbGVkIChhZnRlciB3ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5KSIpOworICAgICAgICAgICAgICAg
ICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAg
ICAgIGZpbmlzaEpTVGVzdAorICAgIF07CisgICAgZG9OZXh0U3RlcCgpOworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9j
ay9tb3VzZS1ldmVudC1hcGkuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1l
dmVudC1hcGkuaHRtbAppbmRleCBlZmI0MTIxZDUyYjcwOGY5ZTcwNDM4YmM1NGNjZmU2NGM0NmI5
MDJkLi4yZmVlZjNhZDM0MjNmMDJmMzQ0ZGQ2YTE0M2I0MWZiZGNmY2M3Nzk4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtYXBpLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWFwaS5odG1sCkBAIC0xLDQgKzEsNCBA
QAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPCFET0NU
WVBFIEhUTUw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bv
aW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE3OTdjMjdlNWY5OTEwMDE4M2JiMzhmZTQwZTI1NDJkMTJkNmNiZTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1Rlc3QgbW91c2UgZXZlbnRzIGFyZSByb3V0ZWQg
dG8gbG9jayB0YXJnZXQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdp
bmRvdy5ldmVudFNlbmRlciBpcyBkZWZpbmVkLgorUEFTUyBMb2NrIHRhcmdldDEgc3VjY2VlZGVk
LgorV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLgorUEFTUyBldmVudCB0eXBlOiBt
b3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQgb246IHRhcmdldDEKK1BBU1MgZXZl
bnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDEsIHJlY2VpdmVkIG9uOiBib2R5CitQ
QVNTIExvY2sgdGFyZ2V0MiBzdWNjZWVkZWQuCitXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEg
Y2xpY2suCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNl
aXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFy
Z2V0MiwgcmVjZWl2ZWQgb246IGJvZHkKK0Vuc3VyZSBkb3VibGUgY2xpY2tzIHdvcmsgYXMgZXhw
ZWN0ZWQsIHNlbmRpbmcgNCBjbGlja3MuCitDcmVhdGluZyBhIGNsaWNrIGFuZCBkYmxjbGljay4K
K1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9u
OiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNldXAsIHRhcmdldDogdGFyZ2V0MiwgcmVj
ZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogY2xpY2ssIHRhcmdldDogdGFyZ2V0
MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJn
ZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNl
dXAsIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlw
ZTogY2xpY2ssIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZl
bnQgdHlwZTogZGJsY2xpY2ssIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIK
K0Vuc3VyaW5nIG5vIGZhbHNlIGRibGNsaWNrcyBpZiB3ZSBjb250aW51ZS4KK1BBU1MgZXZlbnQg
dHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQ
QVNTIGV2ZW50IHR5cGU6IG1vdXNldXAsIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRh
cmdldDIKK1BBU1MgZXZlbnQgdHlwZTogY2xpY2ssIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQg
b246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIs
IHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNldXAsIHRhcmdldDog
dGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogY2xpY2ssIHRh
cmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
b2ludGVyLWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnkuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50
ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzYjRlMjg4MTA4
NmFjY2ZiZTJkZDQyOGM5ZGY1YjllN2EyYmYxOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtZGVsaXZlcnkuaHRtbApAQCAtMCwwICsxLDEw
OSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IGlkPSJib2R5Ij4KKzxkaXY+CisgIDxkaXYgaWQ9InRhcmdldDEiPjwvZGl2PgorICA8ZGl2IGlk
PSJ0YXJnZXQyIj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVz
dCBtb3VzZSBldmVudHMgYXJlIHJvdXRlZCB0byBsb2NrIHRhcmdldC4iKQorICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5ldmVudFNl
bmRlciIpOworCisgICAgdGFyZ2V0ZGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJn
ZXQxIik7CisgICAgdGFyZ2V0ZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQy
Iik7CisKKyAgICBmdW5jdGlvbiBldmVudE5vdEV4cGVjdGVkKGUpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgiVW5leHBlY3RlZCBldmVudCAiICsgZS50eXBlICsgIiBvbiAiICsgZS5jdXJyZW50VGFy
Z2V0LmlkKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIGZ1bmN0aW9uIGV2
ZW50RXhwZWN0ZWQoZSkgeworICAgICAgdGVzdFBhc3NlZCgiZXZlbnQgdHlwZTogIiArIGUudHlw
ZSArICIsIHRhcmdldDogIiArIGUudGFyZ2V0LmlkICsgIiwgcmVjZWl2ZWQgb246ICIgKyBlLmN1
cnJlbnRUYXJnZXQuaWQpOworICAgIH0KKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5j
dGlvbiBkb05leHRTdGVwKCkgeworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOworICAgIH0K
KyAgICB0b2RvID0gWworICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0
b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdjEsCisgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDEgc3Vj
Y2VlZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoIldpdGggYSBsb2NrIGluIHBsYWNlIHNlbmQg
YSBjbGljay4iKQorICAgICAgICAgICAgdGFyZ2V0ZGl2MS5vbm1vdXNlZG93biA9IGV2ZW50RXhw
ZWN0ZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gZXZlbnROb3RFeHBl
Y3RlZDsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub25tb3VzZWRvd24gPSBldmVudEV4cGVj
dGVkOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMDApOwor
ICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAg
d2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgIHRhcmdldGRpdjEub25t
b3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3du
ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0
YXJnZXRkaXYyLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZh
aWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IGRlYnVnKCJXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suIikKKyAgICAgICAgICAg
IHRhcmdldGRpdjEub25tb3VzZWRvd24gPSBldmVudE5vdEV4cGVjdGVkOworICAgICAgICAgICAg
dGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICBkb2N1
bWVudC5ib2R5Lm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIHdpbmRv
dy5ldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisgICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBk
b05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJFbnN1cmUgZG91YmxlIGNsaWNrcyB3b3JrIGFzIGV4cGVjdGVkLCBzZW5kaW5n
IDQgY2xpY2tzLiIpCisgICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gZXZlbnRF
eHBlY3RlZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZXVwID0gZXZlbnRFeHBlY3Rl
ZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25jbGljayA9IGV2ZW50RXhwZWN0ZWQ7CisgICAg
ICAgICAgICB0YXJnZXRkaXYyLm9uZGJsY2xpY2sgPSBldmVudEV4cGVjdGVkOworICAgICAgICAg
ICAgZGVidWcoIkNyZWF0aW5nIGEgY2xpY2sgYW5kIGRibGNsaWNrLiIpOworICAgICAgICAgICAg
d2luZG93LmV2ZW50U2VuZGVyLmxlYXBGb3J3YXJkKDEwMDApOworICAgICAgICAgICAgd2luZG93
LmV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVy
Lm1vdXNlVXAoKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsK
KyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICBk
ZWJ1ZygiRW5zdXJpbmcgbm8gZmFsc2UgZGJsY2xpY2tzIGlmIHdlIGNvbnRpbnVlLiIpOworICAg
ICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgd2lu
ZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAg
ICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNldXAgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0YXJn
ZXRkaXYyLm9uY2xpY2sgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9uZGJs
Y2xpY2sgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0s
CisgICAgICAgIGZpbmlzaEpTVGVzdAorICAgIF07CisgICAgZG9OZXh0U3RlcCgpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50
ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2sv
cG9pbnRlci1sb2NrLWFwaS5odG1sCmluZGV4IDMxOGI5OTBmYTI1NzM0NWY4MWYwZmRkYTI4MmEy
MzEyNTU5NzRmMTAuLjhkZDQxYTU3MTYyZTVhYjc1NWRjMDY0ZWIxZjExY2Y0MTQ0MGNhYmQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkuaHRtbApAQCAt
MSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzwhRE9DVFlQRSBIVE1MPgogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE4MzI0MDBlYTExODg5MzUwMzA5ZmI0Mjk4ODNhYmRiNTJkZmFmNDIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2ts
b3N0LWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0IHRoYXQgcG9pbnRl
cmxvY2tsb3N0IGV2ZW50IGlzIGRpc3BhdGNoZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciBpcyBkZWZpbmVkLgorUEFT
UyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0cnVlCitKYXZhU2NyaXB0IGlu
aXRpYXRlZCB1bmxvY2suCitQQVNTIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwg
MAorUEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxsIDEKK1BBU1MgQWxsIGV4
cGVjdGVkIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBldmVudHMgcmVjZWl2ZWQuCitQQVNTIG5hdmln
YXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIGZhbHNlCitQQVNTIG5hdmlnYXRvci53ZWJr
aXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK0hvc3QgaW5pdGlhdGVkIHVubG9jay4KK1BBU1Mg
d2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAwCitQQVNTIHdlYmtpdHBvaW50ZXJs
b2NrbG9zdCBoYW5kbGVyIGNhbGwgMQorUEFTUyBBbGwgZXhwZWN0ZWQgd2Via2l0cG9pbnRlcmxv
Y2tsb3N0IGV2ZW50cyByZWNlaXZlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNM
b2NrZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxv
Y2tsb3N0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2ts
b3N0LWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg3Y2NlMmM1Zjc1M2NmZTk3NTBhNDc3MTUyZTgx
YzFlNjk1MmQ3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9w
b2ludGVybG9ja2xvc3QtZXZlbnQuaHRtbApAQCAtMCwwICsxLDg1IEBACis8IURPQ1RZUEUgSFRN
TD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICA8ZGl2IGlk
PSJ0YXJnZXQiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0
IHRoYXQgcG9pbnRlcmxvY2tsb3N0IGV2ZW50IGlzIGRpc3BhdGNoZWQuIikKKyAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIiKTsKKworICAgIHRhcmdldGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0YXJnZXQiKTsKKworICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdHBv
aW50ZXJsb2NrbG9zdCIsIGxvY2tsb3N0SGFuZGxlcik7CisgICAgdGFyZ2V0ZGl2LmFkZEV2ZW50
TGlzdGVuZXIoIndlYmtpdHBvaW50ZXJsb2NrbG9zdCIsIGxvY2tsb3N0SGFuZGxlcik7CisgICAg
bG9ja2xvc3RoYW5kbGVycyA9IDI7CisKKyAgICBsb2NrbG9zdHJlY2VpcHRzID0gMDsKKyAgICBm
dW5jdGlvbiBsb2NrbG9zdEhhbmRsZXIoKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIndlYmtpdHBv
aW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgIiArIGxvY2tsb3N0cmVjZWlwdHMpOworICAgICAg
ICBsb2NrbG9zdHJlY2VpcHRzKys7CisgICAgICAgIGlmIChsb2NrbG9zdHJlY2VpcHRzID09IGxv
Y2tsb3N0aGFuZGxlcnMpIHsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIkFsbCBleHBlY3RlZCB3
ZWJraXRwb2ludGVybG9ja2xvc3QgZXZlbnRzIHJlY2VpdmVkLiIpOworICAgICAgICAgICAgZG9O
ZXh0U3RlcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgY3VycmVudFN0ZXAgPSAwOworICAg
IGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7Cisg
ICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5h
dmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2LAorICAgICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJr
aXRQb2ludGVyLmlzTG9ja2VkIiwgInRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0
U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRlYnVnKCJKYXZhU2Ny
aXB0IGluaXRpYXRlZCB1bmxvY2suIikKKyAgICAgICAgICAgIGxvY2tsb3N0cmVjZWlwdHMgPSAw
OworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIudW5sb2NrKCk7CisgICAgICAg
IH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIC8vIGxvY2tsb3N0SGFuZGxl
ciB3aWxsIGNhdGNoIHVubG9ja3MgYW5kIGNhbGwgZG9OZXh0U3RlcCB0byBicmluZyB1cyBoZXJl
LgorICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2Vk
IiwgImZhbHNlIik7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxv
Y2sodGFyZ2V0ZGl2LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgInRy
dWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGRlYnVnKCJIb3N0IGluaXRpYXRlZCB1bmxvY2suIikKKyAgICAg
ICAgICAgIGxvY2tsb3N0cmVjZWlwdHMgPSAwOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIC8vIGxvY2tsb3N0SGFuZGxlciB3aWxsIGNhdGNoIHVubG9ja3Mg
YW5kIGNhbGwgZG9OZXh0U3RlcCB0byBicmluZyB1cyBoZXJlLgorICAgICAgICAgICAgc2hvdWxk
QmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgImZhbHNlIik7CisgICAgICAg
ICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAgIGZpbmlzaEpTVGVzdAorICAg
IF07CisgICAgZG9OZXh0U3RlcCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124041</attachid>
            <date>2012-01-25 17:17:29 -0800</date>
            <delta_ts>2012-01-25 22:25:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75762-20120125171728.patch</filename>
            <type>text/plain</type>
            <size>38571</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAxNzI5YWJiNDI2NGI1
NWE5MGQwM2UwZTNhMWE3YjFhZjUyNGIzMy4uMDJmZjEzYzYzOWNkMGY1NDMxODgyOWFhZmE3NmMw
MDYyNWNlMGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlciBj
bGFzcywgd2hpY2ggZXhpc3RzIHBlciBwYWdlLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRQb2lu
dGVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
b2ludGVyTG9ja0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2Nr
Ojp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OmlzTG9ja2VkKToKKyAg
ICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
azo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpy
ZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9s
bGVyOjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXI6OmlzTG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29u
dHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50
ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmguCisKIDIwMTItMDEtMjUgIEFsZXhp
cyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgYm9yZGVy
LWltYWdlIHNob3VsZCBub3QgY3Jhc2ggd2hlbiB0aGUgc291cmNlIGlzIG5vdCBzcGVjaWZpZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGU2YzY2NTk3ZjJjOGNmMDRkZDhhNTIxMmE4
YjEwOWNmMWM2NThlZmUuLjE0Mzg3YWZlOTkyOTU5OTQyNTYwNjJhMDgwNzAzOWIxYjBhNWE3ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjQg
IFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb2ludGVy
IExvY2s6IEltcGxlbWVudCBwb2ludGVyIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NjIKKworICAgICAgICBBZGQgY2FsbHMgdG8g
dGhlIFBvaW50ZXJMb2NrQ29udHJvbGxlciBhZGRlZCBpbiB0aGlzIHBhdGNoIHRvIFdlYkNvcmUu
CisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkQWNxdWly
ZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZE5vdEFjcXVp
cmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRMb3NlUG9p
bnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cG9pbnRlckxvY2tNb3Vz
ZUV2ZW50KToKKwogMjAxMi0wMS0yNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEluZGV4ZWREQjogTmVlZCB0byBkaXN0aW5ndWlzaCBrZXkgcGF0aHMgdGhh
dCBkb24ndCB5aWVsZCB2YWx1ZSB2cy4geWllbGQgaW52YWxpZCBrZXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAxYzg4NDIxOWEzMzc2MTAzMjg5MjRlYjJlZTI2ZWU2ZGFmOTUyZmRhLi41NDBhN2M5YWJh
OTdkZmY1MDZlNDVlOWYxZjlhN2RlYzQ4YmFhZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNjQ2
LDYgKzI2NDYsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaCcsCiAg
ICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9jay5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvUG9p
bnRlckxvY2suaCcsCisgICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3Bw
JywKKyAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oJywKICAgICAgICAg
ICAgICdwYWdlL1ByaW50Q29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU2NyZWVuLmNw
cCcsCiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApp
bmRleCBkYTE4YjI5NTFiYTdkNDkzNTRkNGVhNzI5ODNmZjRiOTZjMTNjOTk4Li42NDY0ZDhjMTAw
ZDFhNzRjNzFkZmFiMDViYTg1MjY4NmIyNGU0YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
QEAgLTE5Nyw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1hY3Jv
KHNob3cpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0cG9pbnRlcmxvY2tsb3N0KSBcCisgICAg
XAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCmluZGV4IDk4MmE3Y2QxNWQ1ZDM4ZDkyMjVkYzFiNmJmMTIxMWZkNzM4MThh
YWYuLjQ4NjYyNWE5OGQyMGUxYzAzZDUxNWViMjI0NDJkMzgxNDJmODEzMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI4LDYgKzMyOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZUNocm9tZUNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2NrKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKSB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudCgpIHsg
fQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYzM1ZTk5NDk2MWM1MGE4
MWFiYjhjMDA4NDNkODJlYzQzNjE2MWRlNC4uYjM5NGNkOGQxYWI5YmVkMjQ4OWE3ZWUyNGRjOTk4
ZjQyMzBiZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMTYxLDggKzE2MSw4
IEBAIEdlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0aW9uKCkgY29uc3QKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogUG9pbnRlckxvY2sqIE5hdmlnYXRvcjo6d2Via2l0UG9pbnRlcigp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvaW50ZXIpCi0gICAgICAgIG1fcG9pbnRlciA9IFBvaW50
ZXJMb2NrOjpjcmVhdGUoKTsKKyAgICBpZiAoIW1fcG9pbnRlciAmJiBtX2ZyYW1lICYmIG1fZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgbV9wb2ludGVyID0gUG9pbnRlckxvY2s6OmNyZWF0ZShtX2Zy
YW1lKTsKICAgICByZXR1cm4gbV9wb2ludGVyLmdldCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwYzZmZjU1YmExMjRjODliZmE4OThjMmUwYTk3NTVhZTFlMzdkNzNhLi41NDQ2
ODIyZTYyYzY5YTg0OGI2ZjBlMjIzM2I2N2FmZjEzNjk3OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1
Z2luVmlldy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUG9pbnRl
ckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xNDYsNiArMTQ3
LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNhdGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9u
Q29udHJvbGxlcjo6Y3JlYXRlKHRoaXMsIHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCkp
CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICwgbV9wb2ludGVyTG9ja0Nv
bnRyb2xsZXIoYWRvcHRQdHIobmV3IFBvaW50ZXJMb2NrQ29udHJvbGxlcih0aGlzKSkpCisjZW5k
aWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChw
YWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBl
ZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4MzcyNjFlNjI5Nzg0ZTFhZThlLi5hYzljNTc4ZjgxOWI0NjQ5
N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNzYsNiArNzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwog
ICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRhOworICAgIGNsYXNzIFBv
aW50ZXJMb2NrQ29udHJvbGxlcjsKICAgICBjbGFzcyBQcm9ncmVzc1RyYWNrZXI7CiAgICAgY2xh
c3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVuZGVyVGhlbWU7CkBAIC0xOTAsNiArMTkxLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3Rp
ZmljYXRpb25Db250cm9sbGVyKiBub3RpZmljYXRpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9ub3RpZmljYXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgICAgICBQb2ludGVyTG9ja0NvbnRyb2xsZXIqIHBvaW50ZXJMb2Nr
Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlckxvY2tDb250cm9sbGVyLmdldCgp
OyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1
dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAtMzg2LDYgKzM5MCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgT3duUHRyPE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90aWZpY2F0aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAgIE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xs
ZXI+IG1fcG9pbnRlckxvY2tDb250cm9sbGVyOworI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAg
ICAgICAgIE93blB0cjxTcGVlY2hJbnB1dD4gbV9zcGVlY2hJbnB1dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9jay5jcHAKaW5kZXggZGZiM2NiNDlhMDljODkwMjgxYjkwNjgyZmI4NWNkODQxYTZl
Y2E5MS4uZTNmZTk3ZGZkZDQwMWI4Mjc1NjZhZmQ2ZjE1MWQxN2MwNjNhMmEzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKQEAgLTI1LDMyICsyNSw0OSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrLmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKwog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRl
ckxvY2s6OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJMb2NrOjpQb2ludGVyTG9jayhGcmFtZSogZnJh
bWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKKyAgICAsIG1fY29udHJvbGxlcigw
KQogeworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udHJvbGxl
ciA9IGZyYW1lLT5wYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpOwogfQogCiBQb2ludGVy
TG9jazo6flBvaW50ZXJMb2NrKCkKIHsKKyAgICBBU1NFUlQoIW1fY29udHJvbGxlcik7Cit9CisK
K3ZvaWQgUG9pbnRlckxvY2s6OmRpc2Nvbm5lY3RGcmFtZSgpCit7CisgICAgRE9NV2luZG93UHJv
cGVydHk6OmRpc2Nvbm5lY3RGcmFtZSgpOworICAgIG1fY29udHJvbGxlciA9IDA7CiB9CiAKIHZv
aWQgUG9pbnRlckxvY2s6OmxvY2soRWxlbWVudCogdGFyZ2V0LCBQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gZmFpbHVyZUNh
bGxiYWNrKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKKyAgICBpZiAobV9jb250cm9sbGVy
KQorICAgICAgICBtX2NvbnRyb2xsZXItPnJlcXVlc3RQb2ludGVyTG9jayh0YXJnZXQsIHN1Y2Nl
c3NDYWxsYmFjaywgZmFpbHVyZUNhbGxiYWNrKTsKIH0KIAogdm9pZCBQb2ludGVyTG9jazo6dW5s
b2NrKCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgaWYgKG1fY29udHJvbGxlcikK
KyAgICAgICAgbV9jb250cm9sbGVyLT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOwogfQogCiBib29s
IFBvaW50ZXJMb2NrOjppc0xvY2tlZCgpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jb250cm9sbGVyICYmIG1fY29udHJvbGxlci0+
aXNMb2NrZWQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9jay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5oCmluZGV4IGJlN2Mz
MTc4ZjU4ZmU3OTljNjExY2YwNjFjY2RlZGU5MzJiYWRiMDMuLjZlNzcwOTFkMzllYjY0NTFkMDU0
MjI2ZjVkZWEwNjA1NDkxZmNhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9p
bnRlckxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKKyNpbmNsdWRlICJET01X
aW5kb3dQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM0LDE5ICsz
NSwyNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OworY2xhc3MgRnJh
bWU7CitjbGFzcyBQb2ludGVyTG9ja0NvbnRyb2xsZXI7CiAKLWNsYXNzIFBvaW50ZXJMb2NrIDog
cHVibGljIFJlZkNvdW50ZWQ8UG9pbnRlckxvY2s+IHsKK2NsYXNzIFBvaW50ZXJMb2NrIDogcHVi
bGljIFJlZkNvdW50ZWQ8UG9pbnRlckxvY2s+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBvaW50ZXJMb2NrPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgUG9pbnRlckxvY2soKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQb2ludGVyTG9jaz4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFBvaW50ZXJMb2NrKGZyYW1lKSk7IH0KIAogICAgIH5Qb2ludGVyTG9jaygpOwogCisgICAgLy8g
RE9NV2luZG93UHJvcGVydHkgSW50ZXJmYWNlCisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RG
cmFtZSgpOworCiAgICAgdm9pZCBsb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1
cmVDYWxsYmFjayk7CiAgICAgdm9pZCB1bmxvY2soKTsKICAgICBib29sIGlzTG9ja2VkKCk7CiAK
IHByaXZhdGU6Ci0gICAgUG9pbnRlckxvY2soKTsKKyAgICBQb2ludGVyTG9jayhGcmFtZSopOwor
CisgICAgUG9pbnRlckxvY2tDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJM
b2NrQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJv
bGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg5Yjk4ZGQyYzgwYmI4NjQ4ODY4YTY3NTg1YTkzOWM2MjI2
Y2FkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tD
b250cm9sbGVyLmNwcApAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgorCisjaW5jbHVk
ZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIK
KworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUG9p
bnRlckxvY2tDb250cm9sbGVyOjpQb2ludGVyTG9ja0NvbnRyb2xsZXIoUGFnZSogcGFnZSkKKyAg
ICA6IG1fcGFnZShwYWdlKQoreworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVx
dWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFj
aykKK3sKKyAgICBpZiAoaXNMb2NrZWQoKSkgeworICAgICAgICBpZiAobV9lbGVtZW50ID09IHRh
cmdldCkgeworICAgICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgICAgICAg
ICBzdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICAgICAgICAgIG1fZWxlbWVudCA9IHRh
cmdldDsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlm
IChtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cmVxdWVzdFBvaW50ZXJMb2NrKCkpIHsKKyAg
ICAgICAgbV9lbGVtZW50ID0gdGFyZ2V0OworICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IHN1
Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSBmYWlsdXJlQ2FsbGJh
Y2s7CisgICAgfSBlbHNlIGlmIChmYWlsdXJlQ2FsbGJhY2spCisgICAgICAgIGZhaWx1cmVDYWxs
YmFjay0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJl
cXVlc3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7Cit9CisKK2Jvb2wgUG9pbnRlckxvY2tDb250
cm9sbGVyOjppc0xvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5pc1BvaW50ZXJMb2NrZWQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6
OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+
IGVsZW1lbnRUb05vdGlmeShtX2VsZW1lbnQpOworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNh
bGxiYWNrVG9Jc3N1ZShtX3N1Y2Nlc3NDYWxsYmFjayk7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2sg
PSAwOworICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gMDsKKworICAgIGlmIChjYWxsYmFja1RvSXNz
dWUgJiYgZWxlbWVudFRvTm90aWZ5ICYmIGVsZW1lbnRUb05vdGlmeS0+ZG9jdW1lbnQoKSAmJiBl
bGVtZW50VG9Ob3RpZnktPmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIGNhbGxiYWNrVG9J
c3N1ZS0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRp
ZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+
IGVsZW1lbnRUb05vdGlmeShtX2VsZW1lbnQpOworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNh
bGxiYWNrVG9Jc3N1ZShtX2ZhaWx1cmVDYWxsYmFjayk7CisgICAgbV9lbGVtZW50ID0gMDsKKyAg
ICBtX3N1Y2Nlc3NDYWxsYmFjayA9IDA7CisgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSAwOworCisg
ICAgaWYgKGNhbGxiYWNrVG9Jc3N1ZSAmJiBlbGVtZW50VG9Ob3RpZnkgJiYgZWxlbWVudFRvTm90
aWZ5LT5kb2N1bWVudCgpICYmIGVsZW1lbnRUb05vdGlmeS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkK
KyAgICAgICAgY2FsbGJhY2tUb0lzc3VlLT5oYW5kbGVFdmVudCgpOworfQorCit2b2lkIFBvaW50
ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6RWxlbWVudD4gZWxlbWVudFRvTm90aWZ5KG1fZWxlbWVudCk7CisgICAgbV9lbGVtZW50
ID0gMDsKKyAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IDA7CisgICAgbV9mYWlsdXJlQ2FsbGJhY2sg
PSAwOworICAgIGlmIChlbGVtZW50VG9Ob3RpZnkgJiYgZWxlbWVudFRvTm90aWZ5LT5kb2N1bWVu
dCgpICYmIGVsZW1lbnRUb05vdGlmeS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgZWxl
bWVudFRvTm90aWZ5LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdHBvaW50ZXJsb2NrbG9zdEV2ZW50LCB0cnVlLCBmYWxzZSkpOworfQorCit2b2lkIFBvaW50
ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQoreworICAg
IGlmIChtX2VsZW1lbnQgJiYgbV9lbGVtZW50LT5kb2N1bWVudCgpICYmIG1fZWxlbWVudC0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKSkgeworICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoTW91c2VFdmVu
dChldmVudCwgZXZlbnRUeXBlLCBldmVudC5jbGlja0NvdW50KCkpOworCisgICAgICAgIC8vIENy
ZWF0ZSBjbGljayBldmVudHMKKyAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCku
bW91c2V1cEV2ZW50KQorICAgICAgICAgICAgbV9lbGVtZW50LT5kaXNwYXRjaE1vdXNlRXZlbnQo
ZXZlbnQsIGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBldmVudC5jbGlja0NvdW50KCkpOworICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5U
RVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVlMmEwNTU4Y2NmMGIyNzliYTE5NGM5OGFlYmYzZjkwYTg2YzM5OWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5o
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUG9pbnRlckxvY2tDb250
cm9sbGVyX2gKKyNkZWZpbmUgUG9pbnRlckxvY2tDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFBhZ2U7CitjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7CisKK2NsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUG9pbnRlckxvY2tDb250cm9sbGVyKTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQb2ludGVyTG9ja0NvbnRyb2xsZXIoUGFnZSopOwor
CisgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soV2ViQ29yZTo6RWxlbWVudCogdGFyZ2V0LCBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4gZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2Nr
KCk7CisgICAgYm9vbCBpc0xvY2tlZCgpOworCisgICAgdm9pZCBkaWRBY3F1aXJlUG9pbnRlckxv
Y2soKTsKKyAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlk
TG9zZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwor
Citwcml2YXRlOgorICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVu
dD4gbV9lbGVtZW50OworICAgIFJlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IG1fc3VjY2Vz
c0NhbGxiYWNrOworICAgIFJlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IG1fZmFpbHVyZUNh
bGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFBPSU5URVJfTE9DSykKKworI2VuZGlmIC8vIFBvaW50ZXJMb2NrQ29udHJvbGxlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTIxNzNjM2ZkYWRl
MTI2MDdhN2UzNTEwMzQ0NWRkZjI4MzkzNjdiNS4uODY1ZDBhNGJjN2E3MTI3NzMyZGI2NGZlNzY2
YmQwNTQ5ZjI3N2RlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtOTAsNiArOTAsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdo
ZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9jay5oIgorI2luY2x1ZGUgIlBvaW50ZXJM
b2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBvcHVwQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAi
UG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCkBAIC0xNzUx
LDE3ICsxNzUzLDI2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSgpIGNvbnN0CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZEFjcXVpcmVQb2ludGVyTG9j
aygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2NrQ29udHJvbGxl
ciBsYW5kcy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlKCkpCisgICAg
ICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZEFjcXVpcmVQb2ludGVyTG9j
aygpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2NrQ29udHJv
bGxlciBsYW5kcy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlKCkpCisg
ICAgICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZE5vdEFjcXVpcmVQb2lu
dGVyTG9jaygpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZExvc2VQb2ludGVy
TG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2NrQ29udHJv
bGxlciBsYW5kcy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlKCkpCisg
ICAgICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZExvc2VQb2ludGVyTG9j
aygpOworI2VuZGlmCiB9CiAKIC8vIFdlYlZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMTcsNiArMzIy
OCwyNyBAQCBib29sIFdlYlZpZXdJbXBsOjppc1BvaW50ZXJMb2NrZWQoKQogCiB2b2lkIFdlYlZp
ZXdJbXBsOjpwb2ludGVyTG9ja01vdXNlRXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQp
CiB7CisgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZTsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUp
IHsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93bjoKKyAgICAgICAgZXZlbnRUeXBl
ID0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMo
KS5tb3VzZXVwRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
TW91c2VNb3ZlOgorICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZl
bnQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKworICAgIGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQgPSBz
dGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpOworCisgICAgaWYgKHBhZ2Uo
KSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hMb2Nr
ZWRNb3VzZUV2ZW50KAorICAgICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBtb3VzZUV2ZW50KSwKKyAgICAgICAgICAgIGV2ZW50
VHlwZSk7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2NrQ29udHJvbGxl
ciBsYW5kcy4KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJmNTgwYmM1YjI1N2RlYTBlMGM4YjMzYWJhMWFh
ZWZmYzRkNWNhYWUuLmU0NjFkZTlhN2FiYzIxNDE2YjNhNGJlMTNjYmUxNzJjYjVjY2U2YTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMS0yNCAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFBvaW50ZXIgTG9jazogSW1wbGVtZW50IHBvaW50ZXIg
aW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NTc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVzcG9uc2VzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxp
dmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0
LWV2ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0yNSAgQWxleGlzIE1lbmFy
ZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBib3JkZXItaW1hZ2Ug
c2hvdWxkIG5vdCBjcmFzaCB3aGVuIHRoZSBzb3VyY2UgaXMgbm90IHNwZWNpZmllZC4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjEzYWNhOGFiYjQ5MzdmZmM3NDQ4ODY4NzVhMjZiYmUy
OTQwODg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2st
YWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3QgY2FsbGlu
ZyBsb2NrIHdoZW4gYWxyZWFkeSBpbiBhIGxvY2tlZCBzdGF0ZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMg
ZmFsc2UKK1BBU1MgTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtp
dFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorUEFTUyBMb2NrIHRhcmdldDEgc3VjY2VlZGVkIGFn
YWluLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0cnVlCitQQVNT
IGV4cGVjdFRhcmdldDFVbmxvY2sgaXMgdHJ1ZQorUEFTUyBMb2NrIHRhcmdldDIgc3VjY2VlZGVk
LgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQuaHRtbCBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmEyOGU4OGVkZjE1ZTc1OGJjM2ZlZmQyMmM0YWMwZjk0M2I4MGUzOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0bWwKQEAg
LTAsMCArMSw3NiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+CisgIDxkaXYgaWQ9
InRhcmdldDIiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0
IGNhbGxpbmcgbG9jayB3aGVuIGFscmVhZHkgaW4gYSBsb2NrZWQgc3RhdGUuIikKKyAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB0YXJnZXRkaXYxID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldDEiKTsKKyAgICB0YXJnZXRkaXYyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRhcmdldDIiKTsKKworICAgIHZhciBleHBlY3RUYXJnZXQxVW5sb2NrID0gZmFs
c2U7CisgICAgdGFyZ2V0ZGl2MS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xv
c3QiLAorICAgICAgICBmdW5jdGlvbiAoKSB7IHNob3VsZEJlKCJleHBlY3RUYXJnZXQxVW5sb2Nr
IiwgInRydWUiKTsgfSk7CisKKyAgICB0YXJnZXRkaXYyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtp
dHBvaW50ZXJsb2NrbG9zdCIsCisgICAgICAgIGZ1bmN0aW9uICgpIHsgdGVzdEZhaWxlZCgiVW5l
eHBlY3RlZCB0YXJnZXRkaXYyIHBvaW50ZXJsb2NrbG9zdC4iKTsgfSk7CisKKyAgICBjdXJyZW50
U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVu
dFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwg
ImZhbHNlIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdl
dGRpdjEsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDEgc3VjY2VlZGVkLiIpOworICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYxLAor
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZCBhZ2Fpbi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgInRydWUiKTsK
KyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgZXhwZWN0VGFyZ2V0MVVubG9jayA9IHRydWU7CisgICAgICAgICAgICBu
YXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdjIsCisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdl
dDIgc3VjY2VlZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBk
b05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOwor
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAgIGRvTmV4dFN0
ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWJlOWEyZGE4ZDY1MWQxOGY3OTBlNGRmNGM5YmYxZDBmZTI3NDg1YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVzcG9u
c2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0IGFzeW5jaHJvbm91cyByZXN1
bHRzIG9mIGNhbGxpbmcgbG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIGlzIGRlZmluZWQuCitQQVNTIExvY2sgZmFp
bGVkIChhZnRlciB3ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tX
aWxsRmFpbFN5bmNocm9ub3VzbHkpCitQQVNTIExvY2sgZmFpbGVkIChhZnRlciB3ZSBjYWxsZWQg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5
KQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVzcG9uc2VzLmh0
bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU1NjdkNjVkYmU0NjhhM2NiOWEwMzFhMGJmM2M4NTFjZjI4NWJjOTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNl
cy5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgYXN5
bmNocm9ub3VzIHJlc3VsdHMgb2YgY2FsbGluZyBsb2NrLiIpCisgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyIik7CisKKyAgICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0U3Rl
cCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9kbyA9IFsK
KyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAgICAgIG5hdmln
YXRvci53ZWJraXRQb2ludGVyLmxvY2soZG9jdW1lbnQuYm9keSwKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgc3VjY2Vl
ZGVkIHVuZXhwZWN0ZWRseS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgZmFpbGVkIChhZnRlciB3ZSBjYWxsZWQg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkp
Iik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5KCk7Cisg
ICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKGRvY3VtZW50LmJvZHksCisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJMb2NrIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkuIik7CisgICAgICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIGZhaWxlZCAo
YWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZh
aWxBc3luY2hyb25vdXNseSkiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAg
ICBdOworICAgIGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtYXBpLmh0
bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtYXBpLmh0bWwKaW5kZXgg
ZWZiNDEyMWQ1MmI3MDhmOWU3MDQzOGJjNTRjY2ZlNjRjNDZiOTAyZC4uMmZlZWYzYWQzNDIzZjAy
ZjM0NGRkNmExNDNiNDFmYmRjZmNjNzc5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcG9pbnRl
ci1sb2NrL21vdXNlLWV2ZW50LWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9j
ay9tb3VzZS1ldmVudC1hcGkuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzwhRE9DVFlQRSBIVE1MPgogPGh0bWw+CiA8
aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZl
bnQtZGVsaXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNl
LWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzk3YzI3ZTVmOTkxMDAx
ODNiYjM4ZmU0MGUyNTQyZDEyZDZjYmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDM0IEBACitUZXN0IG1vdXNlIGV2ZW50cyBhcmUgcm91dGVkIHRvIGxvY2sgdGFyZ2V0LgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuZXZlbnRTZW5kZXIgaXMg
ZGVmaW5lZC4KK1BBU1MgTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4KK1dpdGggYSBsb2NrIGluIHBs
YWNlIHNlbmQgYSBjbGljay4KK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRh
cmdldDEsIHJlY2VpdmVkIG9uOiB0YXJnZXQxCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwg
dGFyZ2V0OiB0YXJnZXQxLCByZWNlaXZlZCBvbjogYm9keQorUEFTUyBMb2NrIHRhcmdldDIgc3Vj
Y2VlZGVkLgorV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLgorUEFTUyBldmVudCB0
eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BB
U1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiBi
b2R5CitFbnN1cmUgZG91YmxlIGNsaWNrcyB3b3JrIGFzIGV4cGVjdGVkLCBzZW5kaW5nIDQgY2xp
Y2tzLgorQ3JlYXRpbmcgYSBjbGljayBhbmQgZGJsY2xpY2suCitQQVNTIGV2ZW50IHR5cGU6IG1v
dXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVu
dCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQ
QVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJn
ZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZl
ZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIs
IHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRh
cmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGRibGNsaWNrLCB0
YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitFbnN1cmluZyBubyBmYWxzZSBk
YmxjbGlja3MgaWYgd2UgY29udGludWUuCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFy
Z2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3Vz
ZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5
cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2
ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0
MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9u
OiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2Vp
dmVkIG9uOiB0YXJnZXQyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNlLWV2
ZW50LWRlbGl2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQt
ZGVsaXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2I0ZTI4ODEwODZhY2NmYmUyZGQ0MjhjOWRmNWI5
ZTdhMmJmMTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21v
dXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBIVE1M
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+Cis8ZGl2Pgor
ICA8ZGl2IGlkPSJ0YXJnZXQxIj48L2Rpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MiI+PC9kaXY+Cis8
L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgbW91c2UgZXZlbnRzIGFyZSBy
b3V0ZWQgdG8gbG9jayB0YXJnZXQuIikKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cuZXZlbnRTZW5kZXIiKTsKKworICAgIHRhcmdl
dGRpdjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MSIpOworICAgIHRhcmdldGRp
djIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MiIpOworCisgICAgZnVuY3Rpb24g
ZXZlbnROb3RFeHBlY3RlZChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgZXZl
bnQgIiArIGUudHlwZSArICIgb24gIiArIGUuY3VycmVudFRhcmdldC5pZCk7CisgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgIH0KKyAgICBmdW5jdGlvbiBldmVudEV4cGVjdGVkKGUpIHsKKyAg
ICAgIHRlc3RQYXNzZWQoImV2ZW50IHR5cGU6ICIgKyBlLnR5cGUgKyAiLCB0YXJnZXQ6ICIgKyBl
LnRhcmdldC5pZCArICIsIHJlY2VpdmVkIG9uOiAiICsgZS5jdXJyZW50VGFyZ2V0LmlkKTsKKyAg
ICB9CisKKyAgICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsK
KyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9kbyA9IFsKKyAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9j
ayh0YXJnZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2Nr
IGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suIikKKyAgICAgICAg
ICAgIHRhcmdldGRpdjEub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAg
dGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IGV2ZW50Tm90RXhwZWN0ZWQ7CisgICAgICAgICAgICBk
b2N1bWVudC5ib2R5Lm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIHdp
bmRvdy5ldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAgIHdpbmRvdy5l
dmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gdW5kZWZpbmVk
OworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAg
ICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2MiwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxv
Y2sgdGFyZ2V0MiBzdWNjZWVkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAo
KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9
LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiV2l0aCBhIGxvY2sg
aW4gcGxhY2Ugc2VuZCBhIGNsaWNrLiIpCisgICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vk
b3duID0gZXZlbnROb3RFeHBlY3RlZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRv
d24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93
biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubGVhcEZv
cndhcmQoMTAwMCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAg
dGFyZ2V0ZGl2MS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRp
djIub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9u
bW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAg
ICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiRW5zdXJlIGRv
dWJsZSBjbGlja3Mgd29yayBhcyBleHBlY3RlZCwgc2VuZGluZyA0IGNsaWNrcy4iKQorICAgICAg
ICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAg
ICB0YXJnZXRkaXYyLm9ubW91c2V1cCA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICB0YXJn
ZXRkaXYyLm9uY2xpY2sgPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5v
bmRibGNsaWNrID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIGRlYnVnKCJDcmVhdGluZyBh
IGNsaWNrIGFuZCBkYmxjbGljay4iKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5s
ZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAg
ICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cu
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgZGVidWcoIkVuc3VyaW5nIG5vIGZh
bHNlIGRibGNsaWNrcyBpZiB3ZSBjb250aW51ZS4iKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAg
ICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgdGFyZ2V0
ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25t
b3VzZXVwID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmNsaWNrID0gdW5k
ZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmRibGNsaWNrID0gdW5kZWZpbmVkOwor
ICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rl
c3QKKyAgICBdOworICAgIGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2Nr
LWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkuaHRt
bAppbmRleCAzMThiOTkwZmEyNTczNDVmODFmMGZkZGEyODJhMjMxMjU1OTc0ZjEwLi44ZGQ0MWE1
NzE2MmU1YWI3NTVkYzA2NGViMWYxMWNmNDE0NDBjYWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL3Bv
aW50ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZUEUgSFRNTD4K
IDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2Nr
L3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVy
LWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODMy
NDAwZWExMTg4OTM1MDMwOWZiNDI5ODgzYWJkYjUyZGZhZjQyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdCB0aGF0IHBvaW50ZXJsb2NrbG9zdCBldmVudCBpcyBk
aXNwYXRjaGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIgaXMgZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBv
aW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorSmF2YVNjcmlwdCBpbml0aWF0ZWQgdW5sb2NrLgorUEFT
UyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxsIDAKK1BBU1Mgd2Via2l0cG9pbnRl
cmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAxCitQQVNTIEFsbCBleHBlY3RlZCB3ZWJraXRwb2ludGVy
bG9ja2xvc3QgZXZlbnRzIHJlY2VpdmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5p
c0xvY2tlZCBpcyBmYWxzZQorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBp
cyB0cnVlCitIb3N0IGluaXRpYXRlZCB1bmxvY2suCitQQVNTIHdlYmtpdHBvaW50ZXJsb2NrbG9z
dCBoYW5kbGVyIGNhbGwgMAorUEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxs
IDEKK1BBU1MgQWxsIGV4cGVjdGVkIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBldmVudHMgcmVjZWl2
ZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIGZhbHNlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5odG1sIGIv
TGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4N2NjZTJjNWY3NTNjZmU5NzUwYTQ3NzE1MmU4MWMxZTY5NTJkN2IKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50
Lmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzwv
ZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBvaW50ZXJsb2NrbG9z
dCBldmVudCBpcyBkaXNwYXRjaGVkLiIpCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIik7CisK
KyAgICB0YXJnZXRkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAg
ICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QiLCBsb2Nr
bG9zdEhhbmRsZXIpOworICAgIHRhcmdldGRpdi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2lu
dGVybG9ja2xvc3QiLCBsb2NrbG9zdEhhbmRsZXIpOworICAgIGxvY2tsb3N0aGFuZGxlcnMgPSAy
OworCisgICAgbG9ja2xvc3RyZWNlaXB0cyA9IDA7CisgICAgZnVuY3Rpb24gbG9ja2xvc3RIYW5k
bGVyKCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxl
ciBjYWxsICIgKyBsb2NrbG9zdHJlY2VpcHRzKTsKKyAgICAgICAgbG9ja2xvc3RyZWNlaXB0cysr
OworICAgICAgICBpZiAobG9ja2xvc3RyZWNlaXB0cyA9PSBsb2NrbG9zdGhhbmRsZXJzKSB7Cisg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgZXhwZWN0ZWQgd2Via2l0cG9pbnRlcmxvY2tsb3N0
IGV2ZW50cyByZWNlaXZlZC4iKTsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5jdGlvbiBkb05leHRTdGVw
KCkgeworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOworICAgIH0KKyAgICB0b2RvID0gWwor
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRl
ci5sb2NrKHRhcmdldGRpdiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIs
ICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiSmF2YVNjcmlwdCBpbml0aWF0ZWQgdW5sb2Nr
LiIpCisgICAgICAgICAgICBsb2NrbG9zdHJlY2VpcHRzID0gMDsKKyAgICAgICAgICAgIG5hdmln
YXRvci53ZWJraXRQb2ludGVyLnVubG9jaygpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAvLyBsb2NrbG9zdEhhbmRsZXIgd2lsbCBjYXRjaCB1bmxvY2tz
IGFuZCBjYWxsIGRvTmV4dFN0ZXAgdG8gYnJpbmcgdXMgaGVyZS4KKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIpOworICAgICAg
ICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdiwKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJu
YXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJ0cnVlIik7CisgICAgICAgICAgICAg
ICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWls
ZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBk
ZWJ1ZygiSG9zdCBpbml0aWF0ZWQgdW5sb2NrLiIpCisgICAgICAgICAgICBsb2NrbG9zdHJlY2Vp
cHRzID0gMDsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpZExvc2VQb2ludGVy
TG9jaygpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAv
LyBsb2NrbG9zdEhhbmRsZXIgd2lsbCBjYXRjaCB1bmxvY2tzIGFuZCBjYWxsIGRvTmV4dFN0ZXAg
dG8gYnJpbmcgdXMgaGVyZS4KKyAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0
UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOwor
ICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAgIGRvTmV4dFN0ZXAo
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124064</attachid>
            <date>2012-01-25 22:23:54 -0800</date>
            <delta_ts>2012-01-26 16:21:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75762-20120125222353.patch</filename>
            <type>text/plain</type>
            <size>38466</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAxNzI5YWJiNDI2NGI1
NWE5MGQwM2UwZTNhMWE3YjFhZjUyNGIzMy4uMDJmZjEzYzYzOWNkMGY1NDMxODgyOWFhZmE3NmMw
MDYyNWNlMGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlciBj
bGFzcywgd2hpY2ggZXhpc3RzIHBlciBwYWdlLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRQb2lu
dGVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
b2ludGVyTG9ja0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrOjpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2Nr
Ojp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OmlzTG9ja2VkKToKKyAg
ICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
azo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpy
ZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9s
bGVyOjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9j
a0NvbnRyb2xsZXI6OmlzTG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29u
dHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50
ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2
ZW50KToKKyAgICAgICAgKiBwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmguCisKIDIwMTItMDEtMjUgIEFsZXhp
cyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgYm9yZGVy
LWltYWdlIHNob3VsZCBub3QgY3Jhc2ggd2hlbiB0aGUgc291cmNlIGlzIG5vdCBzcGVjaWZpZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGU2YzY2NTk3ZjJjOGNmMDRkZDhhNTIxMmE4
YjEwOWNmMWM2NThlZmUuLjE0Mzg3YWZlOTkyOTU5OTQyNTYwNjJhMDgwNzAzOWIxYjBhNWE3ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjQg
IFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KKworICAgICAgICBQb2ludGVy
IExvY2s6IEltcGxlbWVudCBwb2ludGVyIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NjIKKworICAgICAgICBBZGQgY2FsbHMgdG8g
dGhlIFBvaW50ZXJMb2NrQ29udHJvbGxlciBhZGRlZCBpbiB0aGlzIHBhdGNoIHRvIFdlYkNvcmUu
CisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkQWNxdWly
ZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZE5vdEFjcXVp
cmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRMb3NlUG9p
bnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cG9pbnRlckxvY2tNb3Vz
ZUV2ZW50KToKKwogMjAxMi0wMS0yNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEluZGV4ZWREQjogTmVlZCB0byBkaXN0aW5ndWlzaCBrZXkgcGF0aHMgdGhh
dCBkb24ndCB5aWVsZCB2YWx1ZSB2cy4geWllbGQgaW52YWxpZCBrZXkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAxYzg4NDIxOWEzMzc2MTAzMjg5MjRlYjJlZTI2ZWU2ZGFmOTUyZmRhLi41NDBhN2M5YWJh
OTdkZmY1MDZlNDVlOWYxZjlhN2RlYzQ4YmFhZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNjQ2
LDYgKzI2NDYsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaCcsCiAg
ICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9jay5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvUG9p
bnRlckxvY2suaCcsCisgICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3Bw
JywKKyAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oJywKICAgICAgICAg
ICAgICdwYWdlL1ByaW50Q29udGV4dC5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU2NyZWVuLmNw
cCcsCiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApp
bmRleCBkYTE4YjI5NTFiYTdkNDkzNTRkNGVhNzI5ODNmZjRiOTZjMTNjOTk4Li42NDY0ZDhjMTAw
ZDFhNzRjNzFkZmFiMDViYTg1MjY4NmIyNGU0YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
QEAgLTE5Nyw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1hY3Jv
KHNob3cpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0cG9pbnRlcmxvY2tsb3N0KSBcCisgICAg
XAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCmluZGV4IDk4MmE3Y2QxNWQ1ZDM4ZDkyMjVkYzFiNmJmMTIxMWZkNzM4MThh
YWYuLjQ4NjYyNWE5OGQyMGUxYzAzZDUxNWViMjI0NDJkMzgxNDJmODEzMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI4LDYgKzMyOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZUNocm9tZUNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJMb2NrKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKSB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgfkNocm9tZUNsaWVudCgpIHsg
fQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYzM1ZTk5NDk2MWM1MGE4
MWFiYjhjMDA4NDNkODJlYzQzNjE2MWRlNC4uYjM5NGNkOGQxYWI5YmVkMjQ4OWE3ZWUyNGRjOTk4
ZjQyMzBiZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMTYxLDggKzE2MSw4
IEBAIEdlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0aW9uKCkgY29uc3QKICNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQogUG9pbnRlckxvY2sqIE5hdmlnYXRvcjo6d2Via2l0UG9pbnRlcigp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvaW50ZXIpCi0gICAgICAgIG1fcG9pbnRlciA9IFBvaW50
ZXJMb2NrOjpjcmVhdGUoKTsKKyAgICBpZiAoIW1fcG9pbnRlciAmJiBtX2ZyYW1lICYmIG1fZnJh
bWUtPnBhZ2UoKSkKKyAgICAgICAgbV9wb2ludGVyID0gUG9pbnRlckxvY2s6OmNyZWF0ZShtX2Zy
YW1lKTsKICAgICByZXR1cm4gbV9wb2ludGVyLmdldCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCAwYzZmZjU1YmExMjRjODliZmE4OThjMmUwYTk3NTVhZTFlMzdkNzNhLi41NDQ2
ODIyZTYyYzY5YTg0OGI2ZjBlMjIzM2I2N2FmZjEzNjk3OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1
Z2luVmlldy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCisjaW5jbHVkZSAiUG9pbnRl
ckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC0xNDYsNiArMTQ3
LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNhdGlvbkNvbnRyb2xsZXIoTm90aWZpY2F0aW9u
Q29udHJvbGxlcjo6Y3JlYXRlKHRoaXMsIHBhZ2VDbGllbnRzLm5vdGlmaWNhdGlvbkNsaWVudCkp
CiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICwgbV9wb2ludGVyTG9ja0Nv
bnRyb2xsZXIoYWRvcHRQdHIobmV3IFBvaW50ZXJMb2NrQ29udHJvbGxlcih0aGlzKSkpCisjZW5k
aWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChw
YWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBl
ZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4MzcyNjFlNjI5Nzg0ZTFhZThlLi5hYzljNTc4ZjgxOWI0NjQ5
N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNzYsNiArNzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uUHJlc2VudGVyOwog
ICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRhOworICAgIGNsYXNzIFBv
aW50ZXJMb2NrQ29udHJvbGxlcjsKICAgICBjbGFzcyBQcm9ncmVzc1RyYWNrZXI7CiAgICAgY2xh
c3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVuZGVyVGhlbWU7CkBAIC0xOTAsNiArMTkxLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgICAgICBOb3Rp
ZmljYXRpb25Db250cm9sbGVyKiBub3RpZmljYXRpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9ub3RpZmljYXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQorICAgICAgICBQb2ludGVyTG9ja0NvbnRyb2xsZXIqIHBvaW50ZXJMb2Nr
Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlckxvY2tDb250cm9sbGVyLmdldCgp
OyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICAgICBTcGVlY2hJbnB1
dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAtMzg2LDYgKzM5MCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAgICAgT3duUHRyPE5vdGlm
aWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90aWZpY2F0aW9uQ29udHJvbGxlcjsKICNlbmRpZgorI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAgIE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xs
ZXI+IG1fcG9pbnRlckxvY2tDb250cm9sbGVyOworI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fc3BlZWNoSW5wdXRDbGllbnQ7CiAg
ICAgICAgIE93blB0cjxTcGVlY2hJbnB1dD4gbV9zcGVlY2hJbnB1dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9jay5jcHAKaW5kZXggZGZiM2NiNDlhMDljODkwMjgxYjkwNjgyZmI4NWNkODQxYTZl
Y2E5MS4uNzIzMTFlMGYyYzZiOTQ0YzEwM2NkMDUxNjZkY2EwYWNlNDRmNmMwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKQEAgLTI1LDMyICsyNSw0OCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrLmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKwog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUG9pbnRl
ckxvY2s6OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJMb2NrOjpQb2ludGVyTG9jayhGcmFtZSogZnJh
bWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKKyAgICAsIG1fY29udHJvbGxlcigw
KQogeworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBtX2NvbnRyb2xsZXIgPSBmcmFtZS0+cGFn
ZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKTsKIH0KIAogUG9pbnRlckxvY2s6On5Qb2ludGVy
TG9jaygpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRyb2xsZXIpOworfQorCit2b2lkIFBvaW50ZXJM
b2NrOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIERPTVdpbmRvd1Byb3BlcnR5OjpkaXNjb25u
ZWN0RnJhbWUoKTsKKyAgICBtX2NvbnRyb2xsZXIgPSAwOwogfQogCiB2b2lkIFBvaW50ZXJMb2Nr
Ojpsb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjaykKIHsKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgaWYgKG1fY29udHJvbGxlcikKKyAgICAgICAgbV9j
b250cm9sbGVyLT5yZXF1ZXN0UG9pbnRlckxvY2sodGFyZ2V0LCBzdWNjZXNzQ2FsbGJhY2ssIGZh
aWx1cmVDYWxsYmFjayk7CiB9CiAKIHZvaWQgUG9pbnRlckxvY2s6OnVubG9jaygpCiB7Ci0gICAg
Ly8gRklYTUU6IEltcGxlbWVudAorICAgIGlmIChtX2NvbnRyb2xsZXIpCisgICAgICAgIG1fY29u
dHJvbGxlci0+cmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKIH0KIAogYm9vbCBQb2ludGVyTG9jazo6
aXNMb2NrZWQoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIG1fY29udHJvbGxlciAmJiBtX2NvbnRyb2xsZXItPmlzTG9ja2VkKCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaAppbmRleCBiZTdjMzE3OGY1OGZlNzk5YzYx
MWNmMDYxY2NkZWRlOTMyYmFkYjAzLi4yNDBkNzlhYzhkMWNiN2FkMTY5NTM5MWJiYTg5MWY4ODJi
MDM4ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHku
aCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNCwxOSArMzUsMjYgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEZyYW1lOworY2xhc3MgUG9p
bnRlckxvY2tDb250cm9sbGVyOwogCi1jbGFzcyBQb2ludGVyTG9jayA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBvaW50ZXJMb2NrPiB7CitjbGFzcyBQb2ludGVyTG9jayA6IHB1YmxpYyBSZWZDb3VudGVk
PFBvaW50ZXJMb2NrPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQb2ludGVyTG9jaz4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IFBvaW50ZXJMb2NrKCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9pbnRlckxvY2s+
IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQb2ludGVyTG9jayhm
cmFtZSkpOyB9CiAKICAgICB+UG9pbnRlckxvY2soKTsKIAorICAgIC8vIERPTVdpbmRvd1Byb3Bl
cnR5IEludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJhbWUoKSBPVkVSUklE
RTsKKwogICAgIHZvaWQgbG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBmYWlsdXJlQ2Fs
bGJhY2spOwogICAgIHZvaWQgdW5sb2NrKCk7CiAgICAgYm9vbCBpc0xvY2tlZCgpOwogCiBwcml2
YXRlOgotICAgIFBvaW50ZXJMb2NrKCk7CisgICAgZXhwbGljaXQgUG9pbnRlckxvY2soRnJhbWUq
KTsKKworICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0Nv
bnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjZGRhZjM1M2MzZWI0YzYyYzAyMTJiMWRiYWY0MjZh
MjQ1YzA2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJM
b2NrQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKKworI2lu
Y2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50
LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1BvaW50ZXJMb2NrQ29udHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9sbGVyKFBhZ2UqIHBhZ2Up
CisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6
OnJlcXVlc3RQb2ludGVyTG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBmYWlsdXJlQ2Fs
bGJhY2spCit7CisgICAgaWYgKGlzTG9ja2VkKCkpIHsKKyAgICAgICAgaWYgKG1fZWxlbWVudCA9
PSB0YXJnZXQpIHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAg
ICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgICAgICAgICBtX2VsZW1lbnQg
PSB0YXJnZXQ7CisgICAgICAgICAgICBpZiAoc3VjY2Vzc0NhbGxiYWNrKQorICAgICAgICAgICAg
ICAgIHN1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSBpZiAobV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnJlcXVlc3RQb2ludGVyTG9jaygpKSB7
CisgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sg
PSBzdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gZmFpbHVyZUNh
bGxiYWNrOworICAgIH0gZWxzZSBpZiAoZmFpbHVyZUNhbGxiYWNrKQorICAgICAgICBmYWlsdXJl
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVy
OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5yZXF1ZXN0UG9pbnRlclVubG9jaygpOworfQorCitib29sIFBvaW50ZXJMb2Nr
Q29udHJvbGxlcjo6aXNMb2NrZWQoKQoreworICAgIHJldHVybiBtX3BhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+aXNQb2ludGVyTG9ja2VkKCk7Cit9CisKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9s
bGVyOjpkaWRBY3F1aXJlUG9pbnRlckxvY2soKQoreworICAgIFJlZlB0cjxXZWJDb3JlOjpFbGVt
ZW50PiBlbGVtZW50VG9Ob3RpZnkobV9lbGVtZW50KTsKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNr
PiBjYWxsYmFja1RvSXNzdWUobV9zdWNjZXNzQ2FsbGJhY2spOworICAgIG1fc3VjY2Vzc0NhbGxi
YWNrID0gMDsKKyAgICBtX2ZhaWx1cmVDYWxsYmFjayA9IDA7CisKKyAgICBpZiAoY2FsbGJhY2tU
b0lzc3VlICYmIGVsZW1lbnRUb05vdGlmeSAmJiBlbGVtZW50VG9Ob3RpZnktPmRvY3VtZW50KCkt
PmZyYW1lKCkpCisgICAgICAgIGNhbGxiYWNrVG9Jc3N1ZS0+aGFuZGxlRXZlbnQoKTsKK30KKwor
dm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCit7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGVsZW1lbnRUb05vdGlmeShtX2VsZW1lbnQp
OworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrVG9Jc3N1ZShtX2ZhaWx1cmVDYWxs
YmFjayk7CisgICAgbV9lbGVtZW50ID0gMDsKKyAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IDA7Cisg
ICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSAwOworCisgICAgaWYgKGNhbGxiYWNrVG9Jc3N1ZSAmJiBl
bGVtZW50VG9Ob3RpZnkgJiYgZWxlbWVudFRvTm90aWZ5LT5kb2N1bWVudCgpLT5mcmFtZSgpKQor
ICAgICAgICBjYWxsYmFja1RvSXNzdWUtPmhhbmRsZUV2ZW50KCk7Cit9CisKK3ZvaWQgUG9pbnRl
ckxvY2tDb250cm9sbGVyOjpkaWRMb3NlUG9pbnRlckxvY2soKQoreworICAgIFJlZlB0cjxXZWJD
b3JlOjpFbGVtZW50PiBlbGVtZW50VG9Ob3RpZnkobV9lbGVtZW50KTsKKyAgICBtX2VsZW1lbnQg
PSAwOworICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gMDsKKyAgICBtX2ZhaWx1cmVDYWxsYmFjayA9
IDA7CisgICAgaWYgKGVsZW1lbnRUb05vdGlmeSAmJiBlbGVtZW50VG9Ob3RpZnktPmRvY3VtZW50
KCktPmZyYW1lKCkpCisgICAgICAgIGVsZW1lbnRUb05vdGlmeS0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRwb2ludGVybG9ja2xvc3RFdmVudCwgdHJ1ZSwg
ZmFsc2UpKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpc3BhdGNoTG9ja2Vk
TW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSkKK3sKKyAgICBpZiAobV9lbGVtZW50ICYmIG1fZWxlbWVudC0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKSkgeworICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoTW91c2VFdmVu
dChldmVudCwgZXZlbnRUeXBlLCBldmVudC5jbGlja0NvdW50KCkpOworCisgICAgICAgIC8vIENy
ZWF0ZSBjbGljayBldmVudHMKKyAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCku
bW91c2V1cEV2ZW50KQorICAgICAgICAgICAgbV9lbGVtZW50LT5kaXNwYXRjaE1vdXNlRXZlbnQo
ZXZlbnQsIGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBldmVudC5jbGlja0NvdW50KCkpOworICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5U
RVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUwNjkzNDA0ZjlhMzNhYmJkZDg1MjJkN2VkY2VkN2Q0ZTQwMjQ2NjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5o
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUG9pbnRlckxvY2tDb250
cm9sbGVyX2gKKyNkZWZpbmUgUG9pbnRlckxvY2tDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCisKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRWxlbWVudDsKK2NsYXNzIFBhZ2U7CitjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7CisKK2NsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUG9pbnRlckxvY2tDb250cm9sbGVyKTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBQb2ludGVyTG9ja0NvbnRyb2xsZXIo
UGFnZSopOworCisgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soV2ViQ29yZTo6RWxlbWVudCog
dGFyZ2V0LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPFZvaWRDYWxsYmFjaz4gZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3RQb2lu
dGVyVW5sb2NrKCk7CisgICAgYm9vbCBpc0xvY2tlZCgpOworCisgICAgdm9pZCBkaWRBY3F1aXJl
UG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOworICAg
IHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaXNwYXRjaExvY2tlZE1vdXNl
RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUpOworCitwcml2YXRlOgorICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RWxlbWVudD4gbV9lbGVtZW50OworICAgIFJlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+
IG1fc3VjY2Vzc0NhbGxiYWNrOworICAgIFJlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+IG1f
ZmFpbHVyZUNhbGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2VuZGlmIC8vIFBvaW50ZXJMb2NrQ29udHJvbGxl
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTIx
NzNjM2ZkYWRlMTI2MDdhN2UzNTEwMzQ0NWRkZjI4MzkzNjdiNS4uODY1ZDBhNGJjN2E3MTI3NzMy
ZGI2NGZlNzY2YmQwNTQ5ZjI3N2RlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcApAQCAtOTAsNiArOTAsOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVu
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9jay5oIgorI2luY2x1ZGUg
IlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBvcHVwQ29udGFpbmVyLmgiCiAj
aW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgi
CkBAIC0xNzUxLDE3ICsxNzUzLDI2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmlzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSgpIGNvbnN0CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZEFjcXVpcmVQ
b2ludGVyTG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2Nr
Q29udHJvbGxlciBsYW5kcy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdl
KCkpCisgICAgICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZEFjcXVpcmVQ
b2ludGVyTG9jaygpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZE5vdEFjcXVp
cmVQb2ludGVyTG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJM
b2NrQ29udHJvbGxlciBsYW5kcy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChw
YWdlKCkpCisgICAgICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZE5vdEFj
cXVpcmVQb2ludGVyTG9jaygpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZExv
c2VQb2ludGVyTG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJM
b2NrQ29udHJvbGxlciBsYW5kcy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChw
YWdlKCkpCisgICAgICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZExvc2VQ
b2ludGVyTG9jaygpOworI2VuZGlmCiB9CiAKIC8vIFdlYlZpZXcgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMy
MTcsNiArMzIyOCwyNyBAQCBib29sIFdlYlZpZXdJbXBsOjppc1BvaW50ZXJMb2NrZWQoKQogCiB2
b2lkIFdlYlZpZXdJbXBsOjpwb2ludGVyTG9ja01vdXNlRXZlbnQoY29uc3QgV2ViSW5wdXRFdmVu
dCYgZXZlbnQpCiB7CisgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZTsKKyAgICBzd2l0Y2ggKGV2
ZW50LnR5cGUpIHsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93bjoKKyAgICAgICAg
ZXZlbnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2
ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6TW91c2VNb3ZlOgorICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91
c2Vtb3ZlRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNl
RXZlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpOworCisgICAg
aWYgKHBhZ2UoKSkKKyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlz
cGF0Y2hMb2NrZWRNb3VzZUV2ZW50KAorICAgICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVp
bGRlcihtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBtb3VzZUV2ZW50KSwKKyAgICAgICAg
ICAgIGV2ZW50VHlwZSk7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2Nr
Q29udHJvbGxlciBsYW5kcy4KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJmNTgwYmM1YjI1N2RlYTBlMGM4
YjMzYWJhMWFhZWZmYzRkNWNhYWUuLmU0NjFkZTlhN2FiYzIxNDE2YjNhNGJlMTNjYmUxNzJjYjVj
Y2U2YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMS0yNCAgVmluY2VudCBTY2hlaWIg
IDxzY2hlaWJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBvaW50ZXIgTG9jazogSW1wbGVtZW50
IHBvaW50ZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NTc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVzcG9u
c2VzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxp
dmVyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9tb3VzZS1l
dmVudC1kZWxpdmVyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRl
cmxvY2tsb3N0LWV2ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1s
b2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0yNSAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBib3Jk
ZXItaW1hZ2Ugc2hvdWxkIG5vdCBjcmFzaCB3aGVuIHRoZSBzb3VyY2UgaXMgbm90IHNwZWNpZmll
ZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9j
a2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHkt
bG9ja2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjEzYWNhOGFiYjQ5MzdmZmM3NDQ4ODY4
NzVhMjZiYmUyOTQwODg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1s
b2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Rl
c3QgY2FsbGluZyBsb2NrIHdoZW4gYWxyZWFkeSBpbiBhIGxvY2tlZCBzdGF0ZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNM
b2NrZWQgaXMgZmFsc2UKK1BBU1MgTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4KK1BBU1MgbmF2aWdh
dG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorUEFTUyBMb2NrIHRhcmdldDEgc3Vj
Y2VlZGVkIGFnYWluLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0
cnVlCitQQVNTIGV4cGVjdFRhcmdldDFVbmxvY2sgaXMgdHJ1ZQorUEFTUyBMb2NrIHRhcmdldDIg
c3VjY2VlZGVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQuaHRt
bCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmEyOGU4OGVkZjE1ZTc1OGJjM2ZlZmQyMmM0YWMwZjk0M2I4MGUzOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2Vk
Lmh0bWwKQEAgLTAsMCArMSw3NiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+Cisg
IDxkaXYgaWQ9InRhcmdldDIiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0
aW9uKCJUZXN0IGNhbGxpbmcgbG9jayB3aGVuIGFscmVhZHkgaW4gYSBsb2NrZWQgc3RhdGUuIikK
KyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB0YXJnZXRkaXYxID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDEiKTsKKyAgICB0YXJnZXRkaXYyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDIiKTsKKworICAgIHZhciBleHBlY3RUYXJnZXQxVW5s
b2NrID0gZmFsc2U7CisgICAgdGFyZ2V0ZGl2MS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2lu
dGVybG9ja2xvc3QiLAorICAgICAgICBmdW5jdGlvbiAoKSB7IHNob3VsZEJlKCJleHBlY3RUYXJn
ZXQxVW5sb2NrIiwgInRydWUiKTsgfSk7CisKKyAgICB0YXJnZXRkaXYyLmFkZEV2ZW50TGlzdGVu
ZXIoIndlYmtpdHBvaW50ZXJsb2NrbG9zdCIsCisgICAgICAgIGZ1bmN0aW9uICgpIHsgdGVzdEZh
aWxlZCgiVW5leHBlY3RlZCB0YXJnZXRkaXYyIHBvaW50ZXJsb2NrbG9zdC4iKTsgfSk7CisKKyAg
ICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRv
ZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlz
TG9ja2VkIiwgImZhbHNlIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5s
b2NrKHRhcmdldGRpdjEsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDEgc3VjY2VlZGVkLiIpOworICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQi
LCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJn
ZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZCBhZ2Fpbi4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwg
InRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZXhwZWN0VGFyZ2V0MVVubG9jayA9IHRydWU7CisgICAg
ICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdjIsCisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJM
b2NrIHRhcmdldDIgc3VjY2VlZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgi
bmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAg
ICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFp
bGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAg
IGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJlOWEyZGE4ZDY1MWQxOGY3OTBlNGRmNGM5YmYxZDBmZTI3
NDg1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZh
aWwtcmVzcG9uc2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0IGFzeW5jaHJv
bm91cyByZXN1bHRzIG9mIGNhbGxpbmcgbG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIGlzIGRlZmluZWQuCitQQVNT
IExvY2sgZmFpbGVkIChhZnRlciB3ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9p
bnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpCitQQVNTIExvY2sgZmFpbGVkIChhZnRlciB3
ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5j
aHJvbm91c2x5KQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVz
cG9uc2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNl
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU1NjdkNjVkYmU0NjhhM2NiOWEwMzFhMGJmM2M4NTFjZjI4NWJj
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWls
LXJlc3BvbnNlcy5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24o
IlRlc3QgYXN5bmNocm9ub3VzIHJlc3VsdHMgb2YgY2FsbGluZyBsb2NrLiIpCisgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyIik7CisKKyAgICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24g
ZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAg
dG9kbyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAg
ICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2soZG9jdW1lbnQuYm9keSwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxv
Y2sgc3VjY2VlZGVkIHVuZXhwZWN0ZWRseS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgZmFpbGVkIChhZnRlciB3
ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNo
cm9ub3VzbHkpIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91
c2x5KCk7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKGRvY3VtZW50
LmJvZHksCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NrIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkuIik7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2Nr
IGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJM
b2NrV2lsbEZhaWxBc3luY2hyb25vdXNseSkiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0
U3RlcCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmaW5pc2hK
U1Rlc3QKKyAgICBdOworICAgIGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZl
bnQtYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtYXBpLmh0
bWwKaW5kZXggZWZiNDEyMWQ1MmI3MDhmOWU3MDQzOGJjNTRjY2ZlNjRjNDZiOTAyZC4uMmZlZWYz
YWQzNDIzZjAyZjM0NGRkNmExNDNiNDFmYmRjZmNjNzc5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL3Bv
aW50ZXItbG9jay9tb3VzZS1ldmVudC1hcGkuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzwhRE9DVFlQRSBIVE1MPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2sv
bW91c2UtZXZlbnQtZGVsaXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1s
b2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzk3YzI3
ZTVmOTkxMDAxODNiYjM4ZmU0MGUyNTQyZDEyZDZjYmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDM0IEBACitUZXN0IG1vdXNlIGV2ZW50cyBhcmUgcm91dGVkIHRvIGxvY2sgdGFy
Z2V0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuZXZlbnRT
ZW5kZXIgaXMgZGVmaW5lZC4KK1BBU1MgTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4KK1dpdGggYSBs
b2NrIGluIHBsYWNlIHNlbmQgYSBjbGljay4KK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0
YXJnZXQ6IHRhcmdldDEsIHJlY2VpdmVkIG9uOiB0YXJnZXQxCitQQVNTIGV2ZW50IHR5cGU6IG1v
dXNlZG93biwgdGFyZ2V0OiB0YXJnZXQxLCByZWNlaXZlZCBvbjogYm9keQorUEFTUyBMb2NrIHRh
cmdldDIgc3VjY2VlZGVkLgorV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLgorUEFT
UyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRh
cmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2Vp
dmVkIG9uOiBib2R5CitFbnN1cmUgZG91YmxlIGNsaWNrcyB3b3JrIGFzIGV4cGVjdGVkLCBzZW5k
aW5nIDQgY2xpY2tzLgorQ3JlYXRpbmcgYSBjbGljayBhbmQgZGJsY2xpY2suCitQQVNTIGV2ZW50
IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0Mgor
UEFTUyBldmVudCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0
YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVk
IG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQy
LCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6
IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0
YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGRi
bGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitFbnN1cmluZyBu
byBmYWxzZSBkYmxjbGlja3MgaWYgd2UgY29udGludWUuCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNl
ZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0
eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNT
IGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQy
CitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBv
bjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJl
Y2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdl
dDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2Nr
L21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2I0ZTI4ODEwODZhY2NmYmUyZGQ0
MjhjOWRmNWI5ZTdhMmJmMTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRl
ci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+
Cis8ZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQxIj48L2Rpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MiI+
PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgbW91c2UgZXZl
bnRzIGFyZSByb3V0ZWQgdG8gbG9jayB0YXJnZXQuIikKKyAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cuZXZlbnRTZW5kZXIiKTsKKwor
ICAgIHRhcmdldGRpdjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MSIpOworICAg
IHRhcmdldGRpdjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MiIpOworCisgICAg
ZnVuY3Rpb24gZXZlbnROb3RFeHBlY3RlZChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlVuZXhw
ZWN0ZWQgZXZlbnQgIiArIGUudHlwZSArICIgb24gIiArIGUuY3VycmVudFRhcmdldC5pZCk7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICBmdW5jdGlvbiBldmVudEV4cGVjdGVk
KGUpIHsKKyAgICAgIHRlc3RQYXNzZWQoImV2ZW50IHR5cGU6ICIgKyBlLnR5cGUgKyAiLCB0YXJn
ZXQ6ICIgKyBlLnRhcmdldC5pZCArICIsIHJlY2VpdmVkIG9uOiAiICsgZS5jdXJyZW50VGFyZ2V0
LmlkKTsKKyAgICB9CisKKyAgICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0
U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9kbyA9
IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBv
aW50ZXIubG9jayh0YXJnZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suIikK
KyAgICAgICAgICAgIHRhcmdldGRpdjEub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAg
ICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IGV2ZW50Tm90RXhwZWN0ZWQ7CisgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5Lm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAg
ICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAg
IHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0g
dW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5l
ZDsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7Cisg
ICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2MiwK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkxvY2sgdGFyZ2V0MiBzdWNjZWVkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRv
TmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiV2l0
aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLiIpCisgICAgICAgICAgICB0YXJnZXRkaXYx
Lm9ubW91c2Vkb3duID0gZXZlbnROb3RFeHBlY3RlZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIu
b25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5v
bm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5k
ZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAg
ICAgICAgICAgdGFyZ2V0ZGl2MS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IHRhcmdldGRpdjIub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkb2N1bWVu
dC5ib2R5Lm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9OZXh0U3RlcCgp
OworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1Zygi
RW5zdXJlIGRvdWJsZSBjbGlja3Mgd29yayBhcyBleHBlY3RlZCwgc2VuZGluZyA0IGNsaWNrcy4i
KQorICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7Cisg
ICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2V1cCA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAg
ICAgICB0YXJnZXRkaXYyLm9uY2xpY2sgPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgdGFy
Z2V0ZGl2Mi5vbmRibGNsaWNrID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIGRlYnVnKCJD
cmVhdGluZyBhIGNsaWNrIGFuZCBkYmxjbGljay4iKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVu
dFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAg
ICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgZGVidWcoIkVuc3Vy
aW5nIG5vIGZhbHNlIGRibGNsaWNrcyBpZiB3ZSBjb250aW51ZS4iKTsKKyAgICAgICAgICAgIHdp
bmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNl
bmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAg
ICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdl
dGRpdjIub25tb3VzZXVwID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmNs
aWNrID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmRibGNsaWNrID0gdW5k
ZWZpbmVkOworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBm
aW5pc2hKU1Rlc3QKKyAgICBdOworICAgIGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9p
bnRlci1sb2NrLWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9j
ay1hcGkuaHRtbAppbmRleCAzMThiOTkwZmEyNTczNDVmODFmMGZkZGEyODJhMjMxMjU1OTc0ZjEw
Li44ZGQ0MWE1NzE2MmU1YWI3NTVkYzA2NGViMWYxMWNmNDE0NDBjYWJkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLmh0bWwKQEAgLTEsNCArMSw0IEBA
Ci08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZ
UEUgSFRNTD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9p
bnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hODMyNDAwZWExMTg4OTM1MDMwOWZiNDI5ODgzYWJkYjUyZGZhZjQyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdCB0aGF0IHBvaW50ZXJsb2NrbG9zdCBl
dmVudCBpcyBkaXNwYXRjaGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgaXMgZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorSmF2YVNjcmlwdCBpbml0aWF0ZWQgdW5s
b2NrLgorUEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxsIDAKK1BBU1Mgd2Vi
a2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAxCitQQVNTIEFsbCBleHBlY3RlZCB3ZWJr
aXRwb2ludGVybG9ja2xvc3QgZXZlbnRzIHJlY2VpdmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0
UG9pbnRlci5pc0xvY2tlZCBpcyBmYWxzZQorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5p
c0xvY2tlZCBpcyB0cnVlCitIb3N0IGluaXRpYXRlZCB1bmxvY2suCitQQVNTIHdlYmtpdHBvaW50
ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMAorUEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFu
ZGxlciBjYWxsIDEKK1BBU1MgQWxsIGV4cGVjdGVkIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBldmVu
dHMgcmVjZWl2ZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIGZh
bHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM4N2NjZTJjNWY3NTNjZmU5NzUwYTQ3NzE1MmU4MWMxZTY5NTJkN2IK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2ts
b3N0LWV2ZW50Lmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0Ij48
L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBvaW50
ZXJsb2NrbG9zdCBldmVudCBpcyBkaXNwYXRjaGVkLiIpCisgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyIik7CisKKyAgICB0YXJnZXRkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0
Iik7CisKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xv
c3QiLCBsb2NrbG9zdEhhbmRsZXIpOworICAgIHRhcmdldGRpdi5hZGRFdmVudExpc3RlbmVyKCJ3
ZWJraXRwb2ludGVybG9ja2xvc3QiLCBsb2NrbG9zdEhhbmRsZXIpOworICAgIGxvY2tsb3N0aGFu
ZGxlcnMgPSAyOworCisgICAgbG9ja2xvc3RyZWNlaXB0cyA9IDA7CisgICAgZnVuY3Rpb24gbG9j
a2xvc3RIYW5kbGVyKCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJ3ZWJraXRwb2ludGVybG9ja2xv
c3QgaGFuZGxlciBjYWxsICIgKyBsb2NrbG9zdHJlY2VpcHRzKTsKKyAgICAgICAgbG9ja2xvc3Ry
ZWNlaXB0cysrOworICAgICAgICBpZiAobG9ja2xvc3RyZWNlaXB0cyA9PSBsb2NrbG9zdGhhbmRs
ZXJzKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgZXhwZWN0ZWQgd2Via2l0cG9pbnRl
cmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4iKTsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5jdGlvbiBk
b05leHRTdGVwKCkgeworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOworICAgIH0KKyAgICB0
b2RvID0gWworICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Vi
a2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5p
c0xvY2tlZCIsICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiSmF2YVNjcmlwdCBpbml0aWF0
ZWQgdW5sb2NrLiIpCisgICAgICAgICAgICBsb2NrbG9zdHJlY2VpcHRzID0gMDsKKyAgICAgICAg
ICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLnVubG9jaygpOworICAgICAgICB9LAorICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAvLyBsb2NrbG9zdEhhbmRsZXIgd2lsbCBjYXRj
aCB1bmxvY2tzIGFuZCBjYWxsIGRvTmV4dFN0ZXAgdG8gYnJpbmcgdXMgaGVyZS4KKyAgICAgICAg
ICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIp
OworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRp
diwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJ0cnVlIik7CisgICAg
ICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
TG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBkZWJ1ZygiSG9zdCBpbml0aWF0ZWQgdW5sb2NrLiIpCisgICAgICAgICAgICBsb2Nr
bG9zdHJlY2VpcHRzID0gMDsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpZExv
c2VQb2ludGVyTG9jaygpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAvLyBsb2NrbG9zdEhhbmRsZXIgd2lsbCBjYXRjaCB1bmxvY2tzIGFuZCBjYWxsIGRv
TmV4dFN0ZXAgdG8gYnJpbmcgdXMgaGVyZS4KKyAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0
b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgZG9OZXh0
U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAgIGRv
TmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124205</attachid>
            <date>2012-01-26 16:12:29 -0800</date>
            <delta_ts>2012-01-26 16:18:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75762-20120126161228.patch</filename>
            <type>text/plain</type>
            <size>39325</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1OTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI2NzY3MGZjMjU3YjEx
ODczOTc1M2RlNDNhOTk3NDQ5MWMyMjRhMC4uMWI0N2YyNzljMWM2YjViYmRjYTU1MTQ5YzYwMGNl
MWYzMTMyNGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciBjbGFzcywgYXMg
cGVyCisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy93ZWJldmVudHMvcmF3LWZpbGUvZGVm
YXVsdC9tb3VzZS1sb2NrLmh0bWwuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGJl
aW5nIG1hZGUgaW4gc3RlcHMsIHRoZSBmZWF0dXJlIGlzIHN0aWxsIGJlaGluZAorICAgICAgICBj
b21waWxlLXRpbWUgYW5kIHJ1bi10aW1lIGZsYWdzLCAnd2Via2l0JyBwcmVmaXhlZCwgYW5kIG5v
dCB5ZXQgZW5hYmxlZAorICAgICAgICBpbiBhbnkgYnJvd3Nlci4gKENocm9taXVtIGhhcyBhIGRl
dmVsb3BlciBmbGFnIHJlcXVpcmVkLikgRm9sbG93LXVwCisgICAgICAgIHdvcmsgd2lsbCBpbmNs
dWRlIGhhbmRsaW5nIERPTSBlbGVtZW50cyBiZWluZyByZW1vdmVkLCBtYWtpbmcgYWxsCisgICAg
ICAgIGNhbGxiYWNrcyBhc3luY2hyb25vdXMsIGlmcmFtZSBwZXJtaXNzaW9ucyAoc2ltaWxhciB0
byBGdWxsIFNjcmVlbiksCisgICAgICAgIGV0Yy4KKworICAgICAgICBQb2ludGVyTG9ja0NvbnRy
b2xsZXIgbWFpbnRhaW5zIHN0YXRlIG9mIHdoaWNoIEVsZW1lbnQgaXMgdGhlIGN1cnJlbnQKKyAg
ICAgICAgbG9jayB0YXJnZXQgYW5kIHRoZSBzdWNjZXNzIGFuZCBmYWlsdXJlIGNhbGxiYWNrcy4g
Q2hyb21lQ2xpZW50IGhhcworICAgICAgICBtZXRob2RzIGFkZGVkIHRvIGV4cG9zZSB0aGUgcmVx
dWlyZWQgc3RhdGUgY2hhbmdlIHJlcXVlc3RzLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRQb2lu
dGVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
b2ludGVyTG9ja0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxv
Y2s6OmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OnVubG9jayk6CisgICAg
ICAgIChXZWJDb3JlOjpQb2ludGVyTG9jazo6aXNMb2NrZWQpOgorICAgICAgICAqIHBhZ2UvUG9p
bnRlckxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrOjpjcmVhdGUpOgorICAg
ICAgICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OlBvaW50ZXJMb2NrQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2ludGVyTG9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2lu
dGVyVW5sb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6aXNM
b2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRBY3F1
aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVy
OjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxv
Y2tDb250cm9sbGVyOjpkaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9p
bnRlckxvY2tDb250cm9sbGVyOjpkaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9pbnRlckxvY2suaC4KKwogMjAxMi0wMS0yNSAgRGFuaWVsIENoZW5nICA8ZGNoZW5n
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEZpeCBDbGlwYm9hcmRDaHJvbWl1
bTo6dmFsaWRhdGVGaWxlbmFtZSB0byBhY3R1YWxseSBvcGVyYXRlIG9uIGV4dGVuc2lvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZGE5MjBkNWQwYjhiYzFkNTI0MGNmYTU4MWZhYjM3
ZmFiNWM3ZDRiYi4uYmNmMTM5YzBiZWU5MGM4YjAzY2U4MmQxOTQwNzI4MzEwOWUxM2U4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0yNCAgVmlu
Y2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBvaW50ZXIgTG9j
azogSW1wbGVtZW50IHBvaW50ZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2MgorCisgICAgICAgIEFkZCBjYWxscyB0byB0aGUg
UG9pbnRlckxvY2tDb250cm9sbGVyIGFkZGVkIGluIHRoaXMgcGF0Y2ggdG8gV2ViQ29yZS4KKwor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRBY3F1aXJlUG9p
bnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkTm90QWNxdWlyZVBv
aW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZExvc2VQb2ludGVy
TG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwb2ludGVyTG9ja01vdXNlRXZl
bnQpOgorCiAyMDEyLTAxLTI1ICBHcmVnIEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCBJbnRlbnRSZXF1ZXN0IGluY2x1ZGUgZm9yIEZyYW1lTG9hZGVyQ2xpZW50
SW1wbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjNDJjZWIyYjBjZTZiMDk0ZDFkYmQyYmI3YzBmNjY0
MjRjYzVmYmQzLi5iYjk4ODNkYTZhZWZiNTFlM2NmNTVlZThkZGNiNmE3MTNiZmE1OTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yNjQ3LDYgKzI2NDcsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuaCcsCiAgICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9jay5jcHAnLAog
ICAgICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2suaCcsCisgICAgICAgICAgICAncGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrQ29u
dHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL1ByaW50Q29udGV4dC5jcHAnLAogICAgICAg
ICAgICAgJ3BhZ2UvU2NyZWVuLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBkYTE4YjI5NTFiYTdkNDkzNTRkNGVhNzI5ODNmZjRi
OTZjMTNjOTk4Li42NDY0ZDhjMTAwZDFhNzRjNzFkZmFiMDViYTg1MjY4NmIyNGU0YmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTE5Nyw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgXAogICAgIG1hY3JvKHNob3cpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0cG9p
bnRlcmxvY2tsb3N0KSBcCisgICAgXAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9F
QUNICiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDk4MmE3Y2QxNWQ1ZDM4ZDky
MjVkYzFiNmJmMTIxMWZkNzM4MThhYWYuLjQ4NjYyNWE5OGQyMGUxYzAzZDUxNWViMjI0NDJkMzgx
NDJmODEzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI4LDYgKzMyOCwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdJbWFnZUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJM
b2NrKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQb2lu
dGVyVW5sb2NrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKSB7
IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1
YWwgfkNocm9tZUNsaWVudCgpIHsgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAK
aW5kZXggYzM1ZTk5NDk2MWM1MGE4MWFiYjhjMDA4NDNkODJlYzQzNjE2MWRlNC4uYjM5NGNkOGQx
YWI5YmVkMjQ4OWE3ZWUyNGRjOTk4ZjQyMzBiZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcApAQCAtMTYxLDggKzE2MSw4IEBAIEdlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0
aW9uKCkgY29uc3QKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogUG9pbnRlckxvY2sqIE5hdmln
YXRvcjo6d2Via2l0UG9pbnRlcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvaW50ZXIpCi0gICAg
ICAgIG1fcG9pbnRlciA9IFBvaW50ZXJMb2NrOjpjcmVhdGUoKTsKKyAgICBpZiAoIW1fcG9pbnRl
ciAmJiBtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgbV9wb2ludGVyID0gUG9p
bnRlckxvY2s6OmNyZWF0ZShtX2ZyYW1lKTsKICAgICByZXR1cm4gbV9wb2ludGVyLmdldCgpOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwYzZmZjU1YmExMjRjODliZmE4OThjMmUw
YTk3NTVhZTFlMzdkNzNhLi4xMGM1OTI0ZWY2MTMwNGZmNjQ0NjdmMTYwYWRmZTdmZGEzNTk5MmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJQbHVnaW5E
YXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNl
LmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jl
c3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCkBAIC0xNDYsNiArMTQ3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNs
aWVudHMpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNhdGlvbkNv
bnRyb2xsZXIoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKHRoaXMsIHBhZ2VDbGllbnRz
Lm5vdGlmaWNhdGlvbkNsaWVudCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoUG9pbnRlckxvY2tDb250cm9sbGVyOjpjcmVh
dGUodGhpcykpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVl
Y2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCBlZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4MzcyNjFlNjI5Nzg0ZTFhZThlLi5h
YzljNTc4ZjgxOWI0NjQ5N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm90aWZpY2F0
aW9uUHJlc2VudGVyOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRh
OworICAgIGNsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlcjsKICAgICBjbGFzcyBQcm9ncmVzc1Ry
YWNrZXI7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVuZGVyVGhlbWU7CkBAIC0xOTAs
NiArMTkxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQogICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKiBub3RpZmljYXRpb25Db250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5k
aWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICBQb2ludGVyTG9ja0NvbnRyb2xs
ZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlckxvY2tD
b250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAg
ICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAtMzg2LDYgKzM5MCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAg
ICAgT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90aWZpY2F0aW9uQ29udHJvbGxl
cjsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAgIE93blB0cjxQb2lu
dGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRlckxvY2tDb250cm9sbGVyOworI2VuZGlmCiAjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fc3BlZWNo
SW5wdXRDbGllbnQ7CiAgICAgICAgIE93blB0cjxTcGVlY2hJbnB1dD4gbV9zcGVlY2hJbnB1dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKaW5kZXggZGZiM2NiNDlhMDljODkwMjgxYjkw
NjgyZmI4NWNkODQxYTZlY2E5MS4uNzIzMTFlMGYyYzZiOTQ0YzEwM2NkMDUxNjZkY2EwYWNlNDRm
NmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKQEAgLTI1LDMyICsyNSw0OCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrLmgiCiAKKyNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0Nv
bnRyb2xsZXIuaCIKKwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJMb2NrOjpQb2ludGVy
TG9jayhGcmFtZSogZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKKyAgICAs
IG1fY29udHJvbGxlcigwKQogeworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBtX2NvbnRyb2xs
ZXIgPSBmcmFtZS0+cGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKTsKIH0KIAogUG9pbnRl
ckxvY2s6On5Qb2ludGVyTG9jaygpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRyb2xsZXIpOworfQor
Cit2b2lkIFBvaW50ZXJMb2NrOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIERPTVdpbmRvd1By
b3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKTsKKyAgICBtX2NvbnRyb2xsZXIgPSAwOwogfQogCiB2
b2lkIFBvaW50ZXJMb2NrOjpsb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVD
YWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgaWYgKG1fY29udHJvbGxl
cikKKyAgICAgICAgbV9jb250cm9sbGVyLT5yZXF1ZXN0UG9pbnRlckxvY2sodGFyZ2V0LCBzdWNj
ZXNzQ2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjayk7CiB9CiAKIHZvaWQgUG9pbnRlckxvY2s6OnVu
bG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIGlmIChtX2NvbnRyb2xsZXIp
CisgICAgICAgIG1fY29udHJvbGxlci0+cmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKIH0KIAogYm9v
bCBQb2ludGVyTG9jazo6aXNMb2NrZWQoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY29udHJvbGxlciAmJiBtX2NvbnRyb2xsZXIt
PmlzTG9ja2VkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9p
bnRlckxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaAppbmRleCBiZTdj
MzE3OGY1OGZlNzk5YzYxMWNmMDYxY2NkZWRlOTMyYmFkYjAzLi4yNDBkNzlhYzhkMWNiN2FkMTY5
NTM5MWJiYTg5MWY4ODJiMDM4ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bv
aW50ZXJMb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogCisjaW5jbHVkZSAiRE9N
V2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNCwxOSAr
MzUsMjYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEZy
YW1lOworY2xhc3MgUG9pbnRlckxvY2tDb250cm9sbGVyOwogCi1jbGFzcyBQb2ludGVyTG9jayA6
IHB1YmxpYyBSZWZDb3VudGVkPFBvaW50ZXJMb2NrPiB7CitjbGFzcyBQb2ludGVyTG9jayA6IHB1
YmxpYyBSZWZDb3VudGVkPFBvaW50ZXJMb2NrPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb2ludGVyTG9jaz4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50ZXJMb2NrKCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UG9pbnRlckxvY2s+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQb2ludGVyTG9jayhmcmFtZSkpOyB9CiAKICAgICB+UG9pbnRlckxvY2soKTsKIAorICAgIC8v
IERPTVdpbmRvd1Byb3BlcnR5IEludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0
RnJhbWUoKSBPVkVSUklERTsKKwogICAgIHZvaWQgbG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBmYWlsdXJlQ2FsbGJhY2spOwogICAgIHZvaWQgdW5sb2NrKCk7CiAgICAgYm9vbCBpc0xv
Y2tlZCgpOwogCiBwcml2YXRlOgotICAgIFBvaW50ZXJMb2NrKCk7CisgICAgZXhwbGljaXQgUG9p
bnRlckxvY2soRnJhbWUqKTsKKworICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciogbV9jb250cm9s
bGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3MzRiOTE1ODBjZGZjOTE1
ZWI0Mzg5MWRmNTdhZDYzMjkyYjI2ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRy
b2xsZXIuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1BvaW50ZXJMb2NrQ29udHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9s
bGVyKFBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKworUGFzc093blB0cjxQ
b2ludGVyTG9ja0NvbnRyb2xsZXI+IFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6Y3JlYXRlKFBhZ2Uq
IHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQb2ludGVyTG9ja0NvbnRyb2xsZXIo
cGFnZSkpOworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJM
b2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjaykKK3sKKyAgICBp
ZiAoaXNMb2NrZWQoKSkgeworICAgICAgICBpZiAobV9lbGVtZW50ID09IHRhcmdldCkgeworICAg
ICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBzdWNjZXNzQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkaWRM
b3NlUG9pbnRlckxvY2soKTsKKyAgICAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKKyAgICAg
ICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxi
YWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX3BhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+cmVxdWVzdFBvaW50ZXJMb2NrKCkpIHsKKyAgICAgICAgbV9lbGVt
ZW50ID0gdGFyZ2V0OworICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFj
azsKKyAgICAgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSBmYWlsdXJlQ2FsbGJhY2s7CisgICAgfSBl
bHNlIGlmIChmYWlsdXJlQ2FsbGJhY2spCisgICAgICAgIGZhaWx1cmVDYWxsYmFjay0+aGFuZGxl
RXZlbnQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2ludGVy
VW5sb2NrKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnJlcXVl
c3RQb2ludGVyVW5sb2NrKCk7Cit9CisKK2Jvb2wgUG9pbnRlckxvY2tDb250cm9sbGVyOjppc0xv
Y2tlZCgpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5pc1BvaW50
ZXJMb2NrZWQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZEFjcXVpcmVQ
b2ludGVyTG9jaygpCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnRUb05vdGlmeShtX2Vs
ZW1lbnQpOworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrVG9Jc3N1ZShtX3N1Y2Nl
c3NDYWxsYmFjayk7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSAwOworICAgIG1fZmFpbHVyZUNh
bGxiYWNrID0gMDsKKworICAgIGlmIChjYWxsYmFja1RvSXNzdWUgJiYgZWxlbWVudFRvTm90aWZ5
ICYmIGVsZW1lbnRUb05vdGlmeS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgY2FsbGJh
Y2tUb0lzc3VlLT5oYW5kbGVFdmVudCgpOworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBSZWZQdHI8RWxlbWVudD4gZWxl
bWVudFRvTm90aWZ5KG1fZWxlbWVudCk7CisgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJh
Y2tUb0lzc3VlKG1fZmFpbHVyZUNhbGxiYWNrKTsKKyAgICBtX2VsZW1lbnQgPSAwOworICAgIG1f
c3VjY2Vzc0NhbGxiYWNrID0gMDsKKyAgICBtX2ZhaWx1cmVDYWxsYmFjayA9IDA7CisKKyAgICBp
ZiAoY2FsbGJhY2tUb0lzc3VlICYmIGVsZW1lbnRUb05vdGlmeSAmJiBlbGVtZW50VG9Ob3RpZnkt
PmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIGNhbGxiYWNrVG9Jc3N1ZS0+aGFuZGxlRXZl
bnQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9j
aygpCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnRUb05vdGlmeShtX2VsZW1lbnQpOwor
ICAgIG1fZWxlbWVudCA9IDA7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSAwOworICAgIG1fZmFp
bHVyZUNhbGxiYWNrID0gMDsKKyAgICBpZiAoZWxlbWVudFRvTm90aWZ5ICYmIGVsZW1lbnRUb05v
dGlmeS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgZWxlbWVudFRvTm90aWZ5LT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrbG9z
dEV2ZW50LCB0cnVlLCBmYWxzZSkpOworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6
ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQs
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQoreworICAgIGlmIChtX2VsZW1lbnQgJiYg
bV9lbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAgICAgIG1fZWxlbWVudC0+ZGlz
cGF0Y2hNb3VzZUV2ZW50KGV2ZW50LCBldmVudFR5cGUsIGV2ZW50LmNsaWNrQ291bnQoKSk7CisK
KyAgICAgICAgLy8gQ3JlYXRlIGNsaWNrIGV2ZW50cworICAgICAgICBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpCisgICAgICAgICAgICBtX2VsZW1lbnQtPmRpc3Bh
dGNoTW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGV2ZW50LmNsaWNr
Q291bnQoKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tD
b250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY5MzRkNTZiZDY4MmYyZjkxMjY4NGFhY2Y5YmVmZjQ3
OWNiMjZhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxv
Y2tDb250cm9sbGVyLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQ
b2ludGVyTG9ja0NvbnRyb2xsZXJfaAorI2RlZmluZSBQb2ludGVyTG9ja0NvbnRyb2xsZXJfaAor
CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKworI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbGVtZW50OworY2xhc3MgUGFnZTsK
K2NsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKKworY2xhc3MgUG9pbnRlckxvY2tDb250cm9sbGVy
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2ludGVyTG9ja0NvbnRyb2xsZXIpOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PFBvaW50ZXJMb2NrQ29udHJvbGxlcj4gY3JlYXRlKFBhZ2UqKTsKKworICAgIHZvaWQgcmVxdWVz
dFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjayk7
CisgICAgdm9pZCByZXF1ZXN0UG9pbnRlclVubG9jaygpOworICAgIGJvb2wgaXNMb2NrZWQoKTsK
KworICAgIHZvaWQgZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBkaWROb3RBY3F1
aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZExvc2VQb2ludGVyTG9jaygpOworICAgIHZv
aWQgZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQ
b2ludGVyTG9ja0NvbnRyb2xsZXIoUGFnZSopOworICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBSZWZQ
dHI8RWxlbWVudD4gbV9lbGVtZW50OworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fc3VjY2Vz
c0NhbGxiYWNrOworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fZmFpbHVyZUNhbGxiYWNrOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJf
TE9DSykKKworI2VuZGlmIC8vIFBvaW50ZXJMb2NrQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNjZhOGE5ZDljMGE2MjdjN2NiZDEx
ZmU0N2FjYjkzMTI5OGY3ZTZiMC4uYjZiNmM2ZjMxYTY2ODg3MTcxZTEyYzMyNDNmNjc4M2EyNjU1
OTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
ODksNiArODksOCBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2
ZW50LmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2suaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0Nv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJQb3B1cENvbnRhaW5lci5oIgogI2luY2x1ZGUgIlBvcHVw
TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgpAQCAtMTc1MCwxNyAr
MTc1MiwyNiBAQCBib29sIFdlYlZpZXdJbXBsOjppc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUoKSBjb25zdAogCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWRBY3F1aXJlUG9pbnRlckxvY2soKQog
ewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2hlbiBQb2ludGVyTG9ja0NvbnRyb2xsZXIgbGFu
ZHMuCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAocGFnZSgpKQorICAgICAgICBw
YWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaWRBY3F1aXJlUG9pbnRlckxvY2soKTsK
KyNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2so
KQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2hlbiBQb2ludGVyTG9ja0NvbnRyb2xsZXIg
bGFuZHMuCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAocGFnZSgpKQorICAgICAg
ICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaWROb3RBY3F1aXJlUG9pbnRlckxv
Y2soKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpkaWRMb3NlUG9pbnRlckxvY2so
KQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2hlbiBQb2ludGVyTG9ja0NvbnRyb2xsZXIg
bGFuZHMuCisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBpZiAocGFnZSgpKQorICAgICAg
ICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaWRMb3NlUG9pbnRlckxvY2soKTsK
KyNlbmRpZgogfQogCiAvLyBXZWJWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMjA5LDcgKzMyMjAsMjcg
QEAgYm9vbCBXZWJWaWV3SW1wbDo6aXNQb2ludGVyTG9ja2VkKCkKIAogdm9pZCBXZWJWaWV3SW1w
bDo6cG9pbnRlckxvY2tNb3VzZUV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQogewot
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgd2hlbiBQb2ludGVyTG9ja0NvbnRyb2xsZXIgbGFuZHMu
CisgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZTsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlRG93bjoKKyAgICAgICAgZXZlbnRUeXBlID0g
ZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Ok1vdXNlVXA6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5t
b3VzZXVwRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91
c2VNb3ZlOgorICAgICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKworICAgIGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQgPSBzdGF0
aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpOworCisgICAgaWYgKHBhZ2UoKSkK
KyAgICAgICAgcGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKS0+ZGlzcGF0Y2hMb2NrZWRN
b3VzZUV2ZW50KAorICAgICAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihtYWluRnJh
bWVJbXBsKCktPmZyYW1lVmlldygpLCBtb3VzZUV2ZW50KSwKKyAgICAgICAgICAgIGV2ZW50VHlw
ZSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVlZTZiNWM4MmFkYmFhMzk5ZTcxMDU3NWY2M2VjYWI0
NDViNzlmZTMuLjgzZTMyYmE0YTViMjI5NzJhOTdhMzk3NmNlMmUzMmZmZDI2NzI4YTUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMS0yNCAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFBvaW50ZXIgTG9jazogSW1wbGVtZW50IHBvaW50ZXIgaW50
ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NTc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVzcG9uc2VzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVy
eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2
ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL3BvaW50ZXJs
b2NrbG9zdC1ldmVudC5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0yNSAgTGV2aSBXZWludHJhdWIg
IDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgZmFzdC9qcy9kZmct
dWludDMyYXJyYXktb3ZlcmZsb3ctdmFsdWVzLmh0bWwgaXMgc2xvdyBvbiBDaHJvbWl1bSBEZWJ1
ZyBib3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5
LWxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJl
YWR5LWxvY2tlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxM2FjYThhYmI0OTM3ZmZjNzQ0
ODg2ODc1YTI2YmJlMjk0MDg4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50
ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBA
CitUZXN0IGNhbGxpbmcgbG9jayB3aGVuIGFscmVhZHkgaW4gYSBsb2NrZWQgc3RhdGUuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVy
LmlzTG9ja2VkIGlzIGZhbHNlCitQQVNTIExvY2sgdGFyZ2V0MSBzdWNjZWVkZWQuCitQQVNTIG5h
dmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK1BBU1MgTG9jayB0YXJnZXQx
IHN1Y2NlZWRlZCBhZ2Fpbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQg
aXMgdHJ1ZQorUEFTUyBleHBlY3RUYXJnZXQxVW5sb2NrIGlzIHRydWUKK1BBU1MgTG9jayB0YXJn
ZXQyIHN1Y2NlZWRlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2Vk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZhMjhlODhlZGYxNWU3NThiYzNmZWZkMjJjNGFjMGY5NDNiODBlMzkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxv
Y2tlZC5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxkaXYgaWQ9InRhcmdldDEiPjwvZGl2
PgorICA8ZGl2IGlkPSJ0YXJnZXQyIj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNj
cmlwdGlvbigiVGVzdCBjYWxsaW5nIGxvY2sgd2hlbiBhbHJlYWR5IGluIGEgbG9ja2VkIHN0YXRl
LiIpCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdGFyZ2V0ZGl2MSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQxIik7CisgICAgdGFyZ2V0ZGl2MiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQyIik7CisKKyAgICB2YXIgZXhwZWN0VGFyZ2V0
MVVubG9jayA9IGZhbHNlOworICAgIHRhcmdldGRpdjEuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0
cG9pbnRlcmxvY2tsb3N0IiwKKyAgICAgICAgZnVuY3Rpb24gKCkgeyBzaG91bGRCZSgiZXhwZWN0
VGFyZ2V0MVVubG9jayIsICJ0cnVlIik7IH0pOworCisgICAgdGFyZ2V0ZGl2Mi5hZGRFdmVudExp
c3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QiLAorICAgICAgICBmdW5jdGlvbiAoKSB7IHRl
c3RGYWlsZWQoIlVuZXhwZWN0ZWQgdGFyZ2V0ZGl2MiBwb2ludGVybG9ja2xvc3QuIik7IH0pOwor
CisgICAgY3VycmVudFN0ZXAgPSAwOworICAgIGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAg
ICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7CisgICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRl
ci5pc0xvY2tlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIubG9jayh0YXJnZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9j
a2VkIiwgInRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2so
dGFyZ2V0ZGl2MSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MSBzdWNjZWVkZWQgYWdhaW4uIik7CisgICAg
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tl
ZCIsICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgIH0sCisgICAgICAg
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV4cGVjdFRhcmdldDFVbmxvY2sgPSB0cnVlOwor
ICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYyLAorICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiTG9jayB0YXJnZXQyIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxk
QmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgInRydWUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2Nr
IGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsK
KyAgICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZTlhMmRhOGQ2NTFkMThmNzkwZTRkZjRjOWJmMWQw
ZmUyNzQ4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9j
ay1mYWlsLXJlc3BvbnNlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBhc3lu
Y2hyb25vdXMgcmVzdWx0cyBvZiBjYWxsaW5nIGxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciBpcyBkZWZpbmVkLgor
UEFTUyBMb2NrIGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KQorUEFTUyBMb2NrIGZhaWxlZCAoYWZ0
ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxB
c3luY2hyb25vdXNseSkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWls
LXJlc3BvbnNlcy5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNw
b25zZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTY3ZDY1ZGJlNDY4YTNjYjlhMDMxYTBiZjNjODUxY2Yy
ODViYzk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2st
ZmFpbC1yZXNwb25zZXMuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0
aW9uKCJUZXN0IGFzeW5jaHJvbm91cyByZXN1bHRzIG9mIGNhbGxpbmcgbG9jay4iKQorICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciIpOworCisgICAgY3VycmVudFN0ZXAgPSAwOworICAgIGZ1bmN0
aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7CisgICAgfQor
ICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CisgICAg
ICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKGRvY3VtZW50LmJvZHksCisgICAg
ICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJMb2NrIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkuIik7CisgICAgICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIGZhaWxlZCAoYWZ0
ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxT
eW5jaHJvbm91c2x5KSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxBc3luY2hy
b25vdXNseSgpOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayhkb2N1
bWVudC5ib2R5LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiTG9jayBzdWNjZWVkZWQgdW5leHBlY3RlZGx5LiIpOworICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
TG9jayBmYWlsZWQgKGFmdGVyIHdlIGNhbGxlZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2lu
dGVyTG9ja1dpbGxGYWlsQXN5bmNocm9ub3VzbHkpIik7CisgICAgICAgICAgICAgICAgICAgIGRv
TmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZmlu
aXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNl
LWV2ZW50LWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWFw
aS5odG1sCmluZGV4IGVmYjQxMjFkNTJiNzA4ZjllNzA0MzhiYzU0Y2NmZTY0YzQ2YjkwMmQuLjJm
ZWVmM2FkMzQyM2YwMmYzNDRkZDZhMTQzYjQxZmJkY2ZjYzc3OTggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1hcGkuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtYXBpLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZUEUgSFRN
TD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1s
b2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50
ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc5
N2MyN2U1Zjk5MTAwMTgzYmIzOGZlNDBlMjU0MmQxMmQ2Y2JlMAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzNCBAQAorVGVzdCBtb3VzZSBldmVudHMgYXJlIHJvdXRlZCB0byBsb2Nr
IHRhcmdldC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmV2
ZW50U2VuZGVyIGlzIGRlZmluZWQuCitQQVNTIExvY2sgdGFyZ2V0MSBzdWNjZWVkZWQuCitXaXRo
IGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93
biwgdGFyZ2V0OiB0YXJnZXQxLCByZWNlaXZlZCBvbjogdGFyZ2V0MQorUEFTUyBldmVudCB0eXBl
OiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQgb246IGJvZHkKK1BBU1MgTG9j
ayB0YXJnZXQyIHN1Y2NlZWRlZC4KK1dpdGggYSBsb2NrIGluIHBsYWNlIHNlbmQgYSBjbGljay4K
K1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9u
OiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCBy
ZWNlaXZlZCBvbjogYm9keQorRW5zdXJlIGRvdWJsZSBjbGlja3Mgd29yayBhcyBleHBlY3RlZCwg
c2VuZGluZyA0IGNsaWNrcy4KK0NyZWF0aW5nIGEgY2xpY2sgYW5kIGRibGNsaWNrLgorUEFTUyBl
dmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdl
dDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBv
bjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNl
aXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFy
Z2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFy
Z2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGlj
aywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBl
OiBkYmxjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorRW5zdXJp
bmcgbm8gZmFsc2UgZGJsY2xpY2tzIGlmIHdlIGNvbnRpbnVlLgorUEFTUyBldmVudCB0eXBlOiBt
b3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZl
bnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0Mgor
UEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFy
Z2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2
ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQy
LCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0
YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXIt
bG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2Nr
L21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiNGUyODgxMDg2YWNjZmJl
MmRkNDI4YzlkZjViOWU3YTJiZjE5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bv
aW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8
IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJv
ZHkiPgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+CisgIDxkaXYgaWQ9InRhcmdl
dDIiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IG1vdXNl
IGV2ZW50cyBhcmUgcm91dGVkIHRvIGxvY2sgdGFyZ2V0LiIpCisgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmV2ZW50U2VuZGVyIik7
CisKKyAgICB0YXJnZXRkaXYxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDEiKTsK
KyAgICB0YXJnZXRkaXYyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDIiKTsKKwor
ICAgIGZ1bmN0aW9uIGV2ZW50Tm90RXhwZWN0ZWQoZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJV
bmV4cGVjdGVkIGV2ZW50ICIgKyBlLnR5cGUgKyAiIG9uICIgKyBlLmN1cnJlbnRUYXJnZXQuaWQp
OworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gZXZlbnRFeHBl
Y3RlZChlKSB7CisgICAgICB0ZXN0UGFzc2VkKCJldmVudCB0eXBlOiAiICsgZS50eXBlICsgIiwg
dGFyZ2V0OiAiICsgZS50YXJnZXQuaWQgKyAiLCByZWNlaXZlZCBvbjogIiArIGUuY3VycmVudFRh
cmdldC5pZCk7CisgICAgfQorCisgICAgY3VycmVudFN0ZXAgPSAwOworICAgIGZ1bmN0aW9uIGRv
TmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7CisgICAgfQorICAgIHRv
ZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJr
aXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2MSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MSBzdWNjZWVkZWQu
Iik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBkZWJ1ZygiV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNr
LiIpCisgICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsK
KyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBldmVudE5vdEV4cGVjdGVkOwor
ICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7Cisg
ICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAg
ICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cu
ZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgdGFyZ2V0ZGl2MS5vbm1vdXNlZG93
biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSB1bmRl
ZmluZWQ7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9ubW91c2Vkb3duID0gdW5kZWZpbmVk
OworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRp
djIsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDIgc3VjY2VlZGVkLiIpOworICAgICAgICAgICAgICAgICAg
ICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIp
OworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWco
IldpdGggYSBsb2NrIGluIHBsYWNlIHNlbmQgYSBjbGljay4iKQorICAgICAgICAgICAgdGFyZ2V0
ZGl2MS5vbm1vdXNlZG93biA9IGV2ZW50Tm90RXhwZWN0ZWQ7CisgICAgICAgICAgICB0YXJnZXRk
aXYyLm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgd2luZG93LmV2ZW50
U2VuZGVyLmxlYXBGb3J3YXJkKDEwMDApOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KyAgICAgICAgICAgIHRhcmdldGRpdjEub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAg
ICAgICB0YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGRvTmV4dFN0
ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVi
dWcoIkVuc3VyZSBkb3VibGUgY2xpY2tzIHdvcmsgYXMgZXhwZWN0ZWQsIHNlbmRpbmcgNCBjbGlj
a3MuIikKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVk
OworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNldXAgPSBldmVudEV4cGVjdGVkOworICAg
ICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmNsaWNrID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAg
IHRhcmdldGRpdjIub25kYmxjbGljayA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICBkZWJ1
ZygiQ3JlYXRpbmcgYSBjbGljayBhbmQgZGJsY2xpY2suIik7CisgICAgICAgICAgICB3aW5kb3cu
ZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAg
ICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgIGRlYnVnKCJF
bnN1cmluZyBubyBmYWxzZSBkYmxjbGlja3MgaWYgd2UgY29udGludWUuIik7CisgICAgICAgICAg
ICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZl
bnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAg
ICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0
YXJnZXRkaXYyLm9ubW91c2V1cCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIu
b25jbGljayA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25kYmxjbGljayA9
IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2Nr
L3BvaW50ZXItbG9jay1hcGkuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVy
LWxvY2stYXBpLmh0bWwKaW5kZXggMzE4Yjk5MGZhMjU3MzQ1ZjgxZjBmZGRhMjgyYTIzMTI1NTk3
NGYxMC4uOGRkNDFhNTcxNjJlNWFiNzU1ZGMwNjRlYjFmMTFjZjQxNDQwY2FiZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS5odG1sCkBAIC0xLDQgKzEs
NCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPCFE
T0NUWVBFIEhUTUw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTgzMjQwMGVhMTE4ODkzNTAzMDlmYjQyOTg4M2FiZGI1MmRmYWY0MgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZl
bnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgdGhhdCBwb2ludGVybG9ja2xv
c3QgZXZlbnQgaXMgZGlzcGF0Y2hlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIGlzIGRlZmluZWQuCitQQVNTIG5hdmln
YXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK0phdmFTY3JpcHQgaW5pdGlhdGVk
IHVubG9jay4KK1BBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAwCitQQVNT
IHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMQorUEFTUyBBbGwgZXhwZWN0ZWQg
d2Via2l0cG9pbnRlcmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4KK1BBU1MgbmF2aWdhdG9yLndl
YmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgZmFsc2UKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorSG9zdCBpbml0aWF0ZWQgdW5sb2NrLgorUEFTUyB3ZWJraXRw
b2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxsIDAKK1BBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0
IGhhbmRsZXIgY2FsbCAxCitQQVNTIEFsbCBleHBlY3RlZCB3ZWJraXRwb2ludGVybG9ja2xvc3Qg
ZXZlbnRzIHJlY2VpdmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBp
cyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3Qt
ZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZl
bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jODdjY2UyYzVmNzUzY2ZlOTc1MGE0NzcxNTJlODFjMWU2OTUy
ZDdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJs
b2NrbG9zdC1ldmVudC5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxkaXYgaWQ9InRhcmdl
dCI+PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBw
b2ludGVybG9ja2xvc3QgZXZlbnQgaXMgZGlzcGF0Y2hlZC4iKQorICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKyAgICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlciIpOworCisgICAgdGFyZ2V0ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldCIpOworCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cG9pbnRlcmxv
Y2tsb3N0IiwgbG9ja2xvc3RIYW5kbGVyKTsKKyAgICB0YXJnZXRkaXYuYWRkRXZlbnRMaXN0ZW5l
cigid2Via2l0cG9pbnRlcmxvY2tsb3N0IiwgbG9ja2xvc3RIYW5kbGVyKTsKKyAgICBsb2NrbG9z
dGhhbmRsZXJzID0gMjsKKworICAgIGxvY2tsb3N0cmVjZWlwdHMgPSAwOworICAgIGZ1bmN0aW9u
IGxvY2tsb3N0SGFuZGxlcigpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgid2Via2l0cG9pbnRlcmxv
Y2tsb3N0IGhhbmRsZXIgY2FsbCAiICsgbG9ja2xvc3RyZWNlaXB0cyk7CisgICAgICAgIGxvY2ts
b3N0cmVjZWlwdHMrKzsKKyAgICAgICAgaWYgKGxvY2tsb3N0cmVjZWlwdHMgPT0gbG9ja2xvc3Ro
YW5kbGVycykgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIGV4cGVjdGVkIHdlYmtpdHBv
aW50ZXJsb2NrbG9zdCBldmVudHMgcmVjZWl2ZWQuIik7CisgICAgICAgICAgICBkb05leHRTdGVw
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rp
b24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9Cisg
ICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50
ZXIuaXNMb2NrZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwK
KyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoIkphdmFTY3JpcHQgaW5p
dGlhdGVkIHVubG9jay4iKQorICAgICAgICAgICAgbG9ja2xvc3RyZWNlaXB0cyA9IDA7CisgICAg
ICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci51bmxvY2soKTsKKyAgICAgICAgfSwKKyAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgLy8gbG9ja2xvc3RIYW5kbGVyIHdpbGwg
Y2F0Y2ggdW5sb2NrcyBhbmQgY2FsbCBkb05leHRTdGVwIHRvIGJyaW5nIHVzIGhlcmUuCisgICAg
ICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAiZmFs
c2UiKTsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJn
ZXRkaXYsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAidHJ1ZSIpOwor
ICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgZGVidWcoIkhvc3QgaW5pdGlhdGVkIHVubG9jay4iKQorICAgICAgICAgICAg
bG9ja2xvc3RyZWNlaXB0cyA9IDA7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
aWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgLy8gbG9ja2xvc3RIYW5kbGVyIHdpbGwgY2F0Y2ggdW5sb2NrcyBhbmQgY2Fs
bCBkb05leHRTdGVwIHRvIGJyaW5nIHVzIGhlcmUuCisgICAgICAgICAgICBzaG91bGRCZSgibmF2
aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIGRv
TmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAg
ICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124206</attachid>
            <date>2012-01-26 16:18:10 -0800</date>
            <delta_ts>2012-01-27 10:21:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75762-20120126161809.patch</filename>
            <type>text/plain</type>
            <size>39321</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1OTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI2NzY3MGZjMjU3YjEx
ODczOTc1M2RlNDNhOTk3NDQ5MWMyMjRhMC4uMWI0N2YyNzljMWM2YjViYmRjYTU1MTQ5YzYwMGNl
MWYzMTMyNGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciBjbGFzcywgYXMg
cGVyCisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy93ZWJldmVudHMvcmF3LWZpbGUvZGVm
YXVsdC9tb3VzZS1sb2NrLmh0bWwuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGJl
aW5nIG1hZGUgaW4gc3RlcHMsIHRoZSBmZWF0dXJlIGlzIHN0aWxsIGJlaGluZAorICAgICAgICBj
b21waWxlLXRpbWUgYW5kIHJ1bi10aW1lIGZsYWdzLCAnd2Via2l0JyBwcmVmaXhlZCwgYW5kIG5v
dCB5ZXQgZW5hYmxlZAorICAgICAgICBpbiBhbnkgYnJvd3Nlci4gKENocm9taXVtIGhhcyBhIGRl
dmVsb3BlciBmbGFnIHJlcXVpcmVkLikgRm9sbG93LXVwCisgICAgICAgIHdvcmsgd2lsbCBpbmNs
dWRlIGhhbmRsaW5nIERPTSBlbGVtZW50cyBiZWluZyByZW1vdmVkLCBtYWtpbmcgYWxsCisgICAg
ICAgIGNhbGxiYWNrcyBhc3luY2hyb25vdXMsIGlmcmFtZSBwZXJtaXNzaW9ucyAoc2ltaWxhciB0
byBGdWxsIFNjcmVlbiksCisgICAgICAgIGV0Yy4KKworICAgICAgICBQb2ludGVyTG9ja0NvbnRy
b2xsZXIgbWFpbnRhaW5zIHN0YXRlIG9mIHdoaWNoIEVsZW1lbnQgaXMgdGhlIGN1cnJlbnQKKyAg
ICAgICAgbG9jayB0YXJnZXQgYW5kIHRoZSBzdWNjZXNzIGFuZCBmYWlsdXJlIGNhbGxiYWNrcy4g
Q2hyb21lQ2xpZW50IGhhcworICAgICAgICBtZXRob2RzIGFkZGVkIHRvIGV4cG9zZSB0aGUgcmVx
dWlyZWQgc3RhdGUgY2hhbmdlIHJlcXVlc3RzLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRQb2lu
dGVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
b2ludGVyTG9ja0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxv
Y2s6OmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OnVubG9jayk6CisgICAg
ICAgIChXZWJDb3JlOjpQb2ludGVyTG9jazo6aXNMb2NrZWQpOgorICAgICAgICAqIHBhZ2UvUG9p
bnRlckxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrOjpjcmVhdGUpOgorICAg
ICAgICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OlBvaW50ZXJMb2NrQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2ludGVyTG9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2lu
dGVyVW5sb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6aXNM
b2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRBY3F1
aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVy
OjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxv
Y2tDb250cm9sbGVyOjpkaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9p
bnRlckxvY2tDb250cm9sbGVyOjpkaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9pbnRlckxvY2suaC4KKwogMjAxMi0wMS0yNSAgRGFuaWVsIENoZW5nICA8ZGNoZW5n
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEZpeCBDbGlwYm9hcmRDaHJvbWl1
bTo6dmFsaWRhdGVGaWxlbmFtZSB0byBhY3R1YWxseSBvcGVyYXRlIG9uIGV4dGVuc2lvbnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZGE5MjBkNWQwYjhiYzFkNTI0MGNmYTU4MWZhYjM3
ZmFiNWM3ZDRiYi4uYmNmMTM5YzBiZWU5MGM4YjAzY2U4MmQxOTQwNzI4MzEwOWUxM2U4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0yNCAgVmlu
Y2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBvaW50ZXIgTG9j
azogSW1wbGVtZW50IHBvaW50ZXIgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2MgorCisgICAgICAgIEFkZCBjYWxscyB0byB0aGUg
UG9pbnRlckxvY2tDb250cm9sbGVyIGFkZGVkIGluIHRoaXMgcGF0Y2ggdG8gV2ViQ29yZS4KKwor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkaWRBY3F1aXJlUG9p
bnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZGlkTm90QWNxdWlyZVBv
aW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZExvc2VQb2ludGVy
TG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwb2ludGVyTG9ja01vdXNlRXZl
bnQpOgorCiAyMDEyLTAxLTI1ICBHcmVnIEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgog
CiAgICAgICAgIEFkZCBJbnRlbnRSZXF1ZXN0IGluY2x1ZGUgZm9yIEZyYW1lTG9hZGVyQ2xpZW50
SW1wbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjNDJjZWIyYjBjZTZiMDk0ZDFkYmQyYmI3YzBmNjY0
MjRjYzVmYmQzLi5iYjk4ODNkYTZhZWZiNTFlM2NmNTVlZThkZGNiNmE3MTNiZmE1OTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yNjQ3LDYgKzI2NDcsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuaCcsCiAgICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9jay5jcHAnLAog
ICAgICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2suaCcsCisgICAgICAgICAgICAncGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrQ29u
dHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL1ByaW50Q29udGV4dC5jcHAnLAogICAgICAg
ICAgICAgJ3BhZ2UvU2NyZWVuLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBkYTE4YjI5NTFiYTdkNDkzNTRkNGVhNzI5ODNmZjRi
OTZjMTNjOTk4Li42NDY0ZDhjMTAwZDFhNzRjNzFkZmFiMDViYTg1MjY4NmIyNGU0YmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTE5Nyw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgXAogICAgIG1hY3JvKHNob3cpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0cG9p
bnRlcmxvY2tsb3N0KSBcCisgICAgXAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9F
QUNICiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDk4MmE3Y2QxNWQ1ZDM4ZDky
MjVkYzFiNmJmMTIxMWZkNzM4MThhYWYuLjQ4NjYyNWE5OGQyMGUxYzAzZDUxNWViMjI0NDJkMzgx
NDJmODEzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI4LDYgKzMyOCwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdJbWFnZUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJM
b2NrKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQb2lu
dGVyVW5sb2NrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKSB7
IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1
YWwgfkNocm9tZUNsaWVudCgpIHsgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAK
aW5kZXggYzM1ZTk5NDk2MWM1MGE4MWFiYjhjMDA4NDNkODJlYzQzNjE2MWRlNC4uYjM5NGNkOGQx
YWI5YmVkMjQ4OWE3ZWUyNGRjOTk4ZjQyMzBiZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcApAQCAtMTYxLDggKzE2MSw4IEBAIEdlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0
aW9uKCkgY29uc3QKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogUG9pbnRlckxvY2sqIE5hdmln
YXRvcjo6d2Via2l0UG9pbnRlcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvaW50ZXIpCi0gICAg
ICAgIG1fcG9pbnRlciA9IFBvaW50ZXJMb2NrOjpjcmVhdGUoKTsKKyAgICBpZiAoIW1fcG9pbnRl
ciAmJiBtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgbV9wb2ludGVyID0gUG9p
bnRlckxvY2s6OmNyZWF0ZShtX2ZyYW1lKTsKICAgICByZXR1cm4gbV9wb2ludGVyLmdldCgpOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwYzZmZjU1YmExMjRjODliZmE4OThjMmUw
YTk3NTVhZTFlMzdkNzNhLi4xMGM1OTI0ZWY2MTMwNGZmNjQ0NjdmMTYwYWRmZTdmZGEzNTk5MmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJQbHVnaW5E
YXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNl
LmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jl
c3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCkBAIC0xNDYsNiArMTQ3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNs
aWVudHMpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNhdGlvbkNv
bnRyb2xsZXIoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKHRoaXMsIHBhZ2VDbGllbnRz
Lm5vdGlmaWNhdGlvbkNsaWVudCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoUG9pbnRlckxvY2tDb250cm9sbGVyOjpjcmVh
dGUodGhpcykpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVl
Y2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCBlZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4MzcyNjFlNjI5Nzg0ZTFhZThlLi5h
YzljNTc4ZjgxOWI0NjQ5N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm90aWZpY2F0
aW9uUHJlc2VudGVyOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRh
OworICAgIGNsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlcjsKICAgICBjbGFzcyBQcm9ncmVzc1Ry
YWNrZXI7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVuZGVyVGhlbWU7CkBAIC0xOTAs
NiArMTkxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQogICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKiBub3RpZmljYXRpb25Db250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5k
aWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICBQb2ludGVyTG9ja0NvbnRyb2xs
ZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlckxvY2tD
b250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAg
ICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAtMzg2LDYgKzM5MCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAg
ICAgT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90aWZpY2F0aW9uQ29udHJvbGxl
cjsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAgIE93blB0cjxQb2lu
dGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRlckxvY2tDb250cm9sbGVyOworI2VuZGlmCiAjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fc3BlZWNo
SW5wdXRDbGllbnQ7CiAgICAgICAgIE93blB0cjxTcGVlY2hJbnB1dD4gbV9zcGVlY2hJbnB1dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKaW5kZXggZGZiM2NiNDlhMDljODkwMjgxYjkw
NjgyZmI4NWNkODQxYTZlY2E5MS4uNzIzMTFlMGYyYzZiOTQ0YzEwM2NkMDUxNjZkY2EwYWNlNDRm
NmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKQEAgLTI1LDMyICsyNSw0OCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrLmgiCiAKKyNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0Nv
bnRyb2xsZXIuaCIKKwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJMb2NrOjpQb2ludGVy
TG9jayhGcmFtZSogZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKKyAgICAs
IG1fY29udHJvbGxlcigwKQogeworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBtX2NvbnRyb2xs
ZXIgPSBmcmFtZS0+cGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKTsKIH0KIAogUG9pbnRl
ckxvY2s6On5Qb2ludGVyTG9jaygpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRyb2xsZXIpOworfQor
Cit2b2lkIFBvaW50ZXJMb2NrOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIERPTVdpbmRvd1By
b3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKTsKKyAgICBtX2NvbnRyb2xsZXIgPSAwOwogfQogCiB2
b2lkIFBvaW50ZXJMb2NrOjpsb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVD
YWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgaWYgKG1fY29udHJvbGxl
cikKKyAgICAgICAgbV9jb250cm9sbGVyLT5yZXF1ZXN0UG9pbnRlckxvY2sodGFyZ2V0LCBzdWNj
ZXNzQ2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjayk7CiB9CiAKIHZvaWQgUG9pbnRlckxvY2s6OnVu
bG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIGlmIChtX2NvbnRyb2xsZXIp
CisgICAgICAgIG1fY29udHJvbGxlci0+cmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKIH0KIAogYm9v
bCBQb2ludGVyTG9jazo6aXNMb2NrZWQoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY29udHJvbGxlciAmJiBtX2NvbnRyb2xsZXIt
PmlzTG9ja2VkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9p
bnRlckxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaAppbmRleCBiZTdj
MzE3OGY1OGZlNzk5YzYxMWNmMDYxY2NkZWRlOTMyYmFkYjAzLi4yNDBkNzlhYzhkMWNiN2FkMTY5
NTM5MWJiYTg5MWY4ODJiMDM4ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bv
aW50ZXJMb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogCisjaW5jbHVkZSAiRE9N
V2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNCwxOSAr
MzUsMjYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEZy
YW1lOworY2xhc3MgUG9pbnRlckxvY2tDb250cm9sbGVyOwogCi1jbGFzcyBQb2ludGVyTG9jayA6
IHB1YmxpYyBSZWZDb3VudGVkPFBvaW50ZXJMb2NrPiB7CitjbGFzcyBQb2ludGVyTG9jayA6IHB1
YmxpYyBSZWZDb3VudGVkPFBvaW50ZXJMb2NrPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb2ludGVyTG9jaz4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50ZXJMb2NrKCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UG9pbnRlckxvY2s+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQb2ludGVyTG9jayhmcmFtZSkpOyB9CiAKICAgICB+UG9pbnRlckxvY2soKTsKIAorICAgIC8v
IERPTVdpbmRvd1Byb3BlcnR5IEludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0
RnJhbWUoKSBPVkVSUklERTsKKwogICAgIHZvaWQgbG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBmYWlsdXJlQ2FsbGJhY2spOwogICAgIHZvaWQgdW5sb2NrKCk7CiAgICAgYm9vbCBpc0xv
Y2tlZCgpOwogCiBwcml2YXRlOgotICAgIFBvaW50ZXJMb2NrKCk7CisgICAgZXhwbGljaXQgUG9p
bnRlckxvY2soRnJhbWUqKTsKKworICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciogbV9jb250cm9s
bGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ZmQ3NTc2MjYzZDJjNzdk
NGIwMWFiMzRmZWQ3YmZlNmE2MzM2YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRy
b2xsZXIuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1BvaW50ZXJMb2NrQ29udHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9s
bGVyKFBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKK3sKK30KKworUGFzc093blB0cjxQ
b2ludGVyTG9ja0NvbnRyb2xsZXI+IFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6Y3JlYXRlKFBhZ2Uq
IHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQb2ludGVyTG9ja0NvbnRyb2xsZXIo
cGFnZSkpOworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJM
b2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjaykKK3sKKyAgICBp
ZiAoaXNMb2NrZWQoKSkgeworICAgICAgICBpZiAobV9lbGVtZW50ID09IHRhcmdldCkgeworICAg
ICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBzdWNjZXNzQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkaWRM
b3NlUG9pbnRlckxvY2soKTsKKyAgICAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKKyAgICAg
ICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxi
YWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChtX3BhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+cmVxdWVzdFBvaW50ZXJMb2NrKCkpIHsKKyAgICAgICAgbV9lbGVt
ZW50ID0gdGFyZ2V0OworICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFj
azsKKyAgICAgICAgbV9mYWlsdXJlQ2FsbGJhY2sgPSBmYWlsdXJlQ2FsbGJhY2s7CisgICAgfSBl
bHNlIGlmIChmYWlsdXJlQ2FsbGJhY2spCisgICAgICAgIGZhaWx1cmVDYWxsYmFjay0+aGFuZGxl
RXZlbnQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2ludGVy
VW5sb2NrKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnJlcXVl
c3RQb2ludGVyVW5sb2NrKCk7Cit9CisKK2Jvb2wgUG9pbnRlckxvY2tDb250cm9sbGVyOjppc0xv
Y2tlZCgpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5pc1BvaW50
ZXJMb2NrZWQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZEFjcXVpcmVQ
b2ludGVyTG9jaygpCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnRUb05vdGlmeShtX2Vs
ZW1lbnQpOworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrVG9Jc3N1ZShtX3N1Y2Nl
c3NDYWxsYmFjayk7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSAwOworICAgIG1fZmFpbHVyZUNh
bGxiYWNrID0gMDsKKworICAgIGlmIChjYWxsYmFja1RvSXNzdWUgJiYgZWxlbWVudFRvTm90aWZ5
ICYmIGVsZW1lbnRUb05vdGlmeS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgY2FsbGJh
Y2tUb0lzc3VlLT5oYW5kbGVFdmVudCgpOworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKK3sKKyAgICBSZWZQdHI8RWxlbWVudD4gZWxl
bWVudFRvTm90aWZ5KG1fZWxlbWVudCk7CisgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJh
Y2tUb0lzc3VlKG1fZmFpbHVyZUNhbGxiYWNrKTsKKyAgICBtX2VsZW1lbnQgPSAwOworICAgIG1f
c3VjY2Vzc0NhbGxiYWNrID0gMDsKKyAgICBtX2ZhaWx1cmVDYWxsYmFjayA9IDA7CisKKyAgICBp
ZiAoY2FsbGJhY2tUb0lzc3VlICYmIGVsZW1lbnRUb05vdGlmeSAmJiBlbGVtZW50VG9Ob3RpZnkt
PmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIGNhbGxiYWNrVG9Jc3N1ZS0+aGFuZGxlRXZl
bnQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9j
aygpCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnRUb05vdGlmeShtX2VsZW1lbnQpOwor
ICAgIG1fZWxlbWVudCA9IDA7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSAwOworICAgIG1fZmFp
bHVyZUNhbGxiYWNrID0gMDsKKyAgICBpZiAoZWxlbWVudFRvTm90aWZ5ICYmIGVsZW1lbnRUb05v
dGlmeS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgZWxlbWVudFRvTm90aWZ5LT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrbG9z
dEV2ZW50LCB0cnVlLCBmYWxzZSkpOworfQorCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6
ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQs
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQoreworICAgIGlmICghbV9lbGVtZW50IHx8
ICFtX2VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZWxlbWVudC0+ZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50LCBldmVudFR5cGUsIGV2ZW50LmNs
aWNrQ291bnQoKSk7CisKKyAgICAvLyBDcmVhdGUgY2xpY2sgZXZlbnRzCisgICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2ZW50KQorICAgICAgICBtX2VsZW1lbnQtPmRp
c3BhdGNoTW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGV2ZW50LmNs
aWNrQ291bnQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50
ZXJMb2NrQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRy
b2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hNjkzNGQ1NmJkNjgyZjJmOTEyNjg0YWFjZjliZWZmNDc5Y2Iy
NmFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0Nv
bnRyb2xsZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBvaW50
ZXJMb2NrQ29udHJvbGxlcl9oCisjZGVmaW5lIFBvaW50ZXJMb2NrQ29udHJvbGxlcl9oCisKKyNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBQYWdlOworY2xh
c3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworCitjbGFzcyBQb2ludGVyTG9ja0NvbnRyb2xsZXIgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJMb2NrQ29udHJvbGxlcik7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8UG9p
bnRlckxvY2tDb250cm9sbGVyPiBjcmVhdGUoUGFnZSopOworCisgICAgdm9pZCByZXF1ZXN0UG9p
bnRlckxvY2soRWxlbWVudCogdGFyZ2V0LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gZmFpbHVyZUNhbGxiYWNrKTsKKyAg
ICB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisgICAgYm9vbCBpc0xvY2tlZCgpOworCisg
ICAgdm9pZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAgICB2b2lkIGRpZE5vdEFjcXVpcmVQ
b2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTG9zZVBvaW50ZXJMb2NrKCk7CisgICAgdm9pZCBk
aXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFBvaW50
ZXJMb2NrQ29udHJvbGxlcihQYWdlKik7CisgICAgUGFnZSogbV9wYWdlOworICAgIFJlZlB0cjxF
bGVtZW50PiBtX2VsZW1lbnQ7CisgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbV9zdWNjZXNzQ2Fs
bGJhY2s7CisgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbV9mYWlsdXJlQ2FsbGJhY2s7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NL
KQorCisjZW5kaWYgLy8gUG9pbnRlckxvY2tDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA2NmE4YTlkOWMwYTYyN2M3Y2JkMTFmZTQ3
YWNiOTMxMjk4ZjdlNmIwLi5iNmI2YzZmMzFhNjY4ODcxNzFlMTJjMzI0M2Y2NzgzYTI2NTU5ODZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC04OSw2
ICs4OSw4IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKKyNpbmNsdWRlICJQb2ludGVyTG9jay5oIgorI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlBvcHVwQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51
Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCkBAIC0xNzUwLDE3ICsxNzUy
LDI2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgp
IGNvbnN0CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCiB7Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2NrQ29udHJvbGxlciBsYW5kcy4K
KyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlKCkpCisgICAgICAgIHBhZ2Uo
KS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZEFjcXVpcmVQb2ludGVyTG9jaygpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCiB7
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2NrQ29udHJvbGxlciBsYW5k
cy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlKCkpCisgICAgICAgIHBh
Z2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygp
OworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZExvc2VQb2ludGVyTG9jaygpCiB7
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2NrQ29udHJvbGxlciBsYW5k
cy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChwYWdlKCkpCisgICAgICAgIHBh
Z2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZExvc2VQb2ludGVyTG9jaygpOworI2Vu
ZGlmCiB9CiAKIC8vIFdlYlZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyMDksNyArMzIyMCwyNyBAQCBi
b29sIFdlYlZpZXdJbXBsOjppc1BvaW50ZXJMb2NrZWQoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjpw
b2ludGVyTG9ja01vdXNlRXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCiB7Ci0gICAg
Ly8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2NrQ29udHJvbGxlciBsYW5kcy4KKyAg
ICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlOworICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgeworICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VEb3duOgorICAgICAgICBldmVudFR5cGUgPSBldmVu
dE5hbWVzKCkubW91c2Vkb3duRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6TW91c2VVcDoKKyAgICAgICAgZXZlbnRUeXBlID0gZXZlbnROYW1lcygpLm1vdXNl
dXBFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1v
dmU6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudDsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCA9IHN0YXRpY19j
YXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPihldmVudCk7CisKKyAgICBpZiAocGFnZSgpKQorICAg
ICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigpLT5kaXNwYXRjaExvY2tlZE1vdXNl
RXZlbnQoCisgICAgICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWVWaWV3KCksIG1vdXNlRXZlbnQpLAorICAgICAgICAgICAgZXZlbnRUeXBlKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWVlNmI1YzgyYWRiYWEzOTllNzEwNTc1ZjYzZWNhYjQ0NWI3
OWZlMy4uODNlMzJiYTRhNWIyMjk3MmE5N2EzOTc2Y2UyZTMyZmZkMjY3MjhhNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDEyLTAxLTI0ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2NrOiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwb2lu
dGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVzcG9uc2VzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMuaHRtbDogQWRkZWQu
CisgICAgICAgICogcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2ts
b3N0LWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTI1ICBMZXZpIFdlaW50cmF1YiAgPGxl
dml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBMYXlvdXQgVGVzdCBmYXN0L2pzL2RmZy11aW50
MzJhcnJheS1vdmVyZmxvdy12YWx1ZXMuaHRtbCBpcyBzbG93IG9uIENocm9taXVtIERlYnVnIGJv
dHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9j
a2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHkt
bG9ja2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjEzYWNhOGFiYjQ5MzdmZmM3NDQ4ODY4
NzVhMjZiYmUyOTQwODg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1s
b2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Rl
c3QgY2FsbGluZyBsb2NrIHdoZW4gYWxyZWFkeSBpbiBhIGxvY2tlZCBzdGF0ZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNM
b2NrZWQgaXMgZmFsc2UKK1BBU1MgTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4KK1BBU1MgbmF2aWdh
dG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorUEFTUyBMb2NrIHRhcmdldDEgc3Vj
Y2VlZGVkIGFnYWluLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0
cnVlCitQQVNTIGV4cGVjdFRhcmdldDFVbmxvY2sgaXMgdHJ1ZQorUEFTUyBMb2NrIHRhcmdldDIg
c3VjY2VlZGVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQuaHRt
bCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmEyOGU4OGVkZjE1ZTc1OGJjM2ZlZmQyMmM0YWMwZjk0M2I4MGUzOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2Vk
Lmh0bWwKQEAgLTAsMCArMSw3NiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+Cisg
IDxkaXYgaWQ9InRhcmdldDIiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0
aW9uKCJUZXN0IGNhbGxpbmcgbG9jayB3aGVuIGFscmVhZHkgaW4gYSBsb2NrZWQgc3RhdGUuIikK
KyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB0YXJnZXRkaXYxID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDEiKTsKKyAgICB0YXJnZXRkaXYyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDIiKTsKKworICAgIHZhciBleHBlY3RUYXJnZXQxVW5s
b2NrID0gZmFsc2U7CisgICAgdGFyZ2V0ZGl2MS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2lu
dGVybG9ja2xvc3QiLAorICAgICAgICBmdW5jdGlvbiAoKSB7IHNob3VsZEJlKCJleHBlY3RUYXJn
ZXQxVW5sb2NrIiwgInRydWUiKTsgfSk7CisKKyAgICB0YXJnZXRkaXYyLmFkZEV2ZW50TGlzdGVu
ZXIoIndlYmtpdHBvaW50ZXJsb2NrbG9zdCIsCisgICAgICAgIGZ1bmN0aW9uICgpIHsgdGVzdEZh
aWxlZCgiVW5leHBlY3RlZCB0YXJnZXRkaXYyIHBvaW50ZXJsb2NrbG9zdC4iKTsgfSk7CisKKyAg
ICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRv
ZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9kbyA9IFsKKyAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlz
TG9ja2VkIiwgImZhbHNlIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5s
b2NrKHRhcmdldGRpdjEsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIHRhcmdldDEgc3VjY2VlZGVkLiIpOworICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQi
LCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJn
ZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZCBhZ2Fpbi4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwg
InRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgfSwKKyAgICAgICAgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgZXhwZWN0VGFyZ2V0MVVubG9jayA9IHRydWU7CisgICAg
ICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdjIsCisgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJM
b2NrIHRhcmdldDIgc3VjY2VlZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgi
bmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAg
ICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFp
bGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAg
IGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNlcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJlOWEyZGE4ZDY1MWQxOGY3OTBlNGRmNGM5YmYxZDBmZTI3
NDg1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZh
aWwtcmVzcG9uc2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0IGFzeW5jaHJv
bm91cyByZXN1bHRzIG9mIGNhbGxpbmcgbG9jay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1Mgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIGlzIGRlZmluZWQuCitQQVNT
IExvY2sgZmFpbGVkIChhZnRlciB3ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9p
bnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpCitQQVNTIExvY2sgZmFpbGVkIChhZnRlciB3
ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5j
aHJvbm91c2x5KQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVz
cG9uc2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3BvbnNl
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU1NjdkNjVkYmU0NjhhM2NiOWEwMzFhMGJmM2M4NTFjZjI4NWJj
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWls
LXJlc3BvbnNlcy5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24o
IlRlc3QgYXN5bmNocm9ub3VzIHJlc3VsdHMgb2YgY2FsbGluZyBsb2NrLiIpCisgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyIik7CisKKyAgICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24g
ZG9OZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAg
dG9kbyA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAg
ICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2soZG9jdW1lbnQuYm9keSwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxv
Y2sgc3VjY2VlZGVkIHVuZXhwZWN0ZWRseS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgZmFpbGVkIChhZnRlciB3
ZSBjYWxsZWQgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNo
cm9ub3VzbHkpIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91
c2x5KCk7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKGRvY3VtZW50
LmJvZHksCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NrIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkuIik7CisgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2Nr
IGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJM
b2NrV2lsbEZhaWxBc3luY2hyb25vdXNseSkiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0
U3RlcCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmaW5pc2hK
U1Rlc3QKKyAgICBdOworICAgIGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZl
bnQtYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91c2UtZXZlbnQtYXBpLmh0
bWwKaW5kZXggZWZiNDEyMWQ1MmI3MDhmOWU3MDQzOGJjNTRjY2ZlNjRjNDZiOTAyZC4uMmZlZWYz
YWQzNDIzZjAyZjM0NGRkNmExNDNiNDFmYmRjZmNjNzc5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL3Bv
aW50ZXItbG9jay9tb3VzZS1ldmVudC1hcGkuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzwhRE9DVFlQRSBIVE1MPgog
PGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2sv
bW91c2UtZXZlbnQtZGVsaXZlcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1s
b2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzk3YzI3
ZTVmOTkxMDAxODNiYjM4ZmU0MGUyNTQyZDEyZDZjYmUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDM0IEBACitUZXN0IG1vdXNlIGV2ZW50cyBhcmUgcm91dGVkIHRvIGxvY2sgdGFy
Z2V0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3aW5kb3cuZXZlbnRT
ZW5kZXIgaXMgZGVmaW5lZC4KK1BBU1MgTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4KK1dpdGggYSBs
b2NrIGluIHBsYWNlIHNlbmQgYSBjbGljay4KK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0
YXJnZXQ6IHRhcmdldDEsIHJlY2VpdmVkIG9uOiB0YXJnZXQxCitQQVNTIGV2ZW50IHR5cGU6IG1v
dXNlZG93biwgdGFyZ2V0OiB0YXJnZXQxLCByZWNlaXZlZCBvbjogYm9keQorUEFTUyBMb2NrIHRh
cmdldDIgc3VjY2VlZGVkLgorV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLgorUEFT
UyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRh
cmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2Vp
dmVkIG9uOiBib2R5CitFbnN1cmUgZG91YmxlIGNsaWNrcyB3b3JrIGFzIGV4cGVjdGVkLCBzZW5k
aW5nIDQgY2xpY2tzLgorQ3JlYXRpbmcgYSBjbGljayBhbmQgZGJsY2xpY2suCitQQVNTIGV2ZW50
IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0Mgor
UEFTUyBldmVudCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0
YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVk
IG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQy
LCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6
IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0
YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGRi
bGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitFbnN1cmluZyBu
byBmYWxzZSBkYmxjbGlja3MgaWYgd2UgY29udGludWUuCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNl
ZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0
eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNT
IGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQy
CitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBv
bjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZXVwLCB0YXJnZXQ6IHRhcmdldDIsIHJl
Y2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIGV2ZW50IHR5cGU6IGNsaWNrLCB0YXJnZXQ6IHRhcmdl
dDIsIHJlY2VpdmVkIG9uOiB0YXJnZXQyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2Nr
L21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2I0ZTI4ODEwODZhY2NmYmUyZGQ0
MjhjOWRmNWI5ZTdhMmJmMTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRl
ci1sb2NrL21vdXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9D
VFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+
Cis8ZGl2PgorICA8ZGl2IGlkPSJ0YXJnZXQxIj48L2Rpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MiI+
PC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgbW91c2UgZXZl
bnRzIGFyZSByb3V0ZWQgdG8gbG9jayB0YXJnZXQuIikKKyAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cuZXZlbnRTZW5kZXIiKTsKKwor
ICAgIHRhcmdldGRpdjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MSIpOworICAg
IHRhcmdldGRpdjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0MiIpOworCisgICAg
ZnVuY3Rpb24gZXZlbnROb3RFeHBlY3RlZChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlVuZXhw
ZWN0ZWQgZXZlbnQgIiArIGUudHlwZSArICIgb24gIiArIGUuY3VycmVudFRhcmdldC5pZCk7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICBmdW5jdGlvbiBldmVudEV4cGVjdGVk
KGUpIHsKKyAgICAgIHRlc3RQYXNzZWQoImV2ZW50IHR5cGU6ICIgKyBlLnR5cGUgKyAiLCB0YXJn
ZXQ6ICIgKyBlLnRhcmdldC5pZCArICIsIHJlY2VpdmVkIG9uOiAiICsgZS5jdXJyZW50VGFyZ2V0
LmlkKTsKKyAgICB9CisKKyAgICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9OZXh0
U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9kbyA9
IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBv
aW50ZXIubG9jayh0YXJnZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJXaXRoIGEgbG9jayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suIikK
KyAgICAgICAgICAgIHRhcmdldGRpdjEub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAg
ICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IGV2ZW50Tm90RXhwZWN0ZWQ7CisgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5Lm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAg
ICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAg
IHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0g
dW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5l
ZDsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7Cisg
ICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2MiwK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIkxvY2sgdGFyZ2V0MiBzdWNjZWVkZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGRv
TmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiV2l0
aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLiIpCisgICAgICAgICAgICB0YXJnZXRkaXYx
Lm9ubW91c2Vkb3duID0gZXZlbnROb3RFeHBlY3RlZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIu
b25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5v
bm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5k
ZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91
c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAg
ICAgICAgICAgdGFyZ2V0ZGl2MS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
IHRhcmdldGRpdjIub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBkb2N1bWVu
dC5ib2R5Lm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9OZXh0U3RlcCgp
OworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1Zygi
RW5zdXJlIGRvdWJsZSBjbGlja3Mgd29yayBhcyBleHBlY3RlZCwgc2VuZGluZyA0IGNsaWNrcy4i
KQorICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7Cisg
ICAgICAgICAgICB0YXJnZXRkaXYyLm9ubW91c2V1cCA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAg
ICAgICB0YXJnZXRkaXYyLm9uY2xpY2sgPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgdGFy
Z2V0ZGl2Mi5vbmRibGNsaWNrID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIGRlYnVnKCJD
cmVhdGluZyBhIGNsaWNrIGFuZCBkYmxjbGljay4iKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVu
dFNlbmRlci5sZWFwRm9yd2FyZCgxMDAwKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNlbmRlci5tb3VzZVVwKCk7
CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAg
ICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgZGVidWcoIkVuc3Vy
aW5nIG5vIGZhbHNlIGRibGNsaWNrcyBpZiB3ZSBjb250aW51ZS4iKTsKKyAgICAgICAgICAgIHdp
bmRvdy5ldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIHdpbmRvdy5ldmVudFNl
bmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICAg
ICAgdGFyZ2V0ZGl2Mi5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdl
dGRpdjIub25tb3VzZXVwID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmNs
aWNrID0gdW5kZWZpbmVkOworICAgICAgICAgICAgdGFyZ2V0ZGl2Mi5vbmRibGNsaWNrID0gdW5k
ZWZpbmVkOworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBm
aW5pc2hKU1Rlc3QKKyAgICBdOworICAgIGRvTmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9p
bnRlci1sb2NrLWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9j
ay1hcGkuaHRtbAppbmRleCAzMThiOTkwZmEyNTczNDVmODFmMGZkZGEyODJhMjMxMjU1OTc0ZjEw
Li44ZGQ0MWE1NzE2MmU1YWI3NTVkYzA2NGViMWYxMWNmNDE0NDBjYWJkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS5odG1sCisrKyBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLmh0bWwKQEAgLTEsNCArMSw0IEBA
Ci08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZ
UEUgSFRNTD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9p
bnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hODMyNDAwZWExMTg4OTM1MDMwOWZiNDI5ODgzYWJkYjUyZGZhZjQyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGVzdCB0aGF0IHBvaW50ZXJsb2NrbG9zdCBl
dmVudCBpcyBkaXNwYXRjaGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgaXMgZGVmaW5lZC4KK1BBU1MgbmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQorSmF2YVNjcmlwdCBpbml0aWF0ZWQgdW5s
b2NrLgorUEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxsIDAKK1BBU1Mgd2Vi
a2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAxCitQQVNTIEFsbCBleHBlY3RlZCB3ZWJr
aXRwb2ludGVybG9ja2xvc3QgZXZlbnRzIHJlY2VpdmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0
UG9pbnRlci5pc0xvY2tlZCBpcyBmYWxzZQorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5p
c0xvY2tlZCBpcyB0cnVlCitIb3N0IGluaXRpYXRlZCB1bmxvY2suCitQQVNTIHdlYmtpdHBvaW50
ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMAorUEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFu
ZGxlciBjYWxsIDEKK1BBU1MgQWxsIGV4cGVjdGVkIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBldmVu
dHMgcmVjZWl2ZWQuCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIGZh
bHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM4N2NjZTJjNWY3NTNjZmU5NzUwYTQ3NzE1MmU4MWMxZTY5NTJkN2IK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2ts
b3N0LWV2ZW50Lmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0Ij48
L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHBvaW50
ZXJsb2NrbG9zdCBldmVudCBpcyBkaXNwYXRjaGVkLiIpCisgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyIik7CisKKyAgICB0YXJnZXRkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0
Iik7CisKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xv
c3QiLCBsb2NrbG9zdEhhbmRsZXIpOworICAgIHRhcmdldGRpdi5hZGRFdmVudExpc3RlbmVyKCJ3
ZWJraXRwb2ludGVybG9ja2xvc3QiLCBsb2NrbG9zdEhhbmRsZXIpOworICAgIGxvY2tsb3N0aGFu
ZGxlcnMgPSAyOworCisgICAgbG9ja2xvc3RyZWNlaXB0cyA9IDA7CisgICAgZnVuY3Rpb24gbG9j
a2xvc3RIYW5kbGVyKCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJ3ZWJraXRwb2ludGVybG9ja2xv
c3QgaGFuZGxlciBjYWxsICIgKyBsb2NrbG9zdHJlY2VpcHRzKTsKKyAgICAgICAgbG9ja2xvc3Ry
ZWNlaXB0cysrOworICAgICAgICBpZiAobG9ja2xvc3RyZWNlaXB0cyA9PSBsb2NrbG9zdGhhbmRs
ZXJzKSB7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgZXhwZWN0ZWQgd2Via2l0cG9pbnRl
cmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4iKTsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5jdGlvbiBk
b05leHRTdGVwKCkgeworICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOworICAgIH0KKyAgICB0
b2RvID0gWworICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Vi
a2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdiwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5p
c0xvY2tlZCIsICJ0cnVlIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBkZWJ1ZygiSmF2YVNjcmlwdCBpbml0aWF0
ZWQgdW5sb2NrLiIpCisgICAgICAgICAgICBsb2NrbG9zdHJlY2VpcHRzID0gMDsKKyAgICAgICAg
ICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLnVubG9jaygpOworICAgICAgICB9LAorICAgICAg
ICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAvLyBsb2NrbG9zdEhhbmRsZXIgd2lsbCBjYXRj
aCB1bmxvY2tzIGFuZCBjYWxsIGRvTmV4dFN0ZXAgdG8gYnJpbmcgdXMgaGVyZS4KKyAgICAgICAg
ICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIp
OworICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRp
diwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJ0cnVlIik7CisgICAg
ICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
TG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBkZWJ1ZygiSG9zdCBpbml0aWF0ZWQgdW5sb2NrLiIpCisgICAgICAgICAgICBsb2Nr
bG9zdHJlY2VpcHRzID0gMDsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpZExv
c2VQb2ludGVyTG9jaygpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAvLyBsb2NrbG9zdEhhbmRsZXIgd2lsbCBjYXRjaCB1bmxvY2tzIGFuZCBjYWxsIGRv
TmV4dFN0ZXAgdG8gYnJpbmcgdXMgaGVyZS4KKyAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0
b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgZG9OZXh0
U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmaW5pc2hKU1Rlc3QKKyAgICBdOworICAgIGRv
TmV4dFN0ZXAoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>
<flag name="review"
          id="125406"
          type_id="1"
          status="+"
          setter="jchaffraix"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124337</attachid>
            <date>2012-01-27 10:57:50 -0800</date>
            <delta_ts>2012-01-27 10:57:50 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-75762-20120127105749.patch</filename>
            <type>text/plain</type>
            <size>39262</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVhNmRkMzhjMzRmYmYz
MDI0MDA2NGJiNWRhZTM5Y2NmZWU3ZTdjOS4uZDcyNjMzN2FlMzNlMmY0ODk1NDZiMjQwOThhYjg1
Nzg2OTY1MzVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTAxLTI0ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2Nr
OiBJbXBsZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuYXZpZ2F0b3IucG9pbnRlciBpbnRl
cmZhY2UgdmlhIGEgbmV3CisgICAgICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciBjbGFzcywgYXMg
cGVyCisgICAgICAgIGh0dHA6Ly9kdmNzLnczLm9yZy9oZy93ZWJldmVudHMvcmF3LWZpbGUvZGVm
YXVsdC9tb3VzZS1sb2NrLmh0bWwuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGJl
aW5nIG1hZGUgaW4gc3RlcHMsIHRoZSBmZWF0dXJlIGlzIHN0aWxsIGJlaGluZAorICAgICAgICBj
b21waWxlLXRpbWUgYW5kIHJ1bi10aW1lIGZsYWdzLCAnd2Via2l0JyBwcmVmaXhlZCwgYW5kIG5v
dCB5ZXQgZW5hYmxlZAorICAgICAgICBpbiBhbnkgYnJvd3Nlci4gKENocm9taXVtIGhhcyBhIGRl
dmVsb3BlciBmbGFnIHJlcXVpcmVkLikgRm9sbG93LXVwCisgICAgICAgIHdvcmsgd2lsbCBpbmNs
dWRlIGhhbmRsaW5nIERPTSBlbGVtZW50cyBiZWluZyByZW1vdmVkLCBtYWtpbmcgYWxsCisgICAg
ICAgIGNhbGxiYWNrcyBhc3luY2hyb25vdXMsIGlmcmFtZSBwZXJtaXNzaW9ucyAoc2ltaWxhciB0
byBGdWxsIFNjcmVlbiksCisgICAgICAgIGV0Yy4KKworICAgICAgICBQb2ludGVyTG9ja0NvbnRy
b2xsZXIgbWFpbnRhaW5zIHN0YXRlIG9mIHdoaWNoIEVsZW1lbnQgaXMgdGhlIGN1cnJlbnQKKyAg
ICAgICAgbG9jayB0YXJnZXQgYW5kIHRoZSBzdWNjZXNzIGFuZCBmYWlsdXJlIGNhbGxiYWNrcy4g
Q2hyb21lQ2xpZW50IGhhcworICAgICAgICBtZXRob2RzIGFkZGVkIHRvIGV4cG9zZSB0aGUgcmVx
dWlyZWQgc3RhdGUgY2hhbmdlIHJlcXVlc3RzLgorCisgICAgICAgIFRlc3RzOiBwb2ludGVyLWxv
Y2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2sv
bG9jay1mYWlsLXJlc3BvbnNlcy5odG1sCisgICAgICAgICAgICAgICBwb2ludGVyLWxvY2svbW91
c2UtZXZlbnQtZGVsaXZlcnkuaHRtbAorICAgICAgICAgICAgICAgcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlckxvY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpyZXF1ZXN0UG9pbnRlclVubG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmlzUG9pbnRlckxvY2tlZCk6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRQb2lu
dGVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
b2ludGVyTG9ja0NvbnRyb2xsZXIpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBvaW50ZXJMb2NrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxv
Y2s6OmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2s6OnVubG9jayk6CisgICAg
ICAgIChXZWJDb3JlOjpQb2ludGVyTG9jazo6aXNMb2NrZWQpOgorICAgICAgICAqIHBhZ2UvUG9p
bnRlckxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrOjpjcmVhdGUpOgorICAg
ICAgICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OlBvaW50ZXJMb2NrQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2ludGVyTG9j
ayk6CisgICAgICAgIChXZWJDb3JlOjpQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVlc3RQb2lu
dGVyVW5sb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6aXNM
b2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWRBY3F1
aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxvY2tDb250cm9sbGVy
OjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9pbnRlckxv
Y2tDb250cm9sbGVyOjpkaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9p
bnRlckxvY2tDb250cm9sbGVyOjpkaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9pbnRlckxvY2suaC4KKwogMjAxMi0wMS0yNyAgQWJoaXNoZWsgQXJ5YSAgPGluZmVy
bm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNoIGluIERvY3VtZW50TG9hZGVyOjpkZXRh
Y2hGcm9tRnJhbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDk1ZTIxNDI5NzI5NWNi
NzE2YTI2ODA5NDBkNDI4NzZjODMwMjFmN2EuLmNiZWNjMGNlMGFiODUxY2E4Yjc3YTVhZjYyOTFh
NjA5ZjZlMDEzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDEtMjQgIFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBQb2ludGVyIExvY2s6IEltcGxlbWVudCBwb2ludGVyIGludGVyZmFjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NjIKKworICAgICAgICBB
ZGQgY2FsbHMgdG8gdGhlIFBvaW50ZXJMb2NrQ29udHJvbGxlciBhZGRlZCBpbiB0aGlzIHBhdGNo
IHRvIFdlYkNvcmUuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jayk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpkaWRMb3NlUG9pbnRlckxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cG9p
bnRlckxvY2tNb3VzZUV2ZW50KToKKwogMjAxMi0wMS0yNiAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBDbGVhbnVwIG9mIFdlYlBvcHVwTWVu
dUltcGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjNDJjZWIyYjBjZTZiMDk0ZDFkYmQyYmI3YzBmNjY0
MjRjYzVmYmQzLi5iYjk4ODNkYTZhZWZiNTFlM2NmNTVlZThkZGNiNmE3MTNiZmE1OTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yNjQ3LDYgKzI2NDcsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvUGVy
Zm9ybWFuY2VUaW1pbmcuaCcsCiAgICAgICAgICAgICAncGFnZS9Qb2ludGVyTG9jay5jcHAnLAog
ICAgICAgICAgICAgJ3BhZ2UvUG9pbnRlckxvY2suaCcsCisgICAgICAgICAgICAncGFnZS9Qb2lu
dGVyTG9ja0NvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdwYWdlL1BvaW50ZXJMb2NrQ29u
dHJvbGxlci5oJywKICAgICAgICAgICAgICdwYWdlL1ByaW50Q29udGV4dC5jcHAnLAogICAgICAg
ICAgICAgJ3BhZ2UvU2NyZWVuLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCBkYTE4YjI5NTFiYTdkNDkzNTRkNGVhNzI5ODNmZjRi
OTZjMTNjOTk4Li42NDY0ZDhjMTAwZDFhNzRjNzFkZmFiMDViYTg1MjY4NmIyNGU0YmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTE5Nyw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgXAogICAgIG1hY3JvKHNob3cpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0cG9p
bnRlcmxvY2tsb3N0KSBcCisgICAgXAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9F
QUNICiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDk4MmE3Y2QxNWQ1ZDM4ZDky
MjVkYzFiNmJmMTIxMWZkNzM4MThhYWYuLjQ4NjYyNWE5OGQyMGUxYzAzZDUxNWViMjI0NDJkMzgx
NDJmODEzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzI4LDYgKzMyOCwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdJbWFnZUNocm9tZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFBvaW50ZXJM
b2NrKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQb2lu
dGVyVW5sb2NrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKSB7
IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1
YWwgfkNocm9tZUNsaWVudCgpIHsgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAK
aW5kZXggYzM1ZTk5NDk2MWM1MGE4MWFiYjhjMDA4NDNkODJlYzQzNjE2MWRlNC4uYjM5NGNkOGQx
YWI5YmVkMjQ4OWE3ZWUyNGRjOTk4ZjQyMzBiZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcApAQCAtMTYxLDggKzE2MSw4IEBAIEdlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0
aW9uKCkgY29uc3QKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogUG9pbnRlckxvY2sqIE5hdmln
YXRvcjo6d2Via2l0UG9pbnRlcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BvaW50ZXIpCi0gICAg
ICAgIG1fcG9pbnRlciA9IFBvaW50ZXJMb2NrOjpjcmVhdGUoKTsKKyAgICBpZiAoIW1fcG9pbnRl
ciAmJiBtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgbV9wb2ludGVyID0gUG9p
bnRlckxvY2s6OmNyZWF0ZShtX2ZyYW1lKTsKICAgICByZXR1cm4gbV9wb2ludGVyLmdldCgpOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwYzZmZjU1YmExMjRjODliZmE4OThjMmUw
YTk3NTVhZTFlMzdkNzNhLi4xMGM1OTI0ZWY2MTMwNGZmNjQ0NjdmMTYwYWRmZTdmZGEzNTk5MmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJQbHVnaW5E
YXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNl
LmgiCisjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jl
c3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCkBAIC0xNDYsNiArMTQ3LDkgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNs
aWVudHMpCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNhdGlvbkNv
bnRyb2xsZXIoTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6Y3JlYXRlKHRoaXMsIHBhZ2VDbGllbnRz
Lm5vdGlmaWNhdGlvbkNsaWVudCkpCiAjZW5kaWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQor
ICAgICwgbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIoUG9pbnRlckxvY2tDb250cm9sbGVyOjpjcmVh
dGUodGhpcykpCisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVl
Y2hJbnB1dENsaWVudChwYWdlQ2xpZW50cy5zcGVlY2hJbnB1dENsaWVudCkKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCBlZjFkMWQ5ZmMyNzQ0ZDQ1MmY1MTU4MzcyNjFlNjI5Nzg0ZTFhZThlLi5h
YzljNTc4ZjgxOWI0NjQ5N2JiMmM1Y2QzYmVmMjg3MzE2ZmI4OTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtNzYsNiArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm90aWZpY2F0
aW9uUHJlc2VudGVyOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKICAgICBjbGFzcyBQbHVnaW5EYXRh
OworICAgIGNsYXNzIFBvaW50ZXJMb2NrQ29udHJvbGxlcjsKICAgICBjbGFzcyBQcm9ncmVzc1Ry
YWNrZXI7CiAgICAgY2xhc3MgUmFuZ2U7CiAgICAgY2xhc3MgUmVuZGVyVGhlbWU7CkBAIC0xOTAs
NiArMTkxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQogICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyKiBub3RpZmljYXRpb25Db250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25Db250cm9sbGVyLmdldCgpOyB9CiAjZW5k
aWYKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgICAgICBQb2ludGVyTG9ja0NvbnRyb2xs
ZXIqIHBvaW50ZXJMb2NrQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlckxvY2tD
b250cm9sbGVyLmdldCgpOyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAg
ICAgICBTcGVlY2hJbnB1dCogc3BlZWNoSW5wdXQoKTsKICNlbmRpZgpAQCAtMzg2LDYgKzM5MCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICAg
ICAgT3duUHRyPE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI+IG1fbm90aWZpY2F0aW9uQ29udHJvbGxl
cjsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgICAgIE93blB0cjxQb2lu
dGVyTG9ja0NvbnRyb2xsZXI+IG1fcG9pbnRlckxvY2tDb250cm9sbGVyOworI2VuZGlmCiAjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAgICAgU3BlZWNoSW5wdXRDbGllbnQqIG1fc3BlZWNo
SW5wdXRDbGllbnQ7CiAgICAgICAgIE93blB0cjxTcGVlY2hJbnB1dD4gbV9zcGVlY2hJbnB1dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKaW5kZXggZGZiM2NiNDlhMDljODkwMjgxYjkw
NjgyZmI4NWNkODQxYTZlY2E5MS4uNzIzMTFlMGYyYzZiOTQ0YzEwM2NkMDUxNjZkY2EwYWNlNDRm
NmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5jcHAKQEAgLTI1LDMyICsyNSw0OCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrLmgiCiAKKyNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0Nv
bnRyb2xsZXIuaCIKKwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUG9pbnRlckxvY2s6OlBvaW50ZXJMb2NrKCkKK1BvaW50ZXJMb2NrOjpQb2ludGVy
TG9jayhGcmFtZSogZnJhbWUpCisgICAgOiBET01XaW5kb3dQcm9wZXJ0eShmcmFtZSkKKyAgICAs
IG1fY29udHJvbGxlcigwKQogeworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBtX2NvbnRyb2xs
ZXIgPSBmcmFtZS0+cGFnZSgpLT5wb2ludGVyTG9ja0NvbnRyb2xsZXIoKTsKIH0KIAogUG9pbnRl
ckxvY2s6On5Qb2ludGVyTG9jaygpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRyb2xsZXIpOworfQor
Cit2b2lkIFBvaW50ZXJMb2NrOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIERPTVdpbmRvd1By
b3BlcnR5OjpkaXNjb25uZWN0RnJhbWUoKTsKKyAgICBtX2NvbnRyb2xsZXIgPSAwOwogfQogCiB2
b2lkIFBvaW50ZXJMb2NrOjpsb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVD
YWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50CisgICAgaWYgKG1fY29udHJvbGxl
cikKKyAgICAgICAgbV9jb250cm9sbGVyLT5yZXF1ZXN0UG9pbnRlckxvY2sodGFyZ2V0LCBzdWNj
ZXNzQ2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjayk7CiB9CiAKIHZvaWQgUG9pbnRlckxvY2s6OnVu
bG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudAorICAgIGlmIChtX2NvbnRyb2xsZXIp
CisgICAgICAgIG1fY29udHJvbGxlci0+cmVxdWVzdFBvaW50ZXJVbmxvY2soKTsKIH0KIAogYm9v
bCBQb2ludGVyTG9jazo6aXNMb2NrZWQoKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY29udHJvbGxlciAmJiBtX2NvbnRyb2xsZXIt
PmlzTG9ja2VkKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9p
bnRlckxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2suaAppbmRleCBiZTdj
MzE3OGY1OGZlNzk5YzYxMWNmMDYxY2NkZWRlOTMyYmFkYjAzLi4yNDBkNzlhYzhkMWNiN2FkMTY5
NTM5MWJiYTg5MWY4ODJiMDM4ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bv
aW50ZXJMb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9jay5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogCisjaW5jbHVkZSAiRE9N
V2luZG93UHJvcGVydHkuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNCwxOSAr
MzUsMjYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEZy
YW1lOworY2xhc3MgUG9pbnRlckxvY2tDb250cm9sbGVyOwogCi1jbGFzcyBQb2ludGVyTG9jayA6
IHB1YmxpYyBSZWZDb3VudGVkPFBvaW50ZXJMb2NrPiB7CitjbGFzcyBQb2ludGVyTG9jayA6IHB1
YmxpYyBSZWZDb3VudGVkPFBvaW50ZXJMb2NrPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQb2ludGVyTG9jaz4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFBvaW50ZXJMb2NrKCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UG9pbnRlckxvY2s+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQb2ludGVyTG9jayhmcmFtZSkpOyB9CiAKICAgICB+UG9pbnRlckxvY2soKTsKIAorICAgIC8v
IERPTVdpbmRvd1Byb3BlcnR5IEludGVyZmFjZQorICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0
RnJhbWUoKSBPVkVSUklERTsKKwogICAgIHZvaWQgbG9jayhFbGVtZW50KiB0YXJnZXQsIFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxi
YWNrPiBmYWlsdXJlQ2FsbGJhY2spOwogICAgIHZvaWQgdW5sb2NrKCk7CiAgICAgYm9vbCBpc0xv
Y2tlZCgpOwogCiBwcml2YXRlOgotICAgIFBvaW50ZXJMb2NrKCk7CisgICAgZXhwbGljaXQgUG9p
bnRlckxvY2soRnJhbWUqKTsKKworICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciogbV9jb250cm9s
bGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YWQ5NjhlMzA4MWJlYzQ3
MjA4OGE0NTkyODhiZWFmNjgxNWI3YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRy
b2xsZXIuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisKKyNpZiBFTkFC
TEUoUE9JTlRFUl9MT0NLKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BvaW50ZXJMb2NrQ29u
dHJvbGxlcjo6UG9pbnRlckxvY2tDb250cm9sbGVyKFBhZ2UqIHBhZ2UpCisgICAgOiBtX3BhZ2Uo
cGFnZSkKK3sKK30KKworUGFzc093blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IFBvaW50ZXJM
b2NrQ29udHJvbGxlcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBQb2ludGVyTG9ja0NvbnRyb2xsZXIocGFnZSkpOworfQorCit2b2lkIFBvaW50ZXJMb2Nr
Q29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+
IGZhaWx1cmVDYWxsYmFjaykKK3sKKyAgICBpZiAoaXNMb2NrZWQoKSkgeworICAgICAgICBpZiAo
bV9lbGVtZW50ID09IHRhcmdldCkgeworICAgICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykK
KyAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBkaWRMb3NlUG9pbnRlckxvY2soKTsKKyAgICAgICAgICAg
IG1fZWxlbWVudCA9IHRhcmdldDsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spCisg
ICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOworICAgICAgICB9
CisgICAgfSBlbHNlIGlmIChtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cmVxdWVzdFBvaW50
ZXJMb2NrKCkpIHsKKyAgICAgICAgbV9lbGVtZW50ID0gdGFyZ2V0OworICAgICAgICBtX3N1Y2Nl
c3NDYWxsYmFjayA9IHN1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgbV9mYWlsdXJlQ2FsbGJhY2sg
PSBmYWlsdXJlQ2FsbGJhY2s7CisgICAgfSBlbHNlIGlmIChmYWlsdXJlQ2FsbGJhY2spCisgICAg
ICAgIGZhaWx1cmVDYWxsYmFjay0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9pZCBQb2ludGVyTG9j
a0NvbnRyb2xsZXI6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKK3sKKyAgICByZXR1cm4gbV9wYWdl
LT5jaHJvbWUoKS0+Y2xpZW50KCktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7Cit9CisKK2Jvb2wg
UG9pbnRlckxvY2tDb250cm9sbGVyOjppc0xvY2tlZCgpCit7CisgICAgcmV0dXJuIG1fcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5pc1BvaW50ZXJMb2NrZWQoKTsKK30KKwordm9pZCBQb2ludGVy
TG9ja0NvbnRyb2xsZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygpCit7CisgICAgUmVmUHRyPEVs
ZW1lbnQ+IGVsZW1lbnRUb05vdGlmeShtX2VsZW1lbnQpOworICAgIFJlZlB0cjxWb2lkQ2FsbGJh
Y2s+IGNhbGxiYWNrVG9Jc3N1ZShtX3N1Y2Nlc3NDYWxsYmFjayk7CisgICAgbV9zdWNjZXNzQ2Fs
bGJhY2sgPSAwOworICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gMDsKKworICAgIGlmIChjYWxsYmFj
a1RvSXNzdWUgJiYgZWxlbWVudFRvTm90aWZ5ICYmIGVsZW1lbnRUb05vdGlmeS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKKyAgICAgICAgY2FsbGJhY2tUb0lzc3VlLT5oYW5kbGVFdmVudCgpOworfQor
Cit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkK
K3sKKyAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudFRvTm90aWZ5KG1fZWxlbWVudCk7CisgICAg
UmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2tUb0lzc3VlKG1fZmFpbHVyZUNhbGxiYWNrKTsK
KyAgICBtX2VsZW1lbnQgPSAwOworICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gMDsKKyAgICBtX2Zh
aWx1cmVDYWxsYmFjayA9IDA7CisKKyAgICBpZiAoY2FsbGJhY2tUb0lzc3VlICYmIGVsZW1lbnRU
b05vdGlmeSAmJiBlbGVtZW50VG9Ob3RpZnktPmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAg
IGNhbGxiYWNrVG9Jc3N1ZS0+aGFuZGxlRXZlbnQoKTsKK30KKwordm9pZCBQb2ludGVyTG9ja0Nv
bnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVs
ZW1lbnRUb05vdGlmeShtX2VsZW1lbnQpOworICAgIG1fZWxlbWVudCA9IDA7CisgICAgbV9zdWNj
ZXNzQ2FsbGJhY2sgPSAwOworICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gMDsKKyAgICBpZiAoZWxl
bWVudFRvTm90aWZ5ICYmIGVsZW1lbnRUb05vdGlmeS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAg
ICAgICAgZWxlbWVudFRvTm90aWZ5LT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLndlYmtpdHBvaW50ZXJsb2NrbG9zdEV2ZW50LCB0cnVlLCBmYWxzZSkpOworfQorCit2
b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2NrZWRNb3VzZUV2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
KQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFtX2VsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1l
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZWxlbWVudC0+ZGlzcGF0Y2hNb3VzZUV2ZW50
KGV2ZW50LCBldmVudFR5cGUsIGV2ZW50LmNsaWNrQ291bnQoKSk7CisKKyAgICAvLyBDcmVhdGUg
Y2xpY2sgZXZlbnRzCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2V1cEV2
ZW50KQorICAgICAgICBtX2VsZW1lbnQtPmRpc3BhdGNoTW91c2VFdmVudChldmVudCwgZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQsIGV2ZW50LmNsaWNrQ291bnQoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYTUxMjhiMzBi
YjAyOTg3NzI4ZTY0NjQyZjFlMzU1ZjE2MmQ1ZjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFBvaW50ZXJMb2NrQ29udHJvbGxlcl9oCisjZGVmaW5lIFBv
aW50ZXJMb2NrQ29udHJvbGxlcl9oCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBQYWdlOworY2xh
c3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworY2xhc3MgVm9pZENhbGxiYWNrOworCitjbGFzcyBQb2lu
dGVyTG9ja0NvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBvaW50ZXJMb2Nr
Q29udHJvbGxlcik7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8UG9pbnRlckxvY2tDb250cm9sbGVyPiBjcmVhdGUoUGFnZSopOwor
CisgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soRWxlbWVudCogdGFyZ2V0LCBQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
ZmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisgICAg
Ym9vbCBpc0xvY2tlZCgpOworCisgICAgdm9pZCBkaWRBY3F1aXJlUG9pbnRlckxvY2soKTsKKyAg
ICB2b2lkIGRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpOworICAgIHZvaWQgZGlkTG9zZVBvaW50
ZXJMb2NrKCk7CisgICAgdm9pZCBkaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IFBvaW50ZXJMb2NrQ29udHJvbGxlcihQYWdlKik7CisgICAgUGFnZSog
bV9wYWdlOworICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7CisgICAgUmVmUHRyPFZvaWRD
YWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gbV9m
YWlsdXJlQ2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCisjZW5kaWYgLy8gUG9pbnRlckxvY2tDb250cm9sbGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA5NGNk
NDVlYjUyNDhlOWNhMzU5NzAxZGMyMWY3MDY4MmY3ODcwODMyLi5kY2NjZGI0Nzk3NDhmMzkwODA0
ZGM1OGRiZWM2ZTAzNmFhZWNmYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC04OSw2ICs4OSw4IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJQb2ludGVyTG9jay5oIgorI2luY2x1
ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBvcHVwQ29udGFpbmVyLmgi
CiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2Vy
LmgiCkBAIC0xNzUyLDE3ICsxNzU0LDI2IEBAIGJvb2wgV2ViVmlld0ltcGw6OmlzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0FjdGl2ZSgpIGNvbnN0CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZEFjcXVp
cmVQb2ludGVyTG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJM
b2NrQ29udHJvbGxlciBsYW5kcy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlmIChw
YWdlKCkpCisgICAgICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZEFjcXVp
cmVQb2ludGVyTG9jaygpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRpZE5vdEFj
cXVpcmVQb2ludGVyTG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50
ZXJMb2NrQ29udHJvbGxlciBsYW5kcy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlm
IChwYWdlKCkpCisgICAgICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZE5v
dEFjcXVpcmVQb2ludGVyTG9jaygpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmRp
ZExvc2VQb2ludGVyTG9jaygpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50
ZXJMb2NrQ29udHJvbGxlciBsYW5kcy4KKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorICAgIGlm
IChwYWdlKCkpCisgICAgICAgIHBhZ2UoKS0+cG9pbnRlckxvY2tDb250cm9sbGVyKCktPmRpZExv
c2VQb2ludGVyTG9jaygpOworI2VuZGlmCiB9CiAKIC8vIFdlYlZpZXcgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAg
LTMyMTEsNyArMzIyMiwyNyBAQCBib29sIFdlYlZpZXdJbXBsOjppc1BvaW50ZXJMb2NrZWQoKQog
CiB2b2lkIFdlYlZpZXdJbXBsOjpwb2ludGVyTG9ja01vdXNlRXZlbnQoY29uc3QgV2ViSW5wdXRF
dmVudCYgZXZlbnQpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB3aGVuIFBvaW50ZXJMb2Nr
Q29udHJvbGxlciBsYW5kcy4KKyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlOworICAgIHN3aXRj
aCAoZXZlbnQudHlwZSkgeworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VEb3duOgorICAg
ICAgICBldmVudFR5cGUgPSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQ7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VVcDoKKyAgICAgICAgZXZlbnRUeXBl
ID0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU6CisgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50TmFtZXMo
KS5tb3VzZW1vdmVFdmVudDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgY29uc3QgV2ViTW91c2VFdmVudCYg
bW91c2VFdmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPihldmVudCk7CisK
KyAgICBpZiAocGFnZSgpKQorICAgICAgICBwYWdlKCktPnBvaW50ZXJMb2NrQ29udHJvbGxlcigp
LT5kaXNwYXRjaExvY2tlZE1vdXNlRXZlbnQoCisgICAgICAgICAgICBQbGF0Zm9ybU1vdXNlRXZl
bnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIG1vdXNlRXZlbnQpLAorICAg
ICAgICAgICAgZXZlbnRUeXBlKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDQyMDNhYjdmOGI3ZjA5
YThjZTg1NTAxZTFmNWIwNjhmZDMyYWZlOC4uYzUyZWMxZDRhNTg4MjkyNThkZmI0ZmRkOWZmMDJh
MjFiOTEyZDczMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTI0ICBWaW5jZW50IFNj
aGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUG9pbnRlciBMb2NrOiBJbXBs
ZW1lbnQgcG9pbnRlciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc1NzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2Vk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWZhaWwtcmVzcG9uc2Vz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL2xvY2stZmFpbC1y
ZXNwb25zZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50
LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL21v
dXNlLWV2ZW50LWRlbGl2ZXJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9w
b2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwb2lu
dGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTI3
ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBMYXlvdXQg
VGVzdCBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBpcyBmYWlsaW5n
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tl
ZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxv
Y2tlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxM2FjYThhYmI0OTM3ZmZjNzQ0ODg2ODc1
YTI2YmJlMjk0MDg4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9j
ay9sb2NrLWFscmVhZHktbG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUZXN0
IGNhbGxpbmcgbG9jayB3aGVuIGFscmVhZHkgaW4gYSBsb2NrZWQgc3RhdGUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9j
a2VkIGlzIGZhbHNlCitQQVNTIExvY2sgdGFyZ2V0MSBzdWNjZWVkZWQuCitQQVNTIG5hdmlnYXRv
ci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK1BBU1MgTG9jayB0YXJnZXQxIHN1Y2Nl
ZWRlZCBhZ2Fpbi4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1
ZQorUEFTUyBleHBlY3RUYXJnZXQxVW5sb2NrIGlzIHRydWUKK1BBU1MgTG9jayB0YXJnZXQyIHN1
Y2NlZWRlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZhMjhlODhlZGYxNWU3NThiYzNmZWZkMjJjNGFjMGY5NDNiODBlMzkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC5o
dG1sCkBAIC0wLDAgKzEsNzYgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxkaXYgaWQ9InRhcmdldDEiPjwvZGl2PgorICA8
ZGl2IGlkPSJ0YXJnZXQyIj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlv
bigiVGVzdCBjYWxsaW5nIGxvY2sgd2hlbiBhbHJlYWR5IGluIGEgbG9ja2VkIHN0YXRlLiIpCisg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdGFyZ2V0ZGl2MSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQxIik7CisgICAgdGFyZ2V0ZGl2MiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQyIik7CisKKyAgICB2YXIgZXhwZWN0VGFyZ2V0MVVubG9j
ayA9IGZhbHNlOworICAgIHRhcmdldGRpdjEuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cG9pbnRl
cmxvY2tsb3N0IiwKKyAgICAgICAgZnVuY3Rpb24gKCkgeyBzaG91bGRCZSgiZXhwZWN0VGFyZ2V0
MVVubG9jayIsICJ0cnVlIik7IH0pOworCisgICAgdGFyZ2V0ZGl2Mi5hZGRFdmVudExpc3RlbmVy
KCJ3ZWJraXRwb2ludGVybG9ja2xvc3QiLAorICAgICAgICBmdW5jdGlvbiAoKSB7IHRlc3RGYWls
ZWQoIlVuZXhwZWN0ZWQgdGFyZ2V0ZGl2MiBwb2ludGVybG9ja2xvc3QuIik7IH0pOworCisgICAg
Y3VycmVudFN0ZXAgPSAwOworICAgIGZ1bmN0aW9uIGRvTmV4dFN0ZXAoKSB7CisgICAgICB0b2Rv
W2N1cnJlbnRTdGVwKytdKCk7CisgICAgfQorICAgIHRvZG8gPSBbCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xv
Y2tlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9j
ayh0YXJnZXRkaXYxLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayB0YXJnZXQxIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwg
InRydWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0
ZGl2MSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MSBzdWNjZWVkZWQgYWdhaW4uIik7CisgICAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCIsICJ0
cnVlIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGV4cGVjdFRhcmdldDFVbmxvY2sgPSB0cnVlOworICAgICAg
ICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYyLAorICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9j
ayB0YXJnZXQyIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoIm5h
dmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIiwgInRydWUiKTsKKyAgICAgICAgICAgICAg
ICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NrIGZhaWxl
ZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBk
b05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFiZTlhMmRhOGQ2NTFkMThmNzkwZTRkZjRjOWJmMWQwZmUyNzQ4
NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWls
LXJlc3BvbnNlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBhc3luY2hyb25v
dXMgcmVzdWx0cyBvZiBjYWxsaW5nIGxvY2suCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciBpcyBkZWZpbmVkLgorUEFTUyBM
b2NrIGZhaWxlZCAoYWZ0ZXIgd2UgY2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50
ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KQorUEFTUyBMb2NrIGZhaWxlZCAoYWZ0ZXIgd2Ug
Y2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxBc3luY2hy
b25vdXNseSkKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1mYWlsLXJlc3Bv
bnNlcy5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1yZXNwb25zZXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNTY3ZDY1ZGJlNDY4YTNjYjlhMDMxYTBiZjNjODUxY2YyODViYzk4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stZmFpbC1y
ZXNwb25zZXMuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
ZXN0IGFzeW5jaHJvbm91cyByZXN1bHRzIG9mIGNhbGxpbmcgbG9jay4iKQorICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlciIpOworCisgICAgY3VycmVudFN0ZXAgPSAwOworICAgIGZ1bmN0aW9uIGRv
TmV4dFN0ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7CisgICAgfQorICAgIHRv
ZG8gPSBbCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KCk7CisgICAgICAgICAg
ICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKGRvY3VtZW50LmJvZHksCisgICAgICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2Nr
IHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJMb2NrIGZhaWxlZCAoYWZ0ZXIgd2Ug
Y2FsbGVkIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJv
bm91c2x5KSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJMb2NrV2lsbEZhaWxBc3luY2hyb25vdXNs
eSgpOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayhkb2N1bWVudC5i
b2R5LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiTG9jayBzdWNjZWVkZWQgdW5leHBlY3RlZGx5LiIpOworICAgICAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiTG9jayBm
YWlsZWQgKGFmdGVyIHdlIGNhbGxlZCBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9j
a1dpbGxGYWlsQXN5bmNocm9ub3VzbHkpIik7CisgICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0
ZXAoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNU
ZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50
LWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNlLWV2ZW50LWFwaS5odG1s
CmluZGV4IGVmYjQxMjFkNTJiNzA4ZjllNzA0MzhiYzU0Y2NmZTY0YzQ2YjkwMmQuLjJmZWVmM2Fk
MzQyM2YwMmYzNDRkZDZhMTQzYjQxZmJkY2ZjYzc3OTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1hcGkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wb2lu
dGVyLWxvY2svbW91c2UtZXZlbnQtYXBpLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZUEUgSFRNTD4KIDxo
dG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21v
dXNlLWV2ZW50LWRlbGl2ZXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9j
ay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc5N2MyN2U1
Zjk5MTAwMTgzYmIzOGZlNDBlMjU0MmQxMmQ2Y2JlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzNCBAQAorVGVzdCBtb3VzZSBldmVudHMgYXJlIHJvdXRlZCB0byBsb2NrIHRhcmdl
dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmV2ZW50U2Vu
ZGVyIGlzIGRlZmluZWQuCitQQVNTIExvY2sgdGFyZ2V0MSBzdWNjZWVkZWQuCitXaXRoIGEgbG9j
ayBpbiBwbGFjZSBzZW5kIGEgY2xpY2suCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFy
Z2V0OiB0YXJnZXQxLCByZWNlaXZlZCBvbjogdGFyZ2V0MQorUEFTUyBldmVudCB0eXBlOiBtb3Vz
ZWRvd24sIHRhcmdldDogdGFyZ2V0MSwgcmVjZWl2ZWQgb246IGJvZHkKK1BBU1MgTG9jayB0YXJn
ZXQyIHN1Y2NlZWRlZC4KK1dpdGggYSBsb2NrIGluIHBsYWNlIHNlbmQgYSBjbGljay4KK1BBU1Mg
ZXZlbnQgdHlwZTogbW91c2Vkb3duLCB0YXJnZXQ6IHRhcmdldDIsIHJlY2VpdmVkIG9uOiB0YXJn
ZXQyCitQQVNTIGV2ZW50IHR5cGU6IG1vdXNlZG93biwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZl
ZCBvbjogYm9keQorRW5zdXJlIGRvdWJsZSBjbGlja3Mgd29yayBhcyBleHBlY3RlZCwgc2VuZGlu
ZyA0IGNsaWNrcy4KK0NyZWF0aW5nIGEgY2xpY2sgYW5kIGRibGNsaWNrLgorUEFTUyBldmVudCB0
eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BB
U1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFy
Z2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBv
bjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0Miwg
cmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0
YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFy
Z2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBkYmxj
bGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorRW5zdXJpbmcgbm8g
ZmFsc2UgZGJsY2xpY2tzIGlmIHdlIGNvbnRpbnVlLgorUEFTUyBldmVudCB0eXBlOiBtb3VzZWRv
d24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlw
ZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBl
dmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQyLCByZWNlaXZlZCBvbjogdGFyZ2V0Mgor
UEFTUyBldmVudCB0eXBlOiBtb3VzZWRvd24sIHRhcmdldDogdGFyZ2V0MiwgcmVjZWl2ZWQgb246
IHRhcmdldDIKK1BBU1MgZXZlbnQgdHlwZTogbW91c2V1cCwgdGFyZ2V0OiB0YXJnZXQyLCByZWNl
aXZlZCBvbjogdGFyZ2V0MgorUEFTUyBldmVudCB0eXBlOiBjbGljaywgdGFyZ2V0OiB0YXJnZXQy
LCByZWNlaXZlZCBvbjogdGFyZ2V0MgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9t
b3VzZS1ldmVudC1kZWxpdmVyeS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL21vdXNl
LWV2ZW50LWRlbGl2ZXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiNGUyODgxMDg2YWNjZmJlMmRkNDI4
YzlkZjViOWU3YTJiZjE5NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXIt
bG9jay9tb3VzZS1ldmVudC1kZWxpdmVyeS5odG1sCkBAIC0wLDAgKzEsMTA5IEBACis8IURPQ1RZ
UEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgor
PGRpdj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+CisgIDxkaXYgaWQ9InRhcmdldDIiPjwv
ZGl2PgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0IG1vdXNlIGV2ZW50
cyBhcmUgcm91dGVkIHRvIGxvY2sgdGFyZ2V0LiIpCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmV2ZW50U2VuZGVyIik7CisKKyAg
ICB0YXJnZXRkaXYxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDEiKTsKKyAgICB0
YXJnZXRkaXYyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDIiKTsKKworICAgIGZ1
bmN0aW9uIGV2ZW50Tm90RXhwZWN0ZWQoZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVj
dGVkIGV2ZW50ICIgKyBlLnR5cGUgKyAiIG9uICIgKyBlLmN1cnJlbnRUYXJnZXQuaWQpOworICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisgICAgZnVuY3Rpb24gZXZlbnRFeHBlY3RlZChl
KSB7CisgICAgICB0ZXN0UGFzc2VkKCJldmVudCB0eXBlOiAiICsgZS50eXBlICsgIiwgdGFyZ2V0
OiAiICsgZS50YXJnZXQuaWQgKyAiLCByZWNlaXZlZCBvbjogIiArIGUuY3VycmVudFRhcmdldC5p
ZCk7CisgICAgfQorCisgICAgY3VycmVudFN0ZXAgPSAwOworICAgIGZ1bmN0aW9uIGRvTmV4dFN0
ZXAoKSB7CisgICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7CisgICAgfQorICAgIHRvZG8gPSBb
CisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2lu
dGVyLmxvY2sodGFyZ2V0ZGl2MSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkxvY2sgdGFyZ2V0MSBzdWNjZWVkZWQuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiTG9jayBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiV2l0aCBhIGxvY2sgaW4gcGxhY2Ugc2VuZCBhIGNsaWNrLiIpCisg
ICAgICAgICAgICB0YXJnZXRkaXYxLm9ubW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAg
ICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBldmVudE5vdEV4cGVjdGVkOworICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlZG93biA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAg
ICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAgICAgICB3
aW5kb3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRT
ZW5kZXIubW91c2VVcCgpOworICAgICAgICAgICAgdGFyZ2V0ZGl2MS5vbm1vdXNlZG93biA9IHVu
ZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7
CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAg
ICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldGRpdjIsCisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJMb2NrIHRhcmdldDIgc3VjY2VlZGVkLiIpOworICAgICAgICAgICAgICAgICAgICBkb05l
eHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAg
ICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoIldpdGgg
YSBsb2NrIGluIHBsYWNlIHNlbmQgYSBjbGljay4iKQorICAgICAgICAgICAgdGFyZ2V0ZGl2MS5v
bm1vdXNlZG93biA9IGV2ZW50Tm90RXhwZWN0ZWQ7CisgICAgICAgICAgICB0YXJnZXRkaXYyLm9u
bW91c2Vkb3duID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub25t
b3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVy
LmxlYXBGb3J3YXJkKDEwMDApOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNl
RG93bigpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAg
ICAgICAgIHRhcmdldGRpdjEub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0
YXJnZXRkaXYyLm9ubW91c2Vkb3duID0gdW5kZWZpbmVkOworICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5vbm1vdXNlZG93biA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsK
KyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoIkVu
c3VyZSBkb3VibGUgY2xpY2tzIHdvcmsgYXMgZXhwZWN0ZWQsIHNlbmRpbmcgNCBjbGlja3MuIikK
KyAgICAgICAgICAgIHRhcmdldGRpdjIub25tb3VzZWRvd24gPSBldmVudEV4cGVjdGVkOworICAg
ICAgICAgICAgdGFyZ2V0ZGl2Mi5vbm1vdXNldXAgPSBldmVudEV4cGVjdGVkOworICAgICAgICAg
ICAgdGFyZ2V0ZGl2Mi5vbmNsaWNrID0gZXZlbnRFeHBlY3RlZDsKKyAgICAgICAgICAgIHRhcmdl
dGRpdjIub25kYmxjbGljayA9IGV2ZW50RXhwZWN0ZWQ7CisgICAgICAgICAgICBkZWJ1ZygiQ3Jl
YXRpbmcgYSBjbGljayBhbmQgZGJsY2xpY2suIik7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRT
ZW5kZXIubGVhcEZvcndhcmQoMTAwMCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
ICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAg
d2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgIGRlYnVnKCJFbnN1cmlu
ZyBubyBmYWxzZSBkYmxjbGlja3MgaWYgd2UgY29udGludWUuIik7CisgICAgICAgICAgICB3aW5k
b3cuZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICB3aW5kb3cuZXZlbnRTZW5k
ZXIubW91c2VVcCgpOworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlRG93bigp
OworICAgICAgICAgICAgd2luZG93LmV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAg
IHRhcmdldGRpdjIub25tb3VzZWRvd24gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICB0YXJnZXRk
aXYyLm9ubW91c2V1cCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25jbGlj
ayA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIHRhcmdldGRpdjIub25kYmxjbGljayA9IHVuZGVm
aW5lZDsKKyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZmlu
aXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05leHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50
ZXItbG9jay1hcGkuaHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVyLWxvY2st
YXBpLmh0bWwKaW5kZXggMzE4Yjk5MGZhMjU3MzQ1ZjgxZjBmZGRhMjgyYTIzMTI1NTk3NGYxMC4u
OGRkNDFhNTcxNjJlNWFiNzU1ZGMwNjRlYjFmMTFjZjQxNDQwY2FiZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS5odG1sCkBAIC0xLDQgKzEsNCBAQAot
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPCFET0NUWVBF
IEhUTUw+CiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50
ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTgzMjQwMGVhMTE4ODkzNTAzMDlmYjQyOTg4M2FiZGI1MmRmYWY0MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgdGhhdCBwb2ludGVybG9ja2xvc3QgZXZl
bnQgaXMgZGlzcGF0Y2hlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIGlzIGRlZmluZWQuCitQQVNTIG5hdmlnYXRvci53
ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKK0phdmFTY3JpcHQgaW5pdGlhdGVkIHVubG9j
ay4KK1BBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAwCitQQVNTIHdlYmtp
dHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMQorUEFTUyBBbGwgZXhwZWN0ZWQgd2Via2l0
cG9pbnRlcmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4KK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBv
aW50ZXIuaXNMb2NrZWQgaXMgZmFsc2UKK1BBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNM
b2NrZWQgaXMgdHJ1ZQorSG9zdCBpbml0aWF0ZWQgdW5sb2NrLgorUEFTUyB3ZWJraXRwb2ludGVy
bG9ja2xvc3QgaGFuZGxlciBjYWxsIDAKK1BBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRs
ZXIgY2FsbCAxCitQQVNTIEFsbCBleHBlY3RlZCB3ZWJraXRwb2ludGVybG9ja2xvc3QgZXZlbnRz
IHJlY2VpdmVkLgorUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBpcyBmYWxz
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQu
aHRtbCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jODdjY2UyYzVmNzUzY2ZlOTc1MGE0NzcxNTJlODFjMWU2OTUyZDdiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9z
dC1ldmVudC5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgIDxkaXYgaWQ9InRhcmdldCI+PC9k
aXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBwb2ludGVy
bG9ja2xvc3QgZXZlbnQgaXMgZGlzcGF0Y2hlZC4iKQorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKyAgICBzaG91bGRCZURlZmluZWQoIndpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ciIpOworCisgICAgdGFyZ2V0ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIp
OworCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cG9pbnRlcmxvY2tsb3N0
IiwgbG9ja2xvc3RIYW5kbGVyKTsKKyAgICB0YXJnZXRkaXYuYWRkRXZlbnRMaXN0ZW5lcigid2Vi
a2l0cG9pbnRlcmxvY2tsb3N0IiwgbG9ja2xvc3RIYW5kbGVyKTsKKyAgICBsb2NrbG9zdGhhbmRs
ZXJzID0gMjsKKworICAgIGxvY2tsb3N0cmVjZWlwdHMgPSAwOworICAgIGZ1bmN0aW9uIGxvY2ts
b3N0SGFuZGxlcigpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgid2Via2l0cG9pbnRlcmxvY2tsb3N0
IGhhbmRsZXIgY2FsbCAiICsgbG9ja2xvc3RyZWNlaXB0cyk7CisgICAgICAgIGxvY2tsb3N0cmVj
ZWlwdHMrKzsKKyAgICAgICAgaWYgKGxvY2tsb3N0cmVjZWlwdHMgPT0gbG9ja2xvc3RoYW5kbGVy
cykgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIGV4cGVjdGVkIHdlYmtpdHBvaW50ZXJs
b2NrbG9zdCBldmVudHMgcmVjZWl2ZWQuIik7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjdXJyZW50U3RlcCA9IDA7CisgICAgZnVuY3Rpb24gZG9O
ZXh0U3RlcCgpIHsKKyAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAgICB9CisgICAgdG9k
byA9IFsKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtp
dFBvaW50ZXIubG9jayh0YXJnZXRkaXYsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNM
b2NrZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZGVidWcoIkphdmFTY3JpcHQgaW5pdGlhdGVk
IHVubG9jay4iKQorICAgICAgICAgICAgbG9ja2xvc3RyZWNlaXB0cyA9IDA7CisgICAgICAgICAg
ICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci51bmxvY2soKTsKKyAgICAgICAgfSwKKyAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgLy8gbG9ja2xvc3RIYW5kbGVyIHdpbGwgY2F0Y2gg
dW5sb2NrcyBhbmQgY2FsbCBkb05leHRTdGVwIHRvIGJyaW5nIHVzIGhlcmUuCisgICAgICAgICAg
ICBzaG91bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAiZmFsc2UiKTsK
KyAgICAgICAgICAgIGRvTmV4dFN0ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRkaXYs
CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICBzaG91
bGRCZSgibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAidHJ1ZSIpOworICAgICAg
ICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxv
Y2sgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgZGVidWcoIkhvc3QgaW5pdGlhdGVkIHVubG9jay4iKQorICAgICAgICAgICAgbG9ja2xv
c3RyZWNlaXB0cyA9IDA7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaWRMb3Nl
UG9pbnRlckxvY2soKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgLy8gbG9ja2xvc3RIYW5kbGVyIHdpbGwgY2F0Y2ggdW5sb2NrcyBhbmQgY2FsbCBkb05l
eHRTdGVwIHRvIGJyaW5nIHVzIGhlcmUuCisgICAgICAgICAgICBzaG91bGRCZSgibmF2aWdhdG9y
LndlYmtpdFBvaW50ZXIuaXNMb2NrZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIGRvTmV4dFN0
ZXAoKTsKKyAgICAgICAgfSwKKyAgICAgICAgZmluaXNoSlNUZXN0CisgICAgXTsKKyAgICBkb05l
eHRTdGVwKCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>