<?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>62637</bug_id>
          
          <creation_ts>2011-06-14 08:10:51 -0700</creation_ts>
          <short_desc>[Qt] [WK2] Qt WebKit2 needs undo/redo support</short_desc>
          <delta_ts>2011-06-17 06:22:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chang Shu">cshu</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>abecsi</cc>
    
    <cc>eric</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>420421</commentid>
    <comment_count>0</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-06-14 08:10:51 -0700</bug_when>
    <thetext>Many layout tests under editing/undo are failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420423</commentid>
    <comment_count>1</comment_count>
      <attachid>97121</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-06-14 08:17:18 -0700</bug_when>
    <thetext>Created attachment 97121
fix patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420437</commentid>
    <comment_count>2</comment_count>
      <attachid>97121</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-14 08:44:43 -0700</bug_when>
    <thetext>Comment on attachment 97121
fix patch

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

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:116
&gt; +    delete undoStack;

Don&apos;t we have a smart pointer for these?

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage_p.h:142
&gt; +    QUndoStack *undoStack;

I take it Qt style is to put the * close to the name instead of the type?  (That&apos;s the opposite of webkit style)

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:38
&gt; +        WebUndoCommandQt(WTF::RefPtr&lt;WebKit::WebEditCommandProxy&gt; cmd, QUndoCommand *parent = 0);
&gt; +#else
&gt; +        WebUndoCommandQt(WTF::RefPtr&lt;WebKit::WebEditCommandProxy&gt; cmd);

In WebKit style we only name arguments when they provide clarity.  In this case, the cmd doesn&apos;t help understand the argument here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420493</commentid>
    <comment_count>3</comment_count>
      <attachid>97121</attachid>
    <who name="Yael">yael</who>
    <bug_when>2011-06-14 09:34:14 -0700</bug_when>
    <thetext>Comment on attachment 97121
fix patch

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

I am not a reviewer, here are my comments.
Overall this patch is great!

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:218
&gt; +void QWKPagePrivate::registerEditCommand(PassRefPtr&lt;WebEditCommandProxy&gt; prpCommand, WebPageProxy::UndoOrRedo undoOrRedo)

prpCommand? Please choose meaningful names.

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:222
&gt; +        const WebUndoCommandQt * cmd = static_cast&lt;const WebUndoCommandQt*&gt;(undoStack-&gt;command(undoStack-&gt;index()));

Extra space between WebUndoCommandQt and * .

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qwkpage_p.h:142
&gt;&gt; +    QUndoStack *undoStack;
&gt; 
&gt; I take it Qt style is to put the * close to the name instead of the type?  (That&apos;s the opposite of webkit style)

We should be using webkit style, not Qt style here.

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.cpp:27
&gt; +WebUndoCommandQt::WebUndoCommandQt(WTF::RefPtr&lt;WebEditCommandProxy&gt; cmd, QUndoCommand *parent)

ditto.

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:36
&gt; +        WebUndoCommandQt(WTF::RefPtr&lt;WebKit::WebEditCommandProxy&gt; cmd, QUndoCommand *parent = 0);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420608</commentid>
    <comment_count>4</comment_count>
      <attachid>97145</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-06-14 11:31:11 -0700</bug_when>
    <thetext>Created attachment 97145
fix patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420778</commentid>
    <comment_count>5</comment_count>
      <attachid>97145</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-14 15:36:50 -0700</bug_when>
    <thetext>Comment on attachment 97145
fix patch 2

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

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:116
&gt; +    delete undoStack;

I agree that we should start using smart pointers. OwnPtr works quite well with Qt types, just like QScopedPointer. delete should be a thing of the past or at least you should explain why a smart pointer cannot be used

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:226
&gt; +        undoStack-&gt;push(new WebUndoCommandQt(command));

Who are freeing these?

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:234
&gt; +    undoStack-&gt;clear();

Will this free everything in the stack? That is not normal behavior in webcore afaik so we might need a comment if that is Qt behavior

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:49
&gt; +        bool m_inUndoRedo; // our undo stack works differently - don&apos;t re-enter!

Our*

Maybe a better variable name can be found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421213</commentid>
    <comment_count>6</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-06-15 06:11:45 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:116
&gt; &gt; +    delete undoStack;
&gt; 
&gt; I agree that we should start using smart pointers. OwnPtr works quite well with Qt types, just like QScopedPointer. delete should be a thing of the past or at least you should explain why a smart pointer cannot be used

Oops, forgot to address this.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:226
&gt; &gt; +        undoStack-&gt;push(new WebUndoCommandQt(command));
&gt; 
&gt; Who are freeing these?
The free is taken care of by undoStack when it pops up the item.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:234
&gt; &gt; +    undoStack-&gt;clear();
&gt; 
&gt; Will this free everything in the stack? That is not normal behavior in webcore afaik so we might need a comment if that is Qt behavior

This is what &quot;WebKit1&quot; does. See Source/WebKit/WebCoreSupport/EditorClientQt.cpp
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:49
&gt; &gt; +        bool m_inUndoRedo; // our undo stack works differently - don&apos;t re-enter!
&gt; 
&gt; Our*
&gt; 
&gt; Maybe a better variable name can be found.
Will clean up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421478</commentid>
    <comment_count>7</comment_count>
      <attachid>97338</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-06-15 11:50:49 -0700</bug_when>
    <thetext>Created attachment 97338
fix patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421879</commentid>
    <comment_count>8</comment_count>
      <attachid>97338</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-06-16 02:44:46 -0700</bug_when>
    <thetext>Comment on attachment 97338
fix patch 3

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

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:215
&gt; +void QWKPagePrivate::registerEditCommand(PassRefPtr&lt;WebEditCommandProxy&gt; commandPassRef, WebPageProxy::UndoOrRedo undoOrRedo)

commandPassRef is not a good variable name.

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:219
&gt; +        const WebUndoCommandQt* cmd = static_cast&lt;const WebUndoCommandQt*&gt;(undoStack-&gt;command(undoStack-&gt;index()));

cmd is not a good variable name.

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:223
&gt; +        undoStack-&gt;push(new WebUndoCommandQt(command));

This is overly complicated.
You should make the WebUndoCommandQt ctor take a PassRefPtr&lt;WebEditCommandProxy&gt; instead, and just pass on the PassRefPtr that this function received.

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:240
&gt; +    return (undoOrRedo == WebPageProxy::Undo) ? undoStack-&gt;canUndo() : undoStack-&gt;canRedo();

This hurts my eyes, please use boring old if/else instead.

&gt; Source/WebKit2/UIProcess/API/qt/qwkpage.cpp:246
&gt; +    (undoOrRedo == WebPageProxy::Undo) ? undoStack-&gt;undo() : undoStack-&gt;redo();

Ditto (even moreso.)

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.cpp:56
&gt; +    if (m_first) {
&gt; +        m_first = false;
&gt; +        m_inUndoRedo = false;
&gt; +        return;
&gt; +    }

What is the purpose of this?
If this is needed, we definitely need a comment explaining why the first call to redo() should be ignored.

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:34
&gt; +    public:

Wrong indentation starting here.

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:47
&gt; +        WTF::RefPtr&lt;WebKit::WebEditCommandProxy&gt; m_cmd;

m_cmd -&gt; m_command, we don&apos;t abbreviate in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421981</commentid>
    <comment_count>9</comment_count>
      <attachid>97449</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-06-16 08:53:51 -0700</bug_when>
    <thetext>Created attachment 97449
fix patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422024</commentid>
    <comment_count>10</comment_count>
      <attachid>97449</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-06-16 10:14:16 -0700</bug_when>
    <thetext>Comment on attachment 97449
fix patch 4

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

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:36
&gt; +    WebUndoCommandQt(WTF::PassRefPtr&lt;WebKit::WebEditCommandProxy&gt;, QUndoCommand* parent = 0);

WTF:: not needed here.

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:38
&gt; +    WebUndoCommandQt(WTF::PassRefPtr&lt;WebKit::WebEditCommandProxy&gt;);

WTF:: not needed here.

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:45
&gt; +    bool inUndoRedo() const { return m_inUndoRedo; };

Missing newline after this function.

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.h:47
&gt; +    WTF::RefPtr&lt;WebKit::WebEditCommandProxy&gt; m_command;

WTF:: not needed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422036</commentid>
    <comment_count>11</comment_count>
      <attachid>97457</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-06-16 10:34:13 -0700</bug_when>
    <thetext>Created attachment 97457
fix patch 5

update r+ patch with minor fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422093</commentid>
    <comment_count>12</comment_count>
      <attachid>97457</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 11:23:48 -0700</bug_when>
    <thetext>Comment on attachment 97457
fix patch 5

Clearing flags on attachment: 97457

Committed r89050: &lt;http://trac.webkit.org/changeset/89050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422094</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-16 11:23:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422533</commentid>
    <comment_count>14</comment_count>
      <attachid>97457</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-06-17 03:29:43 -0700</bug_when>
    <thetext>Comment on attachment 97457
fix patch 5

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

&gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.cpp:51
&gt; +    // Ignore the first redo called from QUndoStack::push().

I still don&apos;t know *why* this is needed. What is the problem you are solving by ignoring the first redo()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422584</commentid>
    <comment_count>15</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-06-17 06:22:20 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit2/UIProcess/qt/WebUndoCommandQt.cpp:51
&gt; &gt; +    // Ignore the first redo called from QUndoStack::push().
&gt; I still don&apos;t know *why* this is needed. What is the problem you are solving by ignoring the first redo()?

My investigation shows the code path looks like this:
registerEditCommand --&gt; undoStack-&gt;push(new WebUndoCommandQt) --&gt; redo()
So once WebUndoCommandQt is created, a redo() is called before any undo happens. I guess this is why the first redo should be ignored.
However, I am not the original author of the code. The first version of the code is made by ddkilzer:
http://trac.webkit.org/browser/trunk/WebKitQt/WebCoreSupport/EditCommandQt.cpp?rev=25754</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97121</attachid>
            <date>2011-06-14 08:17:18 -0700</date>
            <delta_ts>2011-06-14 11:31:11 -0700</delta_ts>
            <desc>fix patch</desc>
            <filename>62637_1.patch</filename>
            <type>text/plain</type>
            <size>13231</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4ODAzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDYtMTQgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbUXRdIFtXSzJdIFF0IFdlYktpdDIgbmVlZHMgdW5kby9yZWRvIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjM3
CisKKyAgICAgICAgSW1wbGVtZW50IHVuZG8vcmVkbyBzdXBwb3J0IGZvciBkb2N1bWVudC5leGVj
Q29tbWFuZCgpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAg
ICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV0tQYWdl
UHJpdmF0ZTo6flFXS1BhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpyZWdp
c3RlckVkaXRDb21tYW5kKToKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpjbGVhckFsbEVkaXRD
b21tYW5kcyk6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6Y2FuVW5kb1JlZG8pOgorICAgICAg
ICAoUVdLUGFnZVByaXZhdGU6OmV4ZWN1dGVVbmRvUmVkbyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xd2twYWdlX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1h
bmRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViVW5kb0NvbW1hbmRRdDo6V2ViVW5kb0NvbW1h
bmRRdCk6CisgICAgICAgIChXZWJVbmRvQ29tbWFuZFF0Ojp+V2ViVW5kb0NvbW1hbmRRdCk6Cisg
ICAgICAgIChXZWJVbmRvQ29tbWFuZFF0OjpyZWRvKToKKyAgICAgICAgKFdlYlVuZG9Db21tYW5k
UXQ6OnVuZG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViVW5kb0NvbW1hbmRRdDo6aW5VbmRvUmVkbyk6CisgICAgICAgICog
V2ViS2l0Mi5wcm86CisKIDIwMTEtMDYtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA4ODY0MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNiArMjMxLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuaCBcCiAgICAgVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZENsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQu
aCBcCisgICAgVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuaCBcCiAgICAgVUlQcm9jZXNz
L3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBN
ZW51UHJveHlRdC5oIFwKICAgICBXZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaCBcCkBAIC0zODcsNiArMzg4LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUlt
cGwuY3BwIFwKKyAgICBVSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNwcCBcCiAgICAgVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHJldmlzaW9uIDg4NjQyKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
OCArNDEsMTAgQEAKICNpbmNsdWRlICJUaWxlZERyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVF0LmgiCisjaW5j
bHVkZSAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeVF0
LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdC5oIgorI2luY2x1ZGUgIldlYlVuZG9D
b21tYW5kUXQuaCIKICNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCiAjaW5jbHVkZSAiV0tVUkxRdC5o
IgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCkBAIC01MSw2ICs1Myw3IEBACiAjaW5j
bHVkZSA8UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50PgogI2luY2x1ZGUgPFFTdHlsZT4KICNpbmNs
dWRlIDxRVG91Y2hFdmVudD4KKyNpbmNsdWRlIDxRVW5kb1N0YWNrPgogI2luY2x1ZGUgPFF0RGVi
dWc+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UmVjdC5oPgpAQCAtOTYsNiArOTksOSBAQCBRV0tQYWdlUHJpdmF0ZTo6UVdLUGFnZVByaXZhdGUo
UVdLUGFnZSogCiAgICAgLCBjcmVhdGVOZXdQYWdlRm4oMCkKICAgICAsIGJhY2tpbmdTdG9yZVR5
cGUoUUdyYXBoaWNzV0tWaWV3OjpTaW1wbGUpCiAgICAgLCBpc0Nvbm5lY3RlZFRvRW5naW5lKHRy
dWUpCisjaWZuZGVmIFFUX05PX1VORE9TVEFDSworICAgICwgdW5kb1N0YWNrKG5ldyBRVW5kb1N0
YWNrKHFxKSkKKyNlbmRpZgogewogICAgIG1lbXNldChhY3Rpb25zLCAwLCBzaXplb2YoYWN0aW9u
cykpOwogICAgIHBhZ2UgPSBjb250ZXh0LT5kLT5jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMs
IHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKQEAgLTEwNiw2ICsxMTIsOSBAQCBRV0tQYWdlUHJpdmF0
ZTo6flFXS1BhZ2VQcml2YXRlKCkKIHsKICAgICBwYWdlLT5jbG9zZSgpOwogICAgIGRlbGV0ZSBo
aXN0b3J5OworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBkZWxldGUgdW5kb1N0YWNrOwor
I2VuZGlmCiB9CiAKIHZvaWQgUVdLUGFnZVByaXZhdGU6OmluaXQoUUdyYXBoaWNzSXRlbSogdmll
dywgUUdyYXBoaWNzV0tWaWV3OjpCYWNraW5nU3RvcmVUeXBlIGJhY2tpbmdTdG9yZVR5cGUpCkBA
IC0yMDYsMjEgKzIxNSwzOCBAQCB2b2lkIFFXS1BhZ2VQcml2YXRlOjp0b29sVGlwQ2hhbmdlZChj
b25zCiAgICAgZW1pdCBxLT50b29sVGlwQ2hhbmdlZChRU3RyaW5nKG5ld1Rvb2x0aXApKTsKIH0K
IAotdm9pZCBRV0tQYWdlUHJpdmF0ZTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdl
YkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pCit2b2lkIFFXS1Bh
Z2VQcml2YXRlOjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQ
cm94eT4gcHJwQ29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7
CisjaWZuZGVmIFFUX05PX1VORE9TVEFDSworICAgIGlmICh1bmRvT3JSZWRvID09IFdlYlBhZ2VQ
cm94eTo6VW5kbykgeworICAgICAgICBjb25zdCBXZWJVbmRvQ29tbWFuZFF0ICogY21kID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViVW5kb0NvbW1hbmRRdCo+KHVuZG9TdGFjay0+Y29tbWFuZCh1bmRv
U3RhY2stPmluZGV4KCkpKTsKKyAgICAgICAgaWYgKGNtZCAmJiBjbWQtPmluVW5kb1JlZG8oKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+
IGNvbW1hbmQgPSBwcnBDb21tYW5kOworICAgICAgICB1bmRvU3RhY2stPnB1c2gobmV3IFdlYlVu
ZG9Db21tYW5kUXQoY29tbWFuZCkpOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIFFXS1BhZ2VQ
cml2YXRlOjpjbGVhckFsbEVkaXRDb21tYW5kcygpCiB7CisjaWZuZGVmIFFUX05PX1VORE9TVEFD
SworICAgIHVuZG9TdGFjay0+Y2xlYXIoKTsKKyNlbmRpZgogfQogCi1ib29sIFFXS1BhZ2VQcml2
YXRlOjpjYW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pCitib29sIFFXS1BhZ2VQ
cml2YXRlOjpjYW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykK
IHsKKyNpZmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAg
IHJldHVybiAodW5kb09yUmVkbyA9PSBXZWJQYWdlUHJveHk6OlVuZG8pID8gdW5kb1N0YWNrLT5j
YW5VbmRvKCkgOiB1bmRvU3RhY2stPmNhblJlZG8oKTsKKyNlbmRpZgogfQogCi12b2lkIFFXS1Bh
Z2VQcml2YXRlOjpleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQordm9p
ZCBRV0tQYWdlUHJpdmF0ZTo6ZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVk
byB1bmRvT3JSZWRvKQogeworICAgICh1bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykg
PyB1bmRvU3RhY2stPnVuZG8oKSA6IHVuZG9TdGFjay0+cmVkbygpOwogfQogCiBGbG9hdFJlY3Qg
UVdLUGFnZVByaXZhdGU6OmNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAko
cmV2aXNpb24gODg2NDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3Bh
Z2VfcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8UUtleUV2
ZW50PgogCiBjbGFzcyBRR3JhcGhpY3NXS1ZpZXc7CitjbGFzcyBRVW5kb1N0YWNrOwogY2xhc3Mg
UVdLUHJlZmVyZW5jZXM7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xMzYsNiArMTM3
LDEwIEBAIHB1YmxpYzoKICAgICBRR3JhcGhpY3NXS1ZpZXc6OkJhY2tpbmdTdG9yZVR5cGUgYmFj
a2luZ1N0b3JlVHlwZTsKIAogICAgIGJvb2wgaXNDb25uZWN0ZWRUb0VuZ2luZTsKKworI2lmbmRl
ZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBRVW5kb1N0YWNrICp1bmRvU3RhY2s7CisjZW5kaWYKIH07
CiAKIGNsYXNzIFF0Vmlld3BvcnRBdHRyaWJ1dGVzUHJpdmF0ZSA6IHB1YmxpYyBRU2hhcmVkRGF0
YSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21t
YW5kUXQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlVuZG9Db21tYW5kUXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2Vydmlj
ZXMgSW5jLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJVbmRvQ29tbWFu
ZFF0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKyNpZm5kZWYgUVRfTk9fVU5ET0NP
TU1BTkQKK1dlYlVuZG9Db21tYW5kUXQ6OldlYlVuZG9Db21tYW5kUXQoV1RGOjpSZWZQdHI8V2Vi
RWRpdENvbW1hbmRQcm94eT4gY21kLCBRVW5kb0NvbW1hbmQgKnBhcmVudCkKKyAgICA6IFFVbmRv
Q29tbWFuZChwYXJlbnQpCisgICAgLCBtX2NtZChjbWQpCisgICAgLCBtX2ZpcnN0KHRydWUpCisg
ICAgLCBtX2luVW5kb1JlZG8oZmFsc2UpCit7Cit9CisjZWxzZQorV2ViVW5kb0NvbW1hbmRRdDo6
V2ViVW5kb0NvbW1hbmRRdChXVEY6OlJlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjbWQpCisg
ICAgOiBtX2NtZChjbWQpCisgICAgLCBtX2ZpcnN0KHRydWUpCisgICAgLCBtX2luVW5kb1JlZG8o
ZmFsc2UpCit7Cit9CisjZW5kaWYKKworV2ViVW5kb0NvbW1hbmRRdDo6fldlYlVuZG9Db21tYW5k
UXQoKQoreworfQorCisKK3ZvaWQgV2ViVW5kb0NvbW1hbmRRdDo6cmVkbygpCit7CisgICAgbV9p
blVuZG9SZWRvID0gdHJ1ZTsKKworICAgIGlmIChtX2ZpcnN0KSB7CisgICAgICAgIG1fZmlyc3Qg
PSBmYWxzZTsKKyAgICAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKG1fY21kKQorICAgICAgICBtX2NtZC0+cmVhcHBseSgpOworCisgICAg
bV9pblVuZG9SZWRvID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViVW5kb0NvbW1hbmRRdDo6dW5kbygp
Cit7CisgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKKworICAgIGlmIChtX2NtZCkKKyAgICAgICAg
bV9jbWQtPnVuYXBwbHkoKTsKKworICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOworfQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZu
ZGVmIFdlYlVuZG9Db21tYW5kUXRfaAorI2RlZmluZSBXZWJVbmRvQ29tbWFuZFF0X2gKKworI2lu
Y2x1ZGUgIldlYkVkaXRDb21tYW5kUHJveHkuaCIKKyNpbmNsdWRlIDxRVW5kb0NvbW1hbmQ+Cisj
aW5jbHVkZSA8cWdsb2JhbC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworY2xhc3MgV2Vi
VW5kb0NvbW1hbmRRdAorI2lmbmRlZiBRVF9OT19VTkRPQ09NTUFORAorICAgIDogcHVibGljIFFV
bmRvQ29tbWFuZAorI2VuZGlmCit7CisgICAgcHVibGljOgorI2lmbmRlZiBRVF9OT19VTkRPQ09N
TUFORAorICAgICAgICBXZWJVbmRvQ29tbWFuZFF0KFdURjo6UmVmUHRyPFdlYktpdDo6V2ViRWRp
dENvbW1hbmRQcm94eT4gY21kLCBRVW5kb0NvbW1hbmQgKnBhcmVudCA9IDApOworI2Vsc2UKKyAg
ICAgICAgV2ViVW5kb0NvbW1hbmRRdChXVEY6OlJlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21tYW5k
UHJveHk+IGNtZCk7CisjZW5kaWYKKyAgICAgICAgfldlYlVuZG9Db21tYW5kUXQoKTsKKworICAg
ICAgICB2b2lkIHJlZG8oKTsKKyAgICAgICAgdm9pZCB1bmRvKCk7CisKKyAgICAgICAgYm9vbCBp
blVuZG9SZWRvKCkgY29uc3QgeyByZXR1cm4gbV9pblVuZG9SZWRvOyB9OworICAgIHByaXZhdGU6
CisgICAgICAgIFdURjo6UmVmUHRyPFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eT4gbV9jbWQ7
CisgICAgICAgIGJvb2wgbV9maXJzdDsKKyAgICAgICAgYm9vbCBtX2luVW5kb1JlZG87IC8vIG91
ciB1bmRvIHN0YWNrIHdvcmtzIGRpZmZlcmVudGx5IC0gZG9uJ3QgcmUtZW50ZXIhCit9OworCisj
ZW5kaWYgLy8gV2ViVW5kb0NvbW1hbmRRdF9oCisKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4ODAzKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDYtMTQgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFtXSzJdIFF0IFdlYktpdDIg
bmVlZHMgdW5kby9yZWRvIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyNjM3CisKKyAgICAgICAgVW5za2lwIHBhc3NlZCB0ZXN0cy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkOgorCiAyMDExLTA2LTE0ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHJldmlzaW9uIDg4NjQyKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw5
ICsxOTksNiBAQCBlZGl0aW5nL3NlbGVjdGlvbi90cmlwbGUtY2xpY2staW4tcHJlLmh0CiBlZGl0
aW5nL3NlbGVjdGlvbi91c2VyLWRyYWctZWxlbWVudC1hbmQtdXNlci1zZWxlY3Qtbm9uZS5odG1s
CiBlZGl0aW5nL3NlbGVjdGlvbi93b3JkLWdyYW51bGFyaXR5Lmh0bWwKIGVkaXRpbmcvc3BlbGxp
bmcvY29udGV4dC1tZW51LXN1Z2dlc3Rpb25zLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWRlbGV0
ZVdvcmQuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tc21hcnQtZGVsZXRlLXJldmVyc2VkLXNlbGVj
dGlvbi5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1zbWFydC1kZWxldGUtd29yZC5odG1sCiBmYXN0
L2Jsb2NrZmxvdy9ob3Jpem9udGFsLWJ0LXJlcGxhY2VkLXNlbGVjdGlvbi5odG1sCiBmYXN0L2Js
b2NrZmxvdy9qYXBhbmVzZS1sci1zZWxlY3Rpb24uaHRtbAogZmFzdC9ibG9ja2Zsb3cvamFwYW5l
c2Utcmwtc2VsZWN0aW9uLmh0bWwKQEAgLTEyOTcsNyArMTI5NCw2IEBAIGVkaXRpbmcvc3BlbGxp
bmcvZGVzaWduLW1vZGUtc3BlbGxjaGVjay0KIGVkaXRpbmcvc3R5bGUvcmVtb3ZlLXVuZGVybGlu
ZS1mcm9tLXN0eWxlc2hlZXQuaHRtbAogZWRpdGluZy9zdHlsZS90eXBpbmctc3R5bGUtMDAzLmh0
bWwKIGVkaXRpbmcvdGV4dC1pdGVyYXRvci90aGFpLWN1cnNvci1tb3ZlbWVudC5odG1sCi1lZGl0
aW5nL3VuZG8vcmVwbGFjZS1ieS1zcGFuLXRoZW4tcmVtb3ZlLmh0bWwKIGVkaXRpbmcvZGVsZXRp
bmcvNTE2ODU5OC5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saW5lLTAxMS5odG1sCiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvY3JlYXRlTWFya3VwLWFzc2VydC54bWwKQEAgLTE3NjksMjggKzE3
NjUsNiBAQCBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwKIGZhc3QvZG9tL1dpbmRv
dy93aW5kb3ctcmVzaXplLWFuZC1tb3ZlLWFyZ3VtZW50cy5odG1sCiBmYXN0L2RvbS9XaW5kb3cv
d2luZG93LXJlc2l6ZS5odG1sCiAKLSMgV2ViS2l0MiBuZWVkcyB1bmRvL3JlZG8gc3VwcG9ydAot
ZWRpdGluZy91bmRvL3JlbW92ZS1jc3MtcHJvcGVydHktYW5kLXJlbW92ZS1zdHlsZS5odG1sCi1l
ZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1hbmQtdW5kby5odG1sCi1lZGl0aW5nL2V4ZWNDb21tYW5k
L2NvbnZlcnQtc3R5bGUtZWxlbWVudHMtdG8tc3BhbnMuaHRtbAotZWRpdGluZy9pbnNlcnRpbmcv
cmVkby5odG1sCi1lZGl0aW5nL3VuZG8vNDA2Mzc1MS5odG1sCi1lZGl0aW5nL3VuZG8vNTM3ODQ3
My5odG1sCi1lZGl0aW5nL3VuZG8vcmVkby1zcGxpdC10ZXh0LW5vZGUuaHRtbAotZWRpdGluZy91
bmRvL3JlZG8tc3BsaXQtdGV4dC13aXRoLXJlbW92YWwuaHRtbAotZWRpdGluZy91bmRvL3JlZG8t
c3R5bGUuaHRtbAotZWRpdGluZy91bmRvL3JlZG8tdHlwaW5nLTAwMS5odG1sCi1lZGl0aW5nL3Vu
ZG8vdW5kby1jb21iaW5lZC1kZWxldGUtYm91bmRhcnkuaHRtbAotZWRpdGluZy91bmRvL3VuZG8t
Y29tYmluZWQtZGVsZXRlLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWRlbGV0ZS1ib3VuZGFyeS5o
dG1sCi1lZGl0aW5nL3VuZG8vdW5kby1kZWxldGUuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tZm9y
d2FyZC1kZWxldGUtYm91bmRhcnkuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tZm9yd2FyZC1kZWxl
dGUuaHRtbAotZWRpdGluZy91bmRvL3VuZG8taWZyYW1lLWxvY2F0aW9uLWNoYW5nZS5odG1sCi1l
ZGl0aW5nL3VuZG8vdW5kby1pbmRlbnQuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tbWlzc3BlbGxp
bmdzLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLXR5cGluZy0wMDEuaHRtbAotCiAjIFdlYktpdDIg
bmVlZHMgdG8gZGVmaW5lIGEgZGVmYXVsdCBjaGFyc2V0IChTZXR0aW5nczo6ZGVmYXVsdFRleHRF
bmNvZGluZ05hbWUpCiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jaGFyc2V0Lmh0bWwKIApA
QCAtMjk4OCw2ICsyOTYyLDcgQEAgdGFibGVzL21vemlsbGFfZXhwZWN0ZWRfZmFpbHVyZXMvZG9t
L2FwcAogdGFibGVzL21vemlsbGFfZXhwZWN0ZWRfZmFpbHVyZXMvZG9tL2FwcGVuZENlbGxzUmVi
dWlsZDEuaHRtbAogdGFibGVzL21vemlsbGFfZXhwZWN0ZWRfZmFpbHVyZXMvZG9tL2luc2VydFRi
b2R5RXhwYW5kMS5odG1sCiB0YWJsZXMvbW96aWxsYV9leHBlY3RlZF9mYWlsdXJlcy9kb20vaW5z
ZXJ0VGJvZHlSZWJ1aWxkMS5odG1sCitlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1hbmQtdW5kby5o
dG1sCiAKICMgW1F0XVtXSzJdaHR0cC90ZXN0cy9sb2FkaW5nL3ByZWxvYWQtYXBwZW5kLXNjYW4u
cGhwIGZhaWxzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODI1
MwpAQCAtMzAzOCw5ICszMDEzLDYgQEAgZmFzdC9yZXBsYWNlZC9vYmplY3Qtd2l0aC1ub24tZW1w
dHktY2xhcwogIyBmYWlsIGFmdGVyIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzg3
MDY3CiBmYXN0L2Zvcm1zL3RleHRmaWVsZC1vdmVyZmxvdy5odG1sCiAKLSMgbmV3IHRlc3QgaW5y
b2R1Y2VkIGluIHI4NzIwNCwgYnV0IGZhaWwKLWVkaXRpbmcvdW5kby91bmRvLWFmdGVyLXNldHRp
bmctdmFsdWUuaHRtbAotCiAjIHVuc2tpcHBlZCBieSByODgxNTIsIGJ1dCBmYWlsIG9uIFF0LVdL
MiBwbGF0Zm9ybQogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1
dC0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5wdXQt
Mi5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97145</attachid>
            <date>2011-06-14 11:31:11 -0700</date>
            <delta_ts>2011-06-15 11:50:49 -0700</delta_ts>
            <desc>fix patch 2</desc>
            <filename>62637_2.patch</filename>
            <type>text/plain</type>
            <size>13230</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4ODAzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDYtMTQgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbUXRdIFtXSzJdIFF0IFdlYktpdDIgbmVlZHMgdW5kby9yZWRvIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjM3
CisKKyAgICAgICAgSW1wbGVtZW50IHVuZG8vcmVkbyBzdXBwb3J0IGZvciBkb2N1bWVudC5leGVj
Q29tbWFuZCgpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAg
ICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV0tQYWdl
UHJpdmF0ZTo6flFXS1BhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpyZWdp
c3RlckVkaXRDb21tYW5kKToKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpjbGVhckFsbEVkaXRD
b21tYW5kcyk6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6Y2FuVW5kb1JlZG8pOgorICAgICAg
ICAoUVdLUGFnZVByaXZhdGU6OmV4ZWN1dGVVbmRvUmVkbyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xd2twYWdlX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1h
bmRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViVW5kb0NvbW1hbmRRdDo6V2ViVW5kb0NvbW1h
bmRRdCk6CisgICAgICAgIChXZWJVbmRvQ29tbWFuZFF0Ojp+V2ViVW5kb0NvbW1hbmRRdCk6Cisg
ICAgICAgIChXZWJVbmRvQ29tbWFuZFF0OjpyZWRvKToKKyAgICAgICAgKFdlYlVuZG9Db21tYW5k
UXQ6OnVuZG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViVW5kb0NvbW1hbmRRdDo6aW5VbmRvUmVkbyk6CisgICAgICAgICog
V2ViS2l0Mi5wcm86CisKIDIwMTEtMDYtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA4ODY0MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNiArMjMxLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkuaCBcCiAgICAgVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZENsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViVUlDbGllbnQu
aCBcCisgICAgVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuaCBcCiAgICAgVUlQcm9jZXNz
L3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBN
ZW51UHJveHlRdC5oIFwKICAgICBXZWJQcm9jZXNzL0FwcGxpY2F0aW9uQ2FjaGUvV2ViQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaCBcCkBAIC0zODcsNiArMzg4LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUlt
cGwuY3BwIFwKKyAgICBVSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNwcCBcCiAgICAgVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAJKHJldmlzaW9uIDg4NjQyKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
OCArNDEsMTAgQEAKICNpbmNsdWRlICJUaWxlZERyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVF0LmgiCisjaW5j
bHVkZSAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeVF0
LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdC5oIgorI2luY2x1ZGUgIldlYlVuZG9D
b21tYW5kUXQuaCIKICNpbmNsdWRlICJXS1N0cmluZ1F0LmgiCiAjaW5jbHVkZSAiV0tVUkxRdC5o
IgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCkBAIC01MSw2ICs1Myw3IEBACiAjaW5j
bHVkZSA8UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50PgogI2luY2x1ZGUgPFFTdHlsZT4KICNpbmNs
dWRlIDxRVG91Y2hFdmVudD4KKyNpbmNsdWRlIDxRVW5kb1N0YWNrPgogI2luY2x1ZGUgPFF0RGVi
dWc+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UmVjdC5oPgpAQCAtOTYsNiArOTksOSBAQCBRV0tQYWdlUHJpdmF0ZTo6UVdLUGFnZVByaXZhdGUo
UVdLUGFnZSogCiAgICAgLCBjcmVhdGVOZXdQYWdlRm4oMCkKICAgICAsIGJhY2tpbmdTdG9yZVR5
cGUoUUdyYXBoaWNzV0tWaWV3OjpTaW1wbGUpCiAgICAgLCBpc0Nvbm5lY3RlZFRvRW5naW5lKHRy
dWUpCisjaWZuZGVmIFFUX05PX1VORE9TVEFDSworICAgICwgdW5kb1N0YWNrKG5ldyBRVW5kb1N0
YWNrKHFxKSkKKyNlbmRpZgogewogICAgIG1lbXNldChhY3Rpb25zLCAwLCBzaXplb2YoYWN0aW9u
cykpOwogICAgIHBhZ2UgPSBjb250ZXh0LT5kLT5jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMs
IHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKQEAgLTEwNiw2ICsxMTIsOSBAQCBRV0tQYWdlUHJpdmF0
ZTo6flFXS1BhZ2VQcml2YXRlKCkKIHsKICAgICBwYWdlLT5jbG9zZSgpOwogICAgIGRlbGV0ZSBo
aXN0b3J5OworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBkZWxldGUgdW5kb1N0YWNrOwor
I2VuZGlmCiB9CiAKIHZvaWQgUVdLUGFnZVByaXZhdGU6OmluaXQoUUdyYXBoaWNzSXRlbSogdmll
dywgUUdyYXBoaWNzV0tWaWV3OjpCYWNraW5nU3RvcmVUeXBlIGJhY2tpbmdTdG9yZVR5cGUpCkBA
IC0yMDYsMjEgKzIxNSwzOCBAQCB2b2lkIFFXS1BhZ2VQcml2YXRlOjp0b29sVGlwQ2hhbmdlZChj
b25zCiAgICAgZW1pdCBxLT50b29sVGlwQ2hhbmdlZChRU3RyaW5nKG5ld1Rvb2x0aXApKTsKIH0K
IAotdm9pZCBRV0tQYWdlUHJpdmF0ZTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdl
YkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pCit2b2lkIFFXS1Bh
Z2VQcml2YXRlOjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQ
cm94eT4gY29tbWFuZFBhc3NSZWYsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRv
KQogeworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBpZiAodW5kb09yUmVkbyA9PSBXZWJQ
YWdlUHJveHk6OlVuZG8pIHsKKyAgICAgICAgY29uc3QgV2ViVW5kb0NvbW1hbmRRdCogY21kID0g
c3RhdGljX2Nhc3Q8Y29uc3QgV2ViVW5kb0NvbW1hbmRRdCo+KHVuZG9TdGFjay0+Y29tbWFuZCh1
bmRvU3RhY2stPmluZGV4KCkpKTsKKyAgICAgICAgaWYgKGNtZCAmJiBjbWQtPmluVW5kb1JlZG8o
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJv
eHk+IGNvbW1hbmQgPSBjb21tYW5kUGFzc1JlZjsKKyAgICAgICAgdW5kb1N0YWNrLT5wdXNoKG5l
dyBXZWJVbmRvQ29tbWFuZFF0KGNvbW1hbmQpKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBR
V0tQYWdlUHJpdmF0ZTo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKQogeworI2lmbmRlZiBRVF9OT19V
TkRPU1RBQ0sKKyAgICB1bmRvU3RhY2stPmNsZWFyKCk7CisjZW5kaWYKIH0KIAotYm9vbCBRV0tQ
YWdlUHJpdmF0ZTo6Y2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQorYm9vbCBR
V0tQYWdlUHJpdmF0ZTo6Y2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9P
clJlZG8pCiB7CisjaWZkZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIGZhbHNlOworI2Vs
c2UKKyAgICByZXR1cm4gKHVuZG9PclJlZG8gPT0gV2ViUGFnZVByb3h5OjpVbmRvKSA/IHVuZG9T
dGFjay0+Y2FuVW5kbygpIDogdW5kb1N0YWNrLT5jYW5SZWRvKCk7CisjZW5kaWYKIH0KIAotdm9p
ZCBRV0tQYWdlUHJpdmF0ZTo6ZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVk
bykKK3ZvaWQgUVdLUGFnZVByaXZhdGU6OmV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8gdW5kb09yUmVkbykKIHsKKyAgICAodW5kb09yUmVkbyA9PSBXZWJQYWdlUHJveHk6
OlVuZG8pID8gdW5kb1N0YWNrLT51bmRvKCkgOiB1bmRvU3RhY2stPnJlZG8oKTsKIH0KIAogRmxv
YXRSZWN0IFFXS1BhZ2VQcml2YXRlOjpjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2Vf
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZV9wLmgJKHJldmlzaW9uIDg4NjQyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlX3AuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
PFFLZXlFdmVudD4KIAogY2xhc3MgUUdyYXBoaWNzV0tWaWV3OworY2xhc3MgUVVuZG9TdGFjazsK
IGNsYXNzIFFXS1ByZWZlcmVuY2VzOwogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMTM2
LDYgKzEzNywxMCBAQCBwdWJsaWM6CiAgICAgUUdyYXBoaWNzV0tWaWV3OjpCYWNraW5nU3RvcmVU
eXBlIGJhY2tpbmdTdG9yZVR5cGU7CiAKICAgICBib29sIGlzQ29ubmVjdGVkVG9FbmdpbmU7CisK
KyNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCisgICAgUVVuZG9TdGFjayogdW5kb1N0YWNrOworI2Vu
ZGlmCiB9OwogCiBjbGFzcyBRdFZpZXdwb3J0QXR0cmlidXRlc1ByaXZhdGUgOiBwdWJsaWMgUVNo
YXJlZERhdGEgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21t
YW5kUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJV
bmRvQ29tbWFuZFF0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9XZWJVbmRvQ29tbWFuZFF0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5n
IFNlcnZpY2VzIEluYy4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVW5k
b0NvbW1hbmRRdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisjaWZuZGVmIFFUX05P
X1VORE9DT01NQU5ECitXZWJVbmRvQ29tbWFuZFF0OjpXZWJVbmRvQ29tbWFuZFF0KFdURjo6UmVm
UHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNtZCwgUVVuZG9Db21tYW5kKiBwYXJlbnQpCisgICAg
OiBRVW5kb0NvbW1hbmQocGFyZW50KQorICAgICwgbV9jbWQoY21kKQorICAgICwgbV9maXJzdCh0
cnVlKQorICAgICwgbV9pblVuZG9SZWRvKGZhbHNlKQoreworfQorI2Vsc2UKK1dlYlVuZG9Db21t
YW5kUXQ6OldlYlVuZG9Db21tYW5kUXQoV1RGOjpSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4g
Y21kKQorICAgIDogbV9jbWQoY21kKQorICAgICwgbV9maXJzdCh0cnVlKQorICAgICwgbV9pblVu
ZG9SZWRvKGZhbHNlKQoreworfQorI2VuZGlmCisKK1dlYlVuZG9Db21tYW5kUXQ6On5XZWJVbmRv
Q29tbWFuZFF0KCkKK3sKK30KKworCit2b2lkIFdlYlVuZG9Db21tYW5kUXQ6OnJlZG8oKQorewor
ICAgIG1faW5VbmRvUmVkbyA9IHRydWU7CisKKyAgICBpZiAobV9maXJzdCkgeworICAgICAgICBt
X2ZpcnN0ID0gZmFsc2U7CisgICAgICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChtX2NtZCkKKyAgICAgICAgbV9jbWQtPnJlYXBwbHkoKTsK
KworICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOworfQorCit2b2lkIFdlYlVuZG9Db21tYW5kUXQ6
OnVuZG8oKQoreworICAgIG1faW5VbmRvUmVkbyA9IHRydWU7CisKKyAgICBpZiAobV9jbWQpCisg
ICAgICAgIG1fY21kLT51bmFwcGx5KCk7CisKKyAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29t
bWFuZFF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
ICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBXZWJVbmRvQ29tbWFuZFF0X2gKKyNkZWZpbmUgV2ViVW5kb0NvbW1hbmRRdF9o
CisKKyNpbmNsdWRlICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCisjaW5jbHVkZSA8UVVuZG9Db21t
YW5kPgorI2luY2x1ZGUgPHFnbG9iYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK2Ns
YXNzIFdlYlVuZG9Db21tYW5kUXQKKyNpZm5kZWYgUVRfTk9fVU5ET0NPTU1BTkQKKyAgICA6IHB1
YmxpYyBRVW5kb0NvbW1hbmQKKyNlbmRpZgoreworICAgIHB1YmxpYzoKKyNpZm5kZWYgUVRfTk9f
VU5ET0NPTU1BTkQKKyAgICAgICAgV2ViVW5kb0NvbW1hbmRRdChXVEY6OlJlZlB0cjxXZWJLaXQ6
OldlYkVkaXRDb21tYW5kUHJveHk+LCBRVW5kb0NvbW1hbmQqIHBhcmVudCA9IDApOworI2Vsc2UK
KyAgICAgICAgV2ViVW5kb0NvbW1hbmRRdChXVEY6OlJlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21t
YW5kUHJveHk+KTsKKyNlbmRpZgorICAgICAgICB+V2ViVW5kb0NvbW1hbmRRdCgpOworCisgICAg
ICAgIHZvaWQgcmVkbygpOworICAgICAgICB2b2lkIHVuZG8oKTsKKworICAgICAgICBib29sIGlu
VW5kb1JlZG8oKSBjb25zdCB7IHJldHVybiBtX2luVW5kb1JlZG87IH07CisgICAgcHJpdmF0ZToK
KyAgICAgICAgV1RGOjpSZWZQdHI8V2ViS2l0OjpXZWJFZGl0Q29tbWFuZFByb3h5PiBtX2NtZDsK
KyAgICAgICAgYm9vbCBtX2ZpcnN0OworICAgICAgICBib29sIG1faW5VbmRvUmVkbzsgLy8gb3Vy
IHVuZG8gc3RhY2sgd29ya3MgZGlmZmVyZW50bHkgLSBkb24ndCByZS1lbnRlciEKK307CisKKyNl
bmRpZiAvLyBXZWJVbmRvQ29tbWFuZFF0X2gKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODg4MDMpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0wNi0xNCAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gW1dLMl0gUXQgV2ViS2l0MiBu
ZWVkcyB1bmRvL3JlZG8gc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjI2MzcKKworICAgICAgICBVbnNraXAgcGFzc2VkIHRlc3RzLgorCisg
ICAgICAgICogcGxhdGZvcm0vcXQtd2syL1NraXBwZWQ6CisKIDIwMTEtMDYtMTQgIFlhZWwgQWhh
cm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZAkocmV2aXNpb24gODg2NDIpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDkg
KzE5OSw2IEBAIGVkaXRpbmcvc2VsZWN0aW9uL3RyaXBsZS1jbGljay1pbi1wcmUuaHQKIGVkaXRp
bmcvc2VsZWN0aW9uL3VzZXItZHJhZy1lbGVtZW50LWFuZC11c2VyLXNlbGVjdC1ub25lLmh0bWwK
IGVkaXRpbmcvc2VsZWN0aW9uL3dvcmQtZ3JhbnVsYXJpdHkuaHRtbAogZWRpdGluZy9zcGVsbGlu
Zy9jb250ZXh0LW1lbnUtc3VnZ2VzdGlvbnMuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tZGVsZXRl
V29yZC5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1zbWFydC1kZWxldGUtcmV2ZXJzZWQtc2VsZWN0
aW9uLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLXNtYXJ0LWRlbGV0ZS13b3JkLmh0bWwKIGZhc3Qv
YmxvY2tmbG93L2hvcml6b250YWwtYnQtcmVwbGFjZWQtc2VsZWN0aW9uLmh0bWwKIGZhc3QvYmxv
Y2tmbG93L2phcGFuZXNlLWxyLXNlbGVjdGlvbi5odG1sCiBmYXN0L2Jsb2NrZmxvdy9qYXBhbmVz
ZS1ybC1zZWxlY3Rpb24uaHRtbApAQCAtMTI5Nyw3ICsxMjk0LDYgQEAgZWRpdGluZy9zcGVsbGlu
Zy9kZXNpZ24tbW9kZS1zcGVsbGNoZWNrLQogZWRpdGluZy9zdHlsZS9yZW1vdmUtdW5kZXJsaW5l
LWZyb20tc3R5bGVzaGVldC5odG1sCiBlZGl0aW5nL3N0eWxlL3R5cGluZy1zdHlsZS0wMDMuaHRt
bAogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3RoYWktY3Vyc29yLW1vdmVtZW50Lmh0bWwKLWVkaXRp
bmcvdW5kby9yZXBsYWNlLWJ5LXNwYW4tdGhlbi1yZW1vdmUuaHRtbAogZWRpdGluZy9kZWxldGlu
Zy81MTY4NTk4Lmh0bWwKIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWxpbmUtMDExLmh0bWwKIGVk
aXRpbmcvcGFzdGVib2FyZC9jcmVhdGVNYXJrdXAtYXNzZXJ0LnhtbApAQCAtMTc2OSwyOCArMTc2
NSw2IEBAIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxlY3Rpb24uaHRtbAogZmFzdC9kb20vV2luZG93
L3dpbmRvdy1yZXNpemUtYW5kLW1vdmUtYXJndW1lbnRzLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcmVzaXplLmh0bWwKIAotIyBXZWJLaXQyIG5lZWRzIHVuZG8vcmVkbyBzdXBwb3J0Ci1l
ZGl0aW5nL3VuZG8vcmVtb3ZlLWNzcy1wcm9wZXJ0eS1hbmQtcmVtb3ZlLXN0eWxlLmh0bWwKLWVk
aXRpbmcvZGVsZXRpbmcvZGVsZXRlLWFuZC11bmRvLmh0bWwKLWVkaXRpbmcvZXhlY0NvbW1hbmQv
Y29udmVydC1zdHlsZS1lbGVtZW50cy10by1zcGFucy5odG1sCi1lZGl0aW5nL2luc2VydGluZy9y
ZWRvLmh0bWwKLWVkaXRpbmcvdW5kby80MDYzNzUxLmh0bWwKLWVkaXRpbmcvdW5kby81Mzc4NDcz
Lmh0bWwKLWVkaXRpbmcvdW5kby9yZWRvLXNwbGl0LXRleHQtbm9kZS5odG1sCi1lZGl0aW5nL3Vu
ZG8vcmVkby1zcGxpdC10ZXh0LXdpdGgtcmVtb3ZhbC5odG1sCi1lZGl0aW5nL3VuZG8vcmVkby1z
dHlsZS5odG1sCi1lZGl0aW5nL3VuZG8vcmVkby10eXBpbmctMDAxLmh0bWwKLWVkaXRpbmcvdW5k
by91bmRvLWNvbWJpbmVkLWRlbGV0ZS1ib3VuZGFyeS5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1j
b21iaW5lZC1kZWxldGUuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tZGVsZXRlLWJvdW5kYXJ5Lmh0
bWwKLWVkaXRpbmcvdW5kby91bmRvLWRlbGV0ZS5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1mb3J3
YXJkLWRlbGV0ZS1ib3VuZGFyeS5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1mb3J3YXJkLWRlbGV0
ZS5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1pZnJhbWUtbG9jYXRpb24tY2hhbmdlLmh0bWwKLWVk
aXRpbmcvdW5kby91bmRvLWluZGVudC5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1taXNzcGVsbGlu
Z3MuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tdHlwaW5nLTAwMS5odG1sCi0KICMgV2ViS2l0MiBu
ZWVkcyB0byBkZWZpbmUgYSBkZWZhdWx0IGNoYXJzZXQgKFNldHRpbmdzOjpkZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZSkKIGZhc3QvZG9tL0RvY3VtZW50L2RvY3VtZW50LWNoYXJzZXQuaHRtbAogCkBA
IC0yOTg4LDYgKzI5NjIsNyBAQCB0YWJsZXMvbW96aWxsYV9leHBlY3RlZF9mYWlsdXJlcy9kb20v
YXBwCiB0YWJsZXMvbW96aWxsYV9leHBlY3RlZF9mYWlsdXJlcy9kb20vYXBwZW5kQ2VsbHNSZWJ1
aWxkMS5odG1sCiB0YWJsZXMvbW96aWxsYV9leHBlY3RlZF9mYWlsdXJlcy9kb20vaW5zZXJ0VGJv
ZHlFeHBhbmQxLmh0bWwKIHRhYmxlcy9tb3ppbGxhX2V4cGVjdGVkX2ZhaWx1cmVzL2RvbS9pbnNl
cnRUYm9keVJlYnVpbGQxLmh0bWwKK2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWFuZC11bmRvLmh0
bWwKIAogIyBbUXRdW1dLMl1odHRwL3Rlc3RzL2xvYWRpbmcvcHJlbG9hZC1hcHBlbmQtc2Nhbi5w
aHAgZmFpbHMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MjUz
CkBAIC0zMDM4LDkgKzMwMTMsNiBAQCBmYXN0L3JlcGxhY2VkL29iamVjdC13aXRoLW5vbi1lbXB0
eS1jbGFzCiAjIGZhaWwgYWZ0ZXIgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvODcw
NjcKIGZhc3QvZm9ybXMvdGV4dGZpZWxkLW92ZXJmbG93Lmh0bWwKIAotIyBuZXcgdGVzdCBpbnJv
ZHVjZWQgaW4gcjg3MjA0LCBidXQgZmFpbAotZWRpdGluZy91bmRvL3VuZG8tYWZ0ZXItc2V0dGlu
Zy12YWx1ZS5odG1sCi0KICMgdW5za2lwcGVkIGJ5IHI4ODE1MiwgYnV0IGZhaWwgb24gUXQtV0sy
IHBsYXRmb3JtCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0
LTEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0y
Lmh0bWwK
</data>
<flag name="review"
          id="91011"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97338</attachid>
            <date>2011-06-15 11:50:49 -0700</date>
            <delta_ts>2011-06-16 08:53:51 -0700</delta_ts>
            <desc>fix patch 3</desc>
            <filename>62637_3.patch</filename>
            <type>text/plain</type>
            <size>12947</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTU4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDYtMTUgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbUXRdIFtXSzJdIFF0IFdlYktpdDIgbmVlZHMgdW5kby9yZWRvIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjM3
CisKKyAgICAgICAgSW1wbGVtZW50IHVuZG8vcmVkbyBzdXBwb3J0IGZvciBkb2N1bWVudC5leGVj
Q29tbWFuZCgpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAg
ICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV0tQYWdl
UHJpdmF0ZTo6flFXS1BhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpyZWdp
c3RlckVkaXRDb21tYW5kKToKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpjbGVhckFsbEVkaXRD
b21tYW5kcyk6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6Y2FuVW5kb1JlZG8pOgorICAgICAg
ICAoUVdLUGFnZVByaXZhdGU6OmV4ZWN1dGVVbmRvUmVkbyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xd2twYWdlX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1h
bmRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViVW5kb0NvbW1hbmRRdDo6V2ViVW5kb0NvbW1h
bmRRdCk6CisgICAgICAgIChXZWJVbmRvQ29tbWFuZFF0Ojp+V2ViVW5kb0NvbW1hbmRRdCk6Cisg
ICAgICAgIChXZWJVbmRvQ29tbWFuZFF0OjpyZWRvKToKKyAgICAgICAgKFdlYlVuZG9Db21tYW5k
UXQ6OnVuZG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViVW5kb0NvbW1hbmRRdDo6aW5VbmRvUmVkbyk6CisgICAgICAgICog
V2ViS2l0Mi5wcm86CisKIDIwMTEtMDYtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8JKHJldmlzaW9uIDg4OTU4KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nl
c3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oIFwKKyAgICBV
SVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViQ29u
dGV4dE1lbnVQcm94eVF0LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmggXAogICAgIFdlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5oIFwKQEAgLTM5MCw2ICszOTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgXAor
ICAgIFVJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0Zp
bmRJbmRpY2F0b3IuY3BwIFwKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrcGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24gODg5NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSwxMCBA
QAogI2luY2x1ZGUgIlRpbGVkRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvbnRl
eHQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5UXQuaCIKKyNpbmNsdWRlICJXZWJF
ZGl0Q29tbWFuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5UXQuaCIKICNpbmNs
dWRlICJXZWJQb3B1cE1lbnVQcm94eVF0LmgiCisjaW5jbHVkZSAiV2ViVW5kb0NvbW1hbmRRdC5o
IgogI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKICNpbmNsdWRlICJXS1VSTFF0LmgiCiAjaW5jbHVk
ZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKQEAgLTUxLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxRR3Jh
cGhpY3NTY2VuZU1vdXNlRXZlbnQ+CiAjaW5jbHVkZSA8UVN0eWxlPgogI2luY2x1ZGUgPFFUb3Vj
aEV2ZW50PgorI2luY2x1ZGUgPFFVbmRvU3RhY2s+CiAjaW5jbHVkZSA8UXREZWJ1Zz4KICNpbmNs
dWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBA
IC05Niw2ICs5OSw5IEBAIFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZShRV0tQYWdlKiAK
ICAgICAsIGNyZWF0ZU5ld1BhZ2VGbigwKQogICAgICwgYmFja2luZ1N0b3JlVHlwZShRR3JhcGhp
Y3NXS1ZpZXc6OlNpbXBsZSkKICAgICAsIGlzQ29ubmVjdGVkVG9FbmdpbmUodHJ1ZSkKKyNpZm5k
ZWYgUVRfTk9fVU5ET1NUQUNLCisgICAgLCB1bmRvU3RhY2soYWRvcHRQdHIobmV3IFFVbmRvU3Rh
Y2socXEpKSkKKyNlbmRpZgogewogICAgIG1lbXNldChhY3Rpb25zLCAwLCBzaXplb2YoYWN0aW9u
cykpOwogICAgIHBhZ2UgPSBjb250ZXh0LT5kLT5jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMs
IHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKQEAgLTIwNiwyMSArMjEyLDM4IEBAIHZvaWQgUVdLUGFn
ZVByaXZhdGU6OnRvb2xUaXBDaGFuZ2VkKGNvbnMKICAgICBlbWl0IHEtPnRvb2xUaXBDaGFuZ2Vk
KFFTdHJpbmcobmV3VG9vbHRpcCkpOwogfQogCi12b2lkIFFXS1BhZ2VQcml2YXRlOjpyZWdpc3Rl
ckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94
eTo6VW5kb09yUmVkbykKK3ZvaWQgUVdLUGFnZVByaXZhdGU6OnJlZ2lzdGVyRWRpdENvbW1hbmQo
UGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kUGFzc1JlZiwgV2ViUGFnZVBy
b3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7CisjaWZuZGVmIFFUX05PX1VORE9TVEFDSwor
ICAgIGlmICh1bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykgeworICAgICAgICBjb25z
dCBXZWJVbmRvQ29tbWFuZFF0KiBjbWQgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJVbmRvQ29tbWFu
ZFF0Kj4odW5kb1N0YWNrLT5jb21tYW5kKHVuZG9TdGFjay0+aW5kZXgoKSkpOworICAgICAgICBp
ZiAoY21kICYmIGNtZC0+aW5VbmRvUmVkbygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCA9IGNvbW1hbmRQYXNzUmVmOwor
ICAgICAgICB1bmRvU3RhY2stPnB1c2gobmV3IFdlYlVuZG9Db21tYW5kUXQoY29tbWFuZCkpOwor
ICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIFFXS1BhZ2VQcml2YXRlOjpjbGVhckFsbEVkaXRDb21t
YW5kcygpCiB7CisjaWZuZGVmIFFUX05PX1VORE9TVEFDSworICAgIHVuZG9TdGFjay0+Y2xlYXIo
KTsKKyNlbmRpZgogfQogCi1ib29sIFFXS1BhZ2VQcml2YXRlOjpjYW5VbmRvUmVkbyhXZWJQYWdl
UHJveHk6OlVuZG9PclJlZG8pCitib29sIFFXS1BhZ2VQcml2YXRlOjpjYW5VbmRvUmVkbyhXZWJQ
YWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKIHsKKyNpZmRlZiBRVF9OT19VTkRPU1RB
Q0sKICAgICByZXR1cm4gZmFsc2U7CisjZWxzZQorICAgIHJldHVybiAodW5kb09yUmVkbyA9PSBX
ZWJQYWdlUHJveHk6OlVuZG8pID8gdW5kb1N0YWNrLT5jYW5VbmRvKCkgOiB1bmRvU3RhY2stPmNh
blJlZG8oKTsKKyNlbmRpZgogfQogCi12b2lkIFFXS1BhZ2VQcml2YXRlOjpleGVjdXRlVW5kb1Jl
ZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQordm9pZCBRV0tQYWdlUHJpdmF0ZTo6ZXhlY3V0
ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQogeworICAgICh1
bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykgPyB1bmRvU3RhY2stPnVuZG8oKSA6IHVu
ZG9TdGFjay0+cmVkbygpOwogfQogCiBGbG9hdFJlY3QgUVdLUGFnZVByaXZhdGU6OmNvbnZlcnRU
b0RldmljZVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAkocmV2aXNpb24gODg5NTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8UUtleUV2ZW50PgogCiBjbGFzcyBRR3JhcGhpY3NX
S1ZpZXc7CitjbGFzcyBRVW5kb1N0YWNrOwogY2xhc3MgUVdLUHJlZmVyZW5jZXM7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xMzgsNiArMTM5LDEwIEBAIHB1YmxpYzoKICAgICBRR3Jh
cGhpY3NXS1ZpZXc6OkJhY2tpbmdTdG9yZVR5cGUgYmFja2luZ1N0b3JlVHlwZTsKIAogICAgIGJv
b2wgaXNDb25uZWN0ZWRUb0VuZ2luZTsKKworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBP
d25QdHI8UVVuZG9TdGFjaz4gdW5kb1N0YWNrOworI2VuZGlmCiB9OwogCiBjbGFzcyBRdFZpZXdw
b3J0QXR0cmlidXRlc1ByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgewpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVW5kb0NvbW1hbmRRdC5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCisjaWZuZGVmIFFUX05PX1VORE9DT01NQU5ECitXZWJVbmRvQ29t
bWFuZFF0OjpXZWJVbmRvQ29tbWFuZFF0KFdURjo6UmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+
IGNtZCwgUVVuZG9Db21tYW5kKiBwYXJlbnQpCisgICAgOiBRVW5kb0NvbW1hbmQocGFyZW50KQor
ICAgICwgbV9jbWQoY21kKQorICAgICwgbV9maXJzdCh0cnVlKQorICAgICwgbV9pblVuZG9SZWRv
KGZhbHNlKQoreworfQorI2Vsc2UKK1dlYlVuZG9Db21tYW5kUXQ6OldlYlVuZG9Db21tYW5kUXQo
V1RGOjpSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY21kKQorICAgIDogbV9jbWQoY21kKQor
ICAgICwgbV9maXJzdCh0cnVlKQorICAgICwgbV9pblVuZG9SZWRvKGZhbHNlKQoreworfQorI2Vu
ZGlmCisKK1dlYlVuZG9Db21tYW5kUXQ6On5XZWJVbmRvQ29tbWFuZFF0KCkKK3sKK30KKworCit2
b2lkIFdlYlVuZG9Db21tYW5kUXQ6OnJlZG8oKQoreworICAgIG1faW5VbmRvUmVkbyA9IHRydWU7
CisKKyAgICBpZiAobV9maXJzdCkgeworICAgICAgICBtX2ZpcnN0ID0gZmFsc2U7CisgICAgICAg
IG1faW5VbmRvUmVkbyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICht
X2NtZCkKKyAgICAgICAgbV9jbWQtPnJlYXBwbHkoKTsKKworICAgIG1faW5VbmRvUmVkbyA9IGZh
bHNlOworfQorCit2b2lkIFdlYlVuZG9Db21tYW5kUXQ6OnVuZG8oKQoreworICAgIG1faW5VbmRv
UmVkbyA9IHRydWU7CisKKyAgICBpZiAobV9jbWQpCisgICAgICAgIG1fY21kLT51bmFwcGx5KCk7
CisKKyAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNyBT
dGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBXZWJVbmRvQ29tbWFu
ZFF0X2gKKyNkZWZpbmUgV2ViVW5kb0NvbW1hbmRRdF9oCisKKyNpbmNsdWRlICJXZWJFZGl0Q29t
bWFuZFByb3h5LmgiCisjaW5jbHVkZSA8UVVuZG9Db21tYW5kPgorI2luY2x1ZGUgPHFnbG9iYWwu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK2NsYXNzIFdlYlVuZG9Db21tYW5kUXQKKyNp
Zm5kZWYgUVRfTk9fVU5ET0NPTU1BTkQKKyAgICA6IHB1YmxpYyBRVW5kb0NvbW1hbmQKKyNlbmRp
ZgoreworICAgIHB1YmxpYzoKKyNpZm5kZWYgUVRfTk9fVU5ET0NPTU1BTkQKKyAgICAgICAgV2Vi
VW5kb0NvbW1hbmRRdChXVEY6OlJlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk+LCBR
VW5kb0NvbW1hbmQqIHBhcmVudCA9IDApOworI2Vsc2UKKyAgICAgICAgV2ViVW5kb0NvbW1hbmRR
dChXVEY6OlJlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk+KTsKKyNlbmRpZgorICAg
ICAgICB+V2ViVW5kb0NvbW1hbmRRdCgpOworCisgICAgICAgIHZvaWQgcmVkbygpOworICAgICAg
ICB2b2lkIHVuZG8oKTsKKworICAgICAgICBib29sIGluVW5kb1JlZG8oKSBjb25zdCB7IHJldHVy
biBtX2luVW5kb1JlZG87IH07CisgICAgcHJpdmF0ZToKKyAgICAgICAgV1RGOjpSZWZQdHI8V2Vi
S2l0OjpXZWJFZGl0Q29tbWFuZFByb3h5PiBtX2NtZDsKKyAgICAgICAgYm9vbCBtX2ZpcnN0Owor
ICAgICAgICBib29sIG1faW5VbmRvUmVkbzsKK307CisKKyNlbmRpZiAvLyBXZWJVbmRvQ29tbWFu
ZFF0X2gKKwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODg5NTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNi0xNSAgQ2hhbmcgU2h1
ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtRdF0gW1dLMl0gUXQgV2ViS2l0MiBuZWVkcyB1bmRvL3JlZG8gc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI2MzcK
KworICAgICAgICBVbnNraXAgcGFzc2VkIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vcXQt
d2syL1NraXBwZWQ6CisKIDIwMTEtMDYtMTUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA4ODk1OCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xOTks
OSArMTk5LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vdHJpcGxlLWNsaWNrLWluLXByZS5odAogZWRp
dGluZy9zZWxlY3Rpb24vdXNlci1kcmFnLWVsZW1lbnQtYW5kLXVzZXItc2VsZWN0LW5vbmUuaHRt
bAogZWRpdGluZy9zZWxlY3Rpb24vd29yZC1ncmFudWxhcml0eS5odG1sCiBlZGl0aW5nL3NwZWxs
aW5nL2NvbnRleHQtbWVudS1zdWdnZXN0aW9ucy5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1kZWxl
dGVXb3JkLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLXNtYXJ0LWRlbGV0ZS1yZXZlcnNlZC1zZWxl
Y3Rpb24uaHRtbAotZWRpdGluZy91bmRvL3VuZG8tc21hcnQtZGVsZXRlLXdvcmQuaHRtbAogZmFz
dC9ibG9ja2Zsb3cvaG9yaXpvbnRhbC1idC1yZXBsYWNlZC1zZWxlY3Rpb24uaHRtbAogZmFzdC9i
bG9ja2Zsb3cvamFwYW5lc2UtbHItc2VsZWN0aW9uLmh0bWwKIGZhc3QvYmxvY2tmbG93L2phcGFu
ZXNlLXJsLXNlbGVjdGlvbi5odG1sCkBAIC0xMjk3LDcgKzEyOTQsNiBAQCBlZGl0aW5nL3NwZWxs
aW5nL2Rlc2lnbi1tb2RlLXNwZWxsY2hlY2stCiBlZGl0aW5nL3N0eWxlL3JlbW92ZS11bmRlcmxp
bmUtZnJvbS1zdHlsZXNoZWV0Lmh0bWwKIGVkaXRpbmcvc3R5bGUvdHlwaW5nLXN0eWxlLTAwMy5o
dG1sCiBlZGl0aW5nL3RleHQtaXRlcmF0b3IvdGhhaS1jdXJzb3ItbW92ZW1lbnQuaHRtbAotZWRp
dGluZy91bmRvL3JlcGxhY2UtYnktc3Bhbi10aGVuLXJlbW92ZS5odG1sCiBlZGl0aW5nL2RlbGV0
aW5nLzUxNjg1OTguaHRtbAogZWRpdGluZy9kZWxldGluZy9kZWxldGUtbGluZS0wMTEuaHRtbAog
ZWRpdGluZy9wYXN0ZWJvYXJkL2NyZWF0ZU1hcmt1cC1hc3NlcnQueG1sCkBAIC0xNzY5LDI4ICsx
NzY1LDYgQEAgcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCiBmYXN0L2RvbS9XaW5k
b3cvd2luZG93LXJlc2l6ZS1hbmQtbW92ZS1hcmd1bWVudHMuaHRtbAogZmFzdC9kb20vV2luZG93
L3dpbmRvdy1yZXNpemUuaHRtbAogCi0jIFdlYktpdDIgbmVlZHMgdW5kby9yZWRvIHN1cHBvcnQK
LWVkaXRpbmcvdW5kby9yZW1vdmUtY3NzLXByb3BlcnR5LWFuZC1yZW1vdmUtc3R5bGUuaHRtbAot
ZWRpdGluZy9kZWxldGluZy9kZWxldGUtYW5kLXVuZG8uaHRtbAotZWRpdGluZy9leGVjQ29tbWFu
ZC9jb252ZXJ0LXN0eWxlLWVsZW1lbnRzLXRvLXNwYW5zLmh0bWwKLWVkaXRpbmcvaW5zZXJ0aW5n
L3JlZG8uaHRtbAotZWRpdGluZy91bmRvLzQwNjM3NTEuaHRtbAotZWRpdGluZy91bmRvLzUzNzg0
NzMuaHRtbAotZWRpdGluZy91bmRvL3JlZG8tc3BsaXQtdGV4dC1ub2RlLmh0bWwKLWVkaXRpbmcv
dW5kby9yZWRvLXNwbGl0LXRleHQtd2l0aC1yZW1vdmFsLmh0bWwKLWVkaXRpbmcvdW5kby9yZWRv
LXN0eWxlLmh0bWwKLWVkaXRpbmcvdW5kby9yZWRvLXR5cGluZy0wMDEuaHRtbAotZWRpdGluZy91
bmRvL3VuZG8tY29tYmluZWQtZGVsZXRlLWJvdW5kYXJ5Lmh0bWwKLWVkaXRpbmcvdW5kby91bmRv
LWNvbWJpbmVkLWRlbGV0ZS5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1kZWxldGUtYm91bmRhcnku
aHRtbAotZWRpdGluZy91bmRvL3VuZG8tZGVsZXRlLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWZv
cndhcmQtZGVsZXRlLWJvdW5kYXJ5Lmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWZvcndhcmQtZGVs
ZXRlLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWlmcmFtZS1sb2NhdGlvbi1jaGFuZ2UuaHRtbAot
ZWRpdGluZy91bmRvL3VuZG8taW5kZW50Lmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLW1pc3NwZWxs
aW5ncy5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby10eXBpbmctMDAxLmh0bWwKLQogIyBXZWJLaXQy
IG5lZWRzIHRvIGRlZmluZSBhIGRlZmF1bHQgY2hhcnNldCAoU2V0dGluZ3M6OmRlZmF1bHRUZXh0
RW5jb2RpbmdOYW1lKQogZmFzdC9kb20vRG9jdW1lbnQvZG9jdW1lbnQtY2hhcnNldC5odG1sCiAK
QEAgLTI5ODgsNiArMjk2Miw3IEBAIHRhYmxlcy9tb3ppbGxhX2V4cGVjdGVkX2ZhaWx1cmVzL2Rv
bS9hcHAKIHRhYmxlcy9tb3ppbGxhX2V4cGVjdGVkX2ZhaWx1cmVzL2RvbS9hcHBlbmRDZWxsc1Jl
YnVpbGQxLmh0bWwKIHRhYmxlcy9tb3ppbGxhX2V4cGVjdGVkX2ZhaWx1cmVzL2RvbS9pbnNlcnRU
Ym9keUV4cGFuZDEuaHRtbAogdGFibGVzL21vemlsbGFfZXhwZWN0ZWRfZmFpbHVyZXMvZG9tL2lu
c2VydFRib2R5UmVidWlsZDEuaHRtbAorZWRpdGluZy9kZWxldGluZy9kZWxldGUtYW5kLXVuZG8u
aHRtbAogCiAjIFtRdF1bV0syXWh0dHAvdGVzdHMvbG9hZGluZy9wcmVsb2FkLWFwcGVuZC1zY2Fu
LnBocCBmYWlscwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgy
NTMKQEAgLTMwMzgsOSArMzAxMyw2IEBAIGZhc3QvcmVwbGFjZWQvb2JqZWN0LXdpdGgtbm9uLWVt
cHR5LWNsYXMKICMgZmFpbCBhZnRlciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84
NzA2NwogZmFzdC9mb3Jtcy90ZXh0ZmllbGQtb3ZlcmZsb3cuaHRtbAogCi0jIG5ldyB0ZXN0IGlu
cm9kdWNlZCBpbiByODcyMDQsIGJ1dCBmYWlsCi1lZGl0aW5nL3VuZG8vdW5kby1hZnRlci1zZXR0
aW5nLXZhbHVlLmh0bWwKLQogIyB1bnNraXBwZWQgYnkgcjg4MTUyLCBidXQgZmFpbCBvbiBRdC1X
SzIgcGxhdGZvcm0KIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHktaW5w
dXQtMS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0
LTIuaHRtbAo=
</data>
<flag name="review"
          id="91263"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97449</attachid>
            <date>2011-06-16 08:53:51 -0700</date>
            <delta_ts>2011-06-16 10:34:13 -0700</delta_ts>
            <desc>fix patch 4</desc>
            <filename>62637_4.patch</filename>
            <type>text/plain</type>
            <size>13066</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4OTU4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDYtMTUgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbUXRdIFtXSzJdIFF0IFdlYktpdDIgbmVlZHMgdW5kby9yZWRvIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjM3
CisKKyAgICAgICAgSW1wbGVtZW50IHVuZG8vcmVkbyBzdXBwb3J0IGZvciBkb2N1bWVudC5leGVj
Q29tbWFuZCgpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcDoKKyAg
ICAgICAgKFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV0tQYWdl
UHJpdmF0ZTo6flFXS1BhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpyZWdp
c3RlckVkaXRDb21tYW5kKToKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpjbGVhckFsbEVkaXRD
b21tYW5kcyk6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6Y2FuVW5kb1JlZG8pOgorICAgICAg
ICAoUVdLUGFnZVByaXZhdGU6OmV4ZWN1dGVVbmRvUmVkbyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xd2twYWdlX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1h
bmRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViVW5kb0NvbW1hbmRRdDo6V2ViVW5kb0NvbW1h
bmRRdCk6CisgICAgICAgIChXZWJVbmRvQ29tbWFuZFF0Ojp+V2ViVW5kb0NvbW1hbmRRdCk6Cisg
ICAgICAgIChXZWJVbmRvQ29tbWFuZFF0OjpyZWRvKToKKyAgICAgICAgKFdlYlVuZG9Db21tYW5k
UXQ6OnVuZG8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0Lmg6IEFk
ZGVkLgorICAgICAgICAoV2ViVW5kb0NvbW1hbmRRdDo6aW5VbmRvUmVkbyk6CisgICAgICAgICog
V2ViS2l0Mi5wcm86CisKIDIwMTEtMDYtMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcm8JKHJldmlzaW9uIDg4OTU4KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nl
c3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oIFwKKyAgICBV
SVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViQ29u
dGV4dE1lbnVQcm94eVF0LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmggXAogICAgIFdlYlByb2Nlc3MvQXBwbGljYXRpb25DYWNoZS9XZWJBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5oIFwKQEAgLTM5MCw2ICszOTEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvRHJhd2luZ0Fy
ZWFQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgXAor
ICAgIFVJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0Zp
bmRJbmRpY2F0b3IuY3BwIFwKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UHJveHkuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrcGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2twYWdlLmNwcAkocmV2aXNpb24gODg5NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSwxMCBA
QAogI2luY2x1ZGUgIlRpbGVkRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvbnRl
eHQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5UXQuaCIKKyNpbmNsdWRlICJXZWJF
ZGl0Q29tbWFuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5UXQuaCIKICNpbmNs
dWRlICJXZWJQb3B1cE1lbnVQcm94eVF0LmgiCisjaW5jbHVkZSAiV2ViVW5kb0NvbW1hbmRRdC5o
IgogI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKICNpbmNsdWRlICJXS1VSTFF0LmgiCiAjaW5jbHVk
ZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKQEAgLTUxLDYgKzUzLDcgQEAKICNpbmNsdWRlIDxRR3Jh
cGhpY3NTY2VuZU1vdXNlRXZlbnQ+CiAjaW5jbHVkZSA8UVN0eWxlPgogI2luY2x1ZGUgPFFUb3Vj
aEV2ZW50PgorI2luY2x1ZGUgPFFVbmRvU3RhY2s+CiAjaW5jbHVkZSA8UXREZWJ1Zz4KICNpbmNs
dWRlIDxXZWJDb3JlL0N1cnNvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBA
IC05Niw2ICs5OSw5IEBAIFFXS1BhZ2VQcml2YXRlOjpRV0tQYWdlUHJpdmF0ZShRV0tQYWdlKiAK
ICAgICAsIGNyZWF0ZU5ld1BhZ2VGbigwKQogICAgICwgYmFja2luZ1N0b3JlVHlwZShRR3JhcGhp
Y3NXS1ZpZXc6OlNpbXBsZSkKICAgICAsIGlzQ29ubmVjdGVkVG9FbmdpbmUodHJ1ZSkKKyNpZm5k
ZWYgUVRfTk9fVU5ET1NUQUNLCisgICAgLCB1bmRvU3RhY2soYWRvcHRQdHIobmV3IFFVbmRvU3Rh
Y2socXEpKSkKKyNlbmRpZgogewogICAgIG1lbXNldChhY3Rpb25zLCAwLCBzaXplb2YoYWN0aW9u
cykpOwogICAgIHBhZ2UgPSBjb250ZXh0LT5kLT5jb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMs
IHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKQEAgLTIwNiwyMSArMjEyLDQ0IEBAIHZvaWQgUVdLUGFn
ZVByaXZhdGU6OnRvb2xUaXBDaGFuZ2VkKGNvbnMKICAgICBlbWl0IHEtPnRvb2xUaXBDaGFuZ2Vk
KFFTdHJpbmcobmV3VG9vbHRpcCkpOwogfQogCi12b2lkIFFXS1BhZ2VQcml2YXRlOjpyZWdpc3Rl
ckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94
eTo6VW5kb09yUmVkbykKK3ZvaWQgUVdLUGFnZVByaXZhdGU6OnJlZ2lzdGVyRWRpdENvbW1hbmQo
UGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8gdW5kb09yUmVkbykKIHsKKyNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCisgICAgaWYg
KHVuZG9PclJlZG8gPT0gV2ViUGFnZVByb3h5OjpVbmRvKSB7CisgICAgICAgIGNvbnN0IFdlYlVu
ZG9Db21tYW5kUXQqIHdlYlVuZG9Db21tYW5kID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViVW5kb0Nv
bW1hbmRRdCo+KHVuZG9TdGFjay0+Y29tbWFuZCh1bmRvU3RhY2stPmluZGV4KCkpKTsKKyAgICAg
ICAgaWYgKHdlYlVuZG9Db21tYW5kICYmIHdlYlVuZG9Db21tYW5kLT5pblVuZG9SZWRvKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHVuZG9TdGFjay0+cHVzaChuZXcgV2ViVW5kb0Nv
bW1hbmRRdChjb21tYW5kKSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgUVdLUGFnZVByaXZh
dGU6OmNsZWFyQWxsRWRpdENvbW1hbmRzKCkKIHsKKyNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCisg
ICAgdW5kb1N0YWNrLT5jbGVhcigpOworI2VuZGlmCiB9CiAKLWJvb2wgUVdLUGFnZVByaXZhdGU6
OmNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykKK2Jvb2wgUVdLUGFnZVByaXZh
dGU6OmNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewor
I2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgaWYg
KHVuZG9PclJlZG8gPT0gV2ViUGFnZVByb3h5OjpVbmRvKQorICAgICAgICByZXR1cm4gdW5kb1N0
YWNrLT5jYW5VbmRvKCk7CisgICAgcmV0dXJuIHVuZG9TdGFjay0+Y2FuUmVkbygpOworI2VuZGlm
CiB9CiAKLXZvaWQgUVdLUGFnZVByaXZhdGU6OmV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6
OlVuZG9PclJlZG8pCit2b2lkIFFXS1BhZ2VQcml2YXRlOjpleGVjdXRlVW5kb1JlZG8oV2ViUGFn
ZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7CisjaWZuZGVmIFFUX05PX1VORE9TVEFD
SworICAgIGlmICh1bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykKKyAgICAgICAgdW5k
b1N0YWNrLT51bmRvKCk7CisgICAgZWxzZQorICAgICAgICB1bmRvU3RhY2stPnJlZG8oKTsKKyNl
bmRpZgogfQogCiBGbG9hdFJlY3QgUVdLUGFnZVByaXZhdGU6OmNvbnZlcnRUb0RldmljZVNwYWNl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdrcGFnZV9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2twYWdlX3AuaAkocmV2aXNpb24gODg5NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSA8UUtleUV2ZW50PgogCiBjbGFzcyBRR3JhcGhpY3NXS1ZpZXc7CitjbGFz
cyBRVW5kb1N0YWNrOwogY2xhc3MgUVdLUHJlZmVyZW5jZXM7CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CkBAIC0xMzgsNiArMTM5LDEwIEBAIHB1YmxpYzoKICAgICBRR3JhcGhpY3NXS1ZpZXc6
OkJhY2tpbmdTdG9yZVR5cGUgYmFja2luZ1N0b3JlVHlwZTsKIAogICAgIGJvb2wgaXNDb25uZWN0
ZWRUb0VuZ2luZTsKKworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBPd25QdHI8UVVuZG9T
dGFjaz4gdW5kb1N0YWNrOworI2VuZGlmCiB9OwogCiBjbGFzcyBRdFZpZXdwb3J0QXR0cmlidXRl
c1ByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAy
MDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViVW5kb0NvbW1hbmRRdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCisjaWZuZGVmIFFUX05PX1VORE9DT01NQU5ECitXZWJVbmRvQ29tbWFuZFF0OjpXZWJV
bmRvQ29tbWFuZFF0KFdURjo6UGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5k
LCBRVW5kb0NvbW1hbmQqIHBhcmVudCkKKyAgICA6IFFVbmRvQ29tbWFuZChwYXJlbnQpCisgICAg
LCBtX2NvbW1hbmQoY29tbWFuZCkKKyAgICAsIG1fZmlyc3QodHJ1ZSkKKyAgICAsIG1faW5VbmRv
UmVkbyhmYWxzZSkKK3sKK30KKyNlbHNlCitXZWJVbmRvQ29tbWFuZFF0OjpXZWJVbmRvQ29tbWFu
ZFF0KFdURjo6UGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kKQorICAgIDog
bV9jb21tYW5kKGNvbW1hbmQpCisgICAgLCBtX2ZpcnN0KHRydWUpCisgICAgLCBtX2luVW5kb1Jl
ZG8oZmFsc2UpCit7Cit9CisjZW5kaWYKKworV2ViVW5kb0NvbW1hbmRRdDo6fldlYlVuZG9Db21t
YW5kUXQoKQoreworfQorCit2b2lkIFdlYlVuZG9Db21tYW5kUXQ6OnJlZG8oKQoreworICAgIG1f
aW5VbmRvUmVkbyA9IHRydWU7CisKKyAgICAvLyBJZ25vcmUgdGhlIGZpcnN0IHJlZG8gY2FsbGVk
IGZyb20gUVVuZG9TdGFjazo6cHVzaCgpLgorICAgIGlmIChtX2ZpcnN0KSB7CisgICAgICAgIG1f
Zmlyc3QgPSBmYWxzZTsKKyAgICAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKG1fY29tbWFuZCkKKyAgICAgICAgbV9jb21tYW5kLT5yZWFw
cGx5KCk7CisKKyAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKK30KKwordm9pZCBXZWJVbmRvQ29t
bWFuZFF0Ojp1bmRvKCkKK3sKKyAgICBtX2luVW5kb1JlZG8gPSB0cnVlOworCisgICAgaWYgKG1f
Y29tbWFuZCkKKyAgICAgICAgbV9jb21tYW5kLT51bmFwcGx5KCk7CisKKyAgICBtX2luVW5kb1Jl
ZG8gPSBmYWxzZTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRv
Q29tbWFuZFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlVuZG9Db21tYW5kUXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9XZWJVbmRvQ29tbWFuZFF0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBT
ZXJ2aWNlcyBJbmMuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBXZWJVbmRvQ29tbWFuZFF0X2gKKyNkZWZpbmUgV2Vi
VW5kb0NvbW1hbmRRdF9oCisKKyNpbmNsdWRlICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCisjaW5j
bHVkZSA8UVVuZG9Db21tYW5kPgorI2luY2x1ZGUgPHFnbG9iYWwuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK2NsYXNzIFdlYlVuZG9Db21tYW5kUXQKKyNpZm5kZWYgUVRfTk9fVU5ET0NP
TU1BTkQKKyAgICA6IHB1YmxpYyBRVW5kb0NvbW1hbmQKKyNlbmRpZgoreworcHVibGljOgorI2lm
bmRlZiBRVF9OT19VTkRPQ09NTUFORAorICAgIFdlYlVuZG9Db21tYW5kUXQoV1RGOjpQYXNzUmVm
UHRyPFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eT4sIFFVbmRvQ29tbWFuZCogcGFyZW50ID0g
MCk7CisjZWxzZQorICAgIFdlYlVuZG9Db21tYW5kUXQoV1RGOjpQYXNzUmVmUHRyPFdlYktpdDo6
V2ViRWRpdENvbW1hbmRQcm94eT4pOworI2VuZGlmCisgICAgfldlYlVuZG9Db21tYW5kUXQoKTsK
KworICAgIHZvaWQgcmVkbygpOworICAgIHZvaWQgdW5kbygpOworCisgICAgYm9vbCBpblVuZG9S
ZWRvKCkgY29uc3QgeyByZXR1cm4gbV9pblVuZG9SZWRvOyB9OworcHJpdmF0ZToKKyAgICBXVEY6
OlJlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk+IG1fY29tbWFuZDsKKyAgICBib29s
IG1fZmlyc3Q7CisgICAgYm9vbCBtX2luVW5kb1JlZG87Cit9OworCisjZW5kaWYgLy8gV2ViVW5k
b0NvbW1hbmRRdF9oCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODk1OCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA2LTE1ICBDaGFu
ZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBbV0syXSBRdCBXZWJLaXQyIG5lZWRzIHVuZG8vcmVkbyBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MjYzNworCisgICAgICAgIFVuc2tpcCBwYXNzZWQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9xdC13azIvU2tpcHBlZDoKKwogMjAxMS0wNi0xNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292
LgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHJldmlzaW9uIDg4OTU4KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTE5OSw5ICsxOTksNiBAQCBlZGl0aW5nL3NlbGVjdGlvbi90cmlwbGUtY2xpY2staW4tcHJlLmh0
CiBlZGl0aW5nL3NlbGVjdGlvbi91c2VyLWRyYWctZWxlbWVudC1hbmQtdXNlci1zZWxlY3Qtbm9u
ZS5odG1sCiBlZGl0aW5nL3NlbGVjdGlvbi93b3JkLWdyYW51bGFyaXR5Lmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvY29udGV4dC1tZW51LXN1Z2dlc3Rpb25zLmh0bWwKLWVkaXRpbmcvdW5kby91bmRv
LWRlbGV0ZVdvcmQuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tc21hcnQtZGVsZXRlLXJldmVyc2Vk
LXNlbGVjdGlvbi5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1zbWFydC1kZWxldGUtd29yZC5odG1s
CiBmYXN0L2Jsb2NrZmxvdy9ob3Jpem9udGFsLWJ0LXJlcGxhY2VkLXNlbGVjdGlvbi5odG1sCiBm
YXN0L2Jsb2NrZmxvdy9qYXBhbmVzZS1sci1zZWxlY3Rpb24uaHRtbAogZmFzdC9ibG9ja2Zsb3cv
amFwYW5lc2Utcmwtc2VsZWN0aW9uLmh0bWwKQEAgLTEyOTcsNyArMTI5NCw2IEBAIGVkaXRpbmcv
c3BlbGxpbmcvZGVzaWduLW1vZGUtc3BlbGxjaGVjay0KIGVkaXRpbmcvc3R5bGUvcmVtb3ZlLXVu
ZGVybGluZS1mcm9tLXN0eWxlc2hlZXQuaHRtbAogZWRpdGluZy9zdHlsZS90eXBpbmctc3R5bGUt
MDAzLmh0bWwKIGVkaXRpbmcvdGV4dC1pdGVyYXRvci90aGFpLWN1cnNvci1tb3ZlbWVudC5odG1s
Ci1lZGl0aW5nL3VuZG8vcmVwbGFjZS1ieS1zcGFuLXRoZW4tcmVtb3ZlLmh0bWwKIGVkaXRpbmcv
ZGVsZXRpbmcvNTE2ODU5OC5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1saW5lLTAxMS5o
dG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvY3JlYXRlTWFya3VwLWFzc2VydC54bWwKQEAgLTE3Njks
MjggKzE3NjUsNiBAQCBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwKIGZhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcmVzaXplLWFuZC1tb3ZlLWFyZ3VtZW50cy5odG1sCiBmYXN0L2RvbS9X
aW5kb3cvd2luZG93LXJlc2l6ZS5odG1sCiAKLSMgV2ViS2l0MiBuZWVkcyB1bmRvL3JlZG8gc3Vw
cG9ydAotZWRpdGluZy91bmRvL3JlbW92ZS1jc3MtcHJvcGVydHktYW5kLXJlbW92ZS1zdHlsZS5o
dG1sCi1lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1hbmQtdW5kby5odG1sCi1lZGl0aW5nL2V4ZWND
b21tYW5kL2NvbnZlcnQtc3R5bGUtZWxlbWVudHMtdG8tc3BhbnMuaHRtbAotZWRpdGluZy9pbnNl
cnRpbmcvcmVkby5odG1sCi1lZGl0aW5nL3VuZG8vNDA2Mzc1MS5odG1sCi1lZGl0aW5nL3VuZG8v
NTM3ODQ3My5odG1sCi1lZGl0aW5nL3VuZG8vcmVkby1zcGxpdC10ZXh0LW5vZGUuaHRtbAotZWRp
dGluZy91bmRvL3JlZG8tc3BsaXQtdGV4dC13aXRoLXJlbW92YWwuaHRtbAotZWRpdGluZy91bmRv
L3JlZG8tc3R5bGUuaHRtbAotZWRpdGluZy91bmRvL3JlZG8tdHlwaW5nLTAwMS5odG1sCi1lZGl0
aW5nL3VuZG8vdW5kby1jb21iaW5lZC1kZWxldGUtYm91bmRhcnkuaHRtbAotZWRpdGluZy91bmRv
L3VuZG8tY29tYmluZWQtZGVsZXRlLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWRlbGV0ZS1ib3Vu
ZGFyeS5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1kZWxldGUuaHRtbAotZWRpdGluZy91bmRvL3Vu
ZG8tZm9yd2FyZC1kZWxldGUtYm91bmRhcnkuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tZm9yd2Fy
ZC1kZWxldGUuaHRtbAotZWRpdGluZy91bmRvL3VuZG8taWZyYW1lLWxvY2F0aW9uLWNoYW5nZS5o
dG1sCi1lZGl0aW5nL3VuZG8vdW5kby1pbmRlbnQuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tbWlz
c3BlbGxpbmdzLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLXR5cGluZy0wMDEuaHRtbAotCiAjIFdl
YktpdDIgbmVlZHMgdG8gZGVmaW5lIGEgZGVmYXVsdCBjaGFyc2V0IChTZXR0aW5nczo6ZGVmYXVs
dFRleHRFbmNvZGluZ05hbWUpCiBmYXN0L2RvbS9Eb2N1bWVudC9kb2N1bWVudC1jaGFyc2V0Lmh0
bWwKIApAQCAtMjk4OCw2ICsyOTYyLDcgQEAgdGFibGVzL21vemlsbGFfZXhwZWN0ZWRfZmFpbHVy
ZXMvZG9tL2FwcAogdGFibGVzL21vemlsbGFfZXhwZWN0ZWRfZmFpbHVyZXMvZG9tL2FwcGVuZENl
bGxzUmVidWlsZDEuaHRtbAogdGFibGVzL21vemlsbGFfZXhwZWN0ZWRfZmFpbHVyZXMvZG9tL2lu
c2VydFRib2R5RXhwYW5kMS5odG1sCiB0YWJsZXMvbW96aWxsYV9leHBlY3RlZF9mYWlsdXJlcy9k
b20vaW5zZXJ0VGJvZHlSZWJ1aWxkMS5odG1sCitlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1hbmQt
dW5kby5odG1sCiAKICMgW1F0XVtXSzJdaHR0cC90ZXN0cy9sb2FkaW5nL3ByZWxvYWQtYXBwZW5k
LXNjYW4ucGhwIGZhaWxzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODI1MwpAQCAtMzAzOCw5ICszMDEzLDYgQEAgZmFzdC9yZXBsYWNlZC9vYmplY3Qtd2l0aC1u
b24tZW1wdHktY2xhcwogIyBmYWlsIGFmdGVyIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0Lzg3MDY3CiBmYXN0L2Zvcm1zL3RleHRmaWVsZC1vdmVyZmxvdy5odG1sCiAKLSMgbmV3IHRl
c3QgaW5yb2R1Y2VkIGluIHI4NzIwNCwgYnV0IGZhaWwKLWVkaXRpbmcvdW5kby91bmRvLWFmdGVy
LXNldHRpbmctdmFsdWUuaHRtbAotCiAjIHVuc2tpcHBlZCBieSByODgxNTIsIGJ1dCBmYWlsIG9u
IFF0LVdLMiBwbGF0Zm9ybQogZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LWFjcm9zcy1yZWFkb25s
eS1pbnB1dC0xLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1hY3Jvc3MtcmVhZG9ubHkt
aW5wdXQtMi5odG1sCg==
</data>
<flag name="review"
          id="91400"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97457</attachid>
            <date>2011-06-16 10:34:13 -0700</date>
            <delta_ts>2011-06-17 03:29:43 -0700</delta_ts>
            <desc>fix patch 5</desc>
            <filename>62637_5.patch</filename>
            <type>text/plain</type>
            <size>13029</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MDM4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDYtMTUgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgor
CisgICAgICAgIFtRdF0gW1dLMl0gUXQgV2ViS2l0MiBuZWVkcyB1bmRvL3JlZG8gc3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI2MzcKKwor
ICAgICAgICBJbXBsZW1lbnQgdW5kby9yZWRvIHN1cHBvcnQgZm9yIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2UuY3BwOgorICAgICAg
ICAoUVdLUGFnZVByaXZhdGU6OlFXS1BhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXS1BhZ2VQcml2
YXRlOjp+UVdLUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdLUGFnZVByaXZhdGU6OnJlZ2lzdGVy
RWRpdENvbW1hbmQpOgorICAgICAgICAoUVdLUGFnZVByaXZhdGU6OmNsZWFyQWxsRWRpdENvbW1h
bmRzKToKKyAgICAgICAgKFFXS1BhZ2VQcml2YXRlOjpjYW5VbmRvUmVkbyk6CisgICAgICAgIChR
V0tQYWdlUHJpdmF0ZTo6ZXhlY3V0ZVVuZG9SZWRvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3F3a3BhZ2VfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJVbmRvQ29tbWFuZFF0OjpXZWJVbmRvQ29tbWFuZFF0
KToKKyAgICAgICAgKFdlYlVuZG9Db21tYW5kUXQ6On5XZWJVbmRvQ29tbWFuZFF0KToKKyAgICAg
ICAgKFdlYlVuZG9Db21tYW5kUXQ6OnJlZG8pOgorICAgICAgICAoV2ViVW5kb0NvbW1hbmRRdDo6
dW5kbyk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuaDogQWRkZWQu
CisgICAgICAgIChXZWJVbmRvQ29tbWFuZFF0OjppblVuZG9SZWRvKToKKyAgICAgICAgKiBXZWJL
aXQyLnBybzoKKwogMjAxMS0wNi0xNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBy
bwkocmV2aXNpb24gODg5NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmggXAorICAgIFVJUHJv
Y2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0
TWVudVByb3h5UXQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCBc
CiAgICAgV2ViUHJvY2Vzcy9BcHBsaWNhdGlvbkNhY2hlL1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmggXApAQCAtMzkwLDYgKzM5MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcCBcCisgICAg
VUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvRmluZElu
ZGljYXRvci5jcHAgXAogICAgIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RQcm94eS5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2twYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2UuY3BwCShyZXZpc2lvbiA4ODk1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdrcGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDEwIEBACiAj
aW5jbHVkZSAiVGlsZWREcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5o
IgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHlRdC5oIgorI2luY2x1ZGUgIldlYkVkaXRD
b21tYW5kUHJveHkuaCIKICNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnlRdC5oIgogI2luY2x1ZGUg
IldlYlBvcHVwTWVudVByb3h5UXQuaCIKKyNpbmNsdWRlICJXZWJVbmRvQ29tbWFuZFF0LmgiCiAj
aW5jbHVkZSAiV0tTdHJpbmdRdC5oIgogI2luY2x1ZGUgIldLVVJMUXQuaCIKICNpbmNsdWRlICJW
aWV3cG9ydEFyZ3VtZW50cy5oIgpAQCAtNTEsNiArNTMsNyBAQAogI2luY2x1ZGUgPFFHcmFwaGlj
c1NjZW5lTW91c2VFdmVudD4KICNpbmNsdWRlIDxRU3R5bGU+CiAjaW5jbHVkZSA8UVRvdWNoRXZl
bnQ+CisjaW5jbHVkZSA8UVVuZG9TdGFjaz4KICNpbmNsdWRlIDxRdERlYnVnPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KQEAgLTk2
LDYgKzk5LDkgQEAgUVdLUGFnZVByaXZhdGU6OlFXS1BhZ2VQcml2YXRlKFFXS1BhZ2UqIAogICAg
ICwgY3JlYXRlTmV3UGFnZUZuKDApCiAgICAgLCBiYWNraW5nU3RvcmVUeXBlKFFHcmFwaGljc1dL
Vmlldzo6U2ltcGxlKQogICAgICwgaXNDb25uZWN0ZWRUb0VuZ2luZSh0cnVlKQorI2lmbmRlZiBR
VF9OT19VTkRPU1RBQ0sKKyAgICAsIHVuZG9TdGFjayhhZG9wdFB0cihuZXcgUVVuZG9TdGFjayhx
cSkpKQorI2VuZGlmCiB7CiAgICAgbWVtc2V0KGFjdGlvbnMsIDAsIHNpemVvZihhY3Rpb25zKSk7
CiAgICAgcGFnZSA9IGNvbnRleHQtPmQtPmNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgdG9J
bXBsKHBhZ2VHcm91cFJlZikpOwpAQCAtMjA2LDIxICsyMTIsNDQgQEAgdm9pZCBRV0tQYWdlUHJp
dmF0ZTo6dG9vbFRpcENoYW5nZWQoY29ucwogICAgIGVtaXQgcS0+dG9vbFRpcENoYW5nZWQoUVN0
cmluZyhuZXdUb29sdGlwKSk7CiB9CiAKLXZvaWQgUVdLUGFnZVByaXZhdGU6OnJlZ2lzdGVyRWRp
dENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpV
bmRvT3JSZWRvKQordm9pZCBRV0tQYWdlUHJpdmF0ZTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNz
UmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09y
UmVkbyB1bmRvT3JSZWRvKQogeworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICBpZiAodW5k
b09yUmVkbyA9PSBXZWJQYWdlUHJveHk6OlVuZG8pIHsKKyAgICAgICAgY29uc3QgV2ViVW5kb0Nv
bW1hbmRRdCogd2ViVW5kb0NvbW1hbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBXZWJVbmRvQ29tbWFu
ZFF0Kj4odW5kb1N0YWNrLT5jb21tYW5kKHVuZG9TdGFjay0+aW5kZXgoKSkpOworICAgICAgICBp
ZiAod2ViVW5kb0NvbW1hbmQgJiYgd2ViVW5kb0NvbW1hbmQtPmluVW5kb1JlZG8oKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgdW5kb1N0YWNrLT5wdXNoKG5ldyBXZWJVbmRvQ29tbWFu
ZFF0KGNvbW1hbmQpKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBRV0tQYWdlUHJpdmF0ZTo6
Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKQogeworI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKKyAgICB1
bmRvU3RhY2stPmNsZWFyKCk7CisjZW5kaWYKIH0KIAotYm9vbCBRV0tQYWdlUHJpdmF0ZTo6Y2Fu
VW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKQorYm9vbCBRV0tQYWdlUHJpdmF0ZTo6
Y2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7CisjaWZk
ZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIGZhbHNlOworI2Vsc2UKKyAgICBpZiAodW5k
b09yUmVkbyA9PSBXZWJQYWdlUHJveHk6OlVuZG8pCisgICAgICAgIHJldHVybiB1bmRvU3RhY2st
PmNhblVuZG8oKTsKKyAgICByZXR1cm4gdW5kb1N0YWNrLT5jYW5SZWRvKCk7CisjZW5kaWYKIH0K
IAotdm9pZCBRV0tQYWdlUHJpdmF0ZTo6ZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5k
b09yUmVkbykKK3ZvaWQgUVdLUGFnZVByaXZhdGU6OmV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJv
eHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKIHsKKyNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCisg
ICAgaWYgKHVuZG9PclJlZG8gPT0gV2ViUGFnZVByb3h5OjpVbmRvKQorICAgICAgICB1bmRvU3Rh
Y2stPnVuZG8oKTsKKyAgICBlbHNlCisgICAgICAgIHVuZG9TdGFjay0+cmVkbygpOworI2VuZGlm
CiB9CiAKIEZsb2F0UmVjdCBRV0tQYWdlUHJpdmF0ZTo6Y29udmVydFRvRGV2aWNlU3BhY2UoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xd2twYWdlX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3a3BhZ2VfcC5oCShyZXZpc2lvbiA4ODk1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlIDxRS2V5RXZlbnQ+CiAKIGNsYXNzIFFHcmFwaGljc1dLVmlldzsKK2NsYXNzIFFV
bmRvU3RhY2s7CiBjbGFzcyBRV0tQcmVmZXJlbmNlczsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKQEAgLTEzOCw2ICsxMzksMTAgQEAgcHVibGljOgogICAgIFFHcmFwaGljc1dLVmlldzo6QmFj
a2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlOwogCiAgICAgYm9vbCBpc0Nvbm5lY3RlZFRv
RW5naW5lOworCisjaWZuZGVmIFFUX05PX1VORE9TVEFDSworICAgIE93blB0cjxRVW5kb1N0YWNr
PiB1bmRvU3RhY2s7CisjZW5kaWYKIH07CiAKIGNsYXNzIFF0Vmlld3BvcnRBdHRyaWJ1dGVzUHJp
dmF0ZSA6IHB1YmxpYyBRU2hhcmVkRGF0YSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5kUXQuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDcxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcg
U3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJVbmRvQ29tbWFuZFF0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKKyNpZm5kZWYgUVRfTk9fVU5ET0NPTU1BTkQKK1dlYlVuZG9Db21tYW5kUXQ6OldlYlVuZG9D
b21tYW5kUXQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kLCBRVW5kb0Nv
bW1hbmQqIHBhcmVudCkKKyAgICA6IFFVbmRvQ29tbWFuZChwYXJlbnQpCisgICAgLCBtX2NvbW1h
bmQoY29tbWFuZCkKKyAgICAsIG1fZmlyc3QodHJ1ZSkKKyAgICAsIG1faW5VbmRvUmVkbyhmYWxz
ZSkKK3sKK30KKyNlbHNlCitXZWJVbmRvQ29tbWFuZFF0OjpXZWJVbmRvQ29tbWFuZFF0KFBhc3NS
ZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCkKKyAgICA6IG1fY29tbWFuZChjb21t
YW5kKQorICAgICwgbV9maXJzdCh0cnVlKQorICAgICwgbV9pblVuZG9SZWRvKGZhbHNlKQorewor
fQorI2VuZGlmCisKK1dlYlVuZG9Db21tYW5kUXQ6On5XZWJVbmRvQ29tbWFuZFF0KCkKK3sKK30K
Kwordm9pZCBXZWJVbmRvQ29tbWFuZFF0OjpyZWRvKCkKK3sKKyAgICBtX2luVW5kb1JlZG8gPSB0
cnVlOworCisgICAgLy8gSWdub3JlIHRoZSBmaXJzdCByZWRvIGNhbGxlZCBmcm9tIFFVbmRvU3Rh
Y2s6OnB1c2goKS4KKyAgICBpZiAobV9maXJzdCkgeworICAgICAgICBtX2ZpcnN0ID0gZmFsc2U7
CisgICAgICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChtX2NvbW1hbmQpCisgICAgICAgIG1fY29tbWFuZC0+cmVhcHBseSgpOworCisgICAg
bV9pblVuZG9SZWRvID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViVW5kb0NvbW1hbmRRdDo6dW5kbygp
Cit7CisgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKKworICAgIGlmIChtX2NvbW1hbmQpCisgICAg
ICAgIG1fY29tbWFuZC0+dW5hcHBseSgpOworCisgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7Cit9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViVW5kb0Nv
bW1hbmRRdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpZm5kZWYgV2ViVW5kb0NvbW1hbmRRdF9oCisjZGVmaW5lIFdlYlVuZG9Db21tYW5kUXRf
aAorCisjaW5jbHVkZSAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgorI2luY2x1ZGUgPFFVbmRvQ29t
bWFuZD4KKyNpbmNsdWRlIDxxZ2xvYmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitj
bGFzcyBXZWJVbmRvQ29tbWFuZFF0CisjaWZuZGVmIFFUX05PX1VORE9DT01NQU5ECisgICAgOiBw
dWJsaWMgUVVuZG9Db21tYW5kCisjZW5kaWYKK3sKK3B1YmxpYzoKKyNpZm5kZWYgUVRfTk9fVU5E
T0NPTU1BTkQKKyAgICBXZWJVbmRvQ29tbWFuZFF0KFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJFZGl0
Q29tbWFuZFByb3h5PiwgUVVuZG9Db21tYW5kKiBwYXJlbnQgPSAwKTsKKyNlbHNlCisgICAgV2Vi
VW5kb0NvbW1hbmRRdChQYXNzUmVmUHRyPFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eT4pOwor
I2VuZGlmCisgICAgfldlYlVuZG9Db21tYW5kUXQoKTsKKworICAgIHZvaWQgcmVkbygpOworICAg
IHZvaWQgdW5kbygpOworCisgICAgYm9vbCBpblVuZG9SZWRvKCkgY29uc3QgeyByZXR1cm4gbV9p
blVuZG9SZWRvOyB9OworCitwcml2YXRlOgorICAgIFJlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21t
YW5kUHJveHk+IG1fY29tbWFuZDsKKyAgICBib29sIG1fZmlyc3Q7CisgICAgYm9vbCBtX2luVW5k
b1JlZG87Cit9OworCisjZW5kaWYgLy8gV2ViVW5kb0NvbW1hbmRRdF9oCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4OTAzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDExLTA2LTE1ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBbUXRdIFtXSzJdIFF0
IFdlYktpdDIgbmVlZHMgdW5kby9yZWRvIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyNjM3CisKKyAgICAgICAgVW5za2lwIHBhc3NlZCB0
ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkOgorCiAyMDExLTA2LTE2
ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIv
U2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBl
ZAkocmV2aXNpb24gODg5NTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBl
ZAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDkgKzE5OSw2IEBAIGVkaXRpbmcvc2VsZWN0aW9uL3Ry
aXBsZS1jbGljay1pbi1wcmUuaHQKIGVkaXRpbmcvc2VsZWN0aW9uL3VzZXItZHJhZy1lbGVtZW50
LWFuZC11c2VyLXNlbGVjdC1ub25lLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3dvcmQtZ3JhbnVs
YXJpdHkuaHRtbAogZWRpdGluZy9zcGVsbGluZy9jb250ZXh0LW1lbnUtc3VnZ2VzdGlvbnMuaHRt
bAotZWRpdGluZy91bmRvL3VuZG8tZGVsZXRlV29yZC5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1z
bWFydC1kZWxldGUtcmV2ZXJzZWQtc2VsZWN0aW9uLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLXNt
YXJ0LWRlbGV0ZS13b3JkLmh0bWwKIGZhc3QvYmxvY2tmbG93L2hvcml6b250YWwtYnQtcmVwbGFj
ZWQtc2VsZWN0aW9uLmh0bWwKIGZhc3QvYmxvY2tmbG93L2phcGFuZXNlLWxyLXNlbGVjdGlvbi5o
dG1sCiBmYXN0L2Jsb2NrZmxvdy9qYXBhbmVzZS1ybC1zZWxlY3Rpb24uaHRtbApAQCAtMTI5Nyw3
ICsxMjk0LDYgQEAgZWRpdGluZy9zcGVsbGluZy9kZXNpZ24tbW9kZS1zcGVsbGNoZWNrLQogZWRp
dGluZy9zdHlsZS9yZW1vdmUtdW5kZXJsaW5lLWZyb20tc3R5bGVzaGVldC5odG1sCiBlZGl0aW5n
L3N0eWxlL3R5cGluZy1zdHlsZS0wMDMuaHRtbAogZWRpdGluZy90ZXh0LWl0ZXJhdG9yL3RoYWkt
Y3Vyc29yLW1vdmVtZW50Lmh0bWwKLWVkaXRpbmcvdW5kby9yZXBsYWNlLWJ5LXNwYW4tdGhlbi1y
ZW1vdmUuaHRtbAogZWRpdGluZy9kZWxldGluZy81MTY4NTk4Lmh0bWwKIGVkaXRpbmcvZGVsZXRp
bmcvZGVsZXRlLWxpbmUtMDExLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9jcmVhdGVNYXJrdXAt
YXNzZXJ0LnhtbApAQCAtMTc2OSwyOCArMTc2NSw2IEBAIHByaW50aW5nL3BhZ2UtcnVsZS1zZWxl
Y3Rpb24uaHRtbAogZmFzdC9kb20vV2luZG93L3dpbmRvdy1yZXNpemUtYW5kLW1vdmUtYXJndW1l
bnRzLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcmVzaXplLmh0bWwKIAotIyBXZWJLaXQy
IG5lZWRzIHVuZG8vcmVkbyBzdXBwb3J0Ci1lZGl0aW5nL3VuZG8vcmVtb3ZlLWNzcy1wcm9wZXJ0
eS1hbmQtcmVtb3ZlLXN0eWxlLmh0bWwKLWVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLWFuZC11bmRv
Lmh0bWwKLWVkaXRpbmcvZXhlY0NvbW1hbmQvY29udmVydC1zdHlsZS1lbGVtZW50cy10by1zcGFu
cy5odG1sCi1lZGl0aW5nL2luc2VydGluZy9yZWRvLmh0bWwKLWVkaXRpbmcvdW5kby80MDYzNzUx
Lmh0bWwKLWVkaXRpbmcvdW5kby81Mzc4NDczLmh0bWwKLWVkaXRpbmcvdW5kby9yZWRvLXNwbGl0
LXRleHQtbm9kZS5odG1sCi1lZGl0aW5nL3VuZG8vcmVkby1zcGxpdC10ZXh0LXdpdGgtcmVtb3Zh
bC5odG1sCi1lZGl0aW5nL3VuZG8vcmVkby1zdHlsZS5odG1sCi1lZGl0aW5nL3VuZG8vcmVkby10
eXBpbmctMDAxLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWNvbWJpbmVkLWRlbGV0ZS1ib3VuZGFy
eS5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1jb21iaW5lZC1kZWxldGUuaHRtbAotZWRpdGluZy91
bmRvL3VuZG8tZGVsZXRlLWJvdW5kYXJ5Lmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWRlbGV0ZS5o
dG1sCi1lZGl0aW5nL3VuZG8vdW5kby1mb3J3YXJkLWRlbGV0ZS1ib3VuZGFyeS5odG1sCi1lZGl0
aW5nL3VuZG8vdW5kby1mb3J3YXJkLWRlbGV0ZS5odG1sCi1lZGl0aW5nL3VuZG8vdW5kby1pZnJh
bWUtbG9jYXRpb24tY2hhbmdlLmh0bWwKLWVkaXRpbmcvdW5kby91bmRvLWluZGVudC5odG1sCi1l
ZGl0aW5nL3VuZG8vdW5kby1taXNzcGVsbGluZ3MuaHRtbAotZWRpdGluZy91bmRvL3VuZG8tdHlw
aW5nLTAwMS5odG1sCi0KICMgV2ViS2l0MiBuZWVkcyB0byBkZWZpbmUgYSBkZWZhdWx0IGNoYXJz
ZXQgKFNldHRpbmdzOjpkZWZhdWx0VGV4dEVuY29kaW5nTmFtZSkKIGZhc3QvZG9tL0RvY3VtZW50
L2RvY3VtZW50LWNoYXJzZXQuaHRtbAogCkBAIC0yOTg4LDYgKzI5NjIsNyBAQCB0YWJsZXMvbW96
aWxsYV9leHBlY3RlZF9mYWlsdXJlcy9kb20vYXBwCiB0YWJsZXMvbW96aWxsYV9leHBlY3RlZF9m
YWlsdXJlcy9kb20vYXBwZW5kQ2VsbHNSZWJ1aWxkMS5odG1sCiB0YWJsZXMvbW96aWxsYV9leHBl
Y3RlZF9mYWlsdXJlcy9kb20vaW5zZXJ0VGJvZHlFeHBhbmQxLmh0bWwKIHRhYmxlcy9tb3ppbGxh
X2V4cGVjdGVkX2ZhaWx1cmVzL2RvbS9pbnNlcnRUYm9keVJlYnVpbGQxLmh0bWwKK2VkaXRpbmcv
ZGVsZXRpbmcvZGVsZXRlLWFuZC11bmRvLmh0bWwKIAogIyBbUXRdW1dLMl1odHRwL3Rlc3RzL2xv
YWRpbmcvcHJlbG9hZC1hcHBlbmQtc2Nhbi5waHAgZmFpbHMKICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU4MjUzCkBAIC0zMDM4LDkgKzMwMTMsNiBAQCBmYXN0L3Jl
cGxhY2VkL29iamVjdC13aXRoLW5vbi1lbXB0eS1jbGFzCiAjIGZhaWwgYWZ0ZXIgaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvODcwNjcKIGZhc3QvZm9ybXMvdGV4dGZpZWxkLW92ZXJm
bG93Lmh0bWwKIAotIyBuZXcgdGVzdCBpbnJvZHVjZWQgaW4gcjg3MjA0LCBidXQgZmFpbAotZWRp
dGluZy91bmRvL3VuZG8tYWZ0ZXItc2V0dGluZy12YWx1ZS5odG1sCi0KICMgdW5za2lwcGVkIGJ5
IHI4ODE1MiwgYnV0IGZhaWwgb24gUXQtV0syIHBsYXRmb3JtCiBlZGl0aW5nL3NlbGVjdGlvbi9z
ZWxlY3QtYWNyb3NzLXJlYWRvbmx5LWlucHV0LTEuaHRtbAogZWRpdGluZy9zZWxlY3Rpb24vc2Vs
ZWN0LWFjcm9zcy1yZWFkb25seS1pbnB1dC0yLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>