<?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>49813</bug_id>
          
          <creation_ts>2010-11-19 10:55:32 -0800</creation_ts>
          <short_desc>SelectionController::typingStyle() should return EditingStyle*</short_desc>
          <delta_ts>2010-11-22 16:25:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27818</blocked>
    
    <blocked>49938</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311566</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-19 10:55:32 -0800</bug_when>
    <thetext>SelectionController::typingStyle() should return EditingStyle* in lieu of CSSMutableStyleDeclaration*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311580</commentid>
    <comment_count>1</comment_count>
      <attachid>74407</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-19 11:16:28 -0800</bug_when>
    <thetext>Created attachment 74407
refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311602</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-19 12:03:05 -0800</bug_when>
    <thetext>Attachment 74407 did not build on mac:
Build output: http://queues.webkit.org/results/6230070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311604</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-19 12:05:41 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 74407 [details] did not build on mac:
&gt; Build output: http://queues.webkit.org/results/6230070

/Projects/MacEWS/WebKit/mac/WebView/WebFrame.mm: In function &apos;DOMCSSStyleDeclaration* -[WebFrame(WebInternal) _typingStyle](WebFrame*, objc_selector*)&apos;:
/Projects/MacEWS/WebKit/mac/WebView/WebFrame.mm:906: error: &apos;class WebCore::EditingStyle&apos; has no member named &apos;copy&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311610</commentid>
    <comment_count>4</comment_count>
      <attachid>74407</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-19 12:10:39 -0800</bug_when>
    <thetext>Comment on attachment 74407
refactoring

(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Attachment 74407 [details] [details] did not build on mac:
&gt; &gt; Build output: http://queues.webkit.org/results/6230070
&gt; 
&gt; /Projects/MacEWS/WebKit/mac/WebView/WebFrame.mm: In function &apos;DOMCSSStyleDeclaration* -[WebFrame(WebInternal) _typingStyle](WebFrame*, objc_selector*)&apos;:
&gt; /Projects/MacEWS/WebKit/mac/WebView/WebFrame.mm:906: error: &apos;class WebCore::EditingStyle&apos; has no member named &apos;copy&apos;

I&apos;m on it.  I&apos;ll fix and upload again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311640</commentid>
    <comment_count>5</comment_count>
      <attachid>74416</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-19 12:57:09 -0800</bug_when>
    <thetext>Created attachment 74416
fixed mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312533</commentid>
    <comment_count>6</comment_count>
      <attachid>74416</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-11-22 14:49:01 -0800</bug_when>
    <thetext>Comment on attachment 74416
fixed mac build

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

&gt; WebCore/editing/EditingStyle.cpp:206
&gt; -    if (!node || !node-&gt;parentNode())
&gt; +    if (!node || !node-&gt;parentNode() || !m_mutableStyle)

Is this check needed by the refactor or was it needed in the old code too?

&gt; WebCore/editing/EditingStyle.cpp:235
&gt; +    if (shouldPreserveWritingDirection) {

Should there be an == PreserveWritingDirection here?  This looks backwards or perhaps undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312551</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-22 15:17:58 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 74416 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74416&amp;action=review
&gt; 
&gt; &gt; WebCore/editing/EditingStyle.cpp:206
&gt; &gt; -    if (!node || !node-&gt;parentNode())
&gt; &gt; +    if (!node || !node-&gt;parentNode() || !m_mutableStyle)
&gt; 
&gt; Is this check needed by the refactor or was it needed in the old code too?

This should have been there in the old code as well.

&gt; &gt; WebCore/editing/EditingStyle.cpp:235
&gt; &gt; +    if (shouldPreserveWritingDirection) {
&gt; 
&gt; Should there be an == PreserveWritingDirection here?  This looks backwards or perhaps undefined.

Ah, good point.  I initially used a boolean variable and forgot to change it.  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312560</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-11-22 15:28:29 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 74416 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74416&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; WebCore/editing/EditingStyle.cpp:206
&gt; &gt; &gt; -    if (!node || !node-&gt;parentNode())
&gt; &gt; &gt; +    if (!node || !node-&gt;parentNode() || !m_mutableStyle)
&gt; &gt; 
&gt; &gt; Is this check needed by the refactor or was it needed in the old code too?
&gt; 
&gt; This should have been there in the old code as well.

If it&apos;s possible to write a layout test that crashes this case without the null check, it would be nice to add.  If it&apos;s not possible, then don&apos;t worry about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312566</commentid>
    <comment_count>9</comment_count>
      <attachid>74607</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-22 15:45:54 -0800</bug_when>
    <thetext>Created attachment 74607
fixed per Tony&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312570</commentid>
    <comment_count>10</comment_count>
      <attachid>74416</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-22 15:53:49 -0800</bug_when>
    <thetext>Comment on attachment 74416
fixed mac build

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

&gt;&gt;&gt;&gt; WebCore/editing/EditingStyle.cpp:206
&gt;&gt;&gt;&gt; +    if (!node || !node-&gt;parentNode() || !m_mutableStyle)
&gt;&gt;&gt; 
&gt;&gt;&gt; Is this check needed by the refactor or was it needed in the old code too?
&gt;&gt; 
&gt;&gt; This should have been there in the old code as well.
&gt; 
&gt; If it&apos;s possible to write a layout test that crashes this case without the null check, it would be nice to add.  If it&apos;s not possible, then don&apos;t worry about it.

I don&apos;t think it&apos;s possible.  This function is only called in ReplaceSelectionCommand.cpp:626

    RefPtr&lt;EditingStyle&gt; sourceDocumentStyle = EditingStyle::create(static_cast&lt;HTMLElement*&gt;(sourceDocumentStyleSpan)-&gt;getInlineStyleDecl());
    ContainerNode* context = sourceDocumentStyleSpan-&gt;parentNode();

    // If Mail wraps the fragment with a Paste as Quotation blockquote, or if you&apos;re pasting into a quoted region,
    // styles from blockquoteNode are allowed to override those from the source document, see &lt;rdar://problem/4930986&gt; and &lt;rdar://problem/5089327&gt;.
    Node* blockquoteNode = isMailPasteAsQuotationNode(context) ? context : nearestMailBlockquote(context);
    if (blockquoteNode) {
        sourceDocumentStyle-&gt;removeStyleConflictingWithStyleOfNode(blockquoteNode);
        context = blockquoteNode-&gt;parentNode();
    }

But getInlineStyleDecl always returns a valid CSSMutableStyleDeclaration, creating an empty one if necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312580</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-22 16:07:07 -0800</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312591</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-22 16:25:25 -0800</bug_when>
    <thetext>Committed r72573: &lt;http://trac.webkit.org/changeset/72573&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74407</attachid>
            <date>2010-11-19 11:16:28 -0800</date>
            <delta_ts>2010-11-19 12:57:06 -0800</delta_ts>
            <desc>refactoring</desc>
            <filename>bug-49813-20101119111627.patch</filename>
            <type>text/plain</type>
            <size>16685</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjQxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMTEtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5nU3R5bGUoKSBzaG91bGQgcmV0dXJuIEVkaXRpbmdTdHls
ZSoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5ODEz
CisKKyAgICAgICAgQ2hhbmdlZCB0aGUgcmV0dXJuIHR5cGUgb2YgU2VsZWN0aW9uQ29udHJvbGxl
cjo6dHlwaW5nU3R5bGUgdG8gRWRpdGluZ1N0eWxlKi4KKworICAgICAgICBFeHRyYWN0ZWQgdGV4
dERpcmVjdGlvbiBmcm9tIEVkaXRvcjo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbiB0byBoaWRl
IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLgorCisg
ICAgICAgIEFsc28gZXh0cmFjdGVkIHRoZSBjb2RlIHRvIHByZXNlcnZlIHVuaWNvZGUtYmlkaSBh
bmQgZGlyZWN0aW9uIENTUyBwcm9wZXJ0aWVzIGluIEluc2VydFRleHRDb21tYW5kOjppbnB1dCwK
KyAgICAgICAgYW5kIG1vdmVkIGludG8gRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0LiBT
aG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24sIHdoaWNoIGlzIGFkZGVkIHRvIHRoZSBhcmd1
bWVudCBsaXN0IG9mCisgICAgICAgIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdCwgZGVj
aWRlcyB3aGV0aGVyIG9yIG5vdCB0aGVzZSB0d28gcHJvcGVydGllcyBhcmUgcHJlc2VydmVkLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBhcmUgYWRkZWQgc2luY2UgdGhpcyBpcyBhIHJlZmFjdG9y
aW5nLgorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKTogRXh0cmFjdGVkIGZyb20gRWRpdG9y
Ojp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKTogQWRkZWQgYSBtaXNz
aW5nIG51bGwgY2hlY2suCisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVU
b0FwcGx5QXQpOiBTZWUgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjplZGl0aW5nU3R5bGVJbmNs
dWRpbmdUeXBpbmdTdHlsZSk6IENhbGxzIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnR5cGluZ1N0eWxl
LgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmg6IE1vdmVkIFdyaXRpbmdEaXJlY3Rp
b24gZnJvbSBFZGl0b3IuaAorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbik6IENhbGxzIEVkaXRp
bmdTdHlsZTo6dGV4dERpcmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29tcHV0
ZUFuZFNldFR5cGluZ1N0eWxlKTogQ2FsbHMgU2VsZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5nU3R5
bGUuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkNvbXB1dGVkU3R5bGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c3R5bGVGb3JTZWxlY3Rpb25TdGFydCk6
IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9J
bnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpbmVC
cmVha0NvbW1hbmQ6OmRvQXBwbHkpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRl
eHRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjppbnB1
dCk6IENhbGxzIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdCB3aXRoIFByZXNlcnZlV3Jp
dGluZ0RpcmVjdGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnR5cGluZ1N0eWxlKTogUmV0
dXJucyBFZGl0aW5nU3R5bGUqIHJhdGhlciB0aGFuIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
Ki4KKwogMjAxMC0xMS0xOCAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxrZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcAkocmV2aXNpb24gNzIzMTEpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFwcGx5U3R5
bGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAj
aW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1NWYWx1
ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKQEAgLTE0MSw2ICsxNDIsMzMgQEAg
Ym9vbCBFZGl0aW5nU3R5bGU6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9tdXRhYmxl
U3R5bGUgfHwgbV9tdXRhYmxlU3R5bGUtPmlzRW1wdHkoKTsKIH0KIAorYm9vbCBFZGl0aW5nU3R5
bGU6OnRleHREaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiYgd3JpdGluZ0RpcmVjdGlvbikgY29u
c3QKK3sKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpID0gbV9tdXRhYmxlU3R5bGUt
PmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CisgICAgaWYgKCF1
bmljb2RlQmlkaSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQVNTRVJUKHVuaWNvZGVC
aWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOworICAgIGludCB1bmljb2RlQmlkaVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih1bmljb2RlQmlkaS5nZXQoKSktPmdldElkZW50
KCk7CisgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVFbWJlZCkgeworICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IGRpcmVjdGlvbiA9IG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFkaXJlY3Rp
b24gfHwgZGlyZWN0aW9uLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOworICAgICAgICBpZiAoIWRpcmVj
dGlvbikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB3cml0aW5nRGlyZWN0
aW9uID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rpb24uZ2V0KCkpLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlTHRyID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uIDog
UmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOworCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlTm9ybWFsKSB7CisgICAg
ICAgIHdyaXRpbmdEaXJlY3Rpb24gPSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbjsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEVkaXRp
bmdTdHlsZTo6c2V0U3R5bGUoUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4g
c3R5bGUpCiB7CiAgICAgbV9tdXRhYmxlU3R5bGUgPSBzdHlsZTsKQEAgLTE3NSw3ICsyMDMsNyBA
QCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kCiAKIHZvaWQgRWRpdGlu
Z1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKE5vZGUqIG5vZGUp
CiB7Ci0gICAgaWYgKCFub2RlIHx8ICFub2RlLT5wYXJlbnROb2RlKCkpCisgICAgaWYgKCFub2Rl
IHx8ICFub2RlLT5wYXJlbnROb2RlKCkgfHwgIW1fbXV0YWJsZVN0eWxlKQogICAgICAgICByZXR1
cm47CiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBwYXJlbnRTdHlsZSA9
IGVkaXRpbmdTdHlsZUZyb21Db21wdXRlZFN0eWxlKGNvbXB1dGVkU3R5bGUobm9kZS0+cGFyZW50
Tm9kZSgpKSk7CiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBub2RlU3R5
bGUgPSBlZGl0aW5nU3R5bGVGcm9tQ29tcHV0ZWRTdHlsZShjb21wdXRlZFN0eWxlKG5vZGUpKTsK
QEAgLTE5MiwxMiArMjIwLDIzIEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVOb25FZGl0aW5n
UHJvcGUKICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBjb3B5RWRpdGluZ1Byb3BlcnRpZXMobV9t
dXRhYmxlU3R5bGUuZ2V0KCkpOwogfQogCi12b2lkIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBw
bHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCit2b2lkIEVkaXRpbmdTdHlsZTo6cHJlcGFy
ZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNlcnZlV3JpdGlu
Z0RpcmVjdGlvbiBzaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24pCiB7CisgICAgaWYgKCFt
X211dGFibGVTdHlsZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoKSByZXF1aXJlcyB0aGF0IHRoaXMgZnVuY3Rpb24g
b25seSByZW1vdmVzIHRoZSBlZGl0aW5nIHN0eWxlLgogICAgIC8vIElmIHRoaXMgZnVuY3Rpb24g
d2FzIG1vZGlmaWVkIGluIHRoZSBmdXR1cmUgdG8gZGVsZXRlIGFsbCByZWR1bmRhbnQgcHJvcGVy
dGllcywgdGhlbiBhZGQgYSBib29sZWFuIHZhbHVlIHRvIGluZGljYXRlCiAgICAgLy8gd2hpY2gg
b25lIG9mIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gb3IgY29tcHV0ZWRTdHlsZSBpcyBjYWxsZWQu
CiAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShw
b3NpdGlvbik7CisKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpOworICAgIFJlZlB0
cjxDU1NWYWx1ZT4gZGlyZWN0aW9uOworICAgIGlmIChzaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJl
Y3Rpb24pIHsKKyAgICAgICAgdW5pY29kZUJpZGkgPSBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKTsKKyAgICAgICAgZGlyZWN0aW9uID0g
bV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlEaXJlY3Rpb24p
OworICAgIH0KKwogICAgIHN0eWxlLT5tX211dGFibGVTdHlsZS0+ZGlmZihtX211dGFibGVTdHls
ZS5nZXQoKSk7CiAKICAgICAvLyBpZiBhbHBoYSB2YWx1ZSBpcyB6ZXJvLCB3ZSBkb24ndCBhZGQg
dGhlIGJhY2tncm91bmQgY29sb3IuCkBAIC0yMDcsMTQgKzI0NiwyMyBAQCB2b2lkIEVkaXRpbmdT
dHlsZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAg
ICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciwgZWMpOwogICAgIH0KKworICAgIGlmICh1bmljb2RlQmlkaSkgeworICAgICAgICBB
U1NFUlQodW5pY29kZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSk7CisgICAgICAgIG1fbXV0YWJs
ZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0SWRlbnQoKSk7CisgICAg
ICAgIGlmIChkaXJlY3Rpb24pIHsKKyAgICAgICAgICAgIEFTU0VSVChkaXJlY3Rpb24tPmlzUHJp
bWl0aXZlVmFsdWUoKSk7CisgICAgICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGly
ZWN0aW9uLmdldCgpKS0+Z2V0SWRlbnQoKSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIFBhc3NS
ZWZQdHI8RWRpdGluZ1N0eWxlPiBlZGl0aW5nU3R5bGVJbmNsdWRpbmdUeXBpbmdTdHlsZShjb25z
dCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZWRpdGlu
Z1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24pOwotICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gdHlwaW5nU3R5bGUgPSBwb3NpdGlvbi5ub2RlKCktPmRv
Y3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpOwotICAgIGlmICh0
eXBpbmdTdHlsZSkKLSAgICAgICAgZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tZXJnZShjb3B5RWRp
dGluZ1Byb3BlcnRpZXModHlwaW5nU3R5bGUuZ2V0KCkpLmdldCgpKTsKKyAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IHBvc2l0aW9uLm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxlKCk7CisgICAgaWYgKHR5cGluZ1N0eWxlICYm
IHR5cGluZ1N0eWxlLT5zdHlsZSgpKQorICAgICAgICBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm1l
cmdlKGNvcHlFZGl0aW5nUHJvcGVydGllcyh0eXBpbmdTdHlsZS0+c3R5bGUoKSkuZ2V0KCkpOwog
ICAgIHJldHVybiBlZGl0aW5nU3R5bGU7CiB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5oCShyZXZpc2lvbiA3MjMxMSkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjsKIAorZW51bSBXcml0aW5nRGlyZWN0aW9uIHsgTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24sIExl
ZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiwgUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uIH07
CisKIGNsYXNzIEVkaXRpbmdTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPEVkaXRpbmdTdHlsZT4g
ewogcHVibGljOgorICAgIAorICAgIGVudW0gU2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9u
IHsgUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uLCBEb05vdFByZXNlcnZlV3JpdGluZ0RpcmVjdGlv
biB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPiBjcmVhdGUoKQogICAg
IHsKQEAgLTY0LDYgKzY4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsgcmV0dXJuIG1fbXV0YWJsZVN0eWxlLmdldCgpOyB9Cisg
ICAgYm9vbCB0ZXh0RGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24mKSBjb25zdDsKICAgICBib29s
IGlzRW1wdHkoKSBjb25zdDsKICAgICB2b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+KTsKICAgICB2b2lkIGNsZWFyKCk7CkBAIC03MSw3ICs3Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVN0eWxlQWRkZWRCeU5vZGUoTm9kZSogbm9kZSk7CiAg
ICAgdm9pZCByZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKE5vZGUqIG5vZGUp
OwogICAgIHZvaWQgcmVtb3ZlTm9uRWRpdGluZ1Byb3BlcnRpZXMoKTsKLSAgICB2b2lkIHByZXBh
cmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mKTsKKyAgICB2b2lkIHByZXBhcmVUb0FwcGx5QXQo
Y29uc3QgUG9zaXRpb24mLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gPSBEb05vdFBy
ZXNlcnZlV3JpdGluZ0RpcmVjdGlvbik7CiAKIHByaXZhdGU6CiAgICAgRWRpdGluZ1N0eWxlKCk7
CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNzIzMTEpCisrKyBXZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA4LDI0ICs2MDgsMTEgQEAgV3JpdGluZ0Rp
cmVjdGlvbiBFZGl0b3I6OnRleHREaXJlY3Rpb25GbwogICAgIH0KIAogICAgIGlmIChtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+aXNDYXJldCgpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gdHlwaW5nU3R5bGUgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5n
U3R5bGUoKTsKLSAgICAgICAgaWYgKHR5cGluZ1N0eWxlKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHVuaWNvZGVCaWRpID0gdHlwaW5nU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlVbmljb2RlQmlkaSk7Ci0gICAgICAgICAgICBpZiAodW5pY29kZUJpZGkpIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQodW5pY29kZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSk7
Ci0gICAgICAgICAgICAgICAgaW50IHVuaWNvZGVCaWRpVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0SWRlbnQoKTsKLSAgICAgICAg
ICAgICAgICBpZiAodW5pY29kZUJpZGlWYWx1ZSA9PSBDU1NWYWx1ZUVtYmVkKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gZGlyZWN0aW9uID0gdHlwaW5nU3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pOwotICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoIWRpcmVjdGlvbiB8fCBkaXJlY3Rpb24tPmlzUHJpbWl0aXZlVmFsdWUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkaXJlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGhhc05lc3RlZE9yTXVsdGlwbGVFbWJlZGRpbmdzID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJl
Y3Rpb24uZ2V0KCkpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTHRyID8gTGVmdFRvUmlnaHRXcml0
aW5nRGlyZWN0aW9uIDogUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1bmljb2RlQmlkaVZhbHVlID09
IENTU1ZhbHVlTm9ybWFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhc05lc3RlZE9yTXVsdGlw
bGVFbWJlZGRpbmdzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOYXR1cmFs
V3JpdGluZ0RpcmVjdGlvbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAg
ICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gbV9mcmFtZS0+c2VsZWN0aW9u
KCktPnR5cGluZ1N0eWxlKCk7CisgICAgICAgIFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uOwor
ICAgICAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5bGUtPnRleHREaXJlY3Rpb24oZGly
ZWN0aW9uKSkgeworICAgICAgICAgICAgaGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGluZ3MgPSBm
YWxzZTsKKyAgICAgICAgICAgIHJldHVybiBkaXJlY3Rpb247CiAgICAgICAgIH0KICAgICAgICAg
bm9kZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5k
ZWVwRXF1aXZhbGVudCgpLm5vZGUoKTsKICAgICB9CkBAIC0zMDA2LDkgKzI5OTMsMTAgQEAgdm9p
ZCBFZGl0b3I6OmNvbXB1dGVBbmRTZXRUeXBpbmdTdHlsZShDUwogCiAgICAgLy8gQ2FsY3VsYXRl
IHRoZSBjdXJyZW50IHR5cGluZyBzdHlsZS4KICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IG11dGFibGVTdHlsZSA9IHN0eWxlLT5tYWtlTXV0YWJsZSgpOwotICAgIGlmICht
X2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKSkgewotICAgICAgICBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKS0+bWVyZ2UobXV0YWJsZVN0eWxlLmdldCgpKTsKLSAg
ICAgICAgbXV0YWJsZVN0eWxlID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxlKCk7
CisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gdHlwaW5nU3R5bGUgPSBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+dHlwaW5nU3R5bGUoKTsKKyAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5bGUt
PnN0eWxlKCkpIHsKKyAgICAgICAgdHlwaW5nU3R5bGUtPnN0eWxlKCktPm1lcmdlKG11dGFibGVT
dHlsZS5nZXQoKSk7CisgICAgICAgIG11dGFibGVTdHlsZSA9IHR5cGluZ1N0eWxlLT5zdHlsZSgp
OwogICAgIH0KIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGk7CkBAIC0zMDY4LDcg
KzMwNTYsNyBAQCBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBFCiAgICAg
aWYgKCFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKSkKICAgICAgICAgcmV0dXJu
IG11dGFibGVTdHlsZTsKIAotICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0g
RWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFtZS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxlKCkp
OworICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gbV9mcmFtZS0+c2VsZWN0
aW9uKCktPnR5cGluZ1N0eWxlKCk7CiAgICAgdHlwaW5nU3R5bGUtPnJlbW92ZU5vbkVkaXRpbmdQ
cm9wZXJ0aWVzKCk7CiAgICAgdHlwaW5nU3R5bGUtPnByZXBhcmVUb0FwcGx5QXQocG9zaXRpb24p
OwogICAgIG11dGFibGVTdHlsZS0+bWVyZ2UodHlwaW5nU3R5bGUtPnN0eWxlKCkpOwpAQCAtMzE1
MiwxMyArMzE0MCwxNCBAQCBSZW5kZXJTdHlsZSogRWRpdG9yOjpzdHlsZUZvclNlbGVjdGlvblN0
CiAgICAgaWYgKCFwb3NpdGlvbi5ub2RlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYg
KCFtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKSkKKyAgICBSZWZQdHI8RWRpdGlu
Z1N0eWxlPiB0eXBpbmdTdHlsZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgp
OworICAgIGlmICghdHlwaW5nU3R5bGUgfHwgIXR5cGluZ1N0eWxlLT5zdHlsZSgpKQogICAgICAg
ICByZXR1cm4gcG9zaXRpb24ubm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpOwogCiAgICAgUmVm
UHRyPEVsZW1lbnQ+IHN0eWxlRWxlbWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmNyZWF0ZUVs
ZW1lbnQoc3BhblRhZywgZmFsc2UpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
U3RyaW5nIHN0eWxlVGV4dCA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpLT5j
c3NUZXh0KCkgKyAiIGRpc3BsYXk6IGlubGluZSI7CisgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHR5
cGluZ1N0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCkgKyAiIGRpc3BsYXk6IGlubGluZSI7CiAgICAg
c3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBzdHlsZVRleHQuaW1wbCgpLCBl
Yyk7CiAgICAgQVNTRVJUKCFlYyk7CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDcyMzExKQor
KysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw2
IEBAIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZSB7CiAKIGVudW0gVHJpU3RhdGUgeyBGYWxz
ZVRyaVN0YXRlLCBUcnVlVHJpU3RhdGUsIE1peGVkVHJpU3RhdGUgfTsKIGVudW0gRWRpdG9yQ29t
bWFuZFNvdXJjZSB7IENvbW1hbmRGcm9tTWVudU9yS2V5QmluZGluZywgQ29tbWFuZEZyb21ET00s
IENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2UgfTsKLWVudW0gV3JpdGluZ0RpcmVjdGlv
biB7IE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uLCBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24s
IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbiB9OwogCiBjbGFzcyBFZGl0b3IgewogcHVibGlj
OgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAkocmV2
aXNpb24gNzIzMTEpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCwxNSArMTY0LDE1IEBAIHZvaWQgSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgfQogCiAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdo
ZXJlIHRoZXJlIGlzIGEgdHlwaW5nIHN0eWxlLgotICAgIAotICAgIFJlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gdHlwaW5nU3R5bGUgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxl
Y3Rpb24oKS0+dHlwaW5nU3R5bGUoKTsKLSAgICAKLSAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlw
aW5nU3R5bGUtPmxlbmd0aCgpID4gMCkgeworCisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gdHlw
aW5nU3R5bGUgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUo
KTsKKworICAgIGlmICh0eXBpbmdTdHlsZSAmJiAhdHlwaW5nU3R5bGUtPmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBBcHBseSB0aGUgdHlwaW5nIHN0eWxlIHRvIHRoZSBpbnNlcnRlZCBsaW5lIGJy
ZWFrLCBzbyB0aGF0IGlmIHRoZSBzZWxlY3Rpb24KICAgICAgICAgLy8gbGVhdmVzIGFuZCB0aGVu
IGNvbWVzIGJhY2ssIG5ldyBpbnB1dCB3aWxsIGhhdmUgdGhlIHJpZ2h0IHN0eWxlLgogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGFsd2F5cyBhcHBseSB0aGUgdHlwaW5nIHN0eWxlIHRv
IHRoZSBsaW5lIGJyZWFrIGhlcmUsCiAgICAgICAgIC8vIHNlZSA8cmRhcjovL3Byb2JsZW0vNTc5
NDQ2Mj4uCi0gICAgICAgIGFwcGx5U3R5bGUodHlwaW5nU3R5bGUuZ2V0KCksIGZpcnN0RGVlcEVk
aXRpbmdQb3NpdGlvbkZvck5vZGUobm9kZVRvSW5zZXJ0LmdldCgpKSwgbGFzdERlZXBFZGl0aW5n
UG9zaXRpb25Gb3JOb2RlKG5vZGVUb0luc2VydC5nZXQoKSkpOworICAgICAgICBhcHBseVN0eWxl
KHR5cGluZ1N0eWxlLT5zdHlsZSgpLCBmaXJzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKG5v
ZGVUb0luc2VydC5nZXQoKSksIGxhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShub2RlVG9J
bnNlcnQuZ2V0KCkpKTsKICAgICAgICAgLy8gRXZlbiB0aG91Z2ggdGhpcyBhcHBseVN0eWxlIG9w
ZXJhdGVzIG9uIGEgUmFuZ2UsIGl0IHN0aWxsIHNldHMgYW4gZW5kaW5nU2VsZWN0aW9uKCkuCiAg
ICAgICAgIC8vIEl0IHRyaWVzIHRvIHNldCBhIFZpc2libGVTZWxlY3Rpb24gYXJvdW5kIHRoZSBj
b250ZW50IGl0IG9wZXJhdGVkIG9uLiBTbywgdGhhdCBWaXNpYmxlU2VsZWN0aW9uCiAgICAgICAg
IC8vIHdpbGwgZWl0aGVyIChhKSBzZWxlY3QgdGhlIGxpbmUgYnJlYWsgd2UgaW5zZXJ0ZWQsIG9y
IGl0IHdpbGwgKGIpIGJlIGEgY2FyZXQganVzdCAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNl
cnRUZXh0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFRl
eHRDb21tYW5kLmNwcAkocmV2aXNpb24gNzIzMTEpCisrKyBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
VGV4dENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsMjYgKzE5MCwxMSBAQCB2b2lk
IEluc2VydFRleHRDb21tYW5kOjppbnB1dChjb25zdCBTdHJpCiAgICAgc2V0RW5kaW5nU2VsZWN0
aW9uKGZvcmNlZEVuZGluZ1NlbGVjdGlvbik7CiAKICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hl
cmUgdGhlcmUgaXMgYSB0eXBpbmcgc3R5bGUuCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uPiB0eXBpbmdTdHlsZSA9IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigp
LT50eXBpbmdTdHlsZSgpOwotICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+
IGVuZGluZ1N0eWxlID0gZW5kUG9zaXRpb24uY29tcHV0ZWRTdHlsZSgpOwotICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdW5pY29kZUJpZGk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rpb247Ci0g
ICAgaWYgKHR5cGluZ1N0eWxlKSB7Ci0gICAgICAgIHVuaWNvZGVCaWRpID0gdHlwaW5nU3R5bGUt
PmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7Ci0gICAgICAgIGRp
cmVjdGlvbiA9IHR5cGluZ1N0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGly
ZWN0aW9uKTsKKyAgICBpZiAoUmVmUHRyPEVkaXRpbmdTdHlsZT4gdHlwaW5nU3R5bGUgPSBkb2N1
bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKSkgeworICAgICAgICB0
eXBpbmdTdHlsZS0+cHJlcGFyZVRvQXBwbHlBdChlbmRQb3NpdGlvbiwgRWRpdGluZ1N0eWxlOjpQ
cmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24pOworICAgICAgICBpZiAoIXR5cGluZ1N0eWxlLT5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBhcHBseVN0eWxlKHR5cGluZ1N0eWxlLT5zdHlsZSgpKTsKICAg
ICB9Ci0gICAgZW5kaW5nU3R5bGUtPmRpZmYodHlwaW5nU3R5bGUuZ2V0KCkpOwotICAgIGlmICh0
eXBpbmdTdHlsZSAmJiB1bmljb2RlQmlkaSkgewotICAgICAgICBBU1NFUlQodW5pY29kZUJpZGkt
PmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgICAgIHR5cGluZ1N0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHVu
aWNvZGVCaWRpLmdldCgpKS0+Z2V0SWRlbnQoKSk7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24pIHsK
LSAgICAgICAgICAgIEFTU0VSVChkaXJlY3Rpb24tPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAg
ICAgICAgICB0eXBpbmdTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9uLmdldCgpKS0+Z2V0SWRlbnQo
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5
bGUtPmxlbmd0aCgpKQotICAgICAgICBhcHBseVN0eWxlKHR5cGluZ1N0eWxlLmdldCgpKTsKIAog
ICAgIGlmICghc2VsZWN0SW5zZXJ0ZWRUZXh0KQogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSwgZW5kaW5nU2VsZWN0aW9u
KCkuYWZmaW5pdHkoKSkpOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5o
CShyZXZpc2lvbiA3MjMxMSkKKysrIFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHBhaW50RHJhZ0NhcmV0KEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5LCBjb25zdCBJ
bnRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7CiAKLSAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biogdHlwaW5nU3R5bGUoKSBjb25zdDsKKyAgICBFZGl0aW5nU3R5bGUqIHR5cGluZ1N0eWxlKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRUeXBpbmdTdHlsZShQYXNzUmVmUHRyPEVkaXRpbmdTdHlsZT4p
OwogICAgIHZvaWQgY2xlYXJUeXBpbmdTdHlsZSgpOwogCkBAIC0yMzMsOSArMjMzLDkgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fY2FyZXRQYWludDsKIH07CiAKLWlubGluZSBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiogU2VsZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5nU3R5bGUoKSBjb25zdAor
aW5saW5lIEVkaXRpbmdTdHlsZSogU2VsZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5nU3R5bGUoKSBj
b25zdAogewotICAgIHJldHVybiBtX3R5cGluZ1N0eWxlID8gbV90eXBpbmdTdHlsZS0+c3R5bGUo
KSA6IDA7CisgICAgcmV0dXJuIG1fdHlwaW5nU3R5bGUuZ2V0KCk7CiB9CiAKIGlubGluZSB2b2lk
IFNlbGVjdGlvbkNvbnRyb2xsZXI6OmNsZWFyVHlwaW5nU3R5bGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74416</attachid>
            <date>2010-11-19 12:57:09 -0800</date>
            <delta_ts>2010-11-22 15:54:05 -0800</delta_ts>
            <desc>fixed mac build</desc>
            <filename>bug-49813-20101119125708.patch</filename>
            <type>text/plain</type>
            <size>18916</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjQyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTAtMTEtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5nU3R5bGUoKSBzaG91bGQgcmV0dXJuIEVkaXRpbmdTdHls
ZSoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5ODEz
CisKKyAgICAgICAgQ2hhbmdlZCB0aGUgcmV0dXJuIHR5cGUgb2YgU2VsZWN0aW9uQ29udHJvbGxl
cjo6dHlwaW5nU3R5bGUgdG8gRWRpdGluZ1N0eWxlKi4KKworICAgICAgICBFeHRyYWN0ZWQgdGV4
dERpcmVjdGlvbiBmcm9tIEVkaXRvcjo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbiB0byBoaWRl
IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLgorCisg
ICAgICAgIEFsc28gZXh0cmFjdGVkIHRoZSBjb2RlIHRvIHByZXNlcnZlIHVuaWNvZGUtYmlkaSBh
bmQgZGlyZWN0aW9uIENTUyBwcm9wZXJ0aWVzIGluCisgICAgICAgIEluc2VydFRleHRDb21tYW5k
OjppbnB1dCwgYW5kIG1vdmVkIGludG8gRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0LiBT
aG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24sCisgICAgICAgIHdoaWNoIGlzIGFkZGVkIHRv
IHRoZSBhcmd1bWVudCBsaXN0IG9mIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdCwgZGVj
aWRlcyB3aGV0aGVyIG9yIG5vdAorICAgICAgICB0aGVzZSB0d28gcHJvcGVydGllcyBhcmUgcHJl
c2VydmVkLgorCisgICAgICAgIEFsc28gYWRkZWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Y29weVR5
cGluZ1N0eWxlKCkgdG8gY29weSB0aGUgdHlwaW5nIHN0eWxlIGFzIGFuIGluc3RhbmNlIG9mCisg
ICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBhcmUgYWRkZWQgc2luY2UgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp0
ZXh0RGlyZWN0aW9uKTogRXh0cmFjdGVkIGZyb20gRWRpdG9yOjp0ZXh0RGlyZWN0aW9uRm9yU2Vs
ZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZs
aWN0aW5nV2l0aFN0eWxlT2ZOb2RlKTogQWRkZWQgYSBtaXNzaW5nIG51bGwgY2hlY2suCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQpOiBTZWUgYWJvdmUu
CisgICAgICAgIChXZWJDb3JlOjplZGl0aW5nU3R5bGVJbmNsdWRpbmdUeXBpbmdTdHlsZSk6IENh
bGxzIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnR5cGluZ1N0eWxlLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdGluZ1N0eWxlLmg6IE1vdmVkIFdyaXRpbmdEaXJlY3Rpb24gZnJvbSBFZGl0b3IuaAorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGV4
dERpcmVjdGlvbkZvclNlbGVjdGlvbik6IENhbGxzIEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKTog
Q2FsbHMgU2VsZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5nU3R5bGUuCisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnNlbGVjdGlvbkNvbXB1dGVkU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6c3R5bGVGb3JTZWxlY3Rpb25TdGFydCk6IERpdHRvLgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkp
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjppbnB1dCk6IENhbGxzIEVkaXRpbmdTdHls
ZTo6cHJlcGFyZVRvQXBwbHlBdCB3aXRoIFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbi4KKyAgICAg
ICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvbkNvbnRyb2xsZXI6OnR5cGluZ1N0eWxlKTogUmV0dXJucyBFZGl0aW5nU3R5bGUqIHJh
dGhlciB0aGFuIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKi4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmNvcHlUeXBpbmdTdHlsZSk6IEFkZGVkLgorCiAyMDEwLTEx
LTE5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbnRvbmlvIEdvbWVzLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHJldmlzaW9u
IDcyNDIzKQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5oIgogI2lu
Y2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTZWxl
Y3Rpb25Db250cm9sbGVyLmgiCkBAIC0xNDEsNiArMTQyLDMzIEBAIGJvb2wgRWRpdGluZ1N0eWxl
Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8IG1fbXV0YWJs
ZVN0eWxlLT5pc0VtcHR5KCk7CiB9CiAKK2Jvb2wgRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9u
KFdyaXRpbmdEaXJlY3Rpb24mIHdyaXRpbmdEaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgUmVmUHRy
PENTU1ZhbHVlPiB1bmljb2RlQmlkaSA9IG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOworICAgIGlmICghdW5pY29kZUJpZGkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVCh1bmljb2RlQmlkaS0+aXNQcmltaXRpdmVW
YWx1ZSgpKTsKKyAgICBpbnQgdW5pY29kZUJpZGlWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRJZGVudCgpOworICAgIGlmICh1bmlj
b2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1iZWQpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVl
PiBkaXJlY3Rpb24gPSBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eURpcmVjdGlvbik7CisgICAgICAgIEFTU0VSVCghZGlyZWN0aW9uIHx8IGRpcmVjdGlvbi0+
aXNQcmltaXRpdmVWYWx1ZSgpKTsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24pCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgd3JpdGluZ0RpcmVjdGlvbiA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9uLmdldCgpKS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZUx0ciA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9MZWZ0V3JpdGlu
Z0RpcmVjdGlvbjsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAodW5p
Y29kZUJpZGlWYWx1ZSA9PSBDU1NWYWx1ZU5vcm1hbCkgeworICAgICAgICB3cml0aW5nRGlyZWN0
aW9uID0gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb247CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBFZGl0aW5nU3R5bGU6OnNldFN0eWxl
KFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlKQogewogICAgIG1f
bXV0YWJsZVN0eWxlID0gc3R5bGU7CkBAIC0xNzUsNyArMjAzLDcgQEAgdm9pZCBFZGl0aW5nU3R5
bGU6OnJlbW92ZVN0eWxlQWRkZWRCeU5vZAogCiB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5
bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlKiBub2RlKQogewotICAgIGlmICghbm9k
ZSB8fCAhbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cGFyZW50
Tm9kZSgpIHx8ICFtX211dGFibGVTdHlsZSkKICAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gcGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5bGVGcm9t
Q29tcHV0ZWRTdHlsZShjb21wdXRlZFN0eWxlKG5vZGUtPnBhcmVudE5vZGUoKSkpOwogICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbm9kZVN0eWxlID0gZWRpdGluZ1N0eWxl
RnJvbUNvbXB1dGVkU3R5bGUoY29tcHV0ZWRTdHlsZShub2RlKSk7CkBAIC0xOTIsMTIgKzIyMCwy
MyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlTm9uRWRpdGluZ1Byb3BlCiAgICAgICAgIG1f
bXV0YWJsZVN0eWxlID0gY29weUVkaXRpbmdQcm9wZXJ0aWVzKG1fbXV0YWJsZVN0eWxlLmdldCgp
KTsKIH0KIAotdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRp
b24mIHBvc2l0aW9uKQordm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gc2hvdWxk
UHJlc2VydmVXcml0aW5nRGlyZWN0aW9uKQogeworICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCisg
ICAgICAgIHJldHVybjsKKwogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVT
dHlsZVNwYW5zKCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVtb3ZlcyB0aGUg
ZWRpdGluZyBzdHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2RpZmllZCBpbiB0
aGUgZnV0dXJlIHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMsIHRoZW4gYWRkIGEg
Ym9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9uZSBvZiBlZGl0aW5nU3R5
bGVBdFBvc2l0aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgogICAgIFJlZlB0cjxFZGl0
aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24pOworCisgICAg
UmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlQmlkaTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IGRpcmVj
dGlvbjsKKyAgICBpZiAoc2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uKSB7CisgICAgICAg
IHVuaWNvZGVCaWRpID0gbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlVbmljb2RlQmlkaSk7CisgICAgICAgIGRpcmVjdGlvbiA9IG1fbXV0YWJsZVN0eWxlLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKKyAgICB9CisKICAgICBz
dHlsZS0+bV9tdXRhYmxlU3R5bGUtPmRpZmYobV9tdXRhYmxlU3R5bGUuZ2V0KCkpOwogCiAgICAg
Ly8gaWYgYWxwaGEgdmFsdWUgaXMgemVybywgd2UgZG9uJ3QgYWRkIHRoZSBiYWNrZ3JvdW5kIGNv
bG9yLgpAQCAtMjA3LDE0ICsyNDYsMjMgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0Fw
cGx5QXQoY29ucwogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBtX211dGFibGVT
dHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGVjKTsKICAg
ICB9CisKKyAgICBpZiAodW5pY29kZUJpZGkpIHsKKyAgICAgICAgQVNTRVJUKHVuaWNvZGVCaWRp
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpOworICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih1bmljb2RlQmlkaS5nZXQoKSktPmdldElkZW50KCkpOworICAgICAgICBpZiAoZGlyZWN0aW9u
KSB7CisgICAgICAgICAgICBBU1NFUlQoZGlyZWN0aW9uLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwor
ICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0
aW9uLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGRpcmVjdGlvbi5nZXQoKSktPmdl
dElkZW50KCkpOworICAgICAgICB9CisgICAgfQogfQogCiBQYXNzUmVmUHRyPEVkaXRpbmdTdHls
ZT4gZWRpdGluZ1N0eWxlSW5jbHVkaW5nVHlwaW5nU3R5bGUoY29uc3QgUG9zaXRpb24mIHBvc2l0
aW9uKQogewogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGVkaXRpbmdTdHlsZSA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKHBvc2l0aW9uKTsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IHR5cGluZ1N0eWxlID0gcG9zaXRpb24ubm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgp
LT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKTsKLSAgICBpZiAodHlwaW5nU3R5bGUpCi0gICAg
ICAgIGVkaXRpbmdTdHlsZS0+c3R5bGUoKS0+bWVyZ2UoY29weUVkaXRpbmdQcm9wZXJ0aWVzKHR5
cGluZ1N0eWxlLmdldCgpKS5nZXQoKSk7CisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gdHlwaW5n
U3R5bGUgPSBwb3NpdGlvbi5ub2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigp
LT50eXBpbmdTdHlsZSgpOworICAgIGlmICh0eXBpbmdTdHlsZSAmJiB0eXBpbmdTdHlsZS0+c3R5
bGUoKSkKKyAgICAgICAgZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tZXJnZShjb3B5RWRpdGluZ1By
b3BlcnRpZXModHlwaW5nU3R5bGUtPnN0eWxlKCkpLmdldCgpKTsKICAgICByZXR1cm4gZWRpdGlu
Z1N0eWxlOwogfQogICAgIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24gNzI0
MjMpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDggKzQwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1N0eWxlRGVjbGFy
YXRpb247CiBjbGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb247CiAKK2VudW0gV3JpdGlu
Z0RpcmVjdGlvbiB7IE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uLCBMZWZ0VG9SaWdodFdyaXRpbmdE
aXJlY3Rpb24sIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbiB9OworCiBjbGFzcyBFZGl0aW5n
U3R5bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxFZGl0aW5nU3R5bGU+IHsKIHB1YmxpYzoKKyAgICAK
KyAgICBlbnVtIFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiB7IFByZXNlcnZlV3JpdGlu
Z0RpcmVjdGlvbiwgRG9Ob3RQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gfTsKIAogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEVkaXRpbmdTdHlsZT4gY3JlYXRlKCkKICAgICB7CkBAIC02NCw2ICs2OCw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGUoKSB7IHJldHVybiBtX211dGFibGVTdHlsZS5nZXQoKTsgfQorICAgIGJvb2wgdGV4dERpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uJikgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
Pik7CiAgICAgdm9pZCBjbGVhcigpOwpAQCAtNzEsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZW1vdmVTdHlsZUFkZGVkQnlOb2RlKE5vZGUqIG5vZGUpOwogICAgIHZvaWQgcmVtb3ZlU3R5
bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlKiBub2RlKTsKICAgICB2b2lkIHJlbW92
ZU5vbkVkaXRpbmdQcm9wZXJ0aWVzKCk7Ci0gICAgdm9pZCBwcmVwYXJlVG9BcHBseUF0KGNvbnN0
IFBvc2l0aW9uJik7CisgICAgdm9pZCBwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiwg
U2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uID0gRG9Ob3RQcmVzZXJ2ZVdyaXRpbmdEaXJl
Y3Rpb24pOwogCiBwcml2YXRlOgogICAgIEVkaXRpbmdTdHlsZSgpOwpJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAJKHJldmlzaW9uIDcyNDIzKQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwOCwyNCArNjA4LDExIEBAIFdyaXRpbmdEaXJlY3Rpb24gRWRpdG9yOjp0
ZXh0RGlyZWN0aW9uRm8KICAgICB9CiAKICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uKCktPmlz
Q2FyZXQoKSkgewotICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHR5
cGluZ1N0eWxlID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxlKCk7Ci0gICAgICAg
IGlmICh0eXBpbmdTdHlsZSkgewotICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2Rl
QmlkaSA9IHR5cGluZ1N0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VW5pY29k
ZUJpZGkpOwotICAgICAgICAgICAgaWYgKHVuaWNvZGVCaWRpKSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKHVuaWNvZGVCaWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAgICAg
IGludCB1bmljb2RlQmlkaVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih1
bmljb2RlQmlkaS5nZXQoKSktPmdldElkZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHVuaWNv
ZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVFbWJlZCkgewotICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IGRpcmVjdGlvbiA9IHR5cGluZ1N0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFkaXJl
Y3Rpb24gfHwgZGlyZWN0aW9uLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoZGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYXNOZXN0ZWRP
ck11bHRpcGxlRW1iZWRkaW5ncyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9uLmdldCgpKS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUx0ciA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJp
Z2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAodW5pY29kZUJpZGlWYWx1ZSA9PSBDU1NWYWx1ZU5vcm1hbCkg
ewotICAgICAgICAgICAgICAgICAgICBoYXNOZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5ncyA9IGZh
bHNlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb247
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICBSZWZQdHI8RWRpdGlu
Z1N0eWxlPiB0eXBpbmdTdHlsZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgp
OworICAgICAgICBXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbjsKKyAgICAgICAgaWYgKHR5cGlu
Z1N0eWxlICYmIHR5cGluZ1N0eWxlLT50ZXh0RGlyZWN0aW9uKGRpcmVjdGlvbikpIHsKKyAgICAg
ICAgICAgIGhhc05lc3RlZE9yTXVsdGlwbGVFbWJlZGRpbmdzID0gZmFsc2U7CisgICAgICAgICAg
ICByZXR1cm4gZGlyZWN0aW9uOwogICAgICAgICB9CiAgICAgICAgIG5vZGUgPSBtX2ZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQoKS5u
b2RlKCk7CiAgICAgfQpAQCAtMzAwNiw5ICsyOTkzLDEwIEBAIHZvaWQgRWRpdG9yOjpjb21wdXRl
QW5kU2V0VHlwaW5nU3R5bGUoQ1MKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgY3VycmVudCB0eXBp
bmcgc3R5bGUuCiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtdXRhYmxl
U3R5bGUgPSBzdHlsZS0+bWFrZU11dGFibGUoKTsKLSAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9u
KCktPnR5cGluZ1N0eWxlKCkpIHsKLSAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPnR5cGlu
Z1N0eWxlKCktPm1lcmdlKG11dGFibGVTdHlsZS5nZXQoKSk7Ci0gICAgICAgIG11dGFibGVTdHls
ZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpOworICAgIFJlZlB0cjxFZGl0
aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxl
KCk7CisgICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5zdHlsZSgpKSB7CisgICAg
ICAgIHR5cGluZ1N0eWxlLT5zdHlsZSgpLT5tZXJnZShtdXRhYmxlU3R5bGUuZ2V0KCkpOworICAg
ICAgICBtdXRhYmxlU3R5bGUgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKTsKICAgICB9CiAKICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpOwpAQCAtMzA2OCw3ICszMDU2LDcgQEAgUGFzc1Jl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gRQogICAgIGlmICghbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPnR5cGluZ1N0eWxlKCkpCiAgICAgICAgIHJldHVybiBtdXRhYmxlU3R5bGU7CiAK
LSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3Jl
YXRlKG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpKTsKKyAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHls
ZSgpOwogICAgIHR5cGluZ1N0eWxlLT5yZW1vdmVOb25FZGl0aW5nUHJvcGVydGllcygpOwogICAg
IHR5cGluZ1N0eWxlLT5wcmVwYXJlVG9BcHBseUF0KHBvc2l0aW9uKTsKICAgICBtdXRhYmxlU3R5
bGUtPm1lcmdlKHR5cGluZ1N0eWxlLT5zdHlsZSgpKTsKQEAgLTMxNTIsMTMgKzMxNDAsMTQgQEAg
UmVuZGVyU3R5bGUqIEVkaXRvcjo6c3R5bGVGb3JTZWxlY3Rpb25TdAogICAgIGlmICghcG9zaXRp
b24ubm9kZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICghbV9mcmFtZS0+c2VsZWN0
aW9uKCktPnR5cGluZ1N0eWxlKCkpCisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gdHlwaW5nU3R5
bGUgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKTsKKyAgICBpZiAoIXR5cGlu
Z1N0eWxlIHx8ICF0eXBpbmdTdHlsZS0+c3R5bGUoKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
Lm5vZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBzdHls
ZUVsZW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KHNwYW5UYWcsIGZh
bHNlKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBzdHlsZVRleHQg
PSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKS0+Y3NzVGV4dCgpICsgIiBkaXNw
bGF5OiBpbmxpbmUiOworICAgIFN0cmluZyBzdHlsZVRleHQgPSB0eXBpbmdTdHlsZS0+c3R5bGUo
KS0+Y3NzVGV4dCgpICsgIiBkaXNwbGF5OiBpbmxpbmUiOwogICAgIHN0eWxlRWxlbWVudC0+c2V0
QXR0cmlidXRlKHN0eWxlQXR0ciwgc3R5bGVUZXh0LmltcGwoKSwgZWMpOwogICAgIEFTU0VSVCgh
ZWMpOwogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiA3MjQyMykKKysrIFdlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBzdHJ1Y3QgQ29tcG9z
aXRpb25VbmRlcmxpbmUgewogCiBlbnVtIFRyaVN0YXRlIHsgRmFsc2VUcmlTdGF0ZSwgVHJ1ZVRy
aVN0YXRlLCBNaXhlZFRyaVN0YXRlIH07CiBlbnVtIEVkaXRvckNvbW1hbmRTb3VyY2UgeyBDb21t
YW5kRnJvbU1lbnVPcktleUJpbmRpbmcsIENvbW1hbmRGcm9tRE9NLCBDb21tYW5kRnJvbURPTVdp
dGhVc2VySW50ZXJmYWNlIH07Ci1lbnVtIFdyaXRpbmdEaXJlY3Rpb24geyBOYXR1cmFsV3JpdGlu
Z0RpcmVjdGlvbiwgTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uLCBSaWdodFRvTGVmdFdyaXRp
bmdEaXJlY3Rpb24gfTsKIAogY2xhc3MgRWRpdG9yIHsKIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUv
ZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDcyNDIzKQorKysg
V2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjQsMTUgKzE2NCwxNSBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBw
bHkoKQogICAgIH0KIAogICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBhIHR5
cGluZyBzdHlsZS4KLSAgICAKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+
IHR5cGluZ1N0eWxlID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0
eWxlKCk7Ci0gICAgCi0gICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5sZW5ndGgo
KSA+IDApIHsKKworICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gZG9jdW1l
bnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxlKCk7CisKKyAgICBpZiAodHlw
aW5nU3R5bGUgJiYgIXR5cGluZ1N0eWxlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gQXBwbHkg
dGhlIHR5cGluZyBzdHlsZSB0byB0aGUgaW5zZXJ0ZWQgbGluZSBicmVhaywgc28gdGhhdCBpZiB0
aGUgc2VsZWN0aW9uCiAgICAgICAgIC8vIGxlYXZlcyBhbmQgdGhlbiBjb21lcyBiYWNrLCBuZXcg
aW5wdXQgd2lsbCBoYXZlIHRoZSByaWdodCBzdHlsZS4KICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZG4ndCBhbHdheXMgYXBwbHkgdGhlIHR5cGluZyBzdHlsZSB0byB0aGUgbGluZSBicmVhayBo
ZXJlLAogICAgICAgICAvLyBzZWUgPHJkYXI6Ly9wcm9ibGVtLzU3OTQ0NjI+LgotICAgICAgICBh
cHBseVN0eWxlKHR5cGluZ1N0eWxlLmdldCgpLCBmaXJzdERlZXBFZGl0aW5nUG9zaXRpb25Gb3JO
b2RlKG5vZGVUb0luc2VydC5nZXQoKSksIGxhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShu
b2RlVG9JbnNlcnQuZ2V0KCkpKTsKKyAgICAgICAgYXBwbHlTdHlsZSh0eXBpbmdTdHlsZS0+c3R5
bGUoKSwgZmlyc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkp
LCBsYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUobm9kZVRvSW5zZXJ0LmdldCgpKSk7CiAg
ICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoaXMgYXBwbHlTdHlsZSBvcGVyYXRlcyBvbiBhIFJhbmdl
LCBpdCBzdGlsbCBzZXRzIGFuIGVuZGluZ1NlbGVjdGlvbigpLgogICAgICAgICAvLyBJdCB0cmll
cyB0byBzZXQgYSBWaXNpYmxlU2VsZWN0aW9uIGFyb3VuZCB0aGUgY29udGVudCBpdCBvcGVyYXRl
ZCBvbi4gU28sIHRoYXQgVmlzaWJsZVNlbGVjdGlvbgogICAgICAgICAvLyB3aWxsIGVpdGhlciAo
YSkgc2VsZWN0IHRoZSBsaW5lIGJyZWFrIHdlIGluc2VydGVkLCBvciBpdCB3aWxsIChiKSBiZSBh
IGNhcmV0IGp1c3QgCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDcyNDIzKQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTkwLDI2ICsxOTAsMTEgQEAgdm9pZCBJbnNlcnRUZXh0Q29tbWFu
ZDo6aW5wdXQoY29uc3QgU3RyaQogICAgIHNldEVuZGluZ1NlbGVjdGlvbihmb3JjZWRFbmRpbmdT
ZWxlY3Rpb24pOwogCiAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGEgdHlw
aW5nIHN0eWxlLgotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gdHlwaW5n
U3R5bGUgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKTsK
LSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBlbmRpbmdTdHlsZSA9IGVu
ZFBvc2l0aW9uLmNvbXB1dGVkU3R5bGUoKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVC
aWRpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gZGlyZWN0aW9uOwotICAgIGlmICh0eXBpbmdTdHls
ZSkgewotICAgICAgICB1bmljb2RlQmlkaSA9IHR5cGluZ1N0eWxlLT5nZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOwotICAgICAgICBkaXJlY3Rpb24gPSB0eXBpbmdT
dHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CisgICAgaWYg
KFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxlKCkpIHsKKyAgICAgICAgdHlwaW5nU3R5bGUtPnByZXBh
cmVUb0FwcGx5QXQoZW5kUG9zaXRpb24sIEVkaXRpbmdTdHlsZTo6UHJlc2VydmVXcml0aW5nRGly
ZWN0aW9uKTsKKyAgICAgICAgaWYgKCF0eXBpbmdTdHlsZS0+aXNFbXB0eSgpKQorICAgICAgICAg
ICAgYXBwbHlTdHlsZSh0eXBpbmdTdHlsZS0+c3R5bGUoKSk7CiAgICAgfQotICAgIGVuZGluZ1N0
eWxlLT5kaWZmKHR5cGluZ1N0eWxlLmdldCgpKTsKLSAgICBpZiAodHlwaW5nU3R5bGUgJiYgdW5p
Y29kZUJpZGkpIHsKLSAgICAgICAgQVNTRVJUKHVuaWNvZGVCaWRpLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpOwotICAgICAgICB0eXBpbmdTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2Rl
QmlkaSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih1bmljb2RlQmlkaS5nZXQoKSkt
PmdldElkZW50KCkpOwotICAgICAgICBpZiAoZGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICBBU1NF
UlQoZGlyZWN0aW9uLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAgdHlwaW5nU3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KGRpcmVjdGlvbi5nZXQoKSktPmdldElkZW50KCkpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5sZW5ndGgoKSkKLSAg
ICAgICAgYXBwbHlTdHlsZSh0eXBpbmdTdHlsZS5nZXQoKSk7CiAKICAgICBpZiAoIXNlbGVjdElu
c2VydGVkVGV4dCkKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
ZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCksIGVuZGluZ1NlbGVjdGlvbigpLmFmZmluaXR5KCkpKTsK
SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaAkocmV2aXNpb24gNzI0MjMp
CisrKyBXZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjAsNyArMTYwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludERyYWdDYXJldChH
cmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
IGNvbnN0OwogCi0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHR5cGluZ1N0eWxlKCkg
Y29uc3Q7CisgICAgRWRpdGluZ1N0eWxlKiB0eXBpbmdTdHlsZSgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNvcHlUeXBpbmdTdHlsZSgpIGNvbnN0
OwogICAgIHZvaWQgc2V0VHlwaW5nU3R5bGUoUGFzc1JlZlB0cjxFZGl0aW5nU3R5bGU+KTsKICAg
ICB2b2lkIGNsZWFyVHlwaW5nU3R5bGUoKTsKIApAQCAtMjMzLDkgKzIzNCwxNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9jYXJldFBhaW50OwogfTsKIAotaW5saW5lIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiBTZWxlY3Rpb25Db250cm9sbGVyOjp0eXBpbmdTdHlsZSgpIGNvbnN0Citpbmxp
bmUgRWRpdGluZ1N0eWxlKiBTZWxlY3Rpb25Db250cm9sbGVyOjp0eXBpbmdTdHlsZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fdHlwaW5nU3R5bGUgPyBtX3R5cGluZ1N0eWxlLT5zdHlsZSgpIDog
MDsKKyAgICByZXR1cm4gbV90eXBpbmdTdHlsZS5nZXQoKTsKK30KKworaW5saW5lIFBhc3NSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IFNlbGVjdGlvbkNvbnRyb2xsZXI6OmNvcHlU
eXBpbmdTdHlsZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3R5cGluZ1N0eWxlIHx8ICFtX3R5cGlu
Z1N0eWxlLT5zdHlsZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV90eXBpbmdT
dHlsZS0+c3R5bGUoKS0+Y29weSgpOwogfQogCiBpbmxpbmUgdm9pZCBTZWxlY3Rpb25Db250cm9s
bGVyOjpjbGVhclR5cGluZ1N0eWxlKCkKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MjQyOSkKKysrIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTEt
MTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5n
U3R5bGUoKSBzaG91bGQgcmV0dXJuIEVkaXRpbmdTdHlsZSoKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5ODEzCisKKyAgICAgICAgQ2hhbmdlZCB0aGUg
cmV0dXJuIHZhbHVlIG9mIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnR5cGluZ1N0eWxlKCkgdG8gRWRp
dGluZ1N0eWxlKi4KKyAgICAgICAgQWxzbyBhZGRlZCBTZWxlY3Rpb25Db250cm9sbGVyOjpjb3B5
VHlwaW5nU3R5bGUoKSB0byBjb3B5IHRoZSB0eXBpbmcgc3R5bGUKKyAgICAgICAgYXMgYW4gaW5z
dGFuY2Ugb2YgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uCisKKyAgICAgICAgTm8gdGVzdHMg
YXJlIGFkZGVkIHNpbmNlIHRoaXMgaXMgbm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfdHlwaW5nU3R5bGVd
KTogQ2FsbHMgU2VsZWN0aW9uQ29udHJvbGxlcjo6Y29weVR5cGluZ1N0eWxlKCkKKwogMjAxMC0x
MS0xOSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUuCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShy
ZXZpc2lvbiA3MjQyMykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTAxLDkgKzkwMSwxMiBAQCAtIChET01SYW5nZSAqKV9jaGFyYWN0ZXJSYW5n
ZUF0UG9pbnQ6KE5TCiAKIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilfdHlwaW5nU3R5bGUK
IHsKLSAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUgfHwgIV9wcml2YXRlLT5jb3JlRnJhbWUt
PnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpKQorICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFt
ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IHR5cGluZ1N0eWxlID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCktPmNv
cHlUeXBpbmdTdHlsZSgpOworICAgIGlmICghdHlwaW5nU3R5bGUpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+dHlw
aW5nU3R5bGUoKS0+Y29weSgpLmdldCgpKTsKKyAgICByZXR1cm4ga2l0KHR5cGluZ1N0eWxlLmdl
dCgpKTsKIH0KIAogLSAodm9pZClfc2V0VHlwaW5nU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRp
b24gKilzdHlsZSB3aXRoVW5kb0FjdGlvbjooRWRpdEFjdGlvbil1bmRvQWN0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74607</attachid>
            <date>2010-11-22 15:45:54 -0800</date>
            <delta_ts>2010-11-22 16:06:18 -0800</delta_ts>
            <desc>fixed per Tony&apos;s comment</desc>
            <filename>bug-49813-20101122154553.patch</filename>
            <type>text/plain</type>
            <size>18944</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjU2OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTAtMTEtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5nU3R5bGUoKSBzaG91bGQgcmV0dXJuIEVkaXRpbmdTdHls
ZSoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5ODEz
CisKKyAgICAgICAgQ2hhbmdlZCB0aGUgcmV0dXJuIHR5cGUgb2YgU2VsZWN0aW9uQ29udHJvbGxl
cjo6dHlwaW5nU3R5bGUgdG8gRWRpdGluZ1N0eWxlKi4KKworICAgICAgICBFeHRyYWN0ZWQgdGV4
dERpcmVjdGlvbiBmcm9tIEVkaXRvcjo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbiB0byBoaWRl
IHRoZSB1bmRlcmx5aW5nCisgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLgorCisg
ICAgICAgIEFsc28gZXh0cmFjdGVkIHRoZSBjb2RlIHRvIHByZXNlcnZlIHVuaWNvZGUtYmlkaSBh
bmQgZGlyZWN0aW9uIENTUyBwcm9wZXJ0aWVzIGluCisgICAgICAgIEluc2VydFRleHRDb21tYW5k
OjppbnB1dCwgYW5kIG1vdmVkIGludG8gRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0LiBT
aG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24sCisgICAgICAgIHdoaWNoIGlzIGFkZGVkIHRv
IHRoZSBhcmd1bWVudCBsaXN0IG9mIEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdCwgZGVj
aWRlcyB3aGV0aGVyIG9yIG5vdAorICAgICAgICB0aGVzZSB0d28gcHJvcGVydGllcyBhcmUgcHJl
c2VydmVkLgorCisgICAgICAgIEFsc28gYWRkZWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Y29weVR5
cGluZ1N0eWxlKCkgdG8gY29weSB0aGUgdHlwaW5nIHN0eWxlIGFzIGFuIGluc3RhbmNlIG9mCisg
ICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBhcmUgYWRkZWQgc2luY2UgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp0
ZXh0RGlyZWN0aW9uKTogRXh0cmFjdGVkIGZyb20gRWRpdG9yOjp0ZXh0RGlyZWN0aW9uRm9yU2Vs
ZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUNvbmZs
aWN0aW5nV2l0aFN0eWxlT2ZOb2RlKTogQWRkZWQgYSBtaXNzaW5nIG51bGwgY2hlY2suCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQpOiBTZWUgYWJvdmUu
CisgICAgICAgIChXZWJDb3JlOjplZGl0aW5nU3R5bGVJbmNsdWRpbmdUeXBpbmdTdHlsZSk6IENh
bGxzIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnR5cGluZ1N0eWxlLgorICAgICAgICAqIGVkaXRpbmcv
RWRpdGluZ1N0eWxlLmg6IE1vdmVkIFdyaXRpbmdEaXJlY3Rpb24gZnJvbSBFZGl0b3IuaAorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dGV4
dERpcmVjdGlvbkZvclNlbGVjdGlvbik6IENhbGxzIEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKTog
Q2FsbHMgU2VsZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5nU3R5bGUuCisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnNlbGVjdGlvbkNvbXB1dGVkU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6c3R5bGVGb3JTZWxlY3Rpb25TdGFydCk6IERpdHRvLgorICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRMaW5lQnJlYWtDb21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkp
OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc2VydFRleHRDb21tYW5kOjppbnB1dCk6IENhbGxzIEVkaXRpbmdTdHls
ZTo6cHJlcGFyZVRvQXBwbHlBdCB3aXRoIFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbi4KKyAgICAg
ICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvbkNvbnRyb2xsZXI6OnR5cGluZ1N0eWxlKTogUmV0dXJucyBFZGl0aW5nU3R5bGUqIHJh
dGhlciB0aGFuIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKi4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmNvcHlUeXBpbmdTdHlsZSk6IEFkZGVkLgorCiAyMDEwLTEx
LTIyICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJ
KHJldmlzaW9uIDcyNTY4KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFu
ZC5oIgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUg
IkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNs
dWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCkBAIC0xNDEsNiArMTQyLDMzIEBAIGJvb2wgRWRp
dGluZ1N0eWxlOjppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8
IG1fbXV0YWJsZVN0eWxlLT5pc0VtcHR5KCk7CiB9CiAKK2Jvb2wgRWRpdGluZ1N0eWxlOjp0ZXh0
RGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24mIHdyaXRpbmdEaXJlY3Rpb24pIGNvbnN0Cit7Cisg
ICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlQmlkaSA9IG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOworICAgIGlmICghdW5pY29kZUJp
ZGkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVCh1bmljb2RlQmlkaS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKTsKKyAgICBpbnQgdW5pY29kZUJpZGlWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRJZGVudCgpOworICAg
IGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1iZWQpIHsKKyAgICAgICAgUmVmUHRy
PENTU1ZhbHVlPiBkaXJlY3Rpb24gPSBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CisgICAgICAgIEFTU0VSVCghZGlyZWN0aW9uIHx8IGRp
cmVjdGlvbi0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKKyAgICAgICAgaWYgKCFkaXJlY3Rpb24pCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgd3JpdGluZ0RpcmVjdGlvbiA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9uLmdldCgpKS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUx0ciA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9M
ZWZ0V3JpdGluZ0RpcmVjdGlvbjsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBpZiAodW5pY29kZUJpZGlWYWx1ZSA9PSBDU1NWYWx1ZU5vcm1hbCkgeworICAgICAgICB3cml0
aW5nRGlyZWN0aW9uID0gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb247CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBFZGl0aW5nU3R5bGU6
OnNldFN0eWxlKFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlKQog
ewogICAgIG1fbXV0YWJsZVN0eWxlID0gc3R5bGU7CkBAIC0xNzUsNyArMjAzLDcgQEAgdm9pZCBF
ZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlQWRkZWRCeU5vZAogCiB2b2lkIEVkaXRpbmdTdHlsZTo6
cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlKiBub2RlKQogewotICAg
IGlmICghbm9kZSB8fCAhbm9kZS0+cGFyZW50Tm9kZSgpKQorICAgIGlmICghbm9kZSB8fCAhbm9k
ZS0+cGFyZW50Tm9kZSgpIHx8ICFtX211dGFibGVTdHlsZSkKICAgICAgICAgcmV0dXJuOwogICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gcGFyZW50U3R5bGUgPSBlZGl0aW5n
U3R5bGVGcm9tQ29tcHV0ZWRTdHlsZShjb21wdXRlZFN0eWxlKG5vZGUtPnBhcmVudE5vZGUoKSkp
OwogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbm9kZVN0eWxlID0gZWRp
dGluZ1N0eWxlRnJvbUNvbXB1dGVkU3R5bGUoY29tcHV0ZWRTdHlsZShub2RlKSk7CkBAIC0xOTIs
MTIgKzIyMCwyMyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlTm9uRWRpdGluZ1Byb3BlCiAg
ICAgICAgIG1fbXV0YWJsZVN0eWxlID0gY29weUVkaXRpbmdQcm9wZXJ0aWVzKG1fbXV0YWJsZVN0
eWxlLmdldCgpKTsKIH0KIAotdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKQordm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5
QXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rp
b24gc2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uKQogeworICAgIGlmICghbV9tdXRhYmxl
U3R5bGUpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpoYW5kbGVTdHlsZVNwYW5zKCkgcmVxdWlyZXMgdGhhdCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVt
b3ZlcyB0aGUgZWRpdGluZyBzdHlsZS4KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2Rp
ZmllZCBpbiB0aGUgZnV0dXJlIHRvIGRlbGV0ZSBhbGwgcmVkdW5kYW50IHByb3BlcnRpZXMsIHRo
ZW4gYWRkIGEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQogICAgIC8vIHdoaWNoIG9uZSBvZiBl
ZGl0aW5nU3R5bGVBdFBvc2l0aW9uIG9yIGNvbXB1dGVkU3R5bGUgaXMgY2FsbGVkLgogICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocG9zaXRpb24p
OworCisgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlQmlkaTsKKyAgICBSZWZQdHI8Q1NTVmFs
dWU+IGRpcmVjdGlvbjsKKyAgICBpZiAoc2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uID09
IFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbikgeworICAgICAgICB1bmljb2RlQmlkaSA9IG1fbXV0
YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOwor
ICAgICAgICBkaXJlY3Rpb24gPSBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShD
U1NQcm9wZXJ0eURpcmVjdGlvbik7CisgICAgfQorCiAgICAgc3R5bGUtPm1fbXV0YWJsZVN0eWxl
LT5kaWZmKG1fbXV0YWJsZVN0eWxlLmdldCgpKTsKIAogICAgIC8vIGlmIGFscGhhIHZhbHVlIGlz
IHplcm8sIHdlIGRvbid0IGFkZCB0aGUgYmFja2dyb3VuZCBjb2xvci4KQEAgLTIwNywxNCArMjQ2
LDIzIEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnMKICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlYzsKICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBlYyk7CiAgICAgfQorCisgICAgaWYgKHVuaWNv
ZGVCaWRpKSB7CisgICAgICAgIEFTU0VSVCh1bmljb2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgp
KTsKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29k
ZUJpZGksIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkp
LT5nZXRJZGVudCgpKTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbikgeworICAgICAgICAgICAgQVNT
RVJUKGRpcmVjdGlvbi0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKKyAgICAgICAgICAgIG1fbXV0YWJs
ZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rpb24uZ2V0KCkpLT5nZXRJZGVudCgpKTsKKyAgICAgICAg
fQorICAgIH0KIH0KIAogUGFzc1JlZlB0cjxFZGl0aW5nU3R5bGU+IGVkaXRpbmdTdHlsZUluY2x1
ZGluZ1R5cGluZ1N0eWxlKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwb3NpdGlv
bik7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiB0eXBpbmdTdHlsZSA9
IHBvc2l0aW9uLm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnR5cGlu
Z1N0eWxlKCk7Ci0gICAgaWYgKHR5cGluZ1N0eWxlKQotICAgICAgICBlZGl0aW5nU3R5bGUtPnN0
eWxlKCktPm1lcmdlKGNvcHlFZGl0aW5nUHJvcGVydGllcyh0eXBpbmdTdHlsZS5nZXQoKSkuZ2V0
KCkpOworICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gcG9zaXRpb24ubm9k
ZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKTsKKyAg
ICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5bGUtPnN0eWxlKCkpCisgICAgICAgIGVkaXRp
bmdTdHlsZS0+c3R5bGUoKS0+bWVyZ2UoY29weUVkaXRpbmdQcm9wZXJ0aWVzKHR5cGluZ1N0eWxl
LT5zdHlsZSgpKS5nZXQoKSk7CiAgICAgcmV0dXJuIGVkaXRpbmdTdHlsZTsKIH0KICAgICAKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHJldmlzaW9uIDcyNTY4KQorKysgV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOwogCitlbnVtIFdyaXRpbmdEaXJlY3Rpb24geyBOYXR1cmFs
V3JpdGluZ0RpcmVjdGlvbiwgTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uLCBSaWdodFRvTGVm
dFdyaXRpbmdEaXJlY3Rpb24gfTsKKwogY2xhc3MgRWRpdGluZ1N0eWxlIDogcHVibGljIFJlZkNv
dW50ZWQ8RWRpdGluZ1N0eWxlPiB7CiBwdWJsaWM6CisgICAgCisgICAgZW51bSBTaG91bGRQcmVz
ZXJ2ZVdyaXRpbmdEaXJlY3Rpb24geyBQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24sIERvTm90UHJl
c2VydmVXcml0aW5nRGlyZWN0aW9uIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFZGl0aW5n
U3R5bGU+IGNyZWF0ZSgpCiAgICAgewpAQCAtNjQsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgeyByZXR1cm4gbV9tdXRh
YmxlU3R5bGUuZ2V0KCk7IH0KKyAgICBib29sIHRleHREaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biYpIGNvbnN0OwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgIHZvaWQgc2V0U3R5bGUo
UGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4pOwogICAgIHZvaWQgY2xlYXIo
KTsKQEAgLTcxLDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlU3R5bGVBZGRlZEJ5
Tm9kZShOb2RlKiBub2RlKTsKICAgICB2b2lkIHJlbW92ZVN0eWxlQ29uZmxpY3RpbmdXaXRoU3R5
bGVPZk5vZGUoTm9kZSogbm9kZSk7CiAgICAgdm9pZCByZW1vdmVOb25FZGl0aW5nUHJvcGVydGll
cygpOwotICAgIHZvaWQgcHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYpOworICAgIHZv
aWQgcHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYsIFNob3VsZFByZXNlcnZlV3JpdGlu
Z0RpcmVjdGlvbiA9IERvTm90UHJlc2VydmVXcml0aW5nRGlyZWN0aW9uKTsKIAogcHJpdmF0ZToK
ICAgICBFZGl0aW5nU3R5bGUoKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiA3MjU2OCkK
KysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTYsMjQg
KzYxNiwxMSBAQCBXcml0aW5nRGlyZWN0aW9uIEVkaXRvcjo6dGV4dERpcmVjdGlvbkZvCiAgICAg
fQogCiAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5pc0NhcmV0KCkpIHsKLSAgICAgICAg
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiB0eXBpbmdTdHlsZSA9IG1fZnJhbWUt
PnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpOwotICAgICAgICBpZiAodHlwaW5nU3R5bGUpIHsK
LSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGkgPSB0eXBpbmdTdHlsZS0+
Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKTsKLSAgICAgICAgICAg
IGlmICh1bmljb2RlQmlkaSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCh1bmljb2RlQmlkaS0+
aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBpbnQgdW5pY29kZUJpZGlWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5n
ZXRJZGVudCgpOwotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1Zh
bHVlRW1iZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rp
b24gPSB0eXBpbmdTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlv
bik7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZGlyZWN0aW9uIHx8IGRpcmVjdGlvbi0+
aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbikg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGluZ3Mg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGRpcmVjdGlvbi5nZXQoKSktPmdldElkZW50KCkgPT0gQ1NTVmFsdWVM
dHIgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJl
Y3Rpb247Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGluZ3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gdHlwaW5nU3R5bGUg
PSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKTsKKyAgICAgICAgV3JpdGluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb247CisgICAgICAgIGlmICh0eXBpbmdTdHlsZSAmJiB0eXBpbmdTdHls
ZS0+dGV4dERpcmVjdGlvbihkaXJlY3Rpb24pKSB7CisgICAgICAgICAgICBoYXNOZXN0ZWRPck11
bHRpcGxlRW1iZWRkaW5ncyA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbjsK
ICAgICAgICAgfQogICAgICAgICBub2RlID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlv
bigpLnZpc2libGVTdGFydCgpLmRlZXBFcXVpdmFsZW50KCkubm9kZSgpOwogICAgIH0KQEAgLTMw
MjcsOSArMzAxNCwxMCBAQCB2b2lkIEVkaXRvcjo6Y29tcHV0ZUFuZFNldFR5cGluZ1N0eWxlKENT
CiAKICAgICAvLyBDYWxjdWxhdGUgdGhlIGN1cnJlbnQgdHlwaW5nIHN0eWxlLgogICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbXV0YWJsZVN0eWxlID0gc3R5bGUtPm1ha2VN
dXRhYmxlKCk7Ci0gICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpKSB7
Ci0gICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpLT5tZXJnZShtdXRh
YmxlU3R5bGUuZ2V0KCkpOwotICAgICAgICBtdXRhYmxlU3R5bGUgPSBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+dHlwaW5nU3R5bGUoKTsKKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHls
ZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpOworICAgIGlmICh0eXBpbmdT
dHlsZSAmJiB0eXBpbmdTdHlsZS0+c3R5bGUoKSkgeworICAgICAgICB0eXBpbmdTdHlsZS0+c3R5
bGUoKS0+bWVyZ2UobXV0YWJsZVN0eWxlLmdldCgpKTsKKyAgICAgICAgbXV0YWJsZVN0eWxlID0g
dHlwaW5nU3R5bGUtPnN0eWxlKCk7CiAgICAgfQogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB1bmlj
b2RlQmlkaTsKQEAgLTMwODksNyArMzA3Nyw3IEBAIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24+IEUKICAgICBpZiAoIW1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHls
ZSgpKQogICAgICAgICByZXR1cm4gbXV0YWJsZVN0eWxlOwogCi0gICAgUmVmUHRyPEVkaXRpbmdT
dHlsZT4gdHlwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+dHlwaW5nU3R5bGUoKSk7CisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gdHlwaW5nU3R5
bGUgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKTsKICAgICB0eXBpbmdTdHls
ZS0+cmVtb3ZlTm9uRWRpdGluZ1Byb3BlcnRpZXMoKTsKICAgICB0eXBpbmdTdHlsZS0+cHJlcGFy
ZVRvQXBwbHlBdChwb3NpdGlvbik7CiAgICAgbXV0YWJsZVN0eWxlLT5tZXJnZSh0eXBpbmdTdHls
ZS0+c3R5bGUoKSk7CkBAIC0zMTczLDEzICszMTYxLDE0IEBAIFJlbmRlclN0eWxlKiBFZGl0b3I6
OnN0eWxlRm9yU2VsZWN0aW9uU3QKICAgICBpZiAoIXBvc2l0aW9uLm5vZGUoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBpZiAoIW1fZnJhbWUtPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgp
KQorICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gbV9mcmFtZS0+c2VsZWN0
aW9uKCktPnR5cGluZ1N0eWxlKCk7CisgICAgaWYgKCF0eXBpbmdTdHlsZSB8fCAhdHlwaW5nU3R5
bGUtPnN0eWxlKCkpCiAgICAgICAgIHJldHVybiBwb3NpdGlvbi5ub2RlKCktPnJlbmRlcmVyKCkt
PnN0eWxlKCk7CiAKICAgICBSZWZQdHI8RWxlbWVudD4gc3R5bGVFbGVtZW50ID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudChzcGFuVGFnLCBmYWxzZSk7CiAKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcgc3R5bGVUZXh0ID0gbV9mcmFtZS0+c2VsZWN0aW9u
KCktPnR5cGluZ1N0eWxlKCktPmNzc1RleHQoKSArICIgZGlzcGxheTogaW5saW5lIjsKKyAgICBT
dHJpbmcgc3R5bGVUZXh0ID0gdHlwaW5nU3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSArICIgZGlz
cGxheTogaW5saW5lIjsKICAgICBzdHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIs
IHN0eWxlVGV4dC5pbXBsKCksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIApJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aAkocmV2aXNpb24gNzI1NjgpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTcwLDcgKzcwLDYgQEAgc3RydWN0IENvbXBvc2l0aW9uVW5kZXJsaW5lIHsKIAog
ZW51bSBUcmlTdGF0ZSB7IEZhbHNlVHJpU3RhdGUsIFRydWVUcmlTdGF0ZSwgTWl4ZWRUcmlTdGF0
ZSB9OwogZW51bSBFZGl0b3JDb21tYW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5k
aW5nLCBDb21tYW5kRnJvbURPTSwgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9Owot
ZW51bSBXcml0aW5nRGlyZWN0aW9uIHsgTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24sIExlZnRUb1Jp
Z2h0V3JpdGluZ0RpcmVjdGlvbiwgUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uIH07CiAKIGNs
YXNzIEVkaXRvciB7CiBwdWJsaWM6CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJy
ZWFrQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVC
cmVha0NvbW1hbmQuY3BwCShyZXZpc2lvbiA3MjU2OCkKKysrIFdlYkNvcmUvZWRpdGluZy9JbnNl
cnRMaW5lQnJlYWtDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDE1ICsxNjQsMTUg
QEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpkb0FwcGx5KCkKICAgICB9CiAKICAgICAv
LyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgYSB0eXBpbmcgc3R5bGUuCi0gICAgCi0g
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiB0eXBpbmdTdHlsZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT50eXBpbmdTdHlsZSgpOwotICAgIAotICAgIGlm
ICh0eXBpbmdTdHlsZSAmJiB0eXBpbmdTdHlsZS0+bGVuZ3RoKCkgPiAwKSB7CisKKyAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVj
dGlvbigpLT50eXBpbmdTdHlsZSgpOworCisgICAgaWYgKHR5cGluZ1N0eWxlICYmICF0eXBpbmdT
dHlsZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEFwcGx5IHRoZSB0eXBpbmcgc3R5bGUgdG8g
dGhlIGluc2VydGVkIGxpbmUgYnJlYWssIHNvIHRoYXQgaWYgdGhlIHNlbGVjdGlvbgogICAgICAg
ICAvLyBsZWF2ZXMgYW5kIHRoZW4gY29tZXMgYmFjaywgbmV3IGlucHV0IHdpbGwgaGF2ZSB0aGUg
cmlnaHQgc3R5bGUuCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYWx3YXlzIGFwcGx5
IHRoZSB0eXBpbmcgc3R5bGUgdG8gdGhlIGxpbmUgYnJlYWsgaGVyZSwKICAgICAgICAgLy8gc2Vl
IDxyZGFyOi8vcHJvYmxlbS81Nzk0NDYyPi4KLSAgICAgICAgYXBwbHlTdHlsZSh0eXBpbmdTdHls
ZS5nZXQoKSwgZmlyc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShub2RlVG9JbnNlcnQuZ2V0
KCkpLCBsYXN0RGVlcEVkaXRpbmdQb3NpdGlvbkZvck5vZGUobm9kZVRvSW5zZXJ0LmdldCgpKSk7
CisgICAgICAgIGFwcGx5U3R5bGUodHlwaW5nU3R5bGUtPnN0eWxlKCksIGZpcnN0RGVlcEVkaXRp
bmdQb3NpdGlvbkZvck5vZGUobm9kZVRvSW5zZXJ0LmdldCgpKSwgbGFzdERlZXBFZGl0aW5nUG9z
aXRpb25Gb3JOb2RlKG5vZGVUb0luc2VydC5nZXQoKSkpOwogICAgICAgICAvLyBFdmVuIHRob3Vn
aCB0aGlzIGFwcGx5U3R5bGUgb3BlcmF0ZXMgb24gYSBSYW5nZSwgaXQgc3RpbGwgc2V0cyBhbiBl
bmRpbmdTZWxlY3Rpb24oKS4KICAgICAgICAgLy8gSXQgdHJpZXMgdG8gc2V0IGEgVmlzaWJsZVNl
bGVjdGlvbiBhcm91bmQgdGhlIGNvbnRlbnQgaXQgb3BlcmF0ZWQgb24uIFNvLCB0aGF0IFZpc2li
bGVTZWxlY3Rpb24KICAgICAgICAgLy8gd2lsbCBlaXRoZXIgKGEpIHNlbGVjdCB0aGUgbGluZSBi
cmVhayB3ZSBpbnNlcnRlZCwgb3IgaXQgd2lsbCAoYikgYmUgYSBjYXJldCBqdXN0IApJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCShyZXZpc2lvbiA3MjU2OCkKKysrIFdl
YkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
MCwyNiArMTkwLDExIEBAIHZvaWQgSW5zZXJ0VGV4dENvbW1hbmQ6OmlucHV0KGNvbnN0IFN0cmkK
ICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZm9yY2VkRW5kaW5nU2VsZWN0aW9uKTsKIAogICAgIC8v
IEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBhIHR5cGluZyBzdHlsZS4KLSAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHR5cGluZ1N0eWxlID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxlKCk7Ci0gICAgUmVmUHRyPENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbj4gZW5kaW5nU3R5bGUgPSBlbmRQb3NpdGlvbi5jb21wdXRlZFN0
eWxlKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB1bmljb2RlQmlkaTsKLSAgICBSZWZQdHI8Q1NT
VmFsdWU+IGRpcmVjdGlvbjsKLSAgICBpZiAodHlwaW5nU3R5bGUpIHsKLSAgICAgICAgdW5pY29k
ZUJpZGkgPSB0eXBpbmdTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpKTsKLSAgICAgICAgZGlyZWN0aW9uID0gdHlwaW5nU3R5bGUtPmdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pOworICAgIGlmIChSZWZQdHI8RWRpdGluZ1N0eWxl
PiB0eXBpbmdTdHlsZSA9IGRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT50eXBpbmdT
dHlsZSgpKSB7CisgICAgICAgIHR5cGluZ1N0eWxlLT5wcmVwYXJlVG9BcHBseUF0KGVuZFBvc2l0
aW9uLCBFZGl0aW5nU3R5bGU6OlByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbik7CisgICAgICAgIGlm
ICghdHlwaW5nU3R5bGUtPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFwcGx5U3R5bGUodHlwaW5n
U3R5bGUtPnN0eWxlKCkpOwogICAgIH0KLSAgICBlbmRpbmdTdHlsZS0+ZGlmZih0eXBpbmdTdHls
ZS5nZXQoKSk7Ci0gICAgaWYgKHR5cGluZ1N0eWxlICYmIHVuaWNvZGVCaWRpKSB7Ci0gICAgICAg
IEFTU0VSVCh1bmljb2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgdHlwaW5n
U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRJZGVudCgpKTsKLSAgICAg
ICAgaWYgKGRpcmVjdGlvbikgewotICAgICAgICAgICAgQVNTRVJUKGRpcmVjdGlvbi0+aXNQcmlt
aXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgIHR5cGluZ1N0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eURpcmVjdGlvbiwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rp
b24uZ2V0KCkpLT5nZXRJZGVudCgpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICh0eXBp
bmdTdHlsZSAmJiB0eXBpbmdTdHlsZS0+bGVuZ3RoKCkpCi0gICAgICAgIGFwcGx5U3R5bGUodHlw
aW5nU3R5bGUuZ2V0KCkpOwogCiAgICAgaWYgKCFzZWxlY3RJbnNlcnRlZFRleHQpCiAgICAgICAg
IHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpLmVu
ZCgpLCBlbmRpbmdTZWxlY3Rpb24oKS5hZmZpbml0eSgpKSk7CkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmgJKHJldmlzaW9uIDcyNTY4KQorKysgV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnREcmFnQ2FyZXQoR3JhcGhpY3NDb250ZXh0KiwgaW50
IHR4LCBpbnQgdHksIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBjb25zdDsKIAotICAgIENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uKiB0eXBpbmdTdHlsZSgpIGNvbnN0OworICAgIEVkaXRpbmdT
dHlsZSogdHlwaW5nU3R5bGUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBjb3B5VHlwaW5nU3R5bGUoKSBjb25zdDsKICAgICB2b2lkIHNldFR5cGlu
Z1N0eWxlKFBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPik7CiAgICAgdm9pZCBjbGVhclR5cGluZ1N0
eWxlKCk7CiAKQEAgLTIzMyw5ICsyMzQsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FyZXRQ
YWludDsKIH07CiAKLWlubGluZSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogU2VsZWN0aW9u
Q29udHJvbGxlcjo6dHlwaW5nU3R5bGUoKSBjb25zdAoraW5saW5lIEVkaXRpbmdTdHlsZSogU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6dHlwaW5nU3R5bGUoKSBjb25zdAogewotICAgIHJldHVybiBtX3R5
cGluZ1N0eWxlID8gbV90eXBpbmdTdHlsZS0+c3R5bGUoKSA6IDA7CisgICAgcmV0dXJuIG1fdHlw
aW5nU3R5bGUuZ2V0KCk7Cit9CisKK2lubGluZSBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uPiBTZWxlY3Rpb25Db250cm9sbGVyOjpjb3B5VHlwaW5nU3R5bGUoKSBjb25zdAor
eworICAgIGlmICghbV90eXBpbmdTdHlsZSB8fCAhbV90eXBpbmdTdHlsZS0+c3R5bGUoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fdHlwaW5nU3R5bGUtPnN0eWxlKCktPmNvcHko
KTsKIH0KIAogaW5saW5lIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Y2xlYXJUeXBpbmdTdHls
ZSgpCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gNzI1NjgpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTExLTIyICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnR5cGluZ1N0eWxlKCkgc2hvdWxkIHJldHVy
biBFZGl0aW5nU3R5bGUqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00OTgxMworCisgICAgICAgIENoYW5nZWQgdGhlIHJldHVybiB2YWx1ZSBvZiBTZWxl
Y3Rpb25Db250cm9sbGVyOjp0eXBpbmdTdHlsZSgpIHRvIEVkaXRpbmdTdHlsZSouCisgICAgICAg
IEFsc28gYWRkZWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6Y29weVR5cGluZ1N0eWxlKCkgdG8gY29w
eSB0aGUgdHlwaW5nIHN0eWxlCisgICAgICAgIGFzIGFuIGluc3RhbmNlIG9mIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uLgorCisgICAgICAgIE5vIHRlc3RzIGFyZSBhZGRlZCBzaW5jZSB0aGlz
IGlzIG5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5t
bToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3R5cGluZ1N0eWxlXSk6IENhbGxzIFNlbGVjdGlvbkNv
bnRyb2xsZXI6OmNvcHlUeXBpbmdTdHlsZSgpCisKIDIwMTAtMTEtMTkgIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZwpJ
bmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gNzI1NjgpCisrKyBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTkwMSw5ICs5MDEsMTIgQEAg
LSAoRE9NUmFuZ2UgKilfY2hhcmFjdGVyUmFuZ2VBdFBvaW50OihOUwogCiAtIChET01DU1NTdHls
ZURlY2xhcmF0aW9uICopX3R5cGluZ1N0eWxlCiB7Ci0gICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZy
YW1lIHx8ICFfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS0+dHlwaW5nU3R5bGUoKSkK
KyAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiB0eXBpbmdTdHlsZSA9IF9wcml2YXRl
LT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLT5jb3B5VHlwaW5nU3R5bGUoKTsKKyAgICBpZiAoIXR5
cGluZ1N0eWxlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBraXQoX3ByaXZhdGUt
PmNvcmVGcmFtZS0+c2VsZWN0aW9uKCktPnR5cGluZ1N0eWxlKCktPmNvcHkoKS5nZXQoKSk7Cisg
ICAgcmV0dXJuIGtpdCh0eXBpbmdTdHlsZS5nZXQoKSk7CiB9CiAKIC0gKHZvaWQpX3NldFR5cGlu
Z1N0eWxlOihET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUgd2l0aFVuZG9BY3Rpb246KEVk
aXRBY3Rpb24pdW5kb0FjdGlvbgo=
</data>
<flag name="review"
          id="65252"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>