<?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>40515</bug_id>
          
          <creation_ts>2010-06-11 20:50:51 -0700</creation_ts>
          <short_desc>Atomically update the system clipboard for copy/cut events</short_desc>
          <delta_ts>2011-11-23 11:05:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>34288</blocked>
    
    <blocked>40455</blocked>
    
    <blocked>71414</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>gustavo</cc>
    
    <cc>levin</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>237228</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-11 20:50:51 -0700</bug_when>
    <thetext>Right now, the various Clipboard implementations contain a lot of platform-specific details. We should create a new platform object (like DragData) to abstract away the interactions with platform data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237231</commentid>
    <comment_count>1</comment_count>
      <attachid>58540</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-11 22:29:39 -0700</bug_when>
    <thetext>Created attachment 58540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237233</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-11 22:38:26 -0700</bug_when>
    <thetext>Attachment 58540 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
Webcore/platform/ClipboardData.h:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Webcore/platform/ClipboardData.cpp:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 145 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237234</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-11 22:43:32 -0700</bug_when>
    <thetext>Attachment 58540 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3183339</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237236</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-11 22:53:49 -0700</bug_when>
    <thetext>Attachment 58540 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3198315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237271</commentid>
    <comment_count>5</comment_count>
      <attachid>58547</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-12 04:23:23 -0700</bug_when>
    <thetext>Created attachment 58547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237273</commentid>
    <comment_count>6</comment_count>
      <attachid>58548</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-12 04:28:43 -0700</bug_when>
    <thetext>Created attachment 58548
Patch

Fix bad merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237275</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-12 04:35:56 -0700</bug_when>
    <thetext>Attachment 58547 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3200329</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237276</commentid>
    <comment_count>8</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-12 04:40:47 -0700</bug_when>
    <thetext>Attachment 58548 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3249326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237279</commentid>
    <comment_count>9</comment_count>
      <attachid>58549</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-12 04:55:24 -0700</bug_when>
    <thetext>Created attachment 58549
Patch

Fix build break (paths had incorrect case)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237282</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-12 05:05:36 -0700</bug_when>
    <thetext>Attachment 58547 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3186342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239167</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-16 18:04:13 -0700</bug_when>
    <thetext>Darin, do you mind reviewing this patch? https://bugs.webkit.org/show_bug.cgi?id=40455 isn&apos;t complete, but it shows how this proposed patch would be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244513</commentid>
    <comment_count>12</comment_count>
      <attachid>58549</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-29 15:05:07 -0700</bug_when>
    <thetext>Comment on attachment 58549
Patch

&gt; +class ClipboardData : public RefCounted&lt;ClipboardData&gt; {

This seems fine, but I&apos;m not sure why it&apos;s an abstract base class. Generally speaking the platform directory does not use runtime factories that vend objects of abstract base classes. I have seen other libraries that use this approach, but it has runtime costs that we prefer not to pay in WebKit.

The interface here looks generally OK in terms of what the functions are and the argument types, but the basic approach does not seem right.

An example of how we do this without virtual functions is in the FileChooser.h source file. Not sure that needs to be a reference-counted object, but otherwise it&apos;s a reasonable example. DragData.h is another example, although a particularly messy one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245018</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-06-30 17:08:31 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 58549 [details])
&gt; &gt; +class ClipboardData : public RefCounted&lt;ClipboardData&gt; {
&gt; 
&gt; This seems fine, but I&apos;m not sure why it&apos;s an abstract base class. Generally speaking the platform directory does not use runtime factories that vend objects of abstract base classes. I have seen other libraries that use this approach, but it has runtime costs that we prefer not to pay in WebKit.
&gt; 
&gt; The interface here looks generally OK in terms of what the functions are and the argument types, but the basic approach does not seem right.
&gt; 
&gt; An example of how we do this without virtual functions is in the FileChooser.h source file. Not sure that needs to be a reference-counted object, but otherwise it&apos;s a reasonable example. DragData.h is another example, although a particularly messy one.

The interface is virtual because there are two implementations for a given platform:
1. One implementation that lives under platform. This provides a read-only implementation of ClipboardData which wraps accessing native copy/paste and drag/drop data.
2. Another common implementation that lives in a location TBD. It is primarily intended for writing (in the cut/copy/dragstart events), though you can read from it as well.

The reason for creating two separate implementations like this is because I found the way the current Clipboard worked to be a little wonky:
- When starting drags, platform implementations of Clipboard simply allow data members to be set. At some point, DragClient::startDrag is called and the implementation atomically creates a data object and sets all data that will be in that drag.
- For copy/cut operations, Clipboard immediately writes back to the clipboard, so Clipboard contents won&apos;t be set atomically. Thus, we end up with Clipboard implementations that look like:
if (m_isForDragging) {
    m_foo = bar;
} else {
    // FIXME: Add Pasteboard support.
}
This is true for Windows WebKit, Chromium WebKit, and probably a number of other platforms as well.
- If writing drag data and copy data are abstracted by one generic object, then Clipboard becomes much simpler. Persisting data to the clipboard might look like this instead:
if (clipboard.isDirty()) {
    Pasteboard::clear();
    Pasteboard::writeData(clipboard);
}
This also has the bonus side effect that preventing a copy or cut no longer clears the Pasteboard contents, which follows IE behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494908</commentid>
    <comment_count>14</comment_count>
      <attachid>113377</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-02 14:27:01 -0700</bug_when>
    <thetext>Created attachment 113377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495695</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-03 12:02:18 -0700</bug_when>
    <thetext>Darin, do you mind taking another look at this? We&apos;ll need this change to fix https://bugs.webkit.org/show_bug.cgi?id=34288, so that simply preventing the default action without setting any data doesn&apos;t cause the clipboard to get cleared on copy/cut.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497351</commentid>
    <comment_count>16</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-07 12:06:07 -0800</bug_when>
    <thetext>I&apos;ve completely rewritten this patch, and I think it should address previous review concerns to this patch. There is no more ClipboardData interface, so if you could take another look, that&apos;d be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497376</commentid>
    <comment_count>17</comment_count>
      <attachid>113377</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-07 12:30:02 -0800</bug_when>
    <thetext>Comment on attachment 113377
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:743
&gt; +    if (noDefaultProcessing &amp;&amp; policy == ClipboardWritable) {
&gt; +        Pasteboard* pasteboard = Pasteboard::generalPasteboard();
&gt; +        pasteboard-&gt;clear();
&gt; +        pasteboard-&gt;writeClipboard(clipboard.get());
&gt; +    }

If the actual pasteboard processing is done in this function, then the name dispatchCPPEvent is inappropriate. Is that something new to this patch, or has it always been true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497391</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-07 12:50:32 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 113377 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113377&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:743
&gt; &gt; +    if (noDefaultProcessing &amp;&amp; policy == ClipboardWritable) {
&gt; &gt; +        Pasteboard* pasteboard = Pasteboard::generalPasteboard();
&gt; &gt; +        pasteboard-&gt;clear();
&gt; &gt; +        pasteboard-&gt;writeClipboard(clipboard.get());
&gt; &gt; +    }
&gt; 
&gt; If the actual pasteboard processing is done in this function, then the name dispatchCPPEvent is inappropriate. Is that something new to this patch, or has it always been true.

This has always been true, but the pasteboard mutation wasn&apos;t as obvious before--it was happening inside Clipboard::setData().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497448</commentid>
    <comment_count>19</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-07 14:01:24 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 113377 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113377&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:743
&gt; &gt; +    if (noDefaultProcessing &amp;&amp; policy == ClipboardWritable) {
&gt; &gt; +        Pasteboard* pasteboard = Pasteboard::generalPasteboard();
&gt; &gt; +        pasteboard-&gt;clear();
&gt; &gt; +        pasteboard-&gt;writeClipboard(clipboard.get());
&gt; &gt; +    }
&gt; 
&gt; If the actual pasteboard processing is done in this function, then the name dispatchCPPEvent is inappropriate. Is that something new to this patch, or has it always been true.

I thought about ways to split up dispatchCPPEvent to move the pasteboard processing out of dispatchCPPEvent, but I can&apos;t think of any good way without duplicating some of the boilerplate to set up the clipboard event and fire it. What makes dispatchCPPEvent an inappropriate name, and do you have suggestions on how this can be addressed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498412</commentid>
    <comment_count>20</comment_count>
      <attachid>113377</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-08 13:49:49 -0800</bug_when>
    <thetext>Comment on attachment 113377
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Add a Pasteboard::writeClipboard() method which is roughly analogous to

Part of this should be the comment for dispatchCPPEvent.

&gt; Source/WebCore/ChangeLog:12
&gt; +        Covered by existing tests.

It is only covered by existing tests if
1. It is only a refactoring (but that is not the case here as I see new function calls).
2. An existing test is broken and this fixes it, but I don&apos;t see a new baseline for a test.

So what is testing these new api calls?/Why are they needed?

&gt; Source/WebCore/ChangeLog:15
&gt; +        (WebCore::Editor::tryDHTMLCopy):

Ideally your changelog would have an explanation of what was done in each function.

For example, it would say &quot;Move clear call to dispatchCPPEvent&quot; here. Think of this like a breadcrumb trail for the reviewer so they don&apos;t need to piece as much together.

&gt; Source/WebCore/ChangeLog:16
&gt; +        (WebCore::Editor::tryDHTMLCut):

Here &quot;Ditto&quot;

&gt;&gt;&gt;&gt; Source/WebCore/editing/Editor.cpp:743
&gt;&gt;&gt;&gt; +    }
&gt;&gt;&gt; 
&gt;&gt;&gt; If the actual pasteboard processing is done in this function, then the name dispatchCPPEvent is inappropriate. Is that something new to this patch, or has it always been true.
&gt;&gt; 
&gt;&gt; This has always been true, but the pasteboard mutation wasn&apos;t as obvious before--it was happening inside Clipboard::setData().
&gt; 
&gt; I thought about ways to split up dispatchCPPEvent to move the pasteboard processing out of dispatchCPPEvent, but I can&apos;t think of any good way without duplicating some of the boilerplate to set up the clipboard event and fire it. What makes dispatchCPPEvent an inappropriate name, and do you have suggestions on how this can be addressed?

It dispatches the event on line 737 but then this stuff is extra.  Please describe what this function does and then we can find a name.

&gt; Source/WebCore/editing/mac/EditorMac.mm:52
&gt; +        policy == ClipboardWritable ? [NSPasteboard pasteboardWithUniqueName] : [NSPasteboard generalPasteboard], policy, frame);

The changelog should tell me why this change is being done.

&gt; Source/WebCore/platform/mac/PasteboardMac.mm:333
&gt; +    }

Why is this code needed now? (Hint: The ChangeLog should tell me.)

&gt; Source/WebCore/platform/qt/PasteboardQt.cpp:179
&gt; +        static_cast&lt;ClipboardQt*&gt;(clipboard)-&gt;clipboardData());

No need for a carriage return here.

What does this fix? (Hint: I should know due to the ChangeLog.)

&gt; Source/WebCore/platform/wince/PasteboardWinCE.cpp:39
&gt; +#include &quot;NotImplemented.h&quot;

Why include this header and not use notImplemented?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499457</commentid>
    <comment_count>21</comment_count>
      <attachid>114391</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-09 16:28:40 -0800</bug_when>
    <thetext>Created attachment 114391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500380</commentid>
    <comment_count>22</comment_count>
      <attachid>114592</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-10 16:03:24 -0800</bug_when>
    <thetext>Created attachment 114592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500381</commentid>
    <comment_count>23</comment_count>
      <attachid>113377</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-10 16:05:30 -0800</bug_when>
    <thetext>Comment on attachment 113377
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        Add a Pasteboard::writeClipboard() method which is roughly analogous to
&gt; 
&gt; Part of this should be the comment for dispatchCPPEvent.

Done.

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        Covered by existing tests.
&gt; 
&gt; It is only covered by existing tests if
&gt; 1. It is only a refactoring (but that is not the case here as I see new function calls).
&gt; 2. An existing test is broken and this fixes it, but I don&apos;t see a new baseline for a test.
&gt; 
&gt; So what is testing these new api calls?/Why are they needed?

Done.

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        (WebCore::Editor::tryDHTMLCopy):
&gt; 
&gt; Ideally your changelog would have an explanation of what was done in each function.
&gt; 
&gt; For example, it would say &quot;Move clear call to dispatchCPPEvent&quot; here. Think of this like a breadcrumb trail for the reviewer so they don&apos;t need to piece as much together.

Done.

&gt;&gt; Source/WebCore/ChangeLog:16
&gt;&gt; +        (WebCore::Editor::tryDHTMLCut):
&gt; 
&gt; Here &quot;Ditto&quot;

Done.

&gt;&gt;&gt;&gt;&gt; Source/WebCore/editing/Editor.cpp:743

&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; If the actual pasteboard processing is done in this function, then the name dispatchCPPEvent is inappropriate. Is that something new to this patch, or has it always been true.
&gt;&gt;&gt; 
&gt;&gt;&gt; This has always been true, but the pasteboard mutation wasn&apos;t as obvious before--it was happening inside Clipboard::setData().
&gt;&gt; 
&gt;&gt; I thought about ways to split up dispatchCPPEvent to move the pasteboard processing out of dispatchCPPEvent, but I can&apos;t think of any good way without duplicating some of the boilerplate to set up the clipboard event and fire it. What makes dispatchCPPEvent an inappropriate name, and do you have suggestions on how this can be addressed?
&gt; 
&gt; It dispatches the event on line 737 but then this stuff is extra.  Please describe what this function does and then we can find a name.

Done... I think.

&gt;&gt; Source/WebCore/editing/mac/EditorMac.mm:52
&gt;&gt; +        policy == ClipboardWritable ? [NSPasteboard pasteboardWithUniqueName] : [NSPasteboard generalPasteboard], policy, frame);
&gt; 
&gt; The changelog should tell me why this change is being done.

Done.

&gt;&gt; Source/WebCore/platform/mac/PasteboardMac.mm:333
&gt;&gt; +    }
&gt; 
&gt; Why is this code needed now? (Hint: The ChangeLog should tell me.)

Done.

&gt;&gt; Source/WebCore/platform/qt/PasteboardQt.cpp:179
&gt;&gt; +        static_cast&lt;ClipboardQt*&gt;(clipboard)-&gt;clipboardData());
&gt; 
&gt; No need for a carriage return here.
&gt; 
&gt; What does this fix? (Hint: I should know due to the ChangeLog.)

Done.

&gt;&gt; Source/WebCore/platform/wince/PasteboardWinCE.cpp:39
&gt;&gt; +#include &quot;NotImplemented.h&quot;
&gt; 
&gt; Why include this header and not use notImplemented?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500414</commentid>
    <comment_count>24</comment_count>
      <attachid>114592</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-10 16:51:51 -0800</bug_when>
    <thetext>Comment on attachment 114592
Patch

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

Just one question before I r+.

&gt; Source/WebCore/platform/gtk/PasteboardGtk.cpp:138
&gt; +        static_cast&lt;ClipboardGtk*&gt;(clipboard)-&gt;clipboard());

Why did it check m_clipboard before but now it doesn&apos;t?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500418</commentid>
    <comment_count>25</comment_count>
      <attachid>114592</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-10 16:58:11 -0800</bug_when>
    <thetext>Comment on attachment 114592
Patch

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

&gt;&gt; Source/WebCore/platform/gtk/PasteboardGtk.cpp:138
&gt;&gt; +        static_cast&lt;ClipboardGtk*&gt;(clipboard)-&gt;clipboard());
&gt; 
&gt; Why did it check m_clipboard before but now it doesn&apos;t?

Because m_clipboard was only accessible to ClipboardGtk. I added an accessor for it so we can use it in PasteboardGtk as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500422</commentid>
    <comment_count>26</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-10 17:01:02 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 114592 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114592&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/gtk/PasteboardGtk.cpp:138
&gt; &gt;&gt; +        static_cast&lt;ClipboardGtk*&gt;(clipboard)-&gt;clipboard());
&gt; &gt; 
&gt; &gt; Why did it check m_clipboard before but now it doesn&apos;t?
&gt; 
&gt; Because m_clipboard was only accessible to ClipboardGtk. I added an accessor for it so we can use it in PasteboardGtk as well.

I&apos;ll be more verbose.

Prior code:
   if (success &amp;&amp; m_clipboard)
         PasteboardHelper::defaultPasteboardHelper()-&gt;writeClipboardContents(m_clipboard);

Why was the prior code checking that m_clipboard wasn&apos;t NULL but the current code uses the equivalent &quot;static_cast&lt;ClipboardGtk*&gt;(clipboard)-&gt;clipboard()&quot; without doing a NULL check:

   PasteboardHelper::defaultPasteboardHelper()-&gt;writeClipboardContents(
         static_cast&lt;ClipboardGtk*&gt;(clipboard)-&gt;clipboard());

If you answered this just now, I didn&apos;t understand the answer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500427</commentid>
    <comment_count>27</comment_count>
      <attachid>114607</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-10 17:11:39 -0800</bug_when>
    <thetext>Created attachment 114607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500430</commentid>
    <comment_count>28</comment_count>
      <attachid>114592</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-10 17:12:08 -0800</bug_when>
    <thetext>Comment on attachment 114592
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/gtk/PasteboardGtk.cpp:138
&gt;&gt;&gt;&gt; +        static_cast&lt;ClipboardGtk*&gt;(clipboard)-&gt;clipboard());
&gt;&gt;&gt; 
&gt;&gt;&gt; Why did it check m_clipboard before but now it doesn&apos;t?
&gt;&gt; 
&gt;&gt; Because m_clipboard was only accessible to ClipboardGtk. I added an accessor for it so we can use it in PasteboardGtk as well.
&gt; 
&gt; I&apos;ll be more verbose.
&gt; 
&gt; Prior code:
&gt;    if (success &amp;&amp; m_clipboard)
&gt;          PasteboardHelper::defaultPasteboardHelper()-&gt;writeClipboardContents(m_clipboard);
&gt; 
&gt; Why was the prior code checking that m_clipboard wasn&apos;t NULL but the current code uses the equivalent &quot;static_cast&lt;ClipboardGtk*&gt;(clipboard)-&gt;clipboard()&quot; without doing a NULL check:
&gt; 
&gt;    PasteboardHelper::defaultPasteboardHelper()-&gt;writeClipboardContents(
&gt;          static_cast&lt;ClipboardGtk*&gt;(clipboard)-&gt;clipboard());
&gt; 
&gt; If you answered this just now, I didn&apos;t understand the answer.

Good point. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500485</commentid>
    <comment_count>29</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-10 20:12:25 -0800</bug_when>
    <thetext>Committed r99924: &lt;http://trac.webkit.org/changeset/99924&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508236</commentid>
    <comment_count>30</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-23 10:57:40 -0800</bug_when>
    <thetext>Why did this test land without any tests? This patch changes the timing at which copy/cut/paste events are dispatched and therefore need to be tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508239</commentid>
    <comment_count>31</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-23 11:03:51 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; Why did this patch land without any tests? This patch changes the timing at which copy/cut/paste events are dispatched and therefore need to be tested.

On second thought, this might be okay since this change only affects copy and cut both of which can&apos;t read clipboard data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508243</commentid>
    <comment_count>32</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-23 11:05:45 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; Why did this patch land without any tests? This patch changes the timing at which copy/cut/paste events are dispatched and therefore need to be tested.
&gt; 
&gt; On second thought, this might be okay since this change only affects copy and cut both of which can&apos;t read clipboard data

This was a mistake on my part. I thought that pasteboard tests that interacted with the system clipboard would be inherently flaky due to the global nature of the clipboard, but it appears we correctly handle that case today. I am working on followup tests and will be landing them in a separate patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58540</attachid>
            <date>2010-06-11 22:29:39 -0700</date>
            <delta_ts>2010-06-12 04:23:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch1-final.patch</filename>
            <type>text/plain</type>
            <size>16156</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA1MTk0MTljLi4wZDgxNGE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0zNzksNiArMzc5LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
Y3BwIFwKIAlcCiAJcGxhdGZvcm0vQXJlbmEuY3BwIFwKKwlwbGF0Zm9ybS9DbGlwYm9hcmREYXRh
LmNwcCBcCiAJcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKIAlwbGF0Zm9ybS9Db250ZXh0TWVu
dS5jcHAgXAogCXBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwOGY0
Mzg1Li5mMDAwOTNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMjUsNiArMTEyNSw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL0FyZW5hLmNwcAogICAgIHBsYXRmb3JtL0Jsb2JJdGVtLmNw
cAorICAgIHBsYXRmb3JtL0NsaXBib2FyZERhdGEuY3BwCiAgICAgcGxhdGZvcm0vQ29udGVudFR5
cGUuY3BwCiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCiAgICAgcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDA1NTNkZWEuLmFiMWI4OTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDYt
MTEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbG93LWxldmVsIHBsYXRmb3Jt
IGFic3RyYWN0aW9uIGZvciBjb3B5LWFuZC1wYXN0ZSBhbmQgZHJhZy1hbmQtZHJvcCBkYXRhLgor
CisgICAgICAgIENsaXBib2FyZERhdGEgcHJvdmlkZXMgYSBsb3dlciBsZXZlbCBhYnN0cmFjdGlv
biBmb3IgYWNjZXNzaW5nIHBsYXRmb3JtIGRhdGEgZm9yCisgICAgICAgIGNvcHktYW5kLXBhc3Rl
IGFuZCBkcmFnLWFuZC1kcm9wLCB3aGljaCBzaG91bGQgaGVscCBzaW1wbGlmeSB0aGUgdmFyaW91
cyBDbGlwYm9hcmQKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBUaGlzIHdpbGwgYWxzbyBhbGxv
dyBkYXRhIHRvIGJlIGF0b21pY2FsbHkgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCwK
KyAgICAgICAgYW5kIGFsc28gZml4ZXMgYSBsb25nLXN0YW5kaW5nIGJ1ZyB3aGVyZSB0aGUgc3lz
dGVtIGNsaXBib2FyZCBpcyBjbGVhcmVkIHdoZW4gYSBjb3B5IG9yIGN1dAorICAgICAgICBpcyBw
cmV2ZW50ZWQgYnV0IG5vIGRhdGEgaXMgc2V0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDUxNQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9DbGlwYm9hcmREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpub3JtYWxp
emVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmREYXRhOjpjbGVhckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRGF0YTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmREYXRhOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DbGlwYm9h
cmREYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRGF0YTo6fkNsaXBi
b2FyZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKwogMjAxMC0wNi0w
OSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggN2RkYWNiNS4uMzExZDE0ZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0xNTY3LDYgKzE1NjcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZv
cm0vQXV0b2RyYWluZWRQb29sLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL0Jsb2JJdGVtLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vQ2xpcGJv
YXJkRGF0YS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5oIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50
VHlwZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM1MTM0
OTIuLmUwYWZjMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0yODg4LDYgKzI4ODgsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL0F1dG9kcmFpbmVkUG9vbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9CbG9iSXRlbS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Jsb2JJdGVtLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL0NsaXBib2FyZERhdGEuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9DbGlwYm9h
cmREYXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vQ29udGVudFR5cGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Q29udGV4dE1lbnUuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IDAyNjNlN2UuLmQ4MWEwMDggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODIwLDYgKzgyMCw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL0Jsb2JJdGVtLmNwcCBcCiAgICAgcGxhdGZv
cm0vdGV4dC9CYXNlNjQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBc
CisgICAgcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL0NvbnRlbnRU
eXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwIFwKICAgICBwbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5jcHAgXApAQCAtMTU3MSw2ICsxNTcyLDcgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBcCiAgICAgcGxhdGZvcm0v
QXJlbmEuaCBcCiAgICAgcGxhdGZvcm0vQmxvYkl0ZW0uaCBcCisgICAgcGxhdGZvcm0vQ2xpcGJv
YXJkRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5oIFwKICAgICBwbGF0Zm9ybS9D
b250ZXh0TWVudS5oIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDY1NWZlMmUuLjMxZjAwMzUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjIzNzcsNiArMjIzNzcsMTQgQEAK
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cQ2xpcGJvYXJkRGF0YS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbGlwYm9hcmREYXRhLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxD
b250ZW50VHlwZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NmY5M2RiLi4wZDhlN2NhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3MSw2ICsxMzcxLDggQEAK
IAkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUVEM0UwNDBGQkIxRUFB
MDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3
NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRC
cmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEz
Mjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODFEQTJBNzMxMUMzMzRFRjAwNEU0OUYz
IC8qIENsaXBib2FyZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxREEyQTcxMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmggKi87
IH07CisJCTgxREEyQTc0MTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxREEyQTcyMTFDMzM0
RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmNwcCAqLzsgfTsKIAkJODJCNjU4OTgxMTg5RTM5
MjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkI2NTg5NzExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVj
dG9yQ1NTU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4MkI2NTg5QTExODlFNDc2MDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJCNjU4OTkx
MTg5RTQ3NjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmNwcCAqLzsgfTsKIAkJODQxRkRD
MjYxMTc4QzlCRTAwRjhBQzlCIC8qIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MUZEQzI0MTE3OEM5QkUw
MEY4QUM5QiAvKiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgKi87IH07CkBAIC03MDQxLDYg
KzcwNDMsOCBAQAogCQk3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRl
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgz
IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0QnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEZG
MzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgxREEyQTcxMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODFEQTJBNzIxMUMzMzRFRjAwNEU0OUYzIC8qIENs
aXBib2FyZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xp
cGJvYXJkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyQjY1ODk3MTE4
OUUzOTIwMEUwNTJBMSAvKiBJbnNwZWN0b3JDU1NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDU1NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MkI2NTg5OTExODlFNDc2MDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ1NTU3RvcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDFGREMyNDExNzhDOUJFMDBGOEFD
OUIgLyogUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTU4OTgsNiArMTU5MDIsOCBAQAogCQkJCTUxRTFFQ0IxMEM5MUM1
NTYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLywKIAkJCQk4OTg4RTEwQzExQTM1MDhC
MDBEQjczMkUgLyogQmxvYkl0ZW0uY3BwICovLAogCQkJCTg5ODhFMTBEMTFBMzUwOEIwMERCNzMy
RSAvKiBCbG9iSXRlbS5oICovLAorCQkJCTgxREEyQTcyMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlw
Ym9hcmREYXRhLmNwcCAqLywKKwkJCQk4MURBMkE3MTExQzMzNEVGMDA0RTQ5RjMgLyogQ2xpcGJv
YXJkRGF0YS5oICovLAogCQkJCUJDQzhDRkNBMDk4NkNEMjQwMDE0MEJGMiAvKiBDb2xvckRhdGEu
Z3BlcmYgKi8sCiAJCQkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNw
cCAqLywKIAkJCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLywK
QEAgLTE2OTkyLDYgKzE2OTk4LDcgQEAKIAkJCQlCQ0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyog
Q2xpZW50UmVjdExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjNFMEE0NEVGQzcwMEY5
OTJFMCAvKiBDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCOEFGNEFBMEIxQ0UwMkIw
MDY4NzY5MCAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTgx
REEyQTczMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTAzMUI0MDBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzRjE5OUU3MDgyNDVFNTkwMDFFOUFCQyAvKiBDbGlwYm9hcmRNYWMuaCBp
biBIZWFkZXJzICovLAogCQkJCUMwQzA1NENCMTExOEM4RTQwMENFMjYzNiAvKiBDb2RlR2VuZXJh
dG9yLnBtIGluIEhlYWRlcnMgKi8sCkBAIC0xOTgyMyw2ICsxOTgzMCw3IEBACiAJCQkJQkNDMDY1
N0QwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNDMDY1ODAwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODFEQTJBNzQxMUMzMzRFRjAwNEU0OUYzIC8qIENsaXBib2FyZERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBi
b2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QUZGMDgyNDVFNTkwMDFFOUFC
QyAvKiBDbGlwYm9hcmRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0M0NDFFRjBGODEzQTFB
MDBDMUE2MzQgLyogQ29sbGVjdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCBjMzQ3NmE5Li4yMjEyOGI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAt
NzIsNiArNzIsNyBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlVSTFBib2FyZFR5cGU7CiBleHRlcm4g
TlNTdHJpbmcgKldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZTsKICNlbmRpZgogCitjbGFzcyBD
bGlwYm9hcmREYXRhOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEZyYW1lOwogY2xh
c3MgSGl0VGVzdFJlc3VsdDsKQEAgLTg5LDYgKzkwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIHdyaXRlUGxhaW5UZXh0KE5TUGFzdGVib2FyZCogcGFzdGVib2FyZCwgY29uc3QgU3RyaW5n
JiB0ZXh0KTsKICNlbmRpZgogICAgIAorICAgIHN0YXRpYyB2b2lkIHdyaXRlRGF0YShjb25zdCBD
bGlwYm9hcmREYXRhKiBkYXRhKTsKICAgICBzdGF0aWMgUGFzdGVib2FyZCogZ2VuZXJhbFBhc3Rl
Ym9hcmQoKTsKICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCBjYW5TbWFydENv
cHlPckRlbGV0ZSwgRnJhbWUqKTsKICAgICB2b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmlu
ZyYpOwpkaWZmIC0tZ2l0IGEvV2ViY29yZS9wbGF0Zm9ybS9DbGlwYm9hcmREYXRhLmNwcCBiL1dl
YmNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNTc1ZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYmNvcmUvcGxhdGZvcm0v
Q2xpcGJvYXJkRGF0YS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoNCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlDQorICogbWV0Og0KKyAqDQorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuDQorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQ0KKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXINCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQorICogZGlzdHJp
YnV0aW9uLg0KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMNCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQ0KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorICoNCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
DQorICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QNCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLA0KKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkNCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUDQorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFDQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCisg
Ki8NCisNCisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2luY2x1ZGUgIkNsaXBib2FyZERhdGEuaCIN
CisNCituYW1lc3BhY2UgV2ViQ29yZSB7DQorDQorc3RhdGljIFN0cmluZyBub3JtYWxpemVkVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpDQorew0KKyAgICBTdHJpbmcgY2xlYW5UeXBlKHR5cGUuc3Ry
aXBXaGl0ZVNwYWNlKCkubG93ZXIoKSk7DQorDQorICAgIGlmIChjbGVhblR5cGUgPT0gInRleHQi
IHx8IGNsZWFuVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWluOyIpKQ0KKyAgICAgICAgcmV0dXJu
ICJ0ZXh0L3BsYWluIjsgDQorICAgIGlmIChjbGVhblR5cGUgPT0gInVybCIpDQorICAgICAgICBy
ZXR1cm4gInRleHQvdXJpLWxpc3QiOw0KKw0KKyAgICByZXR1cm4gY2xlYW5UeXBlOw0KK30NCisN
Cit2b2lkIENsaXBib2FyZERhdGE6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpDQorew0K
KyAgICBjbGVhckRhdGFJbXBsKG5vcm1hbGl6ZWRUeXBlKHR5cGUpKTsNCit9DQorDQorU3RyaW5n
IENsaXBib2FyZERhdGE6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNz
KSBjb25zdA0KK3sNCisgICAgcmV0dXJuIGdldERhdGFJbXBsKG5vcm1hbGl6ZWRUeXBlKHR5cGUp
LCBzdWNjZXNzKTsNCit9DQorDQorYm9vbCBDbGlwYm9hcmREYXRhOjpzZXREYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQ0KK3sNCisgICAgcmV0dXJuIHNldERhdGFJ
bXBsKG5vcm1hbGl6ZWRUeXBlKHR5cGUpLCBkYXRhKTsNCit9DQorDQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQ0KZGlmZiAtLWdpdCBhL1dlYmNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5oIGIv
V2ViY29yZS9wbGF0Zm9ybS9DbGlwYm9hcmREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uODBmOWM4ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYmNvcmUvcGxhdGZvcm0v
Q2xpcGJvYXJkRGF0YS5oCkBAIC0wLDAgKzEsODIgQEAKKy8qDQorICogQ29weXJpZ2h0IChjKSAy
MDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
DQorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQ0KKyAqIG1ldDoNCisgKg0KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLg0KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUNCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyDQorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKyAqIGRpc3RyaWJ1
dGlvbi4NCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzDQorICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20NCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKyAqDQorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0K
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UDQorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwNCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UDQorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsDQorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
DQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVA0KKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorICov
DQorDQorI2lmbmRlZiBDbGlwYm9hcmREYXRhX2gNCisjZGVmaW5lIENsaXBib2FyZERhdGFfaA0K
Kw0KKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIg0KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
Pg0KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPg0KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPg0K
Kw0KK25hbWVzcGFjZSBXZWJDb3JlIHsNCisNCitjbGFzcyBDbGlwYm9hcmREYXRhIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q2xpcGJvYXJkRGF0YT4gew0KK3B1YmxpYzoNCisgICAgLy8gQmFzaWMgaW50
ZXJmYWNlIGZvciBDbGlwYm9hcmQuIE1ldGhvZHMgdGhhdCB0YWtlIHR5cGUoKSBhcmd1bWVudHMg
aGF2ZSBhIGJhc2UgaW1wbGVtZW50YXRpb24NCisgICAgLy8gdGhhdCBub3JtYWxpemVzIHR5cGUg
bmFtZXMuDQorICAgIHZpcnR1YWwgfkNsaXBib2FyZERhdGEoKSB7IH0NCisgICAgdm9pZCBjbGVh
ckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsNCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRGF0
YSgpID0gMDsNCisgICAgU3RyaW5nIGdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBz
dWNjZXNzKSBjb25zdDsNCisgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBkYXRhKTsNCisgICAgdmlydHVhbCBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBj
b25zdCA9IDA7DQorICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZmlsZXMoKSBjb25zdCA9IDA7
DQorDQorICAgIHZpcnR1YWwgYm9vbCBoYXNEYXRhKCkgY29uc3QgPSAwOw0KKyAgICAvLyBIYXMg
YW55IGRhdGEgaW4gdGhlIENsaXBib2FyZERhdGEgb2JqZWN0IGJlZW4gYWRkZWQsIG1vZGlmaWVk
LCBvciByZW1vdmVkPw0KKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0ID0gMDsNCisN
CisgICAgLy8gVVJMIGFuZCBIVE1MIGNhbiBoYXZlIGFkZGl0aW9uYWwgbWV0YWRhdGEsIHNvIHRo
ZXkgaGF2ZSBkZWRpY2F0ZWQgZ2V0dGVycyBhbmQgc2V0dGVycy4NCisgICAgdmlydHVhbCBTdHJp
bmcgZ2V0VVJMKFN0cmluZyogdGl0bGUpID0gMDsNCisgICAgdmlydHVhbCB2b2lkIHNldFVSTChj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOw0KKyAgICB2aXJ0dWFs
IFN0cmluZyBnZXRIVE1MKFN0cmluZyogYmFzZVVSTCkgPSAwOw0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0SFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCkgPSAwOw0K
Kw0KKyAgICAvLyBGaWxlIGNvbnRlbnQgaGFuZGxpbmcgZm9yIGRyYWdnaW5nIG91dCBpbWFnZXMu
DQorICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlQ29udGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZmlsZUNvbnRlbnQpID0gMDsNCisgICAgdmlydHVhbCB2b2lkIHNldEZpbGVDb250ZW50TmFt
ZShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsNCisNCisgICAgLy8gVXRpbGl0eSBhY2Nlc3NvcnMg
Zm9yIHBsYXRmb3JtIHNlcmlhbGl6YXRpb24gY29kZS4NCisgICAgdmlydHVhbCBjb25zdCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiogZGF0YSgpIGNvbnN0ID0gMDsNCisgICAgdmlydHVhbCBTdHJp
bmcgdXJsVGl0bGUoKSBjb25zdCA9IDA7DQorICAgIHZpcnR1YWwgU3RyaW5nIGh0bWxCYXNlVVJM
KCkgY29uc3QgPSAwOw0KKyAgICB2aXJ0dWFsIGNvbnN0IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBmaWxlQ29udGVudCgpIGNvbnN0ID0gMDsNCisgICAgdmlydHVhbCBTdHJpbmcgZmlsZUNvbnRl
bnROYW1lKCkgY29uc3QgPSAwOw0KKw0KK3Byb3RlY3RlZDoNCisgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRGF0YUltcGwoY29uc3QgU3RyaW5nJiB0eXBlKSA9IDA7DQorICAgIHZpcnR1YWwgU3RyaW5n
IGdldERhdGFJbXBsKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QgPSAw
Ow0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YUltcGwoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGRhdGEpID0gMDsNCit9Ow0KKw0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUNCisN
CisjZW5kaWYgLy8gQ2xpcGJvYXJkX2gNCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58547</attachid>
            <date>2010-06-12 04:23:23 -0700</date>
            <delta_ts>2010-06-12 04:28:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch1-final.patch</filename>
            <type>text/plain</type>
            <size>16507</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAxOWY2YTI4Li43ODg4YTIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0zODEsNiArMzgxLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
Y3BwIFwKIAlcCiAJcGxhdGZvcm0vQXJlbmEuY3BwIFwKKwlwbGF0Zm9ybS9DbGlwYm9hcmREYXRh
LmNwcCBcCiAJcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKIAlwbGF0Zm9ybS9Db250ZXh0TWVu
dS5jcHAgXAogCXBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxYjNj
ZDNmLi43ZjEyOTY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMjcsNiArMTEyNyw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL0FyZW5hLmNwcAogICAgIHBsYXRmb3JtL0Jsb2JJdGVtLmNw
cAorICAgIHBsYXRmb3JtL0NsaXBib2FyZERhdGEuY3BwCiAgICAgcGxhdGZvcm0vQ29udGVudFR5
cGUuY3BwCiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCiAgICAgcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDFkYzhlNTcuLjIxN2E5NjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDYt
MTEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbG93LWxldmVsIHBsYXRmb3Jt
IGFic3RyYWN0aW9uIGZvciBjb3B5LWFuZC1wYXN0ZSBhbmQgZHJhZy1hbmQtZHJvcCBkYXRhLgor
CisgICAgICAgIENsaXBib2FyZERhdGEgcHJvdmlkZXMgYSBsb3dlciBsZXZlbCBhYnN0cmFjdGlv
biBmb3IgYWNjZXNzaW5nIHBsYXRmb3JtIGRhdGEgZm9yCisgICAgICAgIGNvcHktYW5kLXBhc3Rl
IGFuZCBkcmFnLWFuZC1kcm9wLCB3aGljaCBzaG91bGQgaGVscCBzaW1wbGlmeSB0aGUgdmFyaW91
cyBDbGlwYm9hcmQKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBUaGlzIHdpbGwgYWxzbyBhbGxv
dyBkYXRhIHRvIGJlIGF0b21pY2FsbHkgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCwK
KyAgICAgICAgYW5kIGFsc28gZml4ZXMgYSBsb25nLXN0YW5kaW5nIGJ1ZyB3aGVyZSB0aGUgc3lz
dGVtIGNsaXBib2FyZCBpcyBjbGVhcmVkIHdoZW4gYSBjb3B5IG9yIGN1dAorICAgICAgICBpcyBw
cmV2ZW50ZWQgYnV0IG5vIGRhdGEgaXMgc2V0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDUxNQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9DbGlwYm9hcmREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpub3JtYWxp
emVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmREYXRhOjpjbGVhckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRGF0YTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmREYXRhOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DbGlwYm9h
cmREYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRGF0YTo6fkNsaXBi
b2FyZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKwogMjAxMC0wNi0x
MSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpAQCAtNDgwLDEzICs1MTIsNiBAQAogICAgICAgICBwYXRjaGVz
IHdpbGwgYmUgY2FwYWJsZSBvZiByZXNpemluZyBpbWFnZXMuCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDAxOAogCi0gICAgICAgICogQW5kcm9pZC5t
azoKLSAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKLSAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
LSAgICAgICAgKiBXZWJDb3JlLmd5cGk6Ci0gICAgICAgICogV2ViQ29yZS5wcm86Ci0gICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Ci0gICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgogICAgICAgICAqIGh0bWwvQXN5bmNJbWFnZVJlc2l6ZXIu
Y3BwOiBBZGRlZC4KICAgICAgICAgKFdlYkNvcmU6OkFzeW5jSW1hZ2VSZXNpemVyOjpjcmVhdGUp
OgogICAgICAgICAoV2ViQ29yZTo6QXN5bmNJbWFnZVJlc2l6ZXI6OkFzeW5jSW1hZ2VSZXNpemVy
KToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDZkZjBhMWUuLjY2NmNkNDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTU3MSw2ICsxNTcxLDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL0F1dG9kcmFpbmVkUG9v
bC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0Jsb2JJdGVtLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9y
bS9CbG9iSXRlbS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL0NsaXBib2FyZERhdGEuY3BwIFwKKwlX
ZWJDb3JlL3BsYXRmb3JtL0NsaXBib2FyZERhdGEuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9Db250
ZW50VHlwZS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3NzdjYzY4Li5mMjY2YzllIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMjg5Miw2ICsyODkyLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9BdXRvZHJhaW5lZFBv
b2wuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vQmxvYkl0ZW0uY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9CbG9iSXRlbS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9DbGlwYm9hcmRE
YXRhLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L0NvbnRlbnRUeXBlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcCcs
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCBkM2EyYWRkLi4zNWFjNTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTgyMiw2ICs4MjIsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBwbGF0Zm9ybS9CbG9iSXRlbS5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvQmFzZTY0LmNw
cCBcCiAgICAgcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAgXAorICAgIHBsYXRmb3JtL0Ns
aXBib2FyZERhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgXAogICAgIHBs
YXRmb3JtL0NvbnRleHRNZW51LmNwcCBcCiAgICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwIFwKQEAgLTE1NzUsNiArMTU3Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2Fu
aW1hdGlvbi9BbmltYXRpb25MaXN0LmggXAogICAgIHBsYXRmb3JtL0FyZW5hLmggXAogICAgIHBs
YXRmb3JtL0Jsb2JJdGVtLmggXAorICAgIHBsYXRmb3JtL0NsaXBib2FyZERhdGEuaCBcCiAgICAg
cGxhdGZvcm0vQ29udGVudFR5cGUuaCBcCiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuaCBcCiAg
ICAgcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCAwY2Y1MjQwLi4wYjhhZjNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTIyMzc3LDYgKzIyMzc3LDE0IEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXENsaXBib2FyZERh
dGEuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cQ2xpcGJvYXJkRGF0YS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cQ29udGVudFR5cGUuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZDcwZDk2YS4uZWFhNDc0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNzEsNiArMTM3MSw4IEBACiAJCTdBRUQzRTA2MEZCQjFF
QUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFRDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3Bl
Y3RvckZyb250ZW5kLmggKi87IH07CiAJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3Jp
cHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRkQ0RkY0MTEz
Mjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyog
U2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTgxREEyQTczMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MURBMkE3
MTExQzMzNEVGMDA0RTQ5RjMgLyogQ2xpcGJvYXJkRGF0YS5oICovOyB9OworCQk4MURBMkE3NDEx
QzMzNEVGMDA0RTQ5RjMgLyogQ2xpcGJvYXJkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MURBMkE3MjExQzMzNEVGMDA0RTQ5RjMgLyogQ2xp
cGJvYXJkRGF0YS5jcHAgKi87IH07CiAJCTgyQjY1ODk4MTE4OUUzOTIwMEUwNTJBMSAvKiBJbnNw
ZWN0b3JDU1NTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODJCNjU4OTcxMTg5RTM5MjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODJCNjU4OUEx
MTg5RTQ3NjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQjY1ODk5MTE4OUU0NzYwMEUwNTJBMSAv
KiBJbnNwZWN0b3JDU1NTdG9yZS5jcHAgKi87IH07CiAJCTg0MUZEQzI2MTE3OEM5QkUwMEY4QUM5
QiAvKiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDFGREMyNDExNzhDOUJFMDBGOEFDOUIgLyogUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwICovOyB9OwpAQCAtNzA0NSw2ICs3MDQ3LDggQEAKIAkJN0FF
RDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3Bv
aW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgz
IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0RGVidWdMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
MURBMkE3MTExQzMzNEVGMDA0RTQ5RjMgLyogQ2xpcGJvYXJkRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgxREEyQTcyMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaXBib2FyZERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MkI2NTg5NzExODlFMzkyMDBFMDUyQTEgLyog
SW5zcGVjdG9yQ1NTU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yQ1NTU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJCNjU4OTkx
MTg5RTQ3NjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNTU1N0b3JlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODQxRkRDMjQxMTc4QzlCRTAwRjhBQzlCIC8qIFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1OTEwLDYgKzE1OTE0LDggQEAKIAkJCQk1MUUxRUNCMTBDOTFDNTU2MDBEQzI1NUIgLyogQXV0
b2RyYWluZWRQb29sLmggKi8sCiAJCQkJODk4OEUxMEMxMUEzNTA4QjAwREI3MzJFIC8qIEJsb2JJ
dGVtLmNwcCAqLywKIAkJCQk4OTg4RTEwRDExQTM1MDhCMDBEQjczMkUgLyogQmxvYkl0ZW0uaCAq
LywKKwkJCQk4MURBMkE3MjExQzMzNEVGMDA0RTQ5RjMgLyogQ2xpcGJvYXJkRGF0YS5jcHAgKi8s
CisJCQkJODFEQTJBNzExMUMzMzRFRjAwNEU0OUYzIC8qIENsaXBib2FyZERhdGEuaCAqLywKIAkJ
CQlCQ0M4Q0ZDQTA5ODZDRDI0MDAxNDBCRjIgLyogQ29sb3JEYXRhLmdwZXJmICovLAogCQkJCTQx
RDAxNUM5MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgKi8sCiAJCQkJNDFEMDE1
QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi8sCkBAIC0xNzAwNSw2ICsxNzAx
MSw3IEBACiAJCQkJQkNDMDY1ODEwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUIzRTBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJk
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjhBRjRBQTBCMUNFMDJCMDA2ODc2OTAgLyogQ2xpcGJv
YXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MURBMkE3MzExQzMzNEVGMDA0
RTQ5RjMgLyogQ2xpcGJvYXJkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDAwQTQ0
RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Yx
OTlFNzA4MjQ1RTU5MDAxRTlBQkMgLyogQ2xpcGJvYXJkTWFjLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJz
ICovLApAQCAtMTk4MzgsNiArMTk4NDUsNyBAQAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4
NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0UxQjcw
MENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzg0OTQx
QjBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgx
REEyQTc0MTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg1MDMxQjNGMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5M0YxOUFGRjA4MjQ1RTU5MDAxRTlBQkMgLyogQ2xpcGJvYXJkTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDNDQxRUYwRjgxM0ExQTAwQzFBNjM0IC8qIENvbGxl
Y3Rpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggYzM0
NzZhOS4uMjIxMjhiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTcyLDYgKzcyLDcgQEAgZXh0
ZXJuIE5TU3RyaW5nICpXZWJVUkxQYm9hcmRUeXBlOwogZXh0ZXJuIE5TU3RyaW5nICpXZWJVUkxz
V2l0aFRpdGxlc1Bib2FyZFR5cGU7CiAjZW5kaWYKIAorY2xhc3MgQ2xpcGJvYXJkRGF0YTsKIGNs
YXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7
CkBAIC04OSw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB3cml0ZVBsYWluVGV4
dChOU1Bhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CiAjZW5kaWYK
ICAgICAKKyAgICBzdGF0aWMgdm9pZCB3cml0ZURhdGEoY29uc3QgQ2xpcGJvYXJkRGF0YSogZGF0
YSk7CiAgICAgc3RhdGljIFBhc3RlYm9hcmQqIGdlbmVyYWxQYXN0ZWJvYXJkKCk7CiAgICAgdm9p
ZCB3cml0ZVNlbGVjdGlvbihSYW5nZSosIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUsIEZyYW1l
Kik7CiAgICAgdm9pZCB3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBh
L1dlYmNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5jcHAgYi9XZWJjb3JlL3BsYXRmb3JtL0Ns
aXBib2FyZERhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5OGUy
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJjb3JlL3BsYXRmb3JtL0NsaXBib2FyZERhdGEuY3Bw
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNsaXBib2Fy
ZERhdGEuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIG5vcm1hbGl6
ZWRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBTdHJpbmcgY2xlYW5UeXBlKHR5cGUu
c3RyaXBXaGl0ZVNwYWNlKCkubG93ZXIoKSk7CisKKyAgICBpZiAoY2xlYW5UeXBlID09ICJ0ZXh0
IiB8fCBjbGVhblR5cGUuc3RhcnRzV2l0aCgidGV4dC9wbGFpbjsiKSkKKyAgICAgICAgcmV0dXJu
ICJ0ZXh0L3BsYWluIjsgCisgICAgaWYgKGNsZWFuVHlwZSA9PSAidXJsIikKKyAgICAgICAgcmV0
dXJuICJ0ZXh0L3VyaS1saXN0IjsKKworICAgIHJldHVybiBjbGVhblR5cGU7Cit9CisKK3ZvaWQg
Q2xpcGJvYXJkRGF0YTo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBjbGVh
ckRhdGFJbXBsKG5vcm1hbGl6ZWRUeXBlKHR5cGUpKTsKK30KKworU3RyaW5nIENsaXBib2FyZERh
dGE6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZXNzKSBjb25zdAorewor
ICAgIHJldHVybiBnZXREYXRhSW1wbChub3JtYWxpemVkVHlwZSh0eXBlKSwgc3VjY2Vzcyk7Cit9
CisKK2Jvb2wgQ2xpcGJvYXJkRGF0YTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgZGF0YSkKK3sKKyAgICByZXR1cm4gc2V0RGF0YUltcGwobm9ybWFsaXplZFR5cGUo
dHlwZSksIGRhdGEpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJjb3JlL3BsYXRmb3JtL0NsaXBib2FyZERhdGEuaCBiL1dlYmNvcmUvcGxhdGZvcm0vQ2xpcGJv
YXJkRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMDhjYWEKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJjb3JlL3BsYXRmb3JtL0NsaXBib2FyZERhdGEuaApAQCAtMCww
ICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ2xpcGJvYXJkRGF0YV9oCisjZGVmaW5lIENsaXBib2FyZERhdGFf
aAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDbGlwYm9hcmREYXRhIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2xpcGJvYXJkRGF0YT4geworcHVibGljOgorICAgIC8vIEJhc2ljIGludGVyZmFjZSBm
b3IgQ2xpcGJvYXJkLiBNZXRob2RzIHRoYXQgdGFrZSB0eXBlKCkgYXJndW1lbnRzIGhhdmUgYSBi
YXNlIGltcGxlbWVudGF0aW9uCisgICAgLy8gdGhhdCBub3JtYWxpemVzIHR5cGUgbmFtZXMuCisg
ICAgdmlydHVhbCB+Q2xpcGJvYXJkRGF0YSgpIHsgfQorICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRGF0YSgpID0gMDsKKyAg
ICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0
OworICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CisgICAgdmlydHVhbCBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiBmaWxlcygpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwg
Ym9vbCBoYXNEYXRhKCkgY29uc3QgPSAwOworICAgIC8vIEhhcyBhbnkgZGF0YSBpbiB0aGUgQ2xp
cGJvYXJkRGF0YSBvYmplY3QgYmVlbiBhZGRlZCwgbW9kaWZpZWQsIG9yIHJlbW92ZWQ/CisgICAg
dmlydHVhbCBib29sIGlzRGlydHkoKSBjb25zdCA9IDA7CisKKyAgICAvLyBVUkwgYW5kIEhUTUwg
Y2FuIGhhdmUgYWRkaXRpb25hbCBtZXRhZGF0YSwgc28gdGhleSBoYXZlIGRlZGljYXRlZCBnZXR0
ZXJzIGFuZCBzZXR0ZXJzLgorICAgIHZpcnR1YWwgU3RyaW5nIGdldFVSTChTdHJpbmcqIHRpdGxl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGdldEhUTUwoU3RyaW5nKiBi
YXNlVVJMKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEhUTUwoY29uc3QgU3RyaW5nJiBodG1s
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwpID0gMDsKKworICAgIC8vIEZpbGUgY29udGVudCBoYW5k
bGluZyBmb3IgZHJhZ2dpbmcgb3V0IGltYWdlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUNv
bnRlbnQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVDb250ZW50KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEZpbGVDb250ZW50TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKwor
ICAgIC8vIFV0aWxpdHkgYWNjZXNzb3JzIGZvciBwbGF0Zm9ybSBzZXJpYWxpemF0aW9uIGNvZGUu
CisgICAgdmlydHVhbCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiogZGF0YSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB1cmxUaXRsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBodG1sQmFzZVVSTCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlQ29udGVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFN0cmluZyBmaWxlQ29udGVudE5hbWUoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJEYXRhSW1wbChjb25zdCBTdHJpbmcmIHR5cGUpID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBnZXREYXRhSW1wbChjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1
Y2Nlc3MpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RGF0YUltcGwoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIENsaXBib2FyZF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58548</attachid>
            <date>2010-06-12 04:28:43 -0700</date>
            <delta_ts>2010-06-12 04:55:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch1-final.patch</filename>
            <type>text/plain</type>
            <size>16011</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAxOWY2YTI4Li43ODg4YTIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0zODEsNiArMzgxLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
Y3BwIFwKIAlcCiAJcGxhdGZvcm0vQXJlbmEuY3BwIFwKKwlwbGF0Zm9ybS9DbGlwYm9hcmREYXRh
LmNwcCBcCiAJcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKIAlwbGF0Zm9ybS9Db250ZXh0TWVu
dS5jcHAgXAogCXBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxYjNj
ZDNmLi43ZjEyOTY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMjcsNiArMTEyNyw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL0FyZW5hLmNwcAogICAgIHBsYXRmb3JtL0Jsb2JJdGVtLmNw
cAorICAgIHBsYXRmb3JtL0NsaXBib2FyZERhdGEuY3BwCiAgICAgcGxhdGZvcm0vQ29udGVudFR5
cGUuY3BwCiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCiAgICAgcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDFkYzhlNTcuLmQwOTcwNjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDYt
MTEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbG93LWxldmVsIHBsYXRmb3Jt
IGFic3RyYWN0aW9uIGZvciBjb3B5LWFuZC1wYXN0ZSBhbmQgZHJhZy1hbmQtZHJvcCBkYXRhLgor
CisgICAgICAgIENsaXBib2FyZERhdGEgcHJvdmlkZXMgYSBsb3dlciBsZXZlbCBhYnN0cmFjdGlv
biBmb3IgYWNjZXNzaW5nIHBsYXRmb3JtIGRhdGEgZm9yCisgICAgICAgIGNvcHktYW5kLXBhc3Rl
IGFuZCBkcmFnLWFuZC1kcm9wLCB3aGljaCBzaG91bGQgaGVscCBzaW1wbGlmeSB0aGUgdmFyaW91
cyBDbGlwYm9hcmQKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBUaGlzIHdpbGwgYWxzbyBhbGxv
dyBkYXRhIHRvIGJlIGF0b21pY2FsbHkgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCwK
KyAgICAgICAgYW5kIGFsc28gZml4ZXMgYSBsb25nLXN0YW5kaW5nIGJ1ZyB3aGVyZSB0aGUgc3lz
dGVtIGNsaXBib2FyZCBpcyBjbGVhcmVkIHdoZW4gYSBjb3B5IG9yIGN1dAorICAgICAgICBpcyBw
cmV2ZW50ZWQgYnV0IG5vIGRhdGEgaXMgc2V0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDUxNQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9DbGlwYm9hcmREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpub3JtYWxp
emVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmREYXRhOjpjbGVhckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRGF0YTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmREYXRhOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DbGlwYm9h
cmREYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRGF0YTo6fkNsaXBi
b2FyZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKwogMjAxMC0wNi0x
MSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNmRmMGExZS4uNjY2Y2Q0OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0xNTcxLDYgKzE1NzEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZv
cm0vQXV0b2RyYWluZWRQb29sLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL0Jsb2JJdGVtLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vQ2xpcGJv
YXJkRGF0YS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5oIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50
VHlwZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDc3N2Nj
NjguLmYyNjZjOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0yODkyLDYgKzI4OTIsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL0F1dG9kcmFpbmVkUG9vbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9CbG9iSXRlbS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Jsb2JJdGVtLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL0NsaXBib2FyZERhdGEuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9DbGlwYm9h
cmREYXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vQ29udGVudFR5cGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Q29udGV4dE1lbnUuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IGQzYTJhZGQuLjM1YWM1M2MgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODIyLDYgKzgyMiw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL0Jsb2JJdGVtLmNwcCBcCiAgICAgcGxhdGZv
cm0vdGV4dC9CYXNlNjQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBc
CisgICAgcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL0NvbnRlbnRU
eXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwIFwKICAgICBwbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5jcHAgXApAQCAtMTU3NSw2ICsxNTc2LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBcCiAgICAgcGxhdGZvcm0v
QXJlbmEuaCBcCiAgICAgcGxhdGZvcm0vQmxvYkl0ZW0uaCBcCisgICAgcGxhdGZvcm0vQ2xpcGJv
YXJkRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5oIFwKICAgICBwbGF0Zm9ybS9D
b250ZXh0TWVudS5oIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDBjZjUyNDAuLjBiOGFmM2IgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjIzNzcsNiArMjIzNzcsMTQgQEAK
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cQ2xpcGJvYXJkRGF0YS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbGlwYm9hcmREYXRhLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxD
b250ZW50VHlwZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzBkOTZhLi5lYWE0NzRmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3MSw2ICsxMzcxLDggQEAK
IAkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUVEM0UwNDBGQkIxRUFB
MDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3
NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRC
cmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEz
Mjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODFEQTJBNzMxMUMzMzRFRjAwNEU0OUYz
IC8qIENsaXBib2FyZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxREEyQTcxMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmggKi87
IH07CisJCTgxREEyQTc0MTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxREEyQTcyMTFDMzM0
RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmNwcCAqLzsgfTsKIAkJODJCNjU4OTgxMTg5RTM5
MjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkI2NTg5NzExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVj
dG9yQ1NTU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4MkI2NTg5QTExODlFNDc2MDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJCNjU4OTkx
MTg5RTQ3NjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmNwcCAqLzsgfTsKIAkJODQxRkRD
MjYxMTc4QzlCRTAwRjhBQzlCIC8qIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MUZEQzI0MTE3OEM5QkUw
MEY4QUM5QiAvKiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgKi87IH07CkBAIC03MDQ1LDYg
KzcwNDcsOCBAQAogCQk3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRl
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgz
IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0QnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEZG
MzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgxREEyQTcxMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODFEQTJBNzIxMUMzMzRFRjAwNEU0OUYzIC8qIENs
aXBib2FyZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xp
cGJvYXJkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyQjY1ODk3MTE4
OUUzOTIwMEUwNTJBMSAvKiBJbnNwZWN0b3JDU1NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDU1NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MkI2NTg5OTExODlFNDc2MDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ1NTU3RvcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDFGREMyNDExNzhDOUJFMDBGOEFD
OUIgLyogUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTU5MTAsNiArMTU5MTQsOCBAQAogCQkJCTUxRTFFQ0IxMEM5MUM1
NTYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLywKIAkJCQk4OTg4RTEwQzExQTM1MDhC
MDBEQjczMkUgLyogQmxvYkl0ZW0uY3BwICovLAogCQkJCTg5ODhFMTBEMTFBMzUwOEIwMERCNzMy
RSAvKiBCbG9iSXRlbS5oICovLAorCQkJCTgxREEyQTcyMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlw
Ym9hcmREYXRhLmNwcCAqLywKKwkJCQk4MURBMkE3MTExQzMzNEVGMDA0RTQ5RjMgLyogQ2xpcGJv
YXJkRGF0YS5oICovLAogCQkJCUJDQzhDRkNBMDk4NkNEMjQwMDE0MEJGMiAvKiBDb2xvckRhdGEu
Z3BlcmYgKi8sCiAJCQkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNw
cCAqLywKIAkJCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLywK
QEAgLTE3MDA1LDYgKzE3MDExLDcgQEAKIAkJCQlCQ0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyog
Q2xpZW50UmVjdExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjNFMEE0NEVGQzcwMEY5
OTJFMCAvKiBDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCOEFGNEFBMEIxQ0UwMkIw
MDY4NzY5MCAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTgx
REEyQTczMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTAzMUI0MDBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzRjE5OUU3MDgyNDVFNTkwMDFFOUFCQyAvKiBDbGlwYm9hcmRNYWMuaCBp
biBIZWFkZXJzICovLAogCQkJCUMwQzA1NENCMTExOEM4RTQwMENFMjYzNiAvKiBDb2RlR2VuZXJh
dG9yLnBtIGluIEhlYWRlcnMgKi8sCkBAIC0xOTgzOCw2ICsxOTg0NSw3IEBACiAJCQkJQkNDMDY1
N0QwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNDMDY1ODAwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODFEQTJBNzQxMUMzMzRFRjAwNEU0OUYzIC8qIENsaXBib2FyZERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBi
b2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QUZGMDgyNDVFNTkwMDFFOUFC
QyAvKiBDbGlwYm9hcmRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0M0NDFFRjBGODEzQTFB
MDBDMUE2MzQgLyogQ29sbGVjdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCBjMzQ3NmE5Li4yMjEyOGI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAt
NzIsNiArNzIsNyBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlVSTFBib2FyZFR5cGU7CiBleHRlcm4g
TlNTdHJpbmcgKldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZTsKICNlbmRpZgogCitjbGFzcyBD
bGlwYm9hcmREYXRhOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEZyYW1lOwogY2xh
c3MgSGl0VGVzdFJlc3VsdDsKQEAgLTg5LDYgKzkwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIHdyaXRlUGxhaW5UZXh0KE5TUGFzdGVib2FyZCogcGFzdGVib2FyZCwgY29uc3QgU3RyaW5n
JiB0ZXh0KTsKICNlbmRpZgogICAgIAorICAgIHN0YXRpYyB2b2lkIHdyaXRlRGF0YShjb25zdCBD
bGlwYm9hcmREYXRhKiBkYXRhKTsKICAgICBzdGF0aWMgUGFzdGVib2FyZCogZ2VuZXJhbFBhc3Rl
Ym9hcmQoKTsKICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCBjYW5TbWFydENv
cHlPckRlbGV0ZSwgRnJhbWUqKTsKICAgICB2b2lkIHdyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmlu
ZyYpOwpkaWZmIC0tZ2l0IGEvV2ViY29yZS9wbGF0Zm9ybS9DbGlwYm9hcmREYXRhLmNwcCBiL1dl
YmNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDk4ZTI3ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYmNvcmUvcGxhdGZvcm0v
Q2xpcGJvYXJkRGF0YS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ2xpcGJvYXJkRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyBTdHJpbmcgbm9ybWFsaXplZFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIFN0cmlu
ZyBjbGVhblR5cGUodHlwZS5zdHJpcFdoaXRlU3BhY2UoKS5sb3dlcigpKTsKKworICAgIGlmIChj
bGVhblR5cGUgPT0gInRleHQiIHx8IGNsZWFuVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWluOyIp
KQorICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iOyAKKyAgICBpZiAoY2xlYW5UeXBlID09ICJ1
cmwiKQorICAgICAgICByZXR1cm4gInRleHQvdXJpLWxpc3QiOworCisgICAgcmV0dXJuIGNsZWFu
VHlwZTsKK30KKwordm9pZCBDbGlwYm9hcmREYXRhOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0
eXBlKQoreworICAgIGNsZWFyRGF0YUltcGwobm9ybWFsaXplZFR5cGUodHlwZSkpOworfQorCitT
dHJpbmcgQ2xpcGJvYXJkRGF0YTo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1
Y2Nlc3MpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldERhdGFJbXBsKG5vcm1hbGl6ZWRUeXBlKHR5
cGUpLCBzdWNjZXNzKTsKK30KKworYm9vbCBDbGlwYm9hcmREYXRhOjpzZXREYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQoreworICAgIHJldHVybiBzZXREYXRhSW1w
bChub3JtYWxpemVkVHlwZSh0eXBlKSwgZGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYmNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5oIGIvV2ViY29y
ZS9wbGF0Zm9ybS9DbGlwYm9hcmREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYWMwOGNhYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYmNvcmUvcGxhdGZvcm0vQ2xpcGJv
YXJkRGF0YS5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDbGlwYm9hcmREYXRhX2gKKyNkZWZp
bmUgQ2xpcGJvYXJkRGF0YV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENsaXBib2FyZERh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmREYXRhPiB7CitwdWJsaWM6CisgICAgLy8g
QmFzaWMgaW50ZXJmYWNlIGZvciBDbGlwYm9hcmQuIE1ldGhvZHMgdGhhdCB0YWtlIHR5cGUoKSBh
cmd1bWVudHMgaGF2ZSBhIGJhc2UgaW1wbGVtZW50YXRpb24KKyAgICAvLyB0aGF0IG5vcm1hbGl6
ZXMgdHlwZSBuYW1lcy4KKyAgICB2aXJ0dWFsIH5DbGlwYm9hcmREYXRhKCkgeyB9CisgICAgdm9p
ZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJB
bGxEYXRhKCkgPSAwOworICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9v
bCYgc3VjY2VzcykgY29uc3Q7CisgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBkYXRhKTsKKyAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGZpbGVzKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKSBjb25zdCA9IDA7CisgICAgLy8gSGFzIGFu
eSBkYXRhIGluIHRoZSBDbGlwYm9hcmREYXRhIG9iamVjdCBiZWVuIGFkZGVkLCBtb2RpZmllZCwg
b3IgcmVtb3ZlZD8KKyAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0ID0gMDsKKworICAg
IC8vIFVSTCBhbmQgSFRNTCBjYW4gaGF2ZSBhZGRpdGlvbmFsIG1ldGFkYXRhLCBzbyB0aGV5IGhh
dmUgZGVkaWNhdGVkIGdldHRlcnMgYW5kIHNldHRlcnMuCisgICAgdmlydHVhbCBTdHJpbmcgZ2V0
VVJMKFN0cmluZyogdGl0bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcg
Z2V0SFRNTChTdHJpbmcqIGJhc2VVUkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SFRNTChj
b25zdCBTdHJpbmcmIGh0bWwsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCkgPSAwOworCisgICAgLy8g
RmlsZSBjb250ZW50IGhhbmRsaW5nIGZvciBkcmFnZ2luZyBvdXQgaW1hZ2VzLgorICAgIHZpcnR1
YWwgdm9pZCBzZXRGaWxlQ29udGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZUNvbnRl
bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsZUNvbnRlbnROYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgPSAwOworCisgICAgLy8gVXRpbGl0eSBhY2Nlc3NvcnMgZm9yIHBsYXRmb3JtIHNl
cmlhbGl6YXRpb24gY29kZS4KKyAgICB2aXJ0dWFsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+KiBkYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHVybFRpdGxlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGh0bWxCYXNlVVJMKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgY29uc3QgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVDb250ZW50KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVDb250ZW50TmFtZSgpIGNvbnN0ID0gMDsK
KworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBjbGVhckRhdGFJbXBsKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGdldERhdGFJbXBsKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRE
YXRhSW1wbChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2xpcGJvYXJkX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58549</attachid>
            <date>2010-06-12 04:55:24 -0700</date>
            <delta_ts>2011-11-02 14:26:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch1-final.patch</filename>
            <type>text/plain</type>
            <size>16011</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAxOWY2YTI4Li43ODg4YTIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC0zODEsNiArMzgxLDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
Y3BwIFwKIAlcCiAJcGxhdGZvcm0vQXJlbmEuY3BwIFwKKwlwbGF0Zm9ybS9DbGlwYm9hcmREYXRh
LmNwcCBcCiAJcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIFwKIAlwbGF0Zm9ybS9Db250ZXh0TWVu
dS5jcHAgXAogCXBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBcCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxYjNj
ZDNmLi43ZjEyOTY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMjcsNiArMTEyNyw3IEBAIFNFVChXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL0FyZW5hLmNwcAogICAgIHBsYXRmb3JtL0Jsb2JJdGVtLmNw
cAorICAgIHBsYXRmb3JtL0NsaXBib2FyZERhdGEuY3BwCiAgICAgcGxhdGZvcm0vQ29udGVudFR5
cGUuY3BwCiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCiAgICAgcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDFkYzhlNTcuLmQwOTcwNjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMDYt
MTEgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbG93LWxldmVsIHBsYXRmb3Jt
IGFic3RyYWN0aW9uIGZvciBjb3B5LWFuZC1wYXN0ZSBhbmQgZHJhZy1hbmQtZHJvcCBkYXRhLgor
CisgICAgICAgIENsaXBib2FyZERhdGEgcHJvdmlkZXMgYSBsb3dlciBsZXZlbCBhYnN0cmFjdGlv
biBmb3IgYWNjZXNzaW5nIHBsYXRmb3JtIGRhdGEgZm9yCisgICAgICAgIGNvcHktYW5kLXBhc3Rl
IGFuZCBkcmFnLWFuZC1kcm9wLCB3aGljaCBzaG91bGQgaGVscCBzaW1wbGlmeSB0aGUgdmFyaW91
cyBDbGlwYm9hcmQKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBUaGlzIHdpbGwgYWxzbyBhbGxv
dyBkYXRhIHRvIGJlIGF0b21pY2FsbHkgd3JpdHRlbiB0byB0aGUgc3lzdGVtIGNsaXBib2FyZCwK
KyAgICAgICAgYW5kIGFsc28gZml4ZXMgYSBsb25nLXN0YW5kaW5nIGJ1ZyB3aGVyZSB0aGUgc3lz
dGVtIGNsaXBib2FyZCBpcyBjbGVhcmVkIHdoZW4gYSBjb3B5IG9yIGN1dAorICAgICAgICBpcyBw
cmV2ZW50ZWQgYnV0IG5vIGRhdGEgaXMgc2V0LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDUxNQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdl
YkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS9DbGlwYm9hcmREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpub3JtYWxp
emVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmREYXRhOjpjbGVhckRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRGF0YTo6Z2V0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmREYXRhOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9DbGlwYm9h
cmREYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkRGF0YTo6fkNsaXBi
b2FyZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKwogMjAxMC0wNi0x
MSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNmRmMGExZS4uNjY2Y2Q0OSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC0xNTcxLDYgKzE1NzEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZv
cm0vQXV0b2RyYWluZWRQb29sLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vQmxvYkl0ZW0uY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL0Jsb2JJdGVtLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vQ2xpcGJv
YXJkRGF0YS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5oIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50
VHlwZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDc3N2Nj
NjguLmYyNjZjOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0yODkyLDYgKzI4OTIsOCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL0F1dG9kcmFpbmVkUG9vbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9CbG9iSXRlbS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0Jsb2JJdGVtLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL0NsaXBib2FyZERhdGEuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9DbGlwYm9h
cmREYXRhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vQ29udGVudFR5cGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Q29udGV4dE1lbnUuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IGQzYTJhZGQuLjM1YWM1M2MgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODIyLDYgKzgyMiw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL0Jsb2JJdGVtLmNwcCBcCiAgICAgcGxhdGZv
cm0vdGV4dC9CYXNlNjQuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBc
CisgICAgcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL0NvbnRlbnRU
eXBlLmNwcCBcCiAgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwIFwKICAgICBwbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5jcHAgXApAQCAtMTU3NSw2ICsxNTc2LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaCBcCiAgICAgcGxhdGZvcm0v
QXJlbmEuaCBcCiAgICAgcGxhdGZvcm0vQmxvYkl0ZW0uaCBcCisgICAgcGxhdGZvcm0vQ2xpcGJv
YXJkRGF0YS5oIFwKICAgICBwbGF0Zm9ybS9Db250ZW50VHlwZS5oIFwKICAgICBwbGF0Zm9ybS9D
b250ZXh0TWVudS5oIFwKICAgICBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIFwKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDBjZjUyNDAuLjBiOGFmM2IgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjIzNzcsNiArMjIzNzcsMTQgQEAK
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cQ2xpcGJvYXJkRGF0YS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxDbGlwYm9hcmREYXRhLmgiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxD
b250ZW50VHlwZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNzBkOTZhLi5lYWE0NzRmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3MSw2ICsxMzcxLDggQEAK
IAkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUVEM0UwNDBGQkIxRUFB
MDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3
NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRC
cmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEz
Mjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODFEQTJBNzMxMUMzMzRFRjAwNEU0OUYz
IC8qIENsaXBib2FyZERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxREEyQTcxMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmggKi87
IH07CisJCTgxREEyQTc0MTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxREEyQTcyMTFDMzM0
RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmNwcCAqLzsgfTsKIAkJODJCNjU4OTgxMTg5RTM5
MjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkI2NTg5NzExODlFMzkyMDBFMDUyQTEgLyogSW5zcGVj
dG9yQ1NTU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4MkI2NTg5QTExODlFNDc2MDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJCNjU4OTkx
MTg5RTQ3NjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmNwcCAqLzsgfTsKIAkJODQxRkRD
MjYxMTc4QzlCRTAwRjhBQzlCIC8qIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0MUZEQzI0MTE3OEM5QkUw
MEY4QUM5QiAvKiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgKi87IH07CkBAIC03MDQ1LDYg
KzcwNDcsOCBAQAogCQk3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRl
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgz
IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0QnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEZG
MzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgxREEyQTcxMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODFEQTJBNzIxMUMzMzRFRjAwNEU0OUYzIC8qIENs
aXBib2FyZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xp
cGJvYXJkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyQjY1ODk3MTE4
OUUzOTIwMEUwNTJBMSAvKiBJbnNwZWN0b3JDU1NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDU1NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MkI2NTg5OTExODlFNDc2MDBFMDUyQTEgLyogSW5zcGVjdG9yQ1NTU3RvcmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ1NTU3RvcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDFGREMyNDExNzhDOUJFMDBGOEFD
OUIgLyogUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTU5MTAsNiArMTU5MTQsOCBAQAogCQkJCTUxRTFFQ0IxMEM5MUM1
NTYwMERDMjU1QiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLywKIAkJCQk4OTg4RTEwQzExQTM1MDhC
MDBEQjczMkUgLyogQmxvYkl0ZW0uY3BwICovLAogCQkJCTg5ODhFMTBEMTFBMzUwOEIwMERCNzMy
RSAvKiBCbG9iSXRlbS5oICovLAorCQkJCTgxREEyQTcyMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlw
Ym9hcmREYXRhLmNwcCAqLywKKwkJCQk4MURBMkE3MTExQzMzNEVGMDA0RTQ5RjMgLyogQ2xpcGJv
YXJkRGF0YS5oICovLAogCQkJCUJDQzhDRkNBMDk4NkNEMjQwMDE0MEJGMiAvKiBDb2xvckRhdGEu
Z3BlcmYgKi8sCiAJCQkJNDFEMDE1QzkwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmNw
cCAqLywKIAkJCQk0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLywK
QEAgLTE3MDA1LDYgKzE3MDExLDcgQEAKIAkJCQlCQ0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyog
Q2xpZW50UmVjdExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjNFMEE0NEVGQzcwMEY5
OTJFMCAvKiBDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCOEFGNEFBMEIxQ0UwMkIw
MDY4NzY5MCAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTgx
REEyQTczMTFDMzM0RUYwMDRFNDlGMyAvKiBDbGlwYm9hcmREYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTAzMUI0MDBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzRjE5OUU3MDgyNDVFNTkwMDFFOUFCQyAvKiBDbGlwYm9hcmRNYWMuaCBp
biBIZWFkZXJzICovLAogCQkJCUMwQzA1NENCMTExOEM4RTQwMENFMjYzNiAvKiBDb2RlR2VuZXJh
dG9yLnBtIGluIEhlYWRlcnMgKi8sCkBAIC0xOTgzOCw2ICsxOTg0NSw3IEBACiAJCQkJQkNDMDY1
N0QwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNDMDY1ODAwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODFEQTJBNzQxMUMzMzRFRjAwNEU0OUYzIC8qIENsaXBib2FyZERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBi
b2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QUZGMDgyNDVFNTkwMDFFOUFC
QyAvKiBDbGlwYm9hcmRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0M0NDFFRjBGODEzQTFB
MDBDMUE2MzQgLyogQ29sbGVjdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9DbGlwYm9hcmREYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Q2xpcGJvYXJkRGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk4
ZTI3ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5j
cHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2xpcGJv
YXJkRGF0YS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTdHJpbmcgbm9ybWFs
aXplZFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIFN0cmluZyBjbGVhblR5cGUodHlw
ZS5zdHJpcFdoaXRlU3BhY2UoKS5sb3dlcigpKTsKKworICAgIGlmIChjbGVhblR5cGUgPT0gInRl
eHQiIHx8IGNsZWFuVHlwZS5zdGFydHNXaXRoKCJ0ZXh0L3BsYWluOyIpKQorICAgICAgICByZXR1
cm4gInRleHQvcGxhaW4iOyAKKyAgICBpZiAoY2xlYW5UeXBlID09ICJ1cmwiKQorICAgICAgICBy
ZXR1cm4gInRleHQvdXJpLWxpc3QiOworCisgICAgcmV0dXJuIGNsZWFuVHlwZTsKK30KKwordm9p
ZCBDbGlwYm9hcmREYXRhOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAgIGNs
ZWFyRGF0YUltcGwobm9ybWFsaXplZFR5cGUodHlwZSkpOworfQorCitTdHJpbmcgQ2xpcGJvYXJk
RGF0YTo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGdldERhdGFJbXBsKG5vcm1hbGl6ZWRUeXBlKHR5cGUpLCBzdWNjZXNzKTsK
K30KKworYm9vbCBDbGlwYm9hcmREYXRhOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBkYXRhKQoreworICAgIHJldHVybiBzZXREYXRhSW1wbChub3JtYWxpemVkVHlw
ZSh0eXBlKSwgZGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9DbGlw
Ym9hcmREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMwOGNhYQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vQ2xpcGJvYXJkRGF0YS5oCkBAIC0w
LDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDbGlwYm9hcmREYXRhX2gKKyNkZWZpbmUgQ2xpcGJvYXJkRGF0
YV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENsaXBib2FyZERhdGEgOiBwdWJsaWMgUmVm
Q291bnRlZDxDbGlwYm9hcmREYXRhPiB7CitwdWJsaWM6CisgICAgLy8gQmFzaWMgaW50ZXJmYWNl
IGZvciBDbGlwYm9hcmQuIE1ldGhvZHMgdGhhdCB0YWtlIHR5cGUoKSBhcmd1bWVudHMgaGF2ZSBh
IGJhc2UgaW1wbGVtZW50YXRpb24KKyAgICAvLyB0aGF0IG5vcm1hbGl6ZXMgdHlwZSBuYW1lcy4K
KyAgICB2aXJ0dWFsIH5DbGlwYm9hcmREYXRhKCkgeyB9CisgICAgdm9pZCBjbGVhckRhdGEoY29u
c3QgU3RyaW5nJiB0eXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxEYXRhKCkgPSAwOwor
ICAgIFN0cmluZyBnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29u
c3Q7CisgICAgYm9vbCBzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKTsKKyAgICB2aXJ0dWFsIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGZpbGVzKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIGhhc0RhdGEoKSBjb25zdCA9IDA7CisgICAgLy8gSGFzIGFueSBkYXRhIGluIHRoZSBD
bGlwYm9hcmREYXRhIG9iamVjdCBiZWVuIGFkZGVkLCBtb2RpZmllZCwgb3IgcmVtb3ZlZD8KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0ID0gMDsKKworICAgIC8vIFVSTCBhbmQgSFRN
TCBjYW4gaGF2ZSBhZGRpdGlvbmFsIG1ldGFkYXRhLCBzbyB0aGV5IGhhdmUgZGVkaWNhdGVkIGdl
dHRlcnMgYW5kIHNldHRlcnMuCisgICAgdmlydHVhbCBTdHJpbmcgZ2V0VVJMKFN0cmluZyogdGl0
bGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgZ2V0SFRNTChTdHJpbmcq
IGJhc2VVUkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SFRNTChjb25zdCBTdHJpbmcmIGh0
bWwsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCkgPSAwOworCisgICAgLy8gRmlsZSBjb250ZW50IGhh
bmRsaW5nIGZvciBkcmFnZ2luZyBvdXQgaW1hZ2VzLgorICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxl
Q29udGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZUNvbnRlbnQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RmlsZUNvbnRlbnROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwor
CisgICAgLy8gVXRpbGl0eSBhY2Nlc3NvcnMgZm9yIHBsYXRmb3JtIHNlcmlhbGl6YXRpb24gY29k
ZS4KKyAgICB2aXJ0dWFsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KiBkYXRhKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHVybFRpdGxlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGh0bWxCYXNlVVJMKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVDb250ZW50KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU3RyaW5nIGZpbGVDb250ZW50TmFtZSgpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckRhdGFJbXBsKGNvbnN0IFN0cmluZyYgdHlwZSkgPSAwOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGdldERhdGFJbXBsKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYg
c3VjY2VzcykgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXREYXRhSW1wbChjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2xpcGJvYXJkX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5k
ZXggYzM0NzZhOS4uMjIxMjhiNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTcyLDYgKzcyLDcg
QEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJVUkxQYm9hcmRUeXBlOwogZXh0ZXJuIE5TU3RyaW5nICpX
ZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGU7CiAjZW5kaWYKIAorY2xhc3MgQ2xpcGJvYXJkRGF0
YTsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7CkBAIC04OSw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB3cml0ZVBs
YWluVGV4dChOU1Bhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CiAj
ZW5kaWYKICAgICAKKyAgICBzdGF0aWMgdm9pZCB3cml0ZURhdGEoY29uc3QgQ2xpcGJvYXJkRGF0
YSogZGF0YSk7CiAgICAgc3RhdGljIFBhc3RlYm9hcmQqIGdlbmVyYWxQYXN0ZWJvYXJkKCk7CiAg
ICAgdm9pZCB3cml0ZVNlbGVjdGlvbihSYW5nZSosIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGUs
IEZyYW1lKik7CiAgICAgdm9pZCB3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113377</attachid>
            <date>2011-11-02 14:27:01 -0700</date>
            <delta_ts>2011-11-10 16:05:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40515-20111102142700.patch</filename>
            <type>text/plain</type>
            <size>13208</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg5OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NmNjMzkwOWMzZjFmZGJk
MzIyOGJhNWFjODBkM2IxNjM2NGY5MjllLi43MmFhMDg2OTgyZDIzNzU1OGNlNTE3ZTQxMmI1MTZj
MDcxMDhjYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMTEtMDIgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXRvbWljYWxseSB1cGRh
dGUgdGhlIHN5c3RlbSBjbGlwYm9hcmQgZm9yIGNvcHkvY3V0IGV2ZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA1MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBQYXN0ZWJvYXJkOjp3cml0
ZUNsaXBib2FyZCgpIG1ldGhvZCB3aGljaCBpcyByb3VnaGx5IGFuYWxvZ291cyB0bworICAgICAg
ICBEcmFnQ2xpZW50OjpzdGFydERyYWcoKS4gSWYgZXZlbnQgaGFuZGxpbmcgZmFpbHMgKGR1ZSB0
byBhIEpTIHN5bnRheCBlcnJvciBmb3IgZXhhbXBsZSksIHRoZQorICAgICAgICBzeXN0ZW0gY2xp
cGJvYXJkIHdpbGwgbm90IGJlIGxlZnQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ29weSk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6ZGlzcGF0Y2hDUFBFdmVudCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
UGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6Ondy
aXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRHdGs6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6Y2xpcGJvYXJkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjp3cml0ZUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZCk6
CisgICAgICAgICogcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNs
aXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6d3JpdGVDbGlwYm9hcmQpOgorCiAyMDExLTExLTAxICBEb21pbmljIENvb25leSAgPGRv
bWluaWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsIGFuZCBi
b3gtc2l6aW5nOiBib3JkZXItYm94IGNhbGN1bGF0ZXMgY29udGVudC1ib3ggaGVpZ2h0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMDkyYzgwNGIzMjZhMmVjNjljYTMwYWY5YjliMTZk
ZmY4OTcwNTU1Mi4uMDExYmFmZTA3NjI5OWFlNTY4Y2RhOGI1YmQ1Y2QxM2QwOGFmOWUyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDQ2LDExICs0NDYsNiBAQCBib29sIEVkaXRv
cjo6dHJ5REhUTUxDb3B5KCkKICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzSW5QYXNz
d29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChjYW5Db3B5KCkp
Ci0gICAgICAgIC8vIE11c3QgYmUgZG9uZSBiZWZvcmUgb25jb3B5IGFkZHMgdHlwZXMgYW5kIGRh
dGEgdG8gdGhlIHBib2FyZCwKLSAgICAgICAgLy8gYWxzbyBkb25lIGZvciBzZWN1cml0eSwgYXMg
aXQgZXJhc2VzIGRhdGEgZnJvbSB0aGUgbGFzdCBjb3B5L3Bhc3RlLgotICAgICAgICBQYXN0ZWJv
YXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5jbGVhcigpOwotCiAgICAgcmV0dXJuICFkaXNwYXRj
aENQUEV2ZW50KGV2ZW50TmFtZXMoKS5jb3B5RXZlbnQsIENsaXBib2FyZFdyaXRhYmxlKTsKIH0K
IApAQCAtNDU5LDExICs0NTQsNiBAQCBib29sIEVkaXRvcjo6dHJ5REhUTUxDdXQoKQogICAgIGlm
IChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNJblBhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAotICAgIGlmIChjYW5DdXQoKSkKLSAgICAgICAgLy8gTXVzdCBiZSBk
b25lIGJlZm9yZSBvbmN1dCBhZGRzIHR5cGVzIGFuZCBkYXRhIHRvIHRoZSBwYm9hcmQsCi0gICAg
ICAgIC8vIGFsc28gZG9uZSBmb3Igc2VjdXJpdHksIGFzIGl0IGVyYXNlcyBkYXRhIGZyb20gdGhl
IGxhc3QgY29weS9wYXN0ZS4KLSAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+Y2xlYXIoKTsKLQogICAgIHJldHVybiAhZGlzcGF0Y2hDUFBFdmVudChldmVudE5hbWVzKCku
Y3V0RXZlbnQsIENsaXBib2FyZFdyaXRhYmxlKTsKIH0KIApAQCAtNzQ2LDYgKzczNiwxMSBAQCBi
b29sIEVkaXRvcjo6ZGlzcGF0Y2hDUFBFdmVudChjb25zdCBBdG9taWNTdHJpbmcgJmV2ZW50VHlw
ZSwgQ2xpcGJvYXJkQWNjZXNzUG9saQogICAgIFJlZlB0cjxFdmVudD4gZXZ0ID0gQ2xpcGJvYXJk
RXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIHRydWUsIGNsaXBib2FyZCk7CiAgICAgdGFy
Z2V0LT5kaXNwYXRjaEV2ZW50KGV2dCwgZWMpOwogICAgIGJvb2wgbm9EZWZhdWx0UHJvY2Vzc2lu
ZyA9IGV2dC0+ZGVmYXVsdFByZXZlbnRlZCgpOworICAgIGlmIChub0RlZmF1bHRQcm9jZXNzaW5n
ICYmIHBvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZSkgeworICAgICAgICBQYXN0ZWJvYXJkKiBw
YXN0ZWJvYXJkID0gUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKTsKKyAgICAgICAgcGFz
dGVib2FyZC0+Y2xlYXIoKTsKKyAgICAgICAgcGFzdGVib2FyZC0+d3JpdGVDbGlwYm9hcmQoY2xp
cGJvYXJkLmdldCgpKTsKKyAgICB9CiAKICAgICAvLyBpbnZhbGlkYXRlIGNsaXBib2FyZCBoZXJl
IGZvciBzZWN1cml0eQogICAgIGNsaXBib2FyZC0+c2V0QWNjZXNzUG9saWN5KENsaXBib2FyZE51
bWIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDVjZmY2OTZm
MTMzZDgyZTE5NzI0MjkwMzdkMTcxZThhNGYwMjE5NDIuLjI3YjIxNDFiNzM0MzYzNWJmMTU4YjVl
MWZjMTBiYWZhOTY3NWUxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0KQEAgLTQ4LDcgKzQ4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUGFzc1Jl
ZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZE1h
Yzo6Y3JlYXRlKENsaXBib2FyZDo6Q29weUFuZFBhc3RlLCBbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQ
YXN0ZWJvYXJkXSwgcG9saWN5LCBmcmFtZSk7CisgICAgcmV0dXJuIENsaXBib2FyZE1hYzo6Y3Jl
YXRlKENsaXBib2FyZDo6Q29weUFuZFBhc3RlLAorICAgICAgICBwb2xpY3kgPT0gQ2xpcGJvYXJk
V3JpdGFibGUgPyBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV0gOiBbTlNQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSwgcG9saWN5LCBmcmFtZSk7CiB9CiAKIHZvaWQg
RWRpdG9yOjpzaG93Rm9udFBhbmVsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApp
bmRleCA0YjgzYWIzZjUwNjdlOGIzMjdjNTU1M2M5NTk4NDg3MmYxY2Q2ZmYxLi44NjZlN2U1MzI3
NjEzNWM1Yzk4YzcxYjI0NDI5ZmNhY2RhMmQ4YzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCkBAIC03Myw2ICs3Myw3IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViVVJMUGJvYXJk
VHlwZTsKIGV4dGVybiBOU1N0cmluZyAqV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlOwogI2Vu
ZGlmCiAKK2NsYXNzIENsaXBib2FyZDsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CkBAIC0xMDIsNiArMTAzLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoTlNGaWxlV3JhcHBlciop
OwogICAgIFN0cmluZyBhc1VSTChGcmFtZSopOwogI2VuZGlmCisgICAgdm9pZCB3cml0ZUNsaXBi
b2FyZChDbGlwYm9hcmQqKTsKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgYm9vbCBjYW5TbWFydFJl
cGxhY2UoKTsKICAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21l
bnQoRnJhbWUqLCBQYXNzUmVmUHRyPFJhbmdlPiwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYg
Y2hvc2VQbGFpblRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKaW5kZXggZjQxYzEwMDI2NWMxZjU3MjA5Njk3
NzcwZjkyNzA3MTBlNjMxODFlMy4uZDA5ZTE5N2MxNGE5MTlmOWJlNTU2MDZkOWI4ZGNlNWFkYzVl
NzExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVi
b2FyZENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
YXN0ZWJvYXJkQ2hyb21pdW0uY3BwCkBAIC0xNTUsNiArMTU1LDEwIEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFdyaXRlSW1hZ2UoYml0bWFwLCB1cmws
IHRpdGxlKTsKIH0KIAordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChDbGlwYm9hcmQq
KQoreworfQorCiBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkSXNGb3JtYXRBdmFpbGFibGUoUGFzdGVib2Fy
ZFByaXZhdGU6OldlYlNtYXJ0UGFzdGVGb3JtYXQsIG1fc2VsZWN0aW9uTW9kZSA/IFBhc3RlYm9h
cmRQcml2YXRlOjpTZWxlY3Rpb25CdWZmZXIgOiBQYXN0ZWJvYXJkUHJpdmF0ZTo6U3RhbmRhcmRC
dWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9h
cmRFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3Bw
CmluZGV4IDc3YzFkOTA1MGVhNWJjY2ZmZTU5YWJiMmE4YmY1Mzg0ODM1MzdlMjIuLjA4MDA0YTUz
YWY2NWViNmM0ZTI3Y2I5YzRhMjY2Nzg2ZDYxYmVhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKQEAgLTY2LDYgKzY2LDExIEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ2xp
cGJvYXJkKENsaXBib2FyZCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBQ
YXN0ZWJvYXJkOjpjbGVhcigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKaW5kZXggNWIzMzMzNTI2YzA3YzRi
MjNlYzYxMjMwM2EyNmY3Mjk3YzRjYjU5Ni4uYjU1NGQyMDg1ZTQ4MWU3YWJiYmIxNDdiNjM5Yzk3
ZTljZjJiNzM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBi
b2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0
ay5jcHAKQEAgLTE4MSw5ICsxODEsNiBAQCBib29sIENsaXBib2FyZEd0azo6c2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICAgICAgc3VjY2Vz
cyA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKHN1Y2Nlc3MgJiYgbV9jbGlwYm9hcmQpCi0gICAg
ICAgIFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPndyaXRlQ2xp
cGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwotCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCA1NTFmOGZk
OTVjZjQwNjU1ODQxZTdjNGU3Yjg1OTc2YTdiOGJjMGYzLi5kOGI3NTE4MjU0Yzk4Zjk1Y2QxMTdi
MTQ1NjYzZjdmZDMyMjNjZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBi
b2FyZEd0ay5oCkBAIC03Myw2ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCBib29sIGhhc0RhdGEoKTsKIAogICAgICAgICBQYXNzUmVmUHRyPERhdGFPYmplY3RH
dGs+IGRhdGFPYmplY3QoKSB7IHJldHVybiBtX2RhdGFPYmplY3Q7IH0KKyAgICAgICAgR3RrQ2xp
cGJvYXJkKiBjbGlwYm9hcmQoKSB7IHJldHVybiBtX2NsaXBib2FyZDsgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgR3RrQ2xpcGJv
YXJkKiwgRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcAppbmRleCBiZmJmZDY3NTQxZmYyYTA5OWI2YmM1YTc2MWU5YTdiMTA2ODZiYmY4Li43
NDU3ZDFjMDQxZTk2Y2FlOGY3NDgzYTdkYmQ1ZThhYmNiNzU5OThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAi
Q2xpcGJvYXJkR3RrLmgiCiAjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMTMxLDYgKzEzMiwxMiBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9h
cmRIZWxwZXIoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQpOwogfQogCit2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKENsaXBib2FyZCogY2xpcGJvYXJkKQoreworICAg
IFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPndyaXRlQ2xpcGJv
YXJkQ29udGVudHMoCisgICAgICAgIHN0YXRpY19jYXN0PENsaXBib2FyZEd0ayo+KGNsaXBib2Fy
ZCktPmNsaXBib2FyZCgpKTsKK30KKwogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7CiAgICAg
Z3RrX2NsaXBib2FyZF9jbGVhcihndGtfY2xpcGJvYXJkX2dldF9mb3JfZGlzcGxheShnZGtfZGlz
cGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBkMWU5MGE5Y2Q0NDA3
YWIxOTdhMTY4YjBkZWQ5ZWVkNTJlYTkzMjRiLi44NTJlMTdhOTZjYjk5OGYzMjYzOWExZmYwZDkx
OGNjOTY5OWQ3NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgogCiAjaW1w
b3J0ICJDYWNoZWRSZXNvdXJjZS5oIgorI2ltcG9ydCAiQ2xpcGJvYXJkTWFjLmgiCiAjaW1wb3J0
ICJET01SYW5nZUludGVybmFsLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRG9j
dW1lbnRGcmFnbWVudC5oIgpAQCAtMzIwLDYgKzMyMSwxOCBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQogICAgIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KGZpbGVXcmFwcGVyRm9ySW1h
Z2UoY2FjaGVkSW1hZ2UsIGNvY29hVVJMKSk7CiB9CiAKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVD
bGlwYm9hcmQoQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCit7CisgICAgTlNQYXN0ZWJvYXJkKiBwYXN0
ZWJvYXJkID0gc3RhdGljX2Nhc3Q8Q2xpcGJvYXJkTWFjKj4oY2xpcGJvYXJkKS0+cGFzdGVib2Fy
ZCgpOworICAgIE5TQXJyYXkqIHR5cGVzID0gW3Bhc3RlYm9hcmQgdHlwZXNdOworCisgICAgW21f
cGFzdGVib2FyZC5nZXQoKSBhZGRUeXBlczp0eXBlcyBvd25lcjpuaWxdOworICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IFt0eXBlcyBjb3VudF07IGkrKykgeworICAgICAgICBOU1N0cmlu
ZyogdHlwZSA9IFt0eXBlcyBvYmplY3RBdEluZGV4OmldOworICAgICAgICBbbV9wYXN0ZWJvYXJk
LmdldCgpIHNldERhdGE6W3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6dHlwZV0gZm9yVHlwZTp0eXBl
XTsKKyAgICB9Cit9CisKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAg
ICByZXR1cm4gW1ttX3Bhc3RlYm9hcmQuZ2V0KCkgdHlwZXNdIGNvbnRhaW5zT2JqZWN0OldlYlNt
YXJ0UGFzdGVQYm9hcmRUeXBlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1Bhc3RlYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJv
YXJkUXQuY3BwCmluZGV4IGM5ZTdjMWUxMmZlMjY5ZGM0MDBiZjNjODg1YWFkMDYyZGZiYjVmZTku
LjA3Mjg0ZGU1YzQ5ZGFlZmYwYTQ4YzhjNGI0YzMzZmY3ZjE2NWI1ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKIAorI2luY2x1ZGUgIkNs
aXBib2FyZFF0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVk
aXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xNzIsNiArMTczLDEyIEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JikKICNlbmRpZgogfQogCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKENsaXBib2Fy
ZCogY2xpcGJvYXJkKQoreworICAgIFFBcHBsaWNhdGlvbjo6Y2xpcGJvYXJkKCktPnNldE1pbWVE
YXRhKAorICAgICAgICBzdGF0aWNfY2FzdDxDbGlwYm9hcmRRdCo+KGNsaXBib2FyZCktPmNsaXBi
b2FyZERhdGEoKSk7Cit9CisKIC8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gRWRpdG9y
Ojp0cnlESFRNTENvcHkgYmVmb3JlIGFjdHVhbGx5IHNldCB0aGUgY2xpcGJvYXJkCiAgKiBJdCBp
bnRyb2R1Y2UgYSByYWNlIGNvbmRpdGlvbiB3aXRoIGtsaXBwZXIsIHdoaWNoIHdpbGwgdHJ5IHRv
IGdyYWIgdGhlIGNsaXBib2FyZCAKICAqIEl0J3Mgbm90IHJlcXVpcmVkIHRvIGNsZWFyIGl0IGFu
eXdheSwgc2luY2UgUUNsaXBib2FyZCB0YWtlIGNhcmUgYWJvdXQgcmVwbGFjaW5nIHRoZSBjbGlw
Ym9hcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApp
bmRleCBlMGNjODZhYTY4YmNhZGM5YTVhMDIwODcxN2I1MWU4ZTRiOTVhNzY1Li5kNzY4YTNkNTNm
YmM3NmY3NDc5ODU4MmIzMmZmNTdmZDg0YzBmMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKQEAgLTI1MCw2ICsyNTEsMTEgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKQogICAgIH0KIH0KIAordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChD
bGlwYm9hcmQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgUGFzdGVib2Fy
ZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsgCiAgICAgcmV0dXJuIDo6SXNDbGlwYm9hcmRGb3JtYXRB
dmFpbGFibGUoV2ViU21hcnRQYXN0ZUZvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcAppbmRleCA1M2RiZmE4YTA3Mzg1NThkZmI0
ZGZlMmE2NmM0N2JmYjFlOWJlMjIzLi43MmRmZTM4YzkwZTZmYjFkOTViYmNlOTA2ZGUwNjkyZDEw
YTBhYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9QYXN0ZWJv
YXJkV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9h
cmRXaW5DRS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJJbWFnZS5oIgpAQCAtMjMxLDYgKzIzMiwxMCBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiAgICAg
ICAgIERlbGV0ZU9iamVjdChyZXN1bHRCaXRtYXApOwogfQogCit2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlQ2xpcGJvYXJkKENsaXBib2FyZCopCit7Cit9CisKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21h
cnRSZXBsYWNlKCkKIHsKICAgICByZXR1cm4gOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShX
ZWJTbWFydFBhc3RlRm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3d4L1Bhc3RlYm9hcmRXeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJv
YXJkV3guY3BwCmluZGV4IDQ2NzdkMTQ2ZjU4NzNjYjc4MzgwZmM3MDYyNmE4YzQ3Y2M4Yzg3Y2Qu
LjQ5OTM2NjQ2YzMzYzkxODdjZGJiMTM2Yzc5YTNjMzM1MzE0MTg2NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Bhc3RlYm9hcmRXeC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd3gvUGFzdGVib2FyZFd4LmNwcApAQCAtMTA1LDYgKzEwNSwxMSBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiwg
RnJhbWUqKQogICAgIH0KIH0KIAordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChDbGlw
Ym9hcmQqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgUGFzdGVib2FyZDo6
Y2xlYXIoKQogewogICAgIHd4VGhlQ2xpcGJvYXJkLT5DbGVhcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114391</attachid>
            <date>2011-11-09 16:28:40 -0800</date>
            <delta_ts>2011-11-10 16:03:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40515-20111109162839.patch</filename>
            <type>text/plain</type>
            <size>14850</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg5OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NmNjMzkwOWMzZjFmZGJk
MzIyOGJhNWFjODBkM2IxNjM2NGY5MjllLi40MGI0YThiNmFkYzUwODg5ZWIwOTQ5MzA5NjY5NGM5
MjkzM2UxYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMTEtMDIgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXRvbWljYWxseSB1cGRh
dGUgdGhlIHN5c3RlbSBjbGlwYm9hcmQgZm9yIGNvcHkvY3V0IGV2ZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA1MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBjb25zb2xpZGF0
ZXMgdGhlIHN5c3RlbSBwYXN0ZWJvYXJkIG11dGF0aW9uIGxvZ2ljIGludG8gZGlzcGF0Y2hDUFBF
dmVudCgpIHJhdGhlcgorICAgICAgICB0aGFuIGhhdmluZyBpdCBzY2F0dGVyZWQgdGhyb3VnaG91
dCB0cnlESFRNTENvcHkvdHJ5REhUTUxDdXQgYW5kIHRoZSB2YXJpb3VzIENsaXBib2FyZCoKKyAg
ICAgICAgY2xhc3Nlcy4gVGhpcyBhbGxvd3MgdXMgdG8gZW5zdXJlIHRoYXQgdGhlIHN5c3RlbSBw
YXN0ZWJvYXJkIHJlbWFpbnMgaW4gYSBjb25zaXN0ZW50IHN0YXRlCisgICAgICAgIGV2ZW4gaWYg
dGhlcmUncyBhbiBleGNlcHRpb24gdGhyb3duIGR1cmluZyBldmVudCBoYW5kbGluZywgYW5kIGl0
IGFsc28gbGF5cyB0aGUgZ3JvdW5kIHdvcmsKKyAgICAgICAgZm9yIGFsbG93aW5nIHBhZ2VzIHRv
IHByZXZlbnQgY29weS9jdXQgd2l0aG91dCBjYXVzaW5nIHRoZSBzeXN0ZW0gcGFzdGVib2FyZCB0
byBiZSBjbGVhcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgYW55IGxheW91dCB0
ZXN0IHdvdWxkIGJlIGZsYWt5IHNpbmNlIGl0IHdvdWxkIGRlcGVuZCBvbiBhbmQgYWZmZWN0Cisg
ICAgICAgIGdsb2JhbCBzeXN0ZW0gc3RhdGUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ29weSk6IE1vdmUgUGFzdGVi
b2FyZDo6Y2xlYXIoKSBjYWxsIHRvIGRpc3BhdGNoQ1BQRXZlbnQoKQorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp0cnlESFRNTEN1dCk6IE1vdmUgUGFzdGVib2FyZDo6Y2xlYXIoKSBjYWxsIHRv
IGRpc3BhdGNoQ1BQRXZlbnQoKQorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkaXNwYXRjaENQ
UEV2ZW50KToKKyAgICAgICAgT25seSBwZXJzaXN0IENsaXBib2FyZCBtdXRhdGlvbnMgdG8gdGhl
IHN5c3RlbSBwYXN0ZWJvYXJkIGlmIHRoZSBldmVudCB3YXMgZGlzcGF0Y2hlZAorICAgICAgICBz
dWNjZXNzZnVsbHkgYW5kIGRlZmF1bHQgcHJvY2Vzc2luZyB3YXMgcHJldmVudGVkLgorICAgICAg
ICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgIFdoZW4gY3JlYXRpbmcgYSBDbGlwYm9hcmQg
Zm9yIGNvcHkvY3V0LCBiYWNrIGl0IHdpdGggYSB1bmlxdWUgaW5zdGFuY2Ugb2YgTlNQYXN0ZWJv
YXJkIHRvCisgICAgICAgIGJ1ZmZlciBwYXN0ZWJvYXJkIG11dGF0aW9ucy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVi
b2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlQ2xp
cGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHA6IE1vdmVkIHBhc3RlYm9hcmQgd3JpdGViYWNrIHRv
IFBhc3RlYm9hcmRHdGsuCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OnNldERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZEd0azo6Y2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNsaXBi
b2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZCk6CisgICAgICAgIEltcGxlbWVu
dCBsb2dpYyB0byBmbHVzaCBkYXRhIGZyb20gdGVtcG9yYXJ5IE5TUGFzdGVib2FyZCB0byBzeXN0
ZW0gcGFzdGVib2FyZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcDog
TW92ZWQgcGFzdGVib2FyZCB3cml0ZWJhY2sgdG8gUGFzdGVib2FyZFF0LgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkR3RrOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QYXN0
ZWJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVDbGlwYm9h
cmQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGVDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Bhc3RlYm9hcmRXeC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZCk6CisKIDIw
MTEtMTEtMDEgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgYW5kIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY2FsY3Vs
YXRlcyBjb250ZW50LWJveCBoZWlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAw
OTJjODA0YjMyNmEyZWM2OWNhMzBhZjliOWIxNmRmZjg5NzA1NTUyLi4wMTFiYWZlMDc2Mjk5YWU1
NjhjZGE4YjViZDVjZDEzZDA4YWY5ZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBA
IC00NDYsMTEgKzQ0Niw2IEBAIGJvb2wgRWRpdG9yOjp0cnlESFRNTENvcHkoKQogICAgIGlmICht
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNJblBhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKGNhbkNvcHkoKSkKLSAgICAgICAgLy8gTXVzdCBiZSBkb25lIGJl
Zm9yZSBvbmNvcHkgYWRkcyB0eXBlcyBhbmQgZGF0YSB0byB0aGUgcGJvYXJkLAotICAgICAgICAv
LyBhbHNvIGRvbmUgZm9yIHNlY3VyaXR5LCBhcyBpdCBlcmFzZXMgZGF0YSBmcm9tIHRoZSBsYXN0
IGNvcHkvcGFzdGUuCi0gICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmNs
ZWFyKCk7Ci0KICAgICByZXR1cm4gIWRpc3BhdGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmNvcHlF
dmVudCwgQ2xpcGJvYXJkV3JpdGFibGUpOwogfQogCkBAIC00NTksMTEgKzQ1NCw2IEBAIGJvb2wg
RWRpdG9yOjp0cnlESFRNTEN1dCgpCiAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0lu
UGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKGNh
bkN1dCgpKQotICAgICAgICAvLyBNdXN0IGJlIGRvbmUgYmVmb3JlIG9uY3V0IGFkZHMgdHlwZXMg
YW5kIGRhdGEgdG8gdGhlIHBib2FyZCwKLSAgICAgICAgLy8gYWxzbyBkb25lIGZvciBzZWN1cml0
eSwgYXMgaXQgZXJhc2VzIGRhdGEgZnJvbSB0aGUgbGFzdCBjb3B5L3Bhc3RlLgotICAgICAgICBQ
YXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5jbGVhcigpOwotCiAgICAgcmV0dXJuICFk
aXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMoKS5jdXRFdmVudCwgQ2xpcGJvYXJkV3JpdGFibGUp
OwogfQogCkBAIC03NDYsNiArNzM2LDExIEBAIGJvb2wgRWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xpCiAgICAg
UmVmUHRyPEV2ZW50PiBldnQgPSBDbGlwYm9hcmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1
ZSwgdHJ1ZSwgY2xpcGJvYXJkKTsKICAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7
CiAgICAgYm9vbCBub0RlZmF1bHRQcm9jZXNzaW5nID0gZXZ0LT5kZWZhdWx0UHJldmVudGVkKCk7
CisgICAgaWYgKG5vRGVmYXVsdFByb2Nlc3NpbmcgJiYgcG9saWN5ID09IENsaXBib2FyZFdyaXRh
YmxlKSB7CisgICAgICAgIFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpnZW5l
cmFsUGFzdGVib2FyZCgpOworICAgICAgICBwYXN0ZWJvYXJkLT5jbGVhcigpOworICAgICAgICBw
YXN0ZWJvYXJkLT53cml0ZUNsaXBib2FyZChjbGlwYm9hcmQuZ2V0KCkpOworICAgIH0KIAogICAg
IC8vIGludmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5CiAgICAgY2xpcGJvYXJk
LT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJkTnVtYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0KaW5kZXggNWNmZjY5NmYxMzNkODJlMTk3MjQyOTAzN2QxNzFlOGE0ZjAy
MTk0Mi4uMjdiMjE0MWI3MzQzNjM1YmYxNThiNWUxZmMxMGJhZmE5Njc1ZTE1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtNDgsNyArNDgsOCBAQCB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdH
ZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFt
ZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoQ2xpcGJvYXJkOjpDb3B5QW5k
UGFzdGUsIFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdLCBwb2xpY3ksIGZyYW1lKTsK
KyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpjcmVhdGUoQ2xpcGJvYXJkOjpDb3B5QW5kUGFzdGUs
CisgICAgICAgIHBvbGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZSA/IFtOU1Bhc3RlYm9hcmQgcGFz
dGVib2FyZFdpdGhVbmlxdWVOYW1lXSA6IFtOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRd
LCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogdm9pZCBFZGl0b3I6OnNob3dGb250UGFuZWwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDRiODNhYjNmNTA2N2U4YjMyN2M1NTUz
Yzk1OTg0ODcyZjFjZDZmZjEuLjg2NmU3ZTUzMjc2MTM1YzVjOThjNzFiMjQ0MjlmY2FjZGEyZDhj
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTczLDYgKzczLDcgQEAg
ZXh0ZXJuIE5TU3RyaW5nICpXZWJVUkxQYm9hcmRUeXBlOwogZXh0ZXJuIE5TU3RyaW5nICpXZWJV
UkxzV2l0aFRpdGxlc1Bib2FyZFR5cGU7CiAjZW5kaWYKIAorY2xhc3MgQ2xpcGJvYXJkOwogY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsK
QEAgLTEwMiw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNS
VEZEQXR0YWNobWVudChOU0ZpbGVXcmFwcGVyKik7CiAgICAgU3RyaW5nIGFzVVJMKEZyYW1lKik7
CiAjZW5kaWYKKyAgICB2b2lkIHdyaXRlQ2xpcGJvYXJkKENsaXBib2FyZCopOwogICAgIHZvaWQg
Y2xlYXIoKTsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpOwogICAgIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudChGcmFtZSosIFBhc3NSZWZQdHI8UmFuZ2U+
LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNw
cAppbmRleCBmNDFjMTAwMjY1YzFmNTcyMDk2OTc3NzBmOTI3MDcxMGU2MzE4MWUzLi5kMDllMTk3
YzE0YTkxOWY5YmU1NTYwNmQ5YjhkY2U1YWRjNWU3MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTE1
NSw2ICsxNTUsMTAgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIFBsYXRmb3JtU3VwcG9ydDo6Y2xp
cGJvYXJkV3JpdGVJbWFnZShiaXRtYXAsIHVybCwgdGl0bGUpOwogfQogCit2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ2xpcGJvYXJkKENsaXBib2FyZCopCit7Cit9CisKIGJvb2wgUGFzdGVib2FyZDo6
Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9h
cmRJc0Zvcm1hdEF2YWlsYWJsZShQYXN0ZWJvYXJkUHJpdmF0ZTo6V2ViU21hcnRQYXN0ZUZvcm1h
dCwgbV9zZWxlY3Rpb25Nb2RlID8gUGFzdGVib2FyZFByaXZhdGU6OlNlbGVjdGlvbkJ1ZmZlciA6
IFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5jcHAKaW5kZXggNzdjMWQ5MDUwZWE1YmNjZmZlNTlh
YmIyYThiZjUzODQ4MzUzN2UyMi4uMDgwMDRhNTNhZjY1ZWI2YzRlMjdjYjljNGEyNjY3ODZkNjFi
ZWE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNw
cApAQCAtNjYsNiArNjYsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5v
ZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJk
R3RrLmNwcAppbmRleCA1YjMzMzM1MjZjMDdjNGIyM2VjNjEyMzAzYTI2ZjcyOTdjNGNiNTk2Li5i
NTU0ZDIwODVlNDgxZTdhYmJiYjE0N2I2MzljOTdlOWNmMmI3MzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAtMTgxLDkgKzE4MSw2IEBAIGJv
b2wgQ2xpcGJvYXJkR3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29uc3Qg
U3RyaW5nJiBkYXRhKQogICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAo
c3VjY2VzcyAmJiBtX2NsaXBib2FyZCkKLSAgICAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVs
dFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7
Ci0KICAgICByZXR1cm4gc3VjY2VzczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5oCmluZGV4IDU1MWY4ZmQ5NWNmNDA2NTU4NDFlN2M0ZTdiODU5NzZhN2I4
YmMwZjMuLmQ4Yjc1MTgyNTRjOThmOTVjZDExN2IxNDU2NjNmN2ZkMzIyM2NmNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKQEAgLTczLDYgKzczLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpOwogCiAg
ICAgICAgIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCgpIHsgcmV0dXJuIG1f
ZGF0YU9iamVjdDsgfQorICAgICAgICBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCgpIHsgcmV0dXJu
IG1fY2xpcGJvYXJkOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBDbGlwYm9hcmRHdGsoQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LCBHdGtDbGlwYm9hcmQqLCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IGJmYmZkNjc1NDFmZjJh
MDk5YjZiYzVhNzYxZTlhN2IxMDY4NmJiZjguLjc0NTdkMWMwNDFlOTZjYWU4Zjc0ODNhN2RiZDVl
OGFiY2I3NTk5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQYXN0ZWJvYXJkLmgiCiAKKyNpbmNsdWRlICJDbGlwYm9hcmRHdGsuaCIKICNpbmNsdWRlICJE
YXRhT2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0xMzEsNiArMTMyLDEyIEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFn
ZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBQYXN0
ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT53cml0ZUNsaXBib2FyZENv
bnRlbnRzKGNsaXBib2FyZCk7CiB9CiAKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQo
Q2xpcGJvYXJkKiBjbGlwYm9hcmQpCit7CisgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBh
c3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cygKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8Q2xpcGJvYXJkR3RrKj4oY2xpcGJvYXJkKS0+Y2xpcGJvYXJkKCkpOworfQorCiB2b2lk
IFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHsKICAgICBndGtfY2xpcGJvYXJkX2NsZWFyKGd0a19jbGlw
Ym9hcmRfZ2V0X2Zvcl9kaXNwbGF5KGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCksIEdES19TRUxF
Q1RJT05fQ0xJUEJPQVJEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCmluZGV4IGQxZTkwYTljZDQ0MDdhYjE5N2ExNjhiMGRlZDllZWQ1MmVhOTMyNGIu
Ljg1MmUxN2E5NmNiOTk4ZjMyNjM5YTFmZjBkOTE4Y2M5Njk5ZDc0ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlLmgiCisjaW1w
b3J0ICJDbGlwYm9hcmRNYWMuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50LmgiCkBAIC0zMjAsNiAr
MzIxLDE4IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgd3JpdGVGaWxlV3JhcHBlckFzUlRG
REF0dGFjaG1lbnQoZmlsZVdyYXBwZXJGb3JJbWFnZShjYWNoZWRJbWFnZSwgY29jb2FVUkwpKTsK
IH0KIAordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChDbGlwYm9hcmQqIGNsaXBib2Fy
ZCkKK3sKKyAgICBOU1Bhc3RlYm9hcmQqIHBhc3RlYm9hcmQgPSBzdGF0aWNfY2FzdDxDbGlwYm9h
cmRNYWMqPihjbGlwYm9hcmQpLT5wYXN0ZWJvYXJkKCk7CisgICAgTlNBcnJheSogdHlwZXMgPSBb
cGFzdGVib2FyZCB0eXBlc107CisKKyAgICBbbV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVzOnR5
cGVzIG93bmVyOm5pbF07CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3R5cGVzIGNv
dW50XTsgaSsrKSB7CisgICAgICAgIE5TU3RyaW5nKiB0eXBlID0gW3R5cGVzIG9iamVjdEF0SW5k
ZXg6aV07CisgICAgICAgIFttX3Bhc3RlYm9hcmQuZ2V0KCkgc2V0RGF0YTpbcGFzdGVib2FyZCBk
YXRhRm9yVHlwZTp0eXBlXSBmb3JUeXBlOnR5cGVdOworICAgIH0KK30KKwogYm9vbCBQYXN0ZWJv
YXJkOjpjYW5TbWFydFJlcGxhY2UoKQogewogICAgIHJldHVybiBbW21fcGFzdGVib2FyZC5nZXQo
KSB0eXBlc10gY29udGFpbnNPYmplY3Q6V2ViU21hcnRQYXN0ZVBib2FyZFR5cGVdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCmluZGV4IGY0NjY1OWYxMzI0YzQ2
NGRiYjEwZDcxZGE1NmRhYTM4NWQ3ZTlhNjIuLmJkNjJjNjNmZmEzN2VhZDI0NWExNjJlYjQ5NjNl
YmNlNzYyMzg4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBi
b2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5j
cHAKQEAgLTE4NSwxMCArMTg1LDYgQEAgYm9vbCBDbGlwYm9hcmRRdDo6c2V0RGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICAgICAgbV93cml0YWJsZURhdGEt
PnNldERhdGEoUVN0cmluZyh0eXBlKSwgYXJyYXkpOwogICAgIH0KIAotI2lmbmRlZiBRVF9OT19D
TElQQk9BUkQKLSAgICBpZiAoaXNGb3JDb3B5QW5kUGFzdGUoKSkKLSAgICAgICAgUUFwcGxpY2F0
aW9uOjpjbGlwYm9hcmQoKS0+c2V0TWltZURhdGEobV93cml0YWJsZURhdGEpOwotI2VuZGlmCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1Bhc3RlYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJv
YXJkUXQuY3BwCmluZGV4IGM5ZTdjMWUxMmZlMjY5ZGM0MDBiZjNjODg1YWFkMDYyZGZiYjVmZTku
LjMwNzY1YmU1MzI0ZThhNzFkZjg4OTg4N2M3ZTJkZDQ3ZjIzMDBkMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKIAorI2luY2x1ZGUgIkNs
aXBib2FyZFF0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVk
aXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xNzIsNiArMTczLDEzIEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JikKICNlbmRpZgogfQogCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKENsaXBib2Fy
ZCogY2xpcGJvYXJkKQoreworI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKKyAgICBRQXBwbGljYXRp
b246OmNsaXBib2FyZCgpLT5zZXRNaW1lRGF0YShzdGF0aWNfY2FzdDxDbGlwYm9hcmRRdCo+KGNs
aXBib2FyZCktPmNsaXBib2FyZERhdGEoKSk7CisjZW5kaWYKK30KKwogLyogVGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQgZnJvbSBFZGl0b3I6OnRyeURIVE1MQ29weSBiZWZvcmUgYWN0dWFsbHkgc2V0
IHRoZSBjbGlwYm9hcmQKICAqIEl0IGludHJvZHVjZSBhIHJhY2UgY29uZGl0aW9uIHdpdGgga2xp
cHBlciwgd2hpY2ggd2lsbCB0cnkgdG8gZ3JhYiB0aGUgY2xpcGJvYXJkIAogICogSXQncyBub3Qg
cmVxdWlyZWQgdG8gY2xlYXIgaXQgYW55d2F5LCBzaW5jZSBRQ2xpcGJvYXJkIHRha2UgY2FyZSBh
Ym91dCByZXBsYWNpbmcgdGhlIGNsaXBib2FyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGUwY2M4NmFhNjhiY2FkYzlhNWEwMjA4NzE3YjUx
ZThlNGI5NWE3NjUuLmQ3NjhhM2Q1M2ZiYzc2Zjc0Nzk4NTgyYjMyZmY1N2ZkODRjMGYyMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5o
IgpAQCAtMjUwLDYgKzI1MSwxMSBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSog
bm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiAgICAgfQogfQogCit2b2lkIFBhc3Rl
Ym9hcmQ6OndyaXRlQ2xpcGJvYXJkKENsaXBib2FyZCopCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwogYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQogeyAKICAgICByZXR1
cm4gOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShXZWJTbWFydFBhc3RlRm9ybWF0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9hcmRXaW5DRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwCmlu
ZGV4IDUzZGJmYThhMDczODU1OGRmYjRkZmUyYTY2YzQ3YmZiMWU5YmUyMjMuLjEzYmJlNDg0MGNh
NWEwYTY0MGQzODA1MzAyZjgxZWUyNzc0Mzg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9hcmRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0yMzEsNiArMjMy
LDExIEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJikKICAgICAgICAgRGVsZXRlT2JqZWN0KHJlc3VsdEJpdG1hcCk7CiB9
CiAKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgp
CiB7CiAgICAgcmV0dXJuIDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoV2ViU21hcnRQYXN0
ZUZvcm1hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJv
YXJkV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvUGFzdGVib2FyZFd4LmNwcApp
bmRleCA0Njc3ZDE0NmY1ODczY2I3ODM4MGZjNzA2MjZhOGM0N2NjOGM4N2NkLi40OTkzNjY0NmMz
M2M5MTg3Y2RiYjEzNmM3OWEzYzMzNTMxNDE4NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3d4L1Bhc3RlYm9hcmRXeC5jcHAKQEAgLTEwNSw2ICsxMDUsMTEgQEAgdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZVVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKICAg
ICB9CiB9CiAKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHsK
ICAgICB3eFRoZUNsaXBib2FyZC0+Q2xlYXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114592</attachid>
            <date>2011-11-10 16:03:24 -0800</date>
            <delta_ts>2011-11-10 17:12:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40515-20111110160323.patch</filename>
            <type>text/plain</type>
            <size>14772</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMGYxMWNkZDRlNzQyOGEx
NGY5NzM5N2EwZjJhOTIyZjM0M2Y3YTZkLi41ZDhlNGVkN2YxY2FhNDQyNmMwMWRmZDI2YjU5NTE5
YWI3MWY0OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMTEtMDIgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXRvbWljYWxseSB1cGRh
dGUgdGhlIHN5c3RlbSBjbGlwYm9hcmQgZm9yIGNvcHkvY3V0IGV2ZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA1MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBjb25zb2xpZGF0
ZXMgdGhlIHN5c3RlbSBwYXN0ZWJvYXJkIG11dGF0aW9uIGxvZ2ljIGludG8gZGlzcGF0Y2hDUFBF
dmVudCgpIHJhdGhlcgorICAgICAgICB0aGFuIGhhdmluZyBpdCBzY2F0dGVyZWQgdGhyb3VnaG91
dCB0cnlESFRNTENvcHkvdHJ5REhUTUxDdXQgYW5kIHRoZSB2YXJpb3VzIENsaXBib2FyZCoKKyAg
ICAgICAgY2xhc3Nlcy4gVGhpcyBhbGxvd3MgdXMgdG8gZW5zdXJlIHRoYXQgdGhlIHN5c3RlbSBw
YXN0ZWJvYXJkIHJlbWFpbnMgaW4gYSBjb25zaXN0ZW50IHN0YXRlCisgICAgICAgIGV2ZW4gaWYg
dGhlcmUncyBhbiBleGNlcHRpb24gdGhyb3duIGR1cmluZyBldmVudCBoYW5kbGluZywgYW5kIGl0
IGFsc28gbGF5cyB0aGUgZ3JvdW5kIHdvcmsKKyAgICAgICAgZm9yIGFsbG93aW5nIHBhZ2VzIHRv
IHByZXZlbnQgY29weS9jdXQgd2l0aG91dCBjYXVzaW5nIHRoZSBzeXN0ZW0gcGFzdGVib2FyZCB0
byBiZSBjbGVhcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgYW55IGxheW91dCB0
ZXN0IHdvdWxkIGJlIGZsYWt5IHNpbmNlIGl0IHdvdWxkIGRlcGVuZCBvbiBhbmQgYWZmZWN0Cisg
ICAgICAgIGdsb2JhbCBzeXN0ZW0gc3RhdGUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ29weSk6IE1vdmUgUGFzdGVi
b2FyZDo6Y2xlYXIoKSBjYWxsIHRvIGRpc3BhdGNoQ1BQRXZlbnQoKS4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6dHJ5REhUTUxDdXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6ZGlzcGF0Y2hDUFBFdmVudCk6CisgICAgICAgIE9ubHkgcGVyc2lzdCBDbGlwYm9hcmQgbXV0
YXRpb25zIHRvIHRoZSBzeXN0ZW0gcGFzdGVib2FyZCBpZiB0aGUgZXZlbnQgd2FzIGRpc3BhdGNo
ZWQKKyAgICAgICAgc3VjY2Vzc2Z1bGx5IGFuZCBkZWZhdWx0IHByb2Nlc3Npbmcgd2FzIHByZXZl
bnRlZC4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICBXaGVuIGNyZWF0aW5n
IGEgQ2xpcGJvYXJkIGZvciBjb3B5L2N1dCwgYmFjayBpdCB3aXRoIGEgdW5pcXVlIGluc3RhbmNl
IG9mIE5TUGFzdGVib2FyZCB0bworICAgICAgICBidWZmZXIgcGFzdGVib2FyZCBtdXRhdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRF
ZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOiBNb3ZlZCBwYXN0ZWJvYXJk
IHdyaXRlYmFjayB0byBQYXN0ZWJvYXJkR3RrLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
R3RrOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmNsaXBib2FyZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGVDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQpOgorICAg
ICAgICBJbXBsZW1lbnQgbG9naWMgdG8gZmx1c2ggZGF0YSBmcm9tIHRlbXBvcmFyeSBOU1Bhc3Rl
Ym9hcmQgdG8gc3lzdGVtIHBhc3RlYm9hcmQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBi
b2FyZEd0ay5jcHA6IE1vdmVkIHBhc3RlYm9hcmQgd3JpdGViYWNrIHRvIFBhc3RlYm9hcmRRdC4K
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6c2V0RGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9Q
YXN0ZWJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVDbGlw
Ym9hcmQpOgorCiAyMDExLTExLTEwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgZWZmZWN0Qm91bmRpbmdCb3hNb2RlIGZyb20gQ1NTIEZpbHRlcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAwOTJjODA0YjMyNmEyZWM2OWNhMzBhZjliOWIx
NmRmZjg5NzA1NTUyLi4wMTFiYWZlMDc2Mjk5YWU1NjhjZGE4YjViZDVjZDEzZDA4YWY5ZTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00NDYsMTEgKzQ0Niw2IEBAIGJvb2wgRWRp
dG9yOjp0cnlESFRNTENvcHkoKQogICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNJblBh
c3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNhbkNvcHko
KSkKLSAgICAgICAgLy8gTXVzdCBiZSBkb25lIGJlZm9yZSBvbmNvcHkgYWRkcyB0eXBlcyBhbmQg
ZGF0YSB0byB0aGUgcGJvYXJkLAotICAgICAgICAvLyBhbHNvIGRvbmUgZm9yIHNlY3VyaXR5LCBh
cyBpdCBlcmFzZXMgZGF0YSBmcm9tIHRoZSBsYXN0IGNvcHkvcGFzdGUuCi0gICAgICAgIFBhc3Rl
Ym9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmNsZWFyKCk7Ci0KICAgICByZXR1cm4gIWRpc3Bh
dGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmNvcHlFdmVudCwgQ2xpcGJvYXJkV3JpdGFibGUpOwog
fQogCkBAIC00NTksMTEgKzQ1NCw2IEBAIGJvb2wgRWRpdG9yOjp0cnlESFRNTEN1dCgpCiAgICAg
aWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0luUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKGNhbkN1dCgpKQotICAgICAgICAvLyBNdXN0IGJl
IGRvbmUgYmVmb3JlIG9uY3V0IGFkZHMgdHlwZXMgYW5kIGRhdGEgdG8gdGhlIHBib2FyZCwKLSAg
ICAgICAgLy8gYWxzbyBkb25lIGZvciBzZWN1cml0eSwgYXMgaXQgZXJhc2VzIGRhdGEgZnJvbSB0
aGUgbGFzdCBjb3B5L3Bhc3RlLgotICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2Fy
ZCgpLT5jbGVhcigpOwotCiAgICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMo
KS5jdXRFdmVudCwgQ2xpcGJvYXJkV3JpdGFibGUpOwogfQogCkBAIC03NDYsNiArNzM2LDExIEBA
IGJvb2wgRWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRU
eXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xpCiAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBDbGlwYm9h
cmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgY2xpcGJvYXJkKTsKICAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CiAgICAgYm9vbCBub0RlZmF1bHRQcm9jZXNz
aW5nID0gZXZ0LT5kZWZhdWx0UHJldmVudGVkKCk7CisgICAgaWYgKG5vRGVmYXVsdFByb2Nlc3Np
bmcgJiYgcG9saWN5ID09IENsaXBib2FyZFdyaXRhYmxlKSB7CisgICAgICAgIFBhc3RlYm9hcmQq
IHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpOworICAgICAgICBw
YXN0ZWJvYXJkLT5jbGVhcigpOworICAgICAgICBwYXN0ZWJvYXJkLT53cml0ZUNsaXBib2FyZChj
bGlwYm9hcmQuZ2V0KCkpOworICAgIH0KIAogICAgIC8vIGludmFsaWRhdGUgY2xpcGJvYXJkIGhl
cmUgZm9yIHNlY3VyaXR5CiAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJk
TnVtYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNWNmZjY5
NmYxMzNkODJlMTk3MjQyOTAzN2QxNzFlOGE0ZjAyMTk0Mi4uMjdiMjE0MWI3MzQzNjM1YmYxNThi
NWUxZmMxMGJhZmE5Njc1ZTE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtNDgsNyArNDgsOCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBQYXNz
UmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJk
TWFjOjpjcmVhdGUoQ2xpcGJvYXJkOjpDb3B5QW5kUGFzdGUsIFtOU1Bhc3RlYm9hcmQgZ2VuZXJh
bFBhc3RlYm9hcmRdLCBwb2xpY3ksIGZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpj
cmVhdGUoQ2xpcGJvYXJkOjpDb3B5QW5kUGFzdGUsCisgICAgICAgIHBvbGljeSA9PSBDbGlwYm9h
cmRXcml0YWJsZSA/IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXSA6IFtO
U1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogdm9p
ZCBFZGl0b3I6OnNob3dGb250UGFuZWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
CmluZGV4IDRiODNhYjNmNTA2N2U4YjMyN2M1NTUzYzk1OTg0ODcyZjFjZDZmZjEuLjg2NmU3ZTUz
Mjc2MTM1YzVjOThjNzFiMjQ0MjlmY2FjZGEyZDhjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKQEAgLTczLDYgKzczLDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJVUkxQYm9h
cmRUeXBlOwogZXh0ZXJuIE5TU3RyaW5nICpXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGU7CiAj
ZW5kaWYKIAorY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKQEAgLTEwMiw2ICsxMDMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChOU0ZpbGVXcmFwcGVy
Kik7CiAgICAgU3RyaW5nIGFzVVJMKEZyYW1lKik7CiAjZW5kaWYKKyAgICB2b2lkIHdyaXRlQ2xp
cGJvYXJkKENsaXBib2FyZCopOwogICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIGNhblNtYXJ0
UmVwbGFjZSgpOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFn
bWVudChGcmFtZSosIFBhc3NSZWZQdHI8UmFuZ2U+LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29s
JiBjaG9zZVBsYWluVGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAppbmRleCBmNDFjMTAwMjY1YzFmNTcyMDk2
OTc3NzBmOTI3MDcxMGU2MzE4MWUzLi5kMDllMTk3YzE0YTkxOWY5YmU1NTYwNmQ5YjhkY2U1YWRj
NWU3MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0
ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTE1NSw2ICsxNTUsMTAgQEAgdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQogICAgIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkV3JpdGVJbWFnZShiaXRtYXAsIHVy
bCwgdGl0bGUpOwogfQogCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKENsaXBib2Fy
ZCopCit7Cit9CisKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICBy
ZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRJc0Zvcm1hdEF2YWlsYWJsZShQYXN0ZWJv
YXJkUHJpdmF0ZTo6V2ViU21hcnRQYXN0ZUZvcm1hdCwgbV9zZWxlY3Rpb25Nb2RlID8gUGFzdGVi
b2FyZFByaXZhdGU6OlNlbGVjdGlvbkJ1ZmZlciA6IFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFy
ZEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVi
b2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5j
cHAKaW5kZXggNzdjMWQ5MDUwZWE1YmNjZmZlNTlhYmIyYThiZjUzODQ4MzUzN2UyMi4uMDgwMDRh
NTNhZjY1ZWI2YzRlMjdjYjljNGEyNjY3ODZkNjFiZWE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcApAQCAtNjYsNiArNjYsMTEgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVD
bGlwYm9hcmQoQ2xpcGJvYXJkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lk
IFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAppbmRleCA1YjMzMzM1MjZjMDdj
NGIyM2VjNjEyMzAzYTI2ZjcyOTdjNGNiNTk2Li5iNTU0ZDIwODVlNDgxZTdhYmJiYjE0N2I2Mzlj
OTdlOWNmMmI3MzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJk
R3RrLmNwcApAQCAtMTgxLDkgKzE4MSw2IEBAIGJvb2wgQ2xpcGJvYXJkR3RrOjpzZXREYXRhKGNv
bnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBzdWNj
ZXNzID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoc3VjY2VzcyAmJiBtX2NsaXBib2FyZCkKLSAg
ICAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVD
bGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7Ci0KICAgICByZXR1cm4gc3VjY2VzczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCmluZGV4IDU1MWY4
ZmQ5NWNmNDA2NTU4NDFlN2M0ZTdiODU5NzZhN2I4YmMwZjMuLmQ4Yjc1MTgyNTRjOThmOTVjZDEx
N2IxNDU2NjNmN2ZkMzIyM2NmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmgKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8RGF0YU9iamVj
dEd0az4gZGF0YU9iamVjdCgpIHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQorICAgICAgICBHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCgpIHsgcmV0dXJuIG1fY2xpcGJvYXJkOyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBHdGtDbGlw
Ym9hcmQqLCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRHdGsuY3BwCmluZGV4IGJmYmZkNjc1NDFmZjJhMDk5YjZiYzVhNzYxZTlhN2IxMDY4NmJiZjgu
Ljc0NTdkMWMwNDFlOTZjYWU4Zjc0ODNhN2RiZDVlOGFiY2I3NTk5OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTIwLDYgKzIwLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAKKyNpbmNsdWRl
ICJDbGlwYm9hcmRHdGsuaCIKICNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMzEsNiArMTMyLDEy
IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVi
b2FyZEhlbHBlcigpLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCk7CiB9CiAKK3Zv
aWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCit7Cisg
ICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVDbGlw
Ym9hcmRDb250ZW50cygKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q2xpcGJvYXJkR3RrKj4oY2xpcGJv
YXJkKS0+Y2xpcGJvYXJkKCkpOworfQorCiB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHsKICAg
ICBndGtfY2xpcGJvYXJkX2NsZWFyKGd0a19jbGlwYm9hcmRfZ2V0X2Zvcl9kaXNwbGF5KGdka19k
aXNwbGF5X2dldF9kZWZhdWx0KCksIEdES19TRUxFQ1RJT05fQ0xJUEJPQVJEKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQxZTkwYTljZDQ0
MDdhYjE5N2ExNjhiMGRlZDllZWQ1MmVhOTMyNGIuLjg1MmUxN2E5NmNiOTk4ZjMyNjM5YTFmZjBk
OTE4Y2M5Njk5ZDc0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAKICNp
bXBvcnQgIkNhY2hlZFJlc291cmNlLmgiCisjaW1wb3J0ICJDbGlwYm9hcmRNYWMuaCIKICNpbXBv
cnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJE
b2N1bWVudEZyYWdtZW50LmgiCkBAIC0zMjAsNiArMzIxLDE4IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCiAgICAgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXJGb3JJ
bWFnZShjYWNoZWRJbWFnZSwgY29jb2FVUkwpKTsKIH0KIAordm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZUNsaXBib2FyZChDbGlwYm9hcmQqIGNsaXBib2FyZCkKK3sKKyAgICBOU1Bhc3RlYm9hcmQqIHBh
c3RlYm9hcmQgPSBzdGF0aWNfY2FzdDxDbGlwYm9hcmRNYWMqPihjbGlwYm9hcmQpLT5wYXN0ZWJv
YXJkKCk7CisgICAgTlNBcnJheSogdHlwZXMgPSBbcGFzdGVib2FyZCB0eXBlc107CisKKyAgICBb
bV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVzOnR5cGVzIG93bmVyOm5pbF07CisgICAgZm9yIChO
U1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3R5cGVzIGNvdW50XTsgaSsrKSB7CisgICAgICAgIE5TU3Ry
aW5nKiB0eXBlID0gW3R5cGVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgIFttX3Bhc3RlYm9h
cmQuZ2V0KCkgc2V0RGF0YTpbcGFzdGVib2FyZCBkYXRhRm9yVHlwZTp0eXBlXSBmb3JUeXBlOnR5
cGVdOworICAgIH0KK30KKwogYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQogewog
ICAgIHJldHVybiBbW21fcGFzdGVib2FyZC5nZXQoKSB0eXBlc10gY29udGFpbnNPYmplY3Q6V2Vi
U21hcnRQYXN0ZVBib2FyZFR5cGVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvQ2xpcGJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJv
YXJkUXQuY3BwCmluZGV4IGIzMGY2M2RiYWNhYWY3ZmVkYjFiNGY3ZWZkYzgxY2YxMTNhMzBiMzQu
LjI3MzQ5NTJkOTg2YzEwMjYyMDA3OTlmYzc2NzU3NTMwNTA3ZDFkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKQEAgLTE4NSwxMCArMTg1LDYgQEAgYm9v
bCBDbGlwYm9hcmRRdDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
ZGF0YSkKICAgICAgICAgbV93cml0YWJsZURhdGEtPnNldERhdGEoUVN0cmluZyh0eXBlKSwgYXJy
YXkpOwogICAgIH0KIAotI2lmbmRlZiBRVF9OT19DTElQQk9BUkQKLSAgICBpZiAoaXNGb3JDb3B5
QW5kUGFzdGUoKSkKLSAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjpjbGlwYm9hcmQoKS0+c2V0TWlt
ZURhdGEobV93cml0YWJsZURhdGEpOwotI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCmluZGV4IDA1MGZlMTM3
ZGUyMDZkMGI5OGM5MjRkYmU5MjlhODI3NjlkMmU5YzMuLmRjN2ZiOGZkNzMwZWJmM2Q2MGMxNmY0
ZTM5ZjE3ZjgyZTM0NGI5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVi
b2FyZFF0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlBhc3RlYm9hcmQuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZFF0LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCkBAIC0xNzIsNiArMTczLDEzIEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2Rl
KiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKICNlbmRpZgogfQogCit2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKENsaXBib2FyZCogY2xpcGJvYXJkKQoreworI2lmbmRl
ZiBRVF9OT19DTElQQk9BUkQKKyAgICBRR3VpQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5zZXRN
aW1lRGF0YShzdGF0aWNfY2FzdDxDbGlwYm9hcmRRdCo+KGNsaXBib2FyZCktPmNsaXBib2FyZERh
dGEoKSk7CisjZW5kaWYKK30KKwogLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBFZGl0
b3I6OnRyeURIVE1MQ29weSBiZWZvcmUgYWN0dWFsbHkgc2V0IHRoZSBjbGlwYm9hcmQKICAqIEl0
IGludHJvZHVjZSBhIHJhY2UgY29uZGl0aW9uIHdpdGgga2xpcHBlciwgd2hpY2ggd2lsbCB0cnkg
dG8gZ3JhYiB0aGUgY2xpcGJvYXJkIAogICogSXQncyBub3QgcmVxdWlyZWQgdG8gY2xlYXIgaXQg
YW55d2F5LCBzaW5jZSBRQ2xpcGJvYXJkIHRha2UgY2FyZSBhYm91dCByZXBsYWNpbmcgdGhlIGNs
aXBib2FyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CmluZGV4IGUwY2M4NmFhNjhiY2FkYzlhNWEwMjA4NzE3YjUxZThlNGI5NWE3NjUuLmQ3NjhhM2Q1
M2ZiYzc2Zjc0Nzk4NTgyYjMyZmY1N2ZkODRjMGYyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgpAQCAtMjUwLDYgKzI1MSwxMSBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYpCiAgICAgfQogfQogCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJk
KENsaXBib2FyZCopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBQYXN0ZWJv
YXJkOjpjYW5TbWFydFJlcGxhY2UoKQogeyAKICAgICByZXR1cm4gOjpJc0NsaXBib2FyZEZvcm1h
dEF2YWlsYWJsZShXZWJTbWFydFBhc3RlRm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9hcmRXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW5jZS9QYXN0ZWJvYXJkV2luQ0UuY3BwCmluZGV4IDUzZGJmYThhMDczODU1OGRm
YjRkZmUyYTY2YzQ3YmZiMWU5YmUyMjMuLjEzYmJlNDg0MGNhNWEwYTY0MGQzODA1MzAyZjgxZWUy
Nzc0Mzg4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Bhc3Rl
Ym9hcmRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvUGFzdGVi
b2FyZFdpbkNFLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0yMzEsNiArMjMyLDExIEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKICAg
ICAgICAgRGVsZXRlT2JqZWN0KHJlc3VsdEJpdG1hcCk7CiB9CiAKK3ZvaWQgUGFzdGVib2FyZDo6
d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
CiBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiB7CiAgICAgcmV0dXJuIDo6SXND
bGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoV2ViU21hcnRQYXN0ZUZvcm1hdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd3gvUGFzdGVib2FyZFd4LmNwcAppbmRleCA0Njc3ZDE0NmY1ODczY2I3
ODM4MGZjNzA2MjZhOGM0N2NjOGM4N2NkLi40OTkzNjY0NmMzM2M5MTg3Y2RiYjEzNmM3OWEzYzMz
NTMxNDE4NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJv
YXJkV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Bhc3RlYm9hcmRXeC5j
cHAKQEAgLTEwNSw2ICsxMDUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKICAgICB9CiB9CiAKK3ZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCiB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHsKICAgICB3eFRoZUNsaXBib2FyZC0+
Q2xlYXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114607</attachid>
            <date>2011-11-10 17:11:39 -0800</date>
            <delta_ts>2011-11-10 17:19:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40515-20111110171138.patch</filename>
            <type>text/plain</type>
            <size>14837</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk5MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMGYxMWNkZDRlNzQyOGEx
NGY5NzM5N2EwZjJhOTIyZjM0M2Y3YTZkLi41ZDhlNGVkN2YxY2FhNDQyNmMwMWRmZDI2YjU5NTE5
YWI3MWY0OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMTEtMDIgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQXRvbWljYWxseSB1cGRh
dGUgdGhlIHN5c3RlbSBjbGlwYm9hcmQgZm9yIGNvcHkvY3V0IGV2ZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA1MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBjb25zb2xpZGF0
ZXMgdGhlIHN5c3RlbSBwYXN0ZWJvYXJkIG11dGF0aW9uIGxvZ2ljIGludG8gZGlzcGF0Y2hDUFBF
dmVudCgpIHJhdGhlcgorICAgICAgICB0aGFuIGhhdmluZyBpdCBzY2F0dGVyZWQgdGhyb3VnaG91
dCB0cnlESFRNTENvcHkvdHJ5REhUTUxDdXQgYW5kIHRoZSB2YXJpb3VzIENsaXBib2FyZCoKKyAg
ICAgICAgY2xhc3Nlcy4gVGhpcyBhbGxvd3MgdXMgdG8gZW5zdXJlIHRoYXQgdGhlIHN5c3RlbSBw
YXN0ZWJvYXJkIHJlbWFpbnMgaW4gYSBjb25zaXN0ZW50IHN0YXRlCisgICAgICAgIGV2ZW4gaWYg
dGhlcmUncyBhbiBleGNlcHRpb24gdGhyb3duIGR1cmluZyBldmVudCBoYW5kbGluZywgYW5kIGl0
IGFsc28gbGF5cyB0aGUgZ3JvdW5kIHdvcmsKKyAgICAgICAgZm9yIGFsbG93aW5nIHBhZ2VzIHRv
IHByZXZlbnQgY29weS9jdXQgd2l0aG91dCBjYXVzaW5nIHRoZSBzeXN0ZW0gcGFzdGVib2FyZCB0
byBiZSBjbGVhcmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgc2luY2UgYW55IGxheW91dCB0
ZXN0IHdvdWxkIGJlIGZsYWt5IHNpbmNlIGl0IHdvdWxkIGRlcGVuZCBvbiBhbmQgYWZmZWN0Cisg
ICAgICAgIGdsb2JhbCBzeXN0ZW0gc3RhdGUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnRyeURIVE1MQ29weSk6IE1vdmUgUGFzdGVi
b2FyZDo6Y2xlYXIoKSBjYWxsIHRvIGRpc3BhdGNoQ1BQRXZlbnQoKS4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6dHJ5REhUTUxDdXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6ZGlzcGF0Y2hDUFBFdmVudCk6CisgICAgICAgIE9ubHkgcGVyc2lzdCBDbGlwYm9hcmQgbXV0
YXRpb25zIHRvIHRoZSBzeXN0ZW0gcGFzdGVib2FyZCBpZiB0aGUgZXZlbnQgd2FzIGRpc3BhdGNo
ZWQKKyAgICAgICAgc3VjY2Vzc2Z1bGx5IGFuZCBkZWZhdWx0IHByb2Nlc3Npbmcgd2FzIHByZXZl
bnRlZC4KKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQpOgorICAgICAgICBXaGVuIGNyZWF0aW5n
IGEgQ2xpcGJvYXJkIGZvciBjb3B5L2N1dCwgYmFjayBpdCB3aXRoIGEgdW5pcXVlIGluc3RhbmNl
IG9mIE5TUGFzdGVib2FyZCB0bworICAgICAgICBidWZmZXIgcGFzdGVib2FyZCBtdXRhdGlvbnMu
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkOjp3cml0ZUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRF
ZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOiBNb3ZlZCBwYXN0ZWJvYXJk
IHdyaXRlYmFjayB0byBQYXN0ZWJvYXJkR3RrLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
R3RrOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmNsaXBib2FyZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGVDbGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQpOgorICAg
ICAgICBJbXBsZW1lbnQgbG9naWMgdG8gZmx1c2ggZGF0YSBmcm9tIHRlbXBvcmFyeSBOU1Bhc3Rl
Ym9hcmQgdG8gc3lzdGVtIHBhc3RlYm9hcmQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBi
b2FyZEd0ay5jcHA6IE1vdmVkIHBhc3RlYm9hcmQgd3JpdGViYWNrIHRvIFBhc3RlYm9hcmRRdC4K
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6c2V0RGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZCk6CisgICAg
ICAgICogcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9Q
YXN0ZWJvYXJkV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVDbGlw
Ym9hcmQpOgorCiAyMDExLTExLTEwICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgZWZmZWN0Qm91bmRpbmdCb3hNb2RlIGZyb20gQ1NTIEZpbHRlcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAwOTJjODA0YjMyNmEyZWM2OWNhMzBhZjliOWIx
NmRmZjg5NzA1NTUyLi4wMTFiYWZlMDc2Mjk5YWU1NjhjZGE4YjViZDVjZDEzZDA4YWY5ZTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00NDYsMTEgKzQ0Niw2IEBAIGJvb2wgRWRp
dG9yOjp0cnlESFRNTENvcHkoKQogICAgIGlmIChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+aXNJblBh
c3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNhbkNvcHko
KSkKLSAgICAgICAgLy8gTXVzdCBiZSBkb25lIGJlZm9yZSBvbmNvcHkgYWRkcyB0eXBlcyBhbmQg
ZGF0YSB0byB0aGUgcGJvYXJkLAotICAgICAgICAvLyBhbHNvIGRvbmUgZm9yIHNlY3VyaXR5LCBh
cyBpdCBlcmFzZXMgZGF0YSBmcm9tIHRoZSBsYXN0IGNvcHkvcGFzdGUuCi0gICAgICAgIFBhc3Rl
Ym9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmNsZWFyKCk7Ci0KICAgICByZXR1cm4gIWRpc3Bh
dGNoQ1BQRXZlbnQoZXZlbnROYW1lcygpLmNvcHlFdmVudCwgQ2xpcGJvYXJkV3JpdGFibGUpOwog
fQogCkBAIC00NTksMTEgKzQ1NCw2IEBAIGJvb2wgRWRpdG9yOjp0cnlESFRNTEN1dCgpCiAgICAg
aWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0luUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKGNhbkN1dCgpKQotICAgICAgICAvLyBNdXN0IGJl
IGRvbmUgYmVmb3JlIG9uY3V0IGFkZHMgdHlwZXMgYW5kIGRhdGEgdG8gdGhlIHBib2FyZCwKLSAg
ICAgICAgLy8gYWxzbyBkb25lIGZvciBzZWN1cml0eSwgYXMgaXQgZXJhc2VzIGRhdGEgZnJvbSB0
aGUgbGFzdCBjb3B5L3Bhc3RlLgotICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2Fy
ZCgpLT5jbGVhcigpOwotCiAgICAgcmV0dXJuICFkaXNwYXRjaENQUEV2ZW50KGV2ZW50TmFtZXMo
KS5jdXRFdmVudCwgQ2xpcGJvYXJkV3JpdGFibGUpOwogfQogCkBAIC03NDYsNiArNzM2LDExIEBA
IGJvb2wgRWRpdG9yOjpkaXNwYXRjaENQUEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRU
eXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xpCiAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBDbGlwYm9h
cmRFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgdHJ1ZSwgY2xpcGJvYXJkKTsKICAgICB0
YXJnZXQtPmRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7CiAgICAgYm9vbCBub0RlZmF1bHRQcm9jZXNz
aW5nID0gZXZ0LT5kZWZhdWx0UHJldmVudGVkKCk7CisgICAgaWYgKG5vRGVmYXVsdFByb2Nlc3Np
bmcgJiYgcG9saWN5ID09IENsaXBib2FyZFdyaXRhYmxlKSB7CisgICAgICAgIFBhc3RlYm9hcmQq
IHBhc3RlYm9hcmQgPSBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpOworICAgICAgICBw
YXN0ZWJvYXJkLT5jbGVhcigpOworICAgICAgICBwYXN0ZWJvYXJkLT53cml0ZUNsaXBib2FyZChj
bGlwYm9hcmQuZ2V0KCkpOworICAgIH0KIAogICAgIC8vIGludmFsaWRhdGUgY2xpcGJvYXJkIGhl
cmUgZm9yIHNlY3VyaXR5CiAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3koQ2xpcGJvYXJk
TnVtYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNWNmZjY5
NmYxMzNkODJlMTk3MjQyOTAzN2QxNzFlOGE0ZjAyMTk0Mi4uMjdiMjE0MWI3MzQzNjM1YmYxNThi
NWUxZmMxMGJhZmE5Njc1ZTE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtNDgsNyArNDgsOCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBQYXNz
UmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFj
Y2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJk
TWFjOjpjcmVhdGUoQ2xpcGJvYXJkOjpDb3B5QW5kUGFzdGUsIFtOU1Bhc3RlYm9hcmQgZ2VuZXJh
bFBhc3RlYm9hcmRdLCBwb2xpY3ksIGZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkTWFjOjpj
cmVhdGUoQ2xpcGJvYXJkOjpDb3B5QW5kUGFzdGUsCisgICAgICAgIHBvbGljeSA9PSBDbGlwYm9h
cmRXcml0YWJsZSA/IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXSA6IFtO
U1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdLCBwb2xpY3ksIGZyYW1lKTsKIH0KIAogdm9p
ZCBFZGl0b3I6OnNob3dGb250UGFuZWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
CmluZGV4IDRiODNhYjNmNTA2N2U4YjMyN2M1NTUzYzk1OTg0ODcyZjFjZDZmZjEuLjg2NmU3ZTUz
Mjc2MTM1YzVjOThjNzFiMjQ0MjlmY2FjZGEyZDhjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKQEAgLTczLDYgKzczLDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJVUkxQYm9h
cmRUeXBlOwogZXh0ZXJuIE5TU3RyaW5nICpXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGU7CiAj
ZW5kaWYKIAorY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKQEAgLTEwMiw2ICsxMDMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChOU0ZpbGVXcmFwcGVy
Kik7CiAgICAgU3RyaW5nIGFzVVJMKEZyYW1lKik7CiAjZW5kaWYKKyAgICB2b2lkIHdyaXRlQ2xp
cGJvYXJkKENsaXBib2FyZCopOwogICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIGNhblNtYXJ0
UmVwbGFjZSgpOwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFn
bWVudChGcmFtZSosIFBhc3NSZWZQdHI8UmFuZ2U+LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29s
JiBjaG9zZVBsYWluVGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAppbmRleCBmNDFjMTAwMjY1YzFmNTcyMDk2
OTc3NzBmOTI3MDcxMGU2MzE4MWUzLi5kMDllMTk3YzE0YTkxOWY5YmU1NTYwNmQ5YjhkY2U1YWRj
NWU3MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QYXN0
ZWJvYXJkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKQEAgLTE1NSw2ICsxNTUsMTAgQEAgdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQogICAgIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkV3JpdGVJbWFnZShiaXRtYXAsIHVy
bCwgdGl0bGUpOwogfQogCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ2xpcGJvYXJkKENsaXBib2Fy
ZCopCit7Cit9CisKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICBy
ZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRJc0Zvcm1hdEF2YWlsYWJsZShQYXN0ZWJv
YXJkUHJpdmF0ZTo6V2ViU21hcnRQYXN0ZUZvcm1hdCwgbV9zZWxlY3Rpb25Nb2RlID8gUGFzdGVi
b2FyZFByaXZhdGU6OlNlbGVjdGlvbkJ1ZmZlciA6IFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFy
ZEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVi
b2FyZEVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGFzdGVib2FyZEVmbC5j
cHAKaW5kZXggNzdjMWQ5MDUwZWE1YmNjZmZlNTlhYmIyYThiZjUzODQ4MzUzN2UyMi4uMDgwMDRh
NTNhZjY1ZWI2YzRlMjdjYjljNGEyNjY3ODZkNjFiZWE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1Bhc3RlYm9hcmRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9QYXN0ZWJvYXJkRWZsLmNwcApAQCAtNjYsNiArNjYsMTEgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVD
bGlwYm9hcmQoQ2xpcGJvYXJkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lk
IFBhc3RlYm9hcmQ6OmNsZWFyKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAppbmRleCA1YjMzMzM1MjZjMDdj
NGIyM2VjNjEyMzAzYTI2ZjcyOTdjNGNiNTk2Li5iNTU0ZDIwODVlNDgxZTdhYmJiYjE0N2I2Mzlj
OTdlOWNmMmI3MzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJk
R3RrLmNwcApAQCAtMTgxLDkgKzE4MSw2IEBAIGJvb2wgQ2xpcGJvYXJkR3RrOjpzZXREYXRhKGNv
bnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBzdWNj
ZXNzID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoc3VjY2VzcyAmJiBtX2NsaXBib2FyZCkKLSAg
ICAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVD
bGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7Ci0KICAgICByZXR1cm4gc3VjY2VzczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCmluZGV4IDU1MWY4
ZmQ5NWNmNDA2NTU4NDFlN2M0ZTdiODU5NzZhN2I4YmMwZjMuLmQ4Yjc1MTgyNTRjOThmOTVjZDEx
N2IxNDU2NjNmN2ZkMzIyM2NmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmgKQEAgLTczLDYgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaGFzRGF0YSgpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8RGF0YU9iamVj
dEd0az4gZGF0YU9iamVjdCgpIHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQorICAgICAgICBHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCgpIHsgcmV0dXJuIG1fY2xpcGJvYXJkOyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBHdGtDbGlw
Ym9hcmQqLCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRHdGsuY3BwCmluZGV4IGJmYmZkNjc1NDFmZjJhMDk5YjZiYzVhNzYxZTlhN2IxMDY4NmJiZjgu
LjQ5YWZiYzc5MDI3Y2Y3NmE1NmM5NDNkZjk2ZWU1MDUwYzk5OTY2NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTIwLDYgKzIwLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAKKyNpbmNsdWRl
ICJDbGlwYm9hcmRHdGsuaCIKICNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMzEsNiArMTMyLDEz
IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVi
b2FyZEhlbHBlcigpLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCk7CiB9CiAKK3Zv
aWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCit7Cisg
ICAgR3RrQ2xpcGJvYXJkKiBndGtDbGlwYm9hcmQgPSBzdGF0aWNfY2FzdDxDbGlwYm9hcmRHdGsq
PihjbGlwYm9hcmQpLT5jbGlwYm9hcmQoKTsKKyAgICBpZiAoZ3RrQ2xpcGJvYXJkKQorICAgICAg
ICBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT53cml0ZUNsaXBi
b2FyZENvbnRlbnRzKGd0a0NsaXBib2FyZCk7Cit9CisKIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIo
KQogewogICAgIGd0a19jbGlwYm9hcmRfY2xlYXIoZ3RrX2NsaXBib2FyZF9nZXRfZm9yX2Rpc3Bs
YXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggZDFl
OTBhOWNkNDQwN2FiMTk3YTE2OGIwZGVkOWVlZDUyZWE5MzI0Yi4uODUyZTE3YTk2Y2I5OThmMzI2
MzlhMWZmMGQ5MThjYzk2OTlkNzRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIlBhc3RlYm9hcmQu
aCIKIAogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2UuaCIKKyNpbXBvcnQgIkNsaXBib2FyZE1hYy5o
IgogI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNp
bXBvcnQgIkRvY3VtZW50RnJhZ21lbnQuaCIKQEAgLTMyMCw2ICszMjEsMTggQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKICAgICB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChmaWxlV3Jh
cHBlckZvckltYWdlKGNhY2hlZEltYWdlLCBjb2NvYVVSTCkpOwogfQogCit2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ2xpcGJvYXJkKENsaXBib2FyZCogY2xpcGJvYXJkKQoreworICAgIE5TUGFzdGVi
b2FyZCogcGFzdGVib2FyZCA9IHN0YXRpY19jYXN0PENsaXBib2FyZE1hYyo+KGNsaXBib2FyZCkt
PnBhc3RlYm9hcmQoKTsKKyAgICBOU0FycmF5KiB0eXBlcyA9IFtwYXN0ZWJvYXJkIHR5cGVzXTsK
KworICAgIFttX3Bhc3RlYm9hcmQuZ2V0KCkgYWRkVHlwZXM6dHlwZXMgb3duZXI6bmlsXTsKKyAg
ICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbdHlwZXMgY291bnRdOyBpKyspIHsKKyAgICAg
ICAgTlNTdHJpbmcqIHR5cGUgPSBbdHlwZXMgb2JqZWN0QXRJbmRleDppXTsKKyAgICAgICAgW21f
cGFzdGVib2FyZC5nZXQoKSBzZXREYXRhOltwYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnR5cGVdIGZv
clR5cGU6dHlwZV07CisgICAgfQorfQorCiBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFj
ZSgpCiB7CiAgICAgcmV0dXJuIFtbbV9wYXN0ZWJvYXJkLmdldCgpIHR5cGVzXSBjb250YWluc09i
amVjdDpXZWJTbWFydFBhc3RlUGJvYXJkVHlwZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9DbGlwYm9hcmRRdC5jcHAKaW5kZXggYjMwZjYzZGJhY2FhZjdmZWRiMWI0ZjdlZmRjODFjZjEx
M2EzMGIzNC4uMjczNDk1MmQ5ODZjMTAyNjIwMDc5OWZjNzY3NTc1MzA1MDdkMWQ0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcApAQCAtMTg1LDEwICsxODUs
NiBAQCBib29sIENsaXBib2FyZFF0OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBkYXRhKQogICAgICAgICBtX3dyaXRhYmxlRGF0YS0+c2V0RGF0YShRU3RyaW5nKHR5
cGUpLCBhcnJheSk7CiAgICAgfQogCi0jaWZuZGVmIFFUX05PX0NMSVBCT0FSRAotICAgIGlmIChp
c0ZvckNvcHlBbmRQYXN0ZSgpKQotICAgICAgICBRR3VpQXBwbGljYXRpb246OmNsaXBib2FyZCgp
LT5zZXRNaW1lRGF0YShtX3dyaXRhYmxlRGF0YSk7Ci0jZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXgg
MDUwZmUxMzdkZTIwNmQwYjk4YzkyNGRiZTkyOWE4Mjc2OWQyZTljMy4uZGM3ZmI4ZmQ3MzBlYmYz
ZDYwYzE2ZjRlMzlmMTdmODJlMzQ0YjkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogCisjaW5jbHVkZSAiQ2xpcGJvYXJkUXQuaCIKICNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKQEAgLTE3Miw2ICsxNzMsMTMgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUlt
YWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogI2VuZGlmCiB9CiAK
K3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCit7
CisjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAorICAgIFFHdWlBcHBsaWNhdGlvbjo6Y2xpcGJvYXJk
KCktPnNldE1pbWVEYXRhKHN0YXRpY19jYXN0PENsaXBib2FyZFF0Kj4oY2xpcGJvYXJkKS0+Y2xp
cGJvYXJkRGF0YSgpKTsKKyNlbmRpZgorfQorCiAvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBm
cm9tIEVkaXRvcjo6dHJ5REhUTUxDb3B5IGJlZm9yZSBhY3R1YWxseSBzZXQgdGhlIGNsaXBib2Fy
ZAogICogSXQgaW50cm9kdWNlIGEgcmFjZSBjb25kaXRpb24gd2l0aCBrbGlwcGVyLCB3aGljaCB3
aWxsIHRyeSB0byBncmFiIHRoZSBjbGlwYm9hcmQgCiAgKiBJdCdzIG5vdCByZXF1aXJlZCB0byBj
bGVhciBpdCBhbnl3YXksIHNpbmNlIFFDbGlwYm9hcmQgdGFrZSBjYXJlIGFib3V0IHJlcGxhY2lu
ZyB0aGUgY2xpcGJvYXJkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKaW5kZXggZTBjYzg2YWE2OGJjYWRjOWE1YTAyMDg3MTdiNTFlOGU0Yjk1YTc2NS4u
ZDc2OGEzZDUzZmJjNzZmNzQ3OTg1ODJiMzJmZjU3ZmQ4NGMwZjIzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCkBAIC0yNTAsNiAr
MjUxLDExIEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJikKICAgICB9CiB9CiAKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVD
bGlwYm9hcmQoQ2xpcGJvYXJkKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29s
IFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiB7IAogICAgIHJldHVybiA6OklzQ2xpcGJv
YXJkRm9ybWF0QXZhaWxhYmxlKFdlYlNtYXJ0UGFzdGVGb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvUGFzdGVib2FyZFdpbkNFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbmNlL1Bhc3RlYm9hcmRXaW5DRS5jcHAKaW5kZXggNTNkYmZhOGEw
NzM4NTU4ZGZiNGRmZTJhNjZjNDdiZmIxZTliZTIyMy4uMTNiYmU0ODQwY2E1YTBhNjQwZDM4MDUz
MDJmODFlZTI3NzQzODgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
Y2UvUGFzdGVib2FyZFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5j
ZS9QYXN0ZWJvYXJkV2luQ0UuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKQEAgLTIzMSw2ICsyMzIsMTEgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmKQogICAgICAgICBEZWxldGVPYmplY3QocmVzdWx0Qml0bWFwKTsKIH0KIAordm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChDbGlwYm9hcmQqKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICByZXR1
cm4gOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShXZWJTbWFydFBhc3RlRm9ybWF0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Bhc3RlYm9hcmRXeC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9QYXN0ZWJvYXJkV3guY3BwCmluZGV4IDQ2NzdkMTQ2
ZjU4NzNjYjc4MzgwZmM3MDYyNmE4YzQ3Y2M4Yzg3Y2QuLjQ5OTM2NjQ2YzMzYzkxODdjZGJiMTM2
Yzc5YTNjMzM1MzE0MTg2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4
L1Bhc3RlYm9hcmRXeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvUGFzdGVi
b2FyZFd4LmNwcApAQCAtMTA1LDYgKzEwNSwxMSBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJM
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQogICAgIH0KIH0KIAordm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZChDbGlwYm9hcmQqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoKQogewogICAgIHd4VGhlQ2xp
cGJvYXJkLT5DbGVhcigpOwo=
</data>
<flag name="review"
          id="113304"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>