<?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>49705</bug_id>
          
          <creation_ts>2010-11-17 18:31:46 -0800</creation_ts>
          <short_desc>[HTML5] Rename member variables of HTMLScriptElement</short_desc>
          <delta_ts>2010-11-30 18:09:48 -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>DOM</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>310657</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-17 18:31:46 -0800</bug_when>
    <thetext>We should rename member variables of HTMLScriptElement to match the terminology used in HTML5 spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310659</commentid>
    <comment_count>1</comment_count>
      <attachid>74189</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-17 18:36:41 -0800</bug_when>
    <thetext>Created attachment 74189
renamed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310703</commentid>
    <comment_count>2</comment_count>
      <attachid>74189</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-17 22:11:18 -0800</bug_when>
    <thetext>Comment on attachment 74189
renamed

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

&gt; WebCore/dom/ScriptElement.h:92
&gt; +    bool m_insertedByParser;
&gt; +    bool m_extrnalScript;
&gt; +    bool m_alreadyStarted;
&gt;      bool m_firedLoad;

Boolean data members should be named so that they finish a sentence &quot;script element &lt;xxx&gt;&quot;. That’s why they often start with something like “was”.

I suggest:

    m_wasInsertedByParser
    m_isExternalScript
    m_wasAlreadyStarted
    m_hasFiredLoadEvent

I also suggest renaming functions, not just the data members.

&quot;extrnalScript&quot; needs an &quot;e&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310947</commentid>
    <comment_count>3</comment_count>
      <attachid>74256</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-18 10:43:54 -0800</bug_when>
    <thetext>Created attachment 74256
fixed per Darin&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310950</commentid>
    <comment_count>4</comment_count>
      <attachid>74259</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-18 10:46:44 -0800</bug_when>
    <thetext>Created attachment 74259
updated ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310953</commentid>
    <comment_count>5</comment_count>
      <attachid>74256</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-18 10:49:39 -0800</bug_when>
    <thetext>Comment on attachment 74256
fixed per Darin&apos;s comment

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

&gt; WebCore/dom/ScriptElement.cpp:164
&gt;      // m_createdByParser is never reset - always resied at the initial value set while parsing.
&gt;      // m_evaluated is left untouched as well to avoid script reexecution, if a &lt;script&gt; element

Didn’t we rename m_createdByParser and m_evaluated? Comment should be fixed.

&gt; WebCore/dom/ScriptElement.cpp:178
&gt; -    if (m_isEvaluated || sourceCode.isEmpty() || !shouldExecuteAsJavaScript())
&gt; +    if (wasAlreadyStarted() || sourceCode.isEmpty() || !shouldExecuteAsJavaScript())

Why the change from looking at the data member to calling the function?

&gt; WebCore/dom/ScriptElement.cpp:205
&gt; -    if (m_isEvaluated || sourceCode.isEmpty())
&gt; +    if (wasAlreadyStarted() || sourceCode.isEmpty())

Same question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310955</commentid>
    <comment_count>6</comment_count>
      <attachid>74259</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-18 10:50:06 -0800</bug_when>
    <thetext>Comment on attachment 74259
updated ChangeLog

Later we could rename the haveFiredLoadEvent function to hasFiredLoadEvent or maybe an even better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310965</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-18 10:58:57 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; WebCore/dom/ScriptElement.cpp:164
&gt; &gt;      // m_createdByParser is never reset - always resied at the initial value set while parsing.
&gt; &gt;      // m_evaluated is left untouched as well to avoid script reexecution, if a &lt;script&gt; element
&gt; 
&gt; Didn’t we rename m_createdByParser and m_evaluated? Comment should be fixed.

Oops, will do.

&gt; &gt; WebCore/dom/ScriptElement.cpp:178
&gt; &gt; -    if (m_isEvaluated || sourceCode.isEmpty() || !shouldExecuteAsJavaScript())
&gt; &gt; +    if (wasAlreadyStarted() || sourceCode.isEmpty() || !shouldExecuteAsJavaScript())
&gt; 
&gt; Why the change from looking at the data member to calling the function?

&gt; &gt; WebCore/dom/ScriptElement.cpp:205
&gt; &gt; -    if (m_isEvaluated || sourceCode.isEmpty())
&gt; &gt; +    if (wasAlreadyStarted() || sourceCode.isEmpty())
&gt; 
&gt; Same question.

So we&apos;re inconsistent in calling accessor vs. accessing member variable directly.  I tried to make this consistent by always calling the accessor but I can do the other way, which is to replace all calls to accessor by accessing member variables directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310973</commentid>
    <comment_count>8</comment_count>
      <attachid>74263</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-18 11:06:54 -0800</bug_when>
    <thetext>Created attachment 74263
fixed comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315449</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-30 17:42:07 -0800</bug_when>
    <thetext>Hi Darin, could you review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315459</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-30 17:54:47 -0800</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315462</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-30 18:09:48 -0800</bug_when>
    <thetext>Committed r72995: &lt;http://trac.webkit.org/changeset/72995&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74189</attachid>
            <date>2010-11-17 18:36:41 -0800</date>
            <delta_ts>2010-11-18 10:43:51 -0800</delta_ts>
            <desc>renamed</desc>
            <filename>bug-49705-20101117183640.patch</filename>
            <type>text/plain</type>
            <size>14184</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjI2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMTEtMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0hU
TUw1XSBSZW5hbWUgbWVtYmVyIHZhcmlhYmxlcyBvZiBIVE1MU2NyaXB0RWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk3MDUKKworICAgICAg
ICBSZW5hbWVkIG1fY3JlYXRlZEJ5UGFyc2VyIHRvIG1faW5zZXJ0ZWRCeVBhcnNlciwgbV9yZXF1
ZXN0ZWQgdG8gbV9leHRybmFsU2NyaXB0LAorICAgICAgICBhbmQgbV9pc0V2YWx1YXRlZCB0byBt
X2FscmVhZHlTdGFydGVkLgorCisgICAgICAgIEFsc28gbWFkZSBTY3JpcHRFbGVtZW50J3MgaGF2
ZUZpcmVkTG9hZEV2ZW50IGFuZCByZW1vdmVkIEhUTUxTY3JpcHRFbGVtZW50J3MgaGF2ZUZpcmVk
TG9hZEV2ZW50LgorICAgICAgICBUaGlzIGVmZmVjdGl2ZWx5IGFkZHMgdGhlIHNhbWUgZnVuY3Rp
b24gdG8gU1ZHU2NyaXB0RWxlbWVudCwgd2hpY2ggaXNuJ3QgY3VycmVudGx5IHVzZWQgYW55d2hl
cmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFyZSBhZGRlZCBzaW5jZSB0aGlzIGlzIGEgcmVm
YWN0b3JpbmcuCisKKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpTY3JpcHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVt
ZW50OjpldmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpl
eGVjdXRlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6Omlnbm9yZXNM
b2FkUmVxdWVzdCk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEVsZW1lbnQ6Omluc2VydGVkQnlQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RWxlbWVudDo6YWxyZWFkeVN0YXJ0ZWQpOgorICAgICAgICAqIGh0bWwvSFRNTFNj
cmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OkhU
TUxTY3JpcHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4pOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50OjpTVkdTY3JpcHRFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTY3JpcHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hp
bGRyZW4pOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50Lmg6CisKIDIwMTAtMTEtMTcg
IERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3
MjI2NikKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSwxMiArNTEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRFbGVtZW50
OjpTY3JpcHRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBi
b29sIGlzRXZhbHVhdGVkKQorU2NyaXB0RWxlbWVudDo6U2NyaXB0RWxlbWVudChFbGVtZW50KiBl
bGVtZW50LCBib29sIGluc2VydGVkQnlQYXJzZXIsIGJvb2wgYWxyZWFkeVN0YXJ0ZWQpCiAgICAg
OiBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fY2FjaGVkU2NyaXB0KDApCi0gICAgLCBtX2Ny
ZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpCi0gICAgLCBtX3JlcXVlc3RlZChmYWxzZSkK
LSAgICAsIG1faXNFdmFsdWF0ZWQoaXNFdmFsdWF0ZWQpCisgICAgLCBtX2luc2VydGVkQnlQYXJz
ZXIoaW5zZXJ0ZWRCeVBhcnNlcikKKyAgICAsIG1fZXh0cm5hbFNjcmlwdChmYWxzZSkKKyAgICAs
IG1fYWxyZWFkeVN0YXJ0ZWQoYWxyZWFkeVN0YXJ0ZWQpCiAgICAgLCBtX2ZpcmVkTG9hZChmYWxz
ZSkKIHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKQEAgLTY5LDcgKzY5LDcgQEAgU2NyaXB0RWxl
bWVudDo6flNjcmlwdEVsZW1lbnQoKQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50
b0RvY3VtZW50KGNvbnN0IFN0cmluZyYgc291cmNlVXJsKQogewotICAgIGlmIChjcmVhdGVkQnlQ
YXJzZXIoKSAmJiAhaXNBc3luY2hyb25vdXMoKSkKKyAgICBpZiAoaW5zZXJ0ZWRCeVBhcnNlcigp
ICYmICFpc0FzeW5jaHJvbm91cygpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNzY3JpcHQKQEAgLTkz
LDcgKzkzLDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KAogCiB2
b2lkIFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKGNyZWF0ZWRC
eVBhcnNlcigpKQorICAgIGlmIChpbnNlcnRlZEJ5UGFyc2VyKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIElmIGEgbm9kZSBpcyBpbnNlcnRlZCBhcyBhIGNoaWxkIG9mIHRoZSBzY3JpcHQg
ZWxlbWVudApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFy
c2luZ0NoaWxkcmUKICAgICAvLyBUaGUgcGFyc2VyIGp1c3QgcmVhY2hlZCA8L3NjcmlwdD4uIElm
IHdlIGhhdmUgbm8gc3JjIGFuZCBubyB0ZXh0LAogICAgIC8vIGFsbG93IGR5bmFtaWMgbG9hZGlu
ZyBsYXRlci4KICAgICBpZiAoc291cmNlVXJsLmlzRW1wdHkoKSAmJiBzY3JpcHRDb250ZW50KCku
aXNFbXB0eSgpKQotICAgICAgICBtX2NyZWF0ZWRCeVBhcnNlciA9IGZhbHNlOworICAgICAgICBt
X2luc2VydGVkQnlQYXJzZXIgPSBmYWxzZTsKIH0KIAogdm9pZCBTY3JpcHRFbGVtZW50OjpoYW5k
bGVTb3VyY2VBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpCkBAIC0xNTgsNyArMTU4
LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0KGNvbnN0IAogCiAgICAgQVNT
RVJUKCFtX2NhY2hlZFNjcmlwdCk7CiAgICAgbV9jYWNoZWRTY3JpcHQgPSBkb2N1bWVudC0+Y2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdChzb3VyY2VVcmwsIHNjcmlwdENoYXJz
ZXQoKSk7Ci0gICAgbV9yZXF1ZXN0ZWQgPSB0cnVlOworICAgIG1fZXh0cm5hbFNjcmlwdCA9IHRy
dWU7CiAKICAgICAvLyBtX2NyZWF0ZWRCeVBhcnNlciBpcyBuZXZlciByZXNldCAtIGFsd2F5cyBy
ZXNpZWQgYXQgdGhlIGluaXRpYWwgdmFsdWUgc2V0IHdoaWxlIHBhcnNpbmcuCiAgICAgLy8gbV9l
dmFsdWF0ZWQgaXMgbGVmdCB1bnRvdWNoZWQgYXMgd2VsbCB0byBhdm9pZCBzY3JpcHQgcmVleGVj
dXRpb24sIGlmIGEgPHNjcmlwdD4gZWxlbWVudApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgU2Ny
aXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdChjb25zdCAKIAogdm9pZCBTY3JpcHRFbGVtZW50Ojpl
dmFsdWF0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewotICAg
IGlmIChtX2lzRXZhbHVhdGVkIHx8IHNvdXJjZUNvZGUuaXNFbXB0eSgpIHx8ICFzaG91bGRFeGVj
dXRlQXNKYXZhU2NyaXB0KCkpCisgICAgaWYgKGFscmVhZHlTdGFydGVkKCkgfHwgc291cmNlQ29k
ZS5pc0VtcHR5KCkgfHwgIXNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1fZWxlbWVudC0+ZG9jdW1l
bnQoKTsKQEAgLTE4NCwxMiArMTg0LDEyIEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXZhbHVhdGVT
Y3JpcHQoY29uc3QKICAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3Jp
cHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBtX2lzRXZhbHVhdGVkID0gdHJ1ZTsKKyAgICAgICAgbV9hbHJlYWR5U3RhcnRlZCA9IHRydWU7
CiAKICAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay8jc2NyaXB0CiAKICAgICAgICAgewotICAgICAgICAgICAgSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVDb3VudEluY3Jl
bWVudGVyKG1fcmVxdWVzdGVkID8gZG9jdW1lbnQuZ2V0KCkgOiAwKTsKKyAgICAgICAgICAgIEln
bm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc2N0cnVjdGl2ZVdy
aXRlQ291bnRJbmNyZW1lbnRlcihtX2V4dHJuYWxTY3JpcHQgPyBkb2N1bWVudC5nZXQoKSA6IDAp
OwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgc2NyaXB0IGZyb20gdGhlIHNjcmlwdCBlbGVtZW50
IG5vZGUsIHVzaW5nIHRoZSBzY3JpcHQKICAgICAgICAgICAgIC8vIGJsb2NrJ3Mgc291cmNlIGFu
ZCB0aGUgc2NyaXB0IGJsb2NrJ3MgdHlwZS4KICAgICAgICAgICAgIC8vIE5vdGU6IFRoaXMgaXMg
d2hlcmUgdGhlIHNjcmlwdCBpcyBjb21waWxlZCBhbmQgYWN0dWFsbHkgZXhlY3V0ZWQuCkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNjcmlwdChjb25zdAog
CiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSkKIHsKLSAgICBpZiAobV9pc0V2YWx1YXRlZCB8fCBzb3VyY2VDb2RlLmlz
RW1wdHkoKSkKKyAgICBpZiAoYWxyZWFkeVN0YXJ0ZWQoKSB8fCBzb3VyY2VDb2RlLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX2Vs
ZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKQEAgLTIxMCw3ICsyMTAs
NyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgCiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc0V2YWx1YXRlZCA9IHRydWU7CisgICAg
bV9hbHJlYWR5U3RhcnRlZCA9IHRydWU7CiAKICAgICBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVT
Y3JpcHQoc291cmNlQ29kZSk7CiB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBTY3JpcHRFbGVt
ZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZQogCiBib29sIFNjcmlwdEVsZW1lbnQ6Omlnbm9yZXNM
b2FkUmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faXNFdmFsdWF0ZWQgfHwgbV9yZXF1
ZXN0ZWQgfHwgbV9jcmVhdGVkQnlQYXJzZXIgfHwgIW1fZWxlbWVudC0+aW5Eb2N1bWVudCgpOwor
ICAgIHJldHVybiBhbHJlYWR5U3RhcnRlZCgpIHx8IG1fZXh0cm5hbFNjcmlwdCB8fCBpbnNlcnRl
ZEJ5UGFyc2VyKCkgfHwgIW1fZWxlbWVudC0+aW5Eb2N1bWVudCgpOwogfQogCiBib29sIFNjcmlw
dEVsZW1lbnQ6OnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSBjb25zdApJbmRleDogV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuaAkocmV2aXNpb24gNzIyNjYpCisrKyBXZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEVy
cm9yRXZlbnQoKSA9IDA7CiAKLXByb3RlY3RlZDoKICAgICBib29sIGhhdmVGaXJlZExvYWRFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyZWRMb2FkOyB9CisKK3Byb3RlY3RlZDoKICAgICB2b2lk
IHNldEhhdmVGaXJlZExvYWRFdmVudChib29sIGZpcmVkTG9hZCkgeyBtX2ZpcmVkTG9hZCA9IGZp
cmVkTG9hZDsgfQotICAgIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKCkgY29uc3QgeyByZXR1cm4gbV9j
cmVhdGVkQnlQYXJzZXI7IH0KLSAgICBib29sIGlzRXZhbHVhdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0V2YWx1YXRlZDsgfQorICAgIGJvb2wgaW5zZXJ0ZWRCeVBhcnNlcigpIGNvbnN0IHsgcmV0
dXJuIG1faW5zZXJ0ZWRCeVBhcnNlcjsgfQorICAgIGJvb2wgYWxyZWFkeVN0YXJ0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2FscmVhZHlTdGFydGVkOyB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25z
IHVzZWQgYnkgb3VyIHBhcmVudCBjbGFzc2VzLgogICAgIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpOwpAQCAtODUsOSArODYsOSBAQCBwcml2YXRlOgog
CiAgICAgRWxlbWVudCogbV9lbGVtZW50OwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNjcmlwdD4gbV9jYWNoZWRTY3JpcHQ7Ci0gICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlcjsgLy8g
SFRNTDU6ICJwYXJzZXItaW5zZXJ0ZWQiCi0gICAgYm9vbCBtX3JlcXVlc3RlZDsKLSAgICBib29s
IG1faXNFdmFsdWF0ZWQ7IC8vIEhUTUw1OiAiYWxyZWFkeSBzdGFydGVkIgorICAgIGJvb2wgbV9p
bnNlcnRlZEJ5UGFyc2VyOworICAgIGJvb2wgbV9leHRybmFsU2NyaXB0OworICAgIGJvb2wgbV9h
bHJlYWR5U3RhcnRlZDsKICAgICBib29sIG1fZmlyZWRMb2FkOwogfTsKIApJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MjI2NikKKysrIFdlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWlubGlu
ZSBIVE1MU2NyaXB0RWxlbWVudDo6SFRNTFNjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlciwgYm9v
bCBpc0V2YWx1YXRlZCkKK2lubGluZSBIVE1MU2NyaXB0RWxlbWVudDo6SFRNTFNjcmlwdEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29s
IGluc2VydGVkQnlQYXJzZXIsIGJvb2wgaXNFdmFsdWF0ZWQpCiAgICAgOiBIVE1MRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIFNjcmlwdEVsZW1lbnQodGhpcywgY3JlYXRlZEJ5UGFy
c2VyLCBpc0V2YWx1YXRlZCkKKyAgICAsIFNjcmlwdEVsZW1lbnQodGhpcywgaW5zZXJ0ZWRCeVBh
cnNlciwgaXNFdmFsdWF0ZWQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoc2NyaXB0VGFnKSk7
CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFNjcmlwdEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIGNyZWF0ZWRCeVBhcnNlcikKK1Bhc3NSZWZQdHI8SFRNTFNjcmlwdEVsZW1lbnQ+IEhUTUxT
Y3JpcHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50LCBib29sIGluc2VydGVkQnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVE1MU2NyaXB0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFy
c2VyLCBmYWxzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNjcmlwdEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIGluc2VydGVkQnlQYXJzZXIsIGZhbHNlKSk7CiB9CiAKIGJvb2wg
SFRNTFNjcmlwdEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikgY29uc3QK
QEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaEVycm9y
RXZlCiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVu
dFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBjb25zdAogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTFNjcmlwdEVsZW1lbnQodGFnUU5hbWUoKSwgZG9jdW1lbnQoKSwgZmFsc2Us
IGlzRXZhbHVhdGVkKCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTY3JpcHRFbGVt
ZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCBhbHJlYWR5U3RhcnRlZCgpKSk7CiB9
CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA3MjI2NikKKysr
IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwx
NyArMzEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MU2NyaXB0RWxlbWVu
dCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50KiwgYm9vbCBpbnNlcnRlZEJ5UGFyc2VyKTsKIAogICAgIFN0cmluZyB0ZXh0
KCkgY29uc3QgeyByZXR1cm4gc2NyaXB0Q29udGVudCgpOyB9CiAgICAgdm9pZCBzZXRUZXh0KGNv
bnN0IFN0cmluZyYpOwogCiAgICAgS1VSTCBzcmMoKSBjb25zdDsKIAotICAgIGJvb2wgaGF2ZUZp
cmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0RWxlbWVudDo6aGF2ZUZpcmVkTG9h
ZEV2ZW50KCk7IH0KLQogcHJpdmF0ZToKLSAgICBIVE1MU2NyaXB0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlciwgYm9vbCBpc0V2YWx1
YXRlZCk7CisgICAgSFRNTFNjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50KiwgYm9vbCBpbnNlcnRlZEJ5UGFyc2VyLCBib29sIGlzRXZhbHVhdGVkKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Njcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3MjI2NikKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1pbmxpbmUgU1ZHU2NyaXB0RWxlbWVudDo6U1ZHU2NyaXB0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFy
c2VyLCBib29sIGlzRXZhbHVhdGVkKQoraW5saW5lIFNWR1NjcmlwdEVsZW1lbnQ6OlNWR1Njcmlw
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
LCBib29sIGluc2VydGVkQnlQYXJzZXIsIGJvb2wgaXNFdmFsdWF0ZWQpCiAgICAgOiBTVkdFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgU2NyaXB0RWxlbWVudCh0aGlzLCBjcmVhdGVk
QnlQYXJzZXIsIGlzRXZhbHVhdGVkKQorICAgICwgU2NyaXB0RWxlbWVudCh0aGlzLCBpbnNlcnRl
ZEJ5UGFyc2VyLCBpc0V2YWx1YXRlZCkKIHsKIH0KIAotUGFzc1JlZlB0cjxTVkdTY3JpcHRFbGVt
ZW50PiBTVkdTY3JpcHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK1Bhc3NSZWZQdHI8
U1ZHU2NyaXB0RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpbnNlcnRlZEJ5UGFyc2Vy
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHU2NyaXB0RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyLCBmYWxzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU1ZHU2NyaXB0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgaW5zZXJ0ZWRCeVBhcnNlciwg
ZmFsc2UpKTsKIH0KIAogdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgLy8gSGFuZGxlIGR5bmFtaWMgdXBkYXRlcyBv
ZiB0aGUgJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnIGF0dHJpYnV0ZS4gT25seSBwb3NzaWJs
ZSBjYXNlOiBjaGFuZ2luZyBmcm9tICd0cnVlJyB0byAnZmFsc2UnCiAgICAgICAgIC8vIGNhdXNl
cyBhbiBpbW1lZGlhdGUgZGlzcGF0Y2ggb2YgdGhlIFNWR0xvYWQgZXZlbnQuIElmIHRoZSBhdHRy
aWJ1dGUgdmFsdWUgd2FzICdmYWxzZScgYmVmb3JlIGluc2VydGluZyB0aGUgc2NyaXB0IGVsZW1l
bnQKICAgICAgICAgLy8gaW4gdGhlIGRvY3VtZW50LCB0aGUgU1ZHTG9hZCBldmVudCBoYXMgYWxy
ZWFkeSBiZWVuIGRpc3BhdGNoZWQuCi0gICAgICAgIGlmICghZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEJhc2VWYWx1ZSgpICYmICFoYXZlRmlyZWRMb2FkRXZlbnQoKSAmJiAhY3JlYXRlZEJ5UGFy
c2VyKCkpIHsKKyAgICAgICAgaWYgKCFleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVl
KCkgJiYgIWhhdmVGaXJlZExvYWRFdmVudCgpICYmICFpbnNlcnRlZEJ5UGFyc2VyKCkpIHsKICAg
ICAgICAgICAgIHNldEhhdmVGaXJlZExvYWRFdmVudCh0cnVlKTsKICAgICAgICAgICAgIEFTU0VS
VChoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSk7CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9p
ZCBTVkdTY3JpcHRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bQogICAgIFNWR0VsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoc291cmNlQXR0cmlidXRlVmFsdWUoKSk7CiAKLSAgICBpZiAoY3JlYXRlZEJ5UGFyc2Vy
KCkpCisgICAgaWYgKGluc2VydGVkQnlQYXJzZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gRXZlbnR1YWxseSBzZW5kIFNWR0xvYWQgZXZlbnQgbm93IGZvciB0aGUgZHluYW1pY2FsbHkg
aW5zZXJ0ZWQgc2NyaXB0IGVsZW1lbnQKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFNWR1Njcmlw
dEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50CiB7CiAgICAgYm9vbCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkID0gZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpOwogCi0gICAg
aWYgKGNyZWF0ZWRCeVBhcnNlcigpKQorICAgIGlmIChpbnNlcnRlZEJ5UGFyc2VyKCkpCiAgICAg
ICAgIEFTU0VSVChleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkICE9IGhhdmVGaXJlZExvYWRFdmVu
dCgpKTsKICAgICBlbHNlIGlmIChoYXZlRmlyZWRMb2FkRXZlbnQoKSkgewogICAgICAgICAvLyBJ
ZiB3ZSd2ZSBhbHJlYWR5IGZpcmVkIGFuIGxvYWQgZXZlbnQgYW5kIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQgaXMgc2V0IHRvICd0cnVlJwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgU1ZHU2Ny
aXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW4KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBTVkdT
Y3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1NjcmlwdEVsZW1lbnQodGFnUU5h
bWUoKSwgZG9jdW1lbnQoKSwgZmFsc2UsIGlzRXZhbHVhdGVkKCkpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNWR1NjcmlwdEVsZW1lbnQodGFnUU5hbWUoKSwgZG9jdW1lbnQoKSwgZmFsc2Us
IGFscmVhZHlTdGFydGVkKCkpKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAko
cmV2aXNpb24gNzIyNjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBTY3JpcHRFbGVtZW50IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1NjcmlwdEVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNl
cik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1NjcmlwdEVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGluc2VydGVkQnlQYXJzZXIpOwog
CiAgICAgICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VHlwZShjb25z
dCBTdHJpbmcmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR1NjcmlwdEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIGJvb2wg
aXNFdmFsdWF0ZWQpOworICAgICAgICBTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCosIGJvb2wgaW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBpc0V2YWx1YXRlZCk7
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74256</attachid>
            <date>2010-11-18 10:43:54 -0800</date>
            <delta_ts>2010-11-18 10:49:39 -0800</delta_ts>
            <desc>fixed per Darin&apos;s comment</desc>
            <filename>bug-49705-20101118104353.patch</filename>
            <type>text/plain</type>
            <size>14914</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjMwOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTAtMTEtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0hU
TUw1XSBSZW5hbWUgbWVtYmVyIHZhcmlhYmxlcyBvZiBIVE1MU2NyaXB0RWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk3MDUKKworICAgICAg
ICBSZW5hbWVkIG1fY3JlYXRlZEJ5UGFyc2VyIHRvIG1faW5zZXJ0ZWRCeVBhcnNlciwgbV9yZXF1
ZXN0ZWQgdG8gbV9leHRybmFsU2NyaXB0LAorICAgICAgICBtX2lzRXZhbHVhdGVkIHRvIG1fYWxy
ZWFkeVN0YXJ0ZWQsIGFuZCBtX2ZpcmVkTG9hZCB0byBtX2hhdmVGaXJlZExvYWQuCisKKyAgICAg
ICAgQWxzbyBtYWRlIFNjcmlwdEVsZW1lbnQncyBoYXZlRmlyZWRMb2FkRXZlbnQgYW5kIHJlbW92
ZWQgSFRNTFNjcmlwdEVsZW1lbnQncyBoYXZlRmlyZWRMb2FkRXZlbnQuCisgICAgICAgIFRoaXMg
ZWZmZWN0aXZlbHkgYWRkcyB0aGUgc2FtZSBmdW5jdGlvbiB0byBTVkdTY3JpcHRFbGVtZW50LCB3
aGljaCBpc24ndCBjdXJyZW50bHkgdXNlZCBhbnl3aGVyZS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgYXJlIGFkZGVkIHNpbmNlIHRoaXMgaXMgYSByZWZhY3RvcmluZy4KKworICAgICAgICAqIGRv
bS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OlNj
cmlwdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpyZXF1ZXN0U2NyaXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRlU2NyaXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6aWdub3Jlc0xvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBk
b20vU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6aGF2
ZUZpcmVkTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OnNldEhh
dmVGaXJlZExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojp3YXNJ
bnNlcnRlZEJ5UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6Ondhc0Fs
cmVhZHlTdGFydGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpIVE1MU2NyaXB0RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0
RWxlbWVudDo6U1ZHU2NyaXB0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRF
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50Ojpp
bnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50
OjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50
OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAgICAgKiBz
dmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorCiAyMDEwLTExLTE2ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KSW5kZXg6
IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MjI2NikKKysrIFdlYkNvcmUvZG9tL1Njcmlw
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMyArNTEsMTMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TY3JpcHRFbGVtZW50OjpTY3JpcHRFbGVtZW50KEVsZW1lbnQqIGVs
ZW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBib29sIGlzRXZhbHVhdGVkKQorU2NyaXB0RWxl
bWVudDo6U2NyaXB0RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBib29sIHdhc0luc2VydGVkQnlQ
YXJzZXIsIGJvb2wgd2FzQWxyZWFkeVN0YXJ0ZWQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkK
ICAgICAsIG1fY2FjaGVkU2NyaXB0KDApCi0gICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihjcmVhdGVk
QnlQYXJzZXIpCi0gICAgLCBtX3JlcXVlc3RlZChmYWxzZSkKLSAgICAsIG1faXNFdmFsdWF0ZWQo
aXNFdmFsdWF0ZWQpCi0gICAgLCBtX2ZpcmVkTG9hZChmYWxzZSkKKyAgICAsIG1fd2FzSW5zZXJ0
ZWRCeVBhcnNlcih3YXNJbnNlcnRlZEJ5UGFyc2VyKQorICAgICwgbV9pc0V4dGVybmFsU2NyaXB0
KGZhbHNlKQorICAgICwgbV93YXNBbHJlYWR5U3RhcnRlZCh3YXNBbHJlYWR5U3RhcnRlZCkKKyAg
ICAsIG1faGF2ZUZpcmVkTG9hZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9lbGVtZW50KTsKIH0K
QEAgLTY5LDcgKzY5LDcgQEAgU2NyaXB0RWxlbWVudDo6flNjcmlwdEVsZW1lbnQoKQogCiB2b2lk
IFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KGNvbnN0IFN0cmluZyYgc291cmNl
VXJsKQogewotICAgIGlmIChjcmVhdGVkQnlQYXJzZXIoKSAmJiAhaXNBc3luY2hyb25vdXMoKSkK
KyAgICBpZiAod2FzSW5zZXJ0ZWRCeVBhcnNlcigpICYmICFpc0FzeW5jaHJvbm91cygpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrLyNzY3JpcHQKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBTY3JpcHRFbGVt
ZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KAogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZCgpCiB7Ci0gICAgaWYgKGNyZWF0ZWRCeVBhcnNlcigpKQorICAgIGlmICh3YXNJbnNl
cnRlZEJ5UGFyc2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIGEgbm9kZSBpcyBp
bnNlcnRlZCBhcyBhIGNoaWxkIG9mIHRoZSBzY3JpcHQgZWxlbWVudApAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmUKICAgICAvLyBUaGUg
cGFyc2VyIGp1c3QgcmVhY2hlZCA8L3NjcmlwdD4uIElmIHdlIGhhdmUgbm8gc3JjIGFuZCBubyB0
ZXh0LAogICAgIC8vIGFsbG93IGR5bmFtaWMgbG9hZGluZyBsYXRlci4KICAgICBpZiAoc291cmNl
VXJsLmlzRW1wdHkoKSAmJiBzY3JpcHRDb250ZW50KCkuaXNFbXB0eSgpKQotICAgICAgICBtX2Ny
ZWF0ZWRCeVBhcnNlciA9IGZhbHNlOworICAgICAgICBtX3dhc0luc2VydGVkQnlQYXJzZXIgPSBm
YWxzZTsKIH0KIAogdm9pZCBTY3JpcHRFbGVtZW50OjpoYW5kbGVTb3VyY2VBdHRyaWJ1dGUoY29u
c3QgU3RyaW5nJiBzb3VyY2VVcmwpCkBAIC0xNTgsMTIgKzE1OCwxMiBAQCB2b2lkIFNjcmlwdEVs
ZW1lbnQ6OnJlcXVlc3RTY3JpcHQoY29uc3QgCiAKICAgICBBU1NFUlQoIW1fY2FjaGVkU2NyaXB0
KTsKICAgICBtX2NhY2hlZFNjcmlwdCA9IGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LT5yZXF1ZXN0U2NyaXB0KHNvdXJjZVVybCwgc2NyaXB0Q2hhcnNldCgpKTsKLSAgICBtX3JlcXVl
c3RlZCA9IHRydWU7CisgICAgbV9pc0V4dGVybmFsU2NyaXB0ID0gdHJ1ZTsKIAogICAgIC8vIG1f
Y3JlYXRlZEJ5UGFyc2VyIGlzIG5ldmVyIHJlc2V0IC0gYWx3YXlzIHJlc2llZCBhdCB0aGUgaW5p
dGlhbCB2YWx1ZSBzZXQgd2hpbGUgcGFyc2luZy4KICAgICAvLyBtX2V2YWx1YXRlZCBpcyBsZWZ0
IHVudG91Y2hlZCBhcyB3ZWxsIHRvIGF2b2lkIHNjcmlwdCByZWV4ZWN1dGlvbiwgaWYgYSA8c2Ny
aXB0PiBlbGVtZW50CiAgICAgLy8gaXMgcmVtb3ZlZCBhbmQgcmVhcHBlbmRlZCB0byB0aGUgZG9j
dW1lbnQuCi0gICAgbV9maXJlZExvYWQgPSBmYWxzZTsKKyAgICBtX2hhdmVGaXJlZExvYWQgPSBm
YWxzZTsKIAogICAgIGlmIChtX2NhY2hlZFNjcmlwdCkgewogICAgICAgICBtX2NhY2hlZFNjcmlw
dC0+YWRkQ2xpZW50KHRoaXMpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgU2NyaXB0RWxlbWVu
dDo6cmVxdWVzdFNjcmlwdChjb25zdCAKIAogdm9pZCBTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNj
cmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewotICAgIGlmIChtX2lz
RXZhbHVhdGVkIHx8IHNvdXJjZUNvZGUuaXNFbXB0eSgpIHx8ICFzaG91bGRFeGVjdXRlQXNKYXZh
U2NyaXB0KCkpCisgICAgaWYgKHdhc0FscmVhZHlTdGFydGVkKCkgfHwgc291cmNlQ29kZS5pc0Vt
cHR5KCkgfHwgIXNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1fZWxlbWVudC0+ZG9jdW1lbnQoKTsK
QEAgLTE4NCwxMiArMTg0LDEyIEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXZhbHVhdGVTY3JpcHQo
Y29uc3QKICAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKEFi
b3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2lz
RXZhbHVhdGVkID0gdHJ1ZTsKKyAgICAgICAgbV93YXNBbHJlYWR5U3RhcnRlZCA9IHRydWU7CiAK
ICAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay8jc2NyaXB0CiAKICAgICAgICAgewotICAgICAgICAgICAgSWdub3JlRGVzdHJ1Y3RpdmVX
cml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVu
dGVyKG1fcmVxdWVzdGVkID8gZG9jdW1lbnQuZ2V0KCkgOiAwKTsKKyAgICAgICAgICAgIElnbm9y
ZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc2N0cnVjdGl2ZVdyaXRl
Q291bnRJbmNyZW1lbnRlcihtX2lzRXh0ZXJuYWxTY3JpcHQgPyBkb2N1bWVudC5nZXQoKSA6IDAp
OwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgc2NyaXB0IGZyb20gdGhlIHNjcmlwdCBlbGVtZW50
IG5vZGUsIHVzaW5nIHRoZSBzY3JpcHQKICAgICAgICAgICAgIC8vIGJsb2NrJ3Mgc291cmNlIGFu
ZCB0aGUgc2NyaXB0IGJsb2NrJ3MgdHlwZS4KICAgICAgICAgICAgIC8vIE5vdGU6IFRoaXMgaXMg
d2hlcmUgdGhlIHNjcmlwdCBpcyBjb21waWxlZCBhbmQgYWN0dWFsbHkgZXhlY3V0ZWQuCkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNjcmlwdChjb25zdAog
CiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYgc291cmNlQ29kZSkKIHsKLSAgICBpZiAobV9pc0V2YWx1YXRlZCB8fCBzb3VyY2VDb2RlLmlz
RW1wdHkoKSkKKyAgICBpZiAod2FzQWxyZWFkeVN0YXJ0ZWQoKSB8fCBzb3VyY2VDb2RlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBt
X2VsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKQEAgLTIxMCw3ICsy
MTAsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgCiAgICAgaWYg
KCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc0V2YWx1YXRlZCA9IHRydWU7Cisg
ICAgbV93YXNBbHJlYWR5U3RhcnRlZCA9IHRydWU7CiAKICAgICBmcmFtZS0+c2NyaXB0KCktPmV4
ZWN1dGVTY3JpcHQoc291cmNlQ29kZSk7CiB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBTY3Jp
cHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZQogCiBib29sIFNjcmlwdEVsZW1lbnQ6Omln
bm9yZXNMb2FkUmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faXNFdmFsdWF0ZWQgfHwg
bV9yZXF1ZXN0ZWQgfHwgbV9jcmVhdGVkQnlQYXJzZXIgfHwgIW1fZWxlbWVudC0+aW5Eb2N1bWVu
dCgpOworICAgIHJldHVybiB3YXNBbHJlYWR5U3RhcnRlZCgpIHx8IG1faXNFeHRlcm5hbFNjcmlw
dCB8fCB3YXNJbnNlcnRlZEJ5UGFyc2VyKCkgfHwgIW1fZWxlbWVudC0+aW5Eb2N1bWVudCgpOwog
fQogCiBib29sIFNjcmlwdEVsZW1lbnQ6OnNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSBjb25z
dApJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gNzIyNjYpCisrKyBXZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKSA9IDA7CiAKKyAgICBib29sIGhhdmVGaXJlZExvYWRF
dmVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGF2ZUZpcmVkTG9hZDsgfQorCiBwcm90ZWN0ZWQ6Ci0g
ICAgYm9vbCBoYXZlRmlyZWRMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZpcmVkTG9hZDsg
fQotICAgIHZvaWQgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KGJvb2wgZmlyZWRMb2FkKSB7IG1fZmly
ZWRMb2FkID0gZmlyZWRMb2FkOyB9Ci0gICAgYm9vbCBjcmVhdGVkQnlQYXJzZXIoKSBjb25zdCB7
IHJldHVybiBtX2NyZWF0ZWRCeVBhcnNlcjsgfQotICAgIGJvb2wgaXNFdmFsdWF0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRXZhbHVhdGVkOyB9CisgICAgdm9pZCBzZXRIYXZlRmlyZWRMb2FkRXZl
bnQoYm9vbCBoYXZlRmlyZWRMb2FkKSB7IG1faGF2ZUZpcmVkTG9hZCA9IGhhdmVGaXJlZExvYWQ7
IH0KKyAgICBib29sIHdhc0luc2VydGVkQnlQYXJzZXIoKSBjb25zdCB7IHJldHVybiBtX3dhc0lu
c2VydGVkQnlQYXJzZXI7IH0KKyAgICBib29sIHdhc0FscmVhZHlTdGFydGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV93YXNBbHJlYWR5U3RhcnRlZDsgfQogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB1
c2VkIGJ5IG91ciBwYXJlbnQgY2xhc3Nlcy4KICAgICB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50
KGNvbnN0IFN0cmluZyYgc291cmNlVXJsKTsKQEAgLTg1LDEwICs4NiwxMCBAQCBwcml2YXRlOgog
CiAgICAgRWxlbWVudCogbV9lbGVtZW50OwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFNjcmlwdD4gbV9jYWNoZWRTY3JpcHQ7Ci0gICAgYm9vbCBtX2NyZWF0ZWRCeVBhcnNlcjsgLy8g
SFRNTDU6ICJwYXJzZXItaW5zZXJ0ZWQiCi0gICAgYm9vbCBtX3JlcXVlc3RlZDsKLSAgICBib29s
IG1faXNFdmFsdWF0ZWQ7IC8vIEhUTUw1OiAiYWxyZWFkeSBzdGFydGVkIgotICAgIGJvb2wgbV9m
aXJlZExvYWQ7CisgICAgYm9vbCBtX3dhc0luc2VydGVkQnlQYXJzZXI7CisgICAgYm9vbCBtX2lz
RXh0ZXJuYWxTY3JpcHQ7CisgICAgYm9vbCBtX3dhc0FscmVhZHlTdGFydGVkOworICAgIGJvb2wg
bV9oYXZlRmlyZWRMb2FkOwogfTsKIAogU2NyaXB0RWxlbWVudCogdG9TY3JpcHRFbGVtZW50KEVs
ZW1lbnQqKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzIy
NjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwxNiArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1pbmxpbmUgSFRNTFNjcmlwdEVsZW1lbnQ6OkhUTUxTY3JpcHRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIsIGJvb2wgaXNFdmFsdWF0ZWQpCitpbmxpbmUgSFRNTFNjcmlwdEVs
ZW1lbnQ6OkhUTUxTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIHdhc0FscmVh
ZHlTdGFydGVkKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCi0gICAgLCBT
Y3JpcHRFbGVtZW50KHRoaXMsIGNyZWF0ZWRCeVBhcnNlciwgaXNFdmFsdWF0ZWQpCisgICAgLCBT
Y3JpcHRFbGVtZW50KHRoaXMsIHdhc0luc2VydGVkQnlQYXJzZXIsIHdhc0FscmVhZHlTdGFydGVk
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHNjcmlwdFRhZykpOwogfQogCi1QYXNzUmVmUHRy
PEhUTUxTY3JpcHRFbGVtZW50PiBIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpCitQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBIVE1MU2NyaXB0RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCB3YXNJbnNlcnRlZEJ5UGFyc2VyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNj
cmlwdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlciwgZmFsc2UpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTY3JpcHRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBmYWxzZSkpOwogfQogCiBib29sIEhUTUxTY3JpcHRF
bGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpIGNvbnN0CkBAIC0xNzUsNyAr
MTc1LDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZQogCiBQYXNz
UmVmUHRyPEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0
cmlidXRlc0FuZENoaWxkcmVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCBpc0V2YWx1YXRl
ZCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU2NyaXB0RWxlbWVudCh0YWdRTmFt
ZSgpLCBkb2N1bWVudCgpLCBmYWxzZSwgd2FzQWxyZWFkeVN0YXJ0ZWQoKSkpOwogfQogCiB9Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gNzIyNjYpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTcgKzMxLDE1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFNjcmlwdEVsZW1lbnQgOiBwdWJs
aWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBTY3JpcHRFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCosIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlcik7CiAKICAgICBTdHJpbmcgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIHNjcmlwdENvbnRlbnQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBT
dHJpbmcmKTsKIAogICAgIEtVUkwgc3JjKCkgY29uc3Q7CiAKLSAgICBib29sIGhhdmVGaXJlZExv
YWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEVsZW1lbnQ6OmhhdmVGaXJlZExvYWRFdmVu
dCgpOyB9Ci0KIHByaXZhdGU6Ci0gICAgSFRNTFNjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIGJvb2wgaXNFdmFsdWF0ZWQp
OworICAgIEhUTUxTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCos
IGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCB3YXNBbHJlYWR5U3RhcnRlZCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzIyNjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTUgKzMxLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotaW5saW5lIFNWR1NjcmlwdEVsZW1lbnQ6OlNWR1NjcmlwdEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRC
eVBhcnNlciwgYm9vbCBpc0V2YWx1YXRlZCkKK2lubGluZSBTVkdTY3JpcHRFbGVtZW50OjpTVkdT
Y3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIHdhc0FscmVhZHlTdGFydGVkKQog
ICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIFNjcmlwdEVsZW1lbnQo
dGhpcywgY3JlYXRlZEJ5UGFyc2VyLCBpc0V2YWx1YXRlZCkKKyAgICAsIFNjcmlwdEVsZW1lbnQo
dGhpcywgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgd2FzQWxyZWFkeVN0YXJ0ZWQpCiB7CiB9CiAKLVBh
c3NSZWZQdHI8U1ZHU2NyaXB0RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpCitQYXNzUmVmUHRyPFNWR1NjcmlwdEVsZW1lbnQ+IFNWR1NjcmlwdEVsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgaW5zZXJ0ZWRCeVBhcnNlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1Nj
cmlwdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlciwgZmFsc2UpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1NjcmlwdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQsIGluc2VydGVkQnlQYXJzZXIsIGZhbHNlKSk7CiB9CiAKIHZvaWQgU1ZHU2NyaXB0RWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQpAQCAtNjgsNyArNjgsNyBA
QCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgICAgIC8vIEhh
bmRsZSBkeW5hbWljIHVwZGF0ZXMgb2YgdGhlICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJyBh
dHRyaWJ1dGUuIE9ubHkgcG9zc2libGUgY2FzZTogY2hhbmdpbmcgZnJvbSAndHJ1ZScgdG8gJ2Zh
bHNlJwogICAgICAgICAvLyBjYXVzZXMgYW4gaW1tZWRpYXRlIGRpc3BhdGNoIG9mIHRoZSBTVkdM
b2FkIGV2ZW50LiBJZiB0aGUgYXR0cmlidXRlIHZhbHVlIHdhcyAnZmFsc2UnIGJlZm9yZSBpbnNl
cnRpbmcgdGhlIHNjcmlwdCBlbGVtZW50CiAgICAgICAgIC8vIGluIHRoZSBkb2N1bWVudCwgdGhl
IFNWR0xvYWQgZXZlbnQgaGFzIGFscmVhZHkgYmVlbiBkaXNwYXRjaGVkLgotICAgICAgICBpZiAo
IWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSAmJiAhaGF2ZUZpcmVkTG9hZEV2
ZW50KCkgJiYgIWNyZWF0ZWRCeVBhcnNlcigpKSB7CisgICAgICAgIGlmICghZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpICYmICFoYXZlRmlyZWRMb2FkRXZlbnQoKSAmJiAhd2Fz
SW5zZXJ0ZWRCeVBhcnNlcigpKSB7CiAgICAgICAgICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQo
dHJ1ZSk7CiAgICAgICAgICAgICBBU1NFUlQoaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkp
OwogCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRv
RG9jdW0KICAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIFNjcmlw
dEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkpOwog
Ci0gICAgaWYgKGNyZWF0ZWRCeVBhcnNlcigpKQorICAgIGlmICh3YXNJbnNlcnRlZEJ5UGFyc2Vy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEV2ZW50dWFsbHkgc2VuZCBTVkdMb2FkIGV2
ZW50IG5vdyBmb3IgdGhlIGR5bmFtaWNhbGx5IGluc2VydGVkIHNjcmlwdCBlbGVtZW50CkBAIC0y
MDEsNyArMjAxLDcgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVudAog
ewogICAgIGJvb2wgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRCYXNlVmFsdWUoKTsKIAotICAgIGlmIChjcmVhdGVkQnlQYXJzZXIoKSkKKyAgICBp
ZiAod2FzSW5zZXJ0ZWRCeVBhcnNlcigpKQogICAgICAgICBBU1NFUlQoZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCAhPSBoYXZlRmlyZWRMb2FkRXZlbnQoKSk7CiAgICAgZWxzZSBpZiAoaGF2ZUZp
cmVkTG9hZEV2ZW50KCkpIHsKICAgICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBmaXJlZCBhbiBs
b2FkIGV2ZW50IGFuZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIGlzIHNldCB0byAndHJ1ZScK
QEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoRXJyb3JF
dmVuCiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y2xvbmVFbGVtZW50
V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTVkdTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCBp
c0V2YWx1YXRlZCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdTY3JpcHRFbGVtZW50
KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCB3YXNBbHJlYWR5U3RhcnRlZCgpKSk7CiB9
CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDcyMjY2KQorKysgV2Vi
Q29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyArMzUs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBw
dWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLCBwdWJsaWMgU2NyaXB0RWxlbWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTVkdTY3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdTY3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50KiwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyKTsKIAogICAgICAgICBTdHJpbmcgdHlw
ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBib29sIGlzRXZhbHVhdGVkKTsKKyAgICAg
ICAgU1ZHU2NyaXB0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29s
IHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgd2FzQWxyZWFkeVN0YXJ0ZWQpOwogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74259</attachid>
            <date>2010-11-18 10:46:44 -0800</date>
            <delta_ts>2010-11-18 11:06:51 -0800</delta_ts>
            <desc>updated ChangeLog</desc>
            <filename>bug-49705-20101118104643.patch</filename>
            <type>text/plain</type>
            <size>14926</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjMwOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTAtMTEtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0hU
TUw1XSBSZW5hbWUgbWVtYmVyIHZhcmlhYmxlcyBvZiBIVE1MU2NyaXB0RWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk3MDUKKworICAgICAg
ICBSZW5hbWVkIG1fd2FzQ3JlYXRlZEJ5UGFyc2VyIHRvIG1fd2FzSW5zZXJ0ZWRCeVBhcnNlciwg
bV9yZXF1ZXN0ZWQgdG8gbV9pc0V4dGVybmFsU2NyaXB0LAorICAgICAgICBtX2lzRXZhbHVhdGVk
IHRvIG1fd2FzQWxyZWFkeVN0YXJ0ZWQsIGFuZCBtX2ZpcmVkTG9hZCB0byBtX2hhdmVGaXJlZExv
YWQuCisKKyAgICAgICAgQWxzbyBtYWRlIFNjcmlwdEVsZW1lbnQncyBoYXZlRmlyZWRMb2FkRXZl
bnQgYW5kIHJlbW92ZWQgSFRNTFNjcmlwdEVsZW1lbnQncyBoYXZlRmlyZWRMb2FkRXZlbnQuCisg
ICAgICAgIFRoaXMgZWZmZWN0aXZlbHkgYWRkcyB0aGUgc2FtZSBmdW5jdGlvbiB0byBTVkdTY3Jp
cHRFbGVtZW50LCB3aGljaCBpc24ndCBjdXJyZW50bHkgdXNlZCBhbnl3aGVyZS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYXJlIGFkZGVkIHNpbmNlIHRoaXMgaXMgYSByZWZhY3RvcmluZy4KKwor
ICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEVsZW1lbnQ6OlNjcmlwdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmZp
bmlzaFBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpy
ZXF1ZXN0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRl
U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6aWdub3Jlc0xvYWRSZXF1ZXN0KToK
KyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RWxlbWVudDo6aGF2ZUZpcmVkTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6OnNldEhhdmVGaXJlZExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
bGVtZW50Ojp3YXNJbnNlcnRlZEJ5UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6Ondhc0FscmVhZHlTdGFydGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpIVE1MU2NyaXB0
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0
QXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU2NyaXB0RWxlbWVudDo6U1ZHU2NyaXB0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTY3JpcHRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3Jp
cHRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
Y3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
Y3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKToK
KyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorCiAyMDEwLTExLTE2ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KSW5kZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MjI2NikKKysrIFdlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMyArNTEsMTMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRFbGVtZW50OjpTY3JpcHRFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBib29sIGlzRXZhbHVhdGVk
KQorU2NyaXB0RWxlbWVudDo6U2NyaXB0RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBib29sIHdh
c0luc2VydGVkQnlQYXJzZXIsIGJvb2wgd2FzQWxyZWFkeVN0YXJ0ZWQpCiAgICAgOiBtX2VsZW1l
bnQoZWxlbWVudCkKICAgICAsIG1fY2FjaGVkU2NyaXB0KDApCi0gICAgLCBtX2NyZWF0ZWRCeVBh
cnNlcihjcmVhdGVkQnlQYXJzZXIpCi0gICAgLCBtX3JlcXVlc3RlZChmYWxzZSkKLSAgICAsIG1f
aXNFdmFsdWF0ZWQoaXNFdmFsdWF0ZWQpCi0gICAgLCBtX2ZpcmVkTG9hZChmYWxzZSkKKyAgICAs
IG1fd2FzSW5zZXJ0ZWRCeVBhcnNlcih3YXNJbnNlcnRlZEJ5UGFyc2VyKQorICAgICwgbV9pc0V4
dGVybmFsU2NyaXB0KGZhbHNlKQorICAgICwgbV93YXNBbHJlYWR5U3RhcnRlZCh3YXNBbHJlYWR5
U3RhcnRlZCkKKyAgICAsIG1faGF2ZUZpcmVkTG9hZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9l
bGVtZW50KTsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgU2NyaXB0RWxlbWVudDo6flNjcmlwdEVsZW1l
bnQoKQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KGNvbnN0IFN0
cmluZyYgc291cmNlVXJsKQogewotICAgIGlmIChjcmVhdGVkQnlQYXJzZXIoKSAmJiAhaXNBc3lu
Y2hyb25vdXMoKSkKKyAgICBpZiAod2FzSW5zZXJ0ZWRCeVBhcnNlcigpICYmICFpc0FzeW5jaHJv
bm91cygpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNzY3JpcHQKQEAgLTkzLDcgKzkzLDcgQEAgdm9p
ZCBTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KAogCiB2b2lkIFNjcmlwdEVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKGNyZWF0ZWRCeVBhcnNlcigpKQorICAg
IGlmICh3YXNJbnNlcnRlZEJ5UGFyc2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElm
IGEgbm9kZSBpcyBpbnNlcnRlZCBhcyBhIGNoaWxkIG9mIHRoZSBzY3JpcHQgZWxlbWVudApAQCAt
MTA4LDcgKzEwOCw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmUK
ICAgICAvLyBUaGUgcGFyc2VyIGp1c3QgcmVhY2hlZCA8L3NjcmlwdD4uIElmIHdlIGhhdmUgbm8g
c3JjIGFuZCBubyB0ZXh0LAogICAgIC8vIGFsbG93IGR5bmFtaWMgbG9hZGluZyBsYXRlci4KICAg
ICBpZiAoc291cmNlVXJsLmlzRW1wdHkoKSAmJiBzY3JpcHRDb250ZW50KCkuaXNFbXB0eSgpKQot
ICAgICAgICBtX2NyZWF0ZWRCeVBhcnNlciA9IGZhbHNlOworICAgICAgICBtX3dhc0luc2VydGVk
QnlQYXJzZXIgPSBmYWxzZTsKIH0KIAogdm9pZCBTY3JpcHRFbGVtZW50OjpoYW5kbGVTb3VyY2VB
dHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpCkBAIC0xNTgsMTIgKzE1OCwxMiBAQCB2
b2lkIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHQoY29uc3QgCiAKICAgICBBU1NFUlQoIW1f
Y2FjaGVkU2NyaXB0KTsKICAgICBtX2NhY2hlZFNjcmlwdCA9IGRvY3VtZW50LT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KHNvdXJjZVVybCwgc2NyaXB0Q2hhcnNldCgpKTsK
LSAgICBtX3JlcXVlc3RlZCA9IHRydWU7CisgICAgbV9pc0V4dGVybmFsU2NyaXB0ID0gdHJ1ZTsK
IAogICAgIC8vIG1fY3JlYXRlZEJ5UGFyc2VyIGlzIG5ldmVyIHJlc2V0IC0gYWx3YXlzIHJlc2ll
ZCBhdCB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgd2hpbGUgcGFyc2luZy4KICAgICAvLyBtX2V2YWx1
YXRlZCBpcyBsZWZ0IHVudG91Y2hlZCBhcyB3ZWxsIHRvIGF2b2lkIHNjcmlwdCByZWV4ZWN1dGlv
biwgaWYgYSA8c2NyaXB0PiBlbGVtZW50CiAgICAgLy8gaXMgcmVtb3ZlZCBhbmQgcmVhcHBlbmRl
ZCB0byB0aGUgZG9jdW1lbnQuCi0gICAgbV9maXJlZExvYWQgPSBmYWxzZTsKKyAgICBtX2hhdmVG
aXJlZExvYWQgPSBmYWxzZTsKIAogICAgIGlmIChtX2NhY2hlZFNjcmlwdCkgewogICAgICAgICBt
X2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KHRoaXMpOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQg
U2NyaXB0RWxlbWVudDo6cmVxdWVzdFNjcmlwdChjb25zdCAKIAogdm9pZCBTY3JpcHRFbGVtZW50
OjpldmFsdWF0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewot
ICAgIGlmIChtX2lzRXZhbHVhdGVkIHx8IHNvdXJjZUNvZGUuaXNFbXB0eSgpIHx8ICFzaG91bGRF
eGVjdXRlQXNKYXZhU2NyaXB0KCkpCisgICAgaWYgKHdhc0FscmVhZHlTdGFydGVkKCkgfHwgc291
cmNlQ29kZS5pc0VtcHR5KCkgfHwgIXNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1fZWxlbWVudC0+
ZG9jdW1lbnQoKTsKQEAgLTE4NCwxMiArMTg0LDEyIEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXZh
bHVhdGVTY3JpcHQoY29uc3QKICAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1
dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBtX2lzRXZhbHVhdGVkID0gdHJ1ZTsKKyAgICAgICAgbV93YXNBbHJlYWR5U3RhcnRl
ZCA9IHRydWU7CiAKICAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay8jc2NyaXB0CiAKICAgICAgICAgewotICAgICAgICAgICAgSWdub3Jl
RGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVD
b3VudEluY3JlbWVudGVyKG1fcmVxdWVzdGVkID8gZG9jdW1lbnQuZ2V0KCkgOiAwKTsKKyAgICAg
ICAgICAgIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyIGlnbm9yZURlc2N0
cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcihtX2lzRXh0ZXJuYWxTY3JpcHQgPyBkb2N1bWVu
dC5nZXQoKSA6IDApOwogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgc2NyaXB0IGZyb20gdGhlIHNj
cmlwdCBlbGVtZW50IG5vZGUsIHVzaW5nIHRoZSBzY3JpcHQKICAgICAgICAgICAgIC8vIGJsb2Nr
J3Mgc291cmNlIGFuZCB0aGUgc2NyaXB0IGJsb2NrJ3MgdHlwZS4KICAgICAgICAgICAgIC8vIE5v
dGU6IFRoaXMgaXMgd2hlcmUgdGhlIHNjcmlwdCBpcyBjb21waWxlZCBhbmQgYWN0dWFsbHkgZXhl
Y3V0ZWQuCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNj
cmlwdChjb25zdAogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKLSAgICBpZiAobV9pc0V2YWx1YXRlZCB8fCBz
b3VyY2VDb2RlLmlzRW1wdHkoKSkKKyAgICBpZiAod2FzQWxyZWFkeVN0YXJ0ZWQoKSB8fCBzb3Vy
Y2VDb2RlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxEb2N1bWVudD4g
ZG9jdW1lbnQgPSBtX2VsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsK
QEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQoY29u
c3QgCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pc0V2YWx1YXRl
ZCA9IHRydWU7CisgICAgbV93YXNBbHJlYWR5U3RhcnRlZCA9IHRydWU7CiAKICAgICBmcmFtZS0+
c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoc291cmNlQ29kZSk7CiB9CkBAIC0yNDQsNyArMjQ0LDcg
QEAgdm9pZCBTY3JpcHRFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZQogCiBib29sIFNjcmlw
dEVsZW1lbnQ6Omlnbm9yZXNMb2FkUmVxdWVzdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faXNF
dmFsdWF0ZWQgfHwgbV9yZXF1ZXN0ZWQgfHwgbV9jcmVhdGVkQnlQYXJzZXIgfHwgIW1fZWxlbWVu
dC0+aW5Eb2N1bWVudCgpOworICAgIHJldHVybiB3YXNBbHJlYWR5U3RhcnRlZCgpIHx8IG1faXNF
eHRlcm5hbFNjcmlwdCB8fCB3YXNJbnNlcnRlZEJ5UGFyc2VyKCkgfHwgIW1fZWxlbWVudC0+aW5E
b2N1bWVudCgpOwogfQogCiBib29sIFNjcmlwdEVsZW1lbnQ6OnNob3VsZEV4ZWN1dGVBc0phdmFT
Y3JpcHQoKSBjb25zdApJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gNzIyNjYpCisrKyBX
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwx
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEVycm9yRXZlbnQoKSA9IDA7CiAKKyAgICBib29sIGhh
dmVGaXJlZExvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGF2ZUZpcmVkTG9hZDsgfQorCiBw
cm90ZWN0ZWQ6Ci0gICAgYm9vbCBoYXZlRmlyZWRMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBt
X2ZpcmVkTG9hZDsgfQotICAgIHZvaWQgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KGJvb2wgZmlyZWRM
b2FkKSB7IG1fZmlyZWRMb2FkID0gZmlyZWRMb2FkOyB9Ci0gICAgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0ZWRCeVBhcnNlcjsgfQotICAgIGJvb2wgaXNFdmFs
dWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZhbHVhdGVkOyB9CisgICAgdm9pZCBzZXRIYXZl
RmlyZWRMb2FkRXZlbnQoYm9vbCBoYXZlRmlyZWRMb2FkKSB7IG1faGF2ZUZpcmVkTG9hZCA9IGhh
dmVGaXJlZExvYWQ7IH0KKyAgICBib29sIHdhc0luc2VydGVkQnlQYXJzZXIoKSBjb25zdCB7IHJl
dHVybiBtX3dhc0luc2VydGVkQnlQYXJzZXI7IH0KKyAgICBib29sIHdhc0FscmVhZHlTdGFydGVk
KCkgY29uc3QgeyByZXR1cm4gbV93YXNBbHJlYWR5U3RhcnRlZDsgfQogCiAgICAgLy8gSGVscGVy
IGZ1bmN0aW9ucyB1c2VkIGJ5IG91ciBwYXJlbnQgY2xhc3Nlcy4KICAgICB2b2lkIGluc2VydGVk
SW50b0RvY3VtZW50KGNvbnN0IFN0cmluZyYgc291cmNlVXJsKTsKQEAgLTg1LDEwICs4NiwxMCBA
QCBwcml2YXRlOgogCiAgICAgRWxlbWVudCogbV9lbGVtZW50OwogICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFNjcmlwdD4gbV9jYWNoZWRTY3JpcHQ7Ci0gICAgYm9vbCBtX2NyZWF0ZWRC
eVBhcnNlcjsgLy8gSFRNTDU6ICJwYXJzZXItaW5zZXJ0ZWQiCi0gICAgYm9vbCBtX3JlcXVlc3Rl
ZDsKLSAgICBib29sIG1faXNFdmFsdWF0ZWQ7IC8vIEhUTUw1OiAiYWxyZWFkeSBzdGFydGVkIgot
ICAgIGJvb2wgbV9maXJlZExvYWQ7CisgICAgYm9vbCBtX3dhc0luc2VydGVkQnlQYXJzZXI7Cisg
ICAgYm9vbCBtX2lzRXh0ZXJuYWxTY3JpcHQ7CisgICAgYm9vbCBtX3dhc0FscmVhZHlTdGFydGVk
OworICAgIGJvb2wgbV9oYXZlRmlyZWRMb2FkOwogfTsKIAogU2NyaXB0RWxlbWVudCogdG9TY3Jp
cHRFbGVtZW50KEVsZW1lbnQqKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAko
cmV2aXNpb24gNzIyNjYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1pbmxpbmUgSFRNTFNjcmlwdEVsZW1lbnQ6OkhU
TUxTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIGJvb2wgaXNFdmFsdWF0ZWQpCitpbmxpbmUg
SFRNTFNjcmlwdEVsZW1lbnQ6OkhUTUxTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBi
b29sIHdhc0FscmVhZHlTdGFydGVkKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCi0gICAgLCBTY3JpcHRFbGVtZW50KHRoaXMsIGNyZWF0ZWRCeVBhcnNlciwgaXNFdmFsdWF0
ZWQpCisgICAgLCBTY3JpcHRFbGVtZW50KHRoaXMsIHdhc0luc2VydGVkQnlQYXJzZXIsIHdhc0Fs
cmVhZHlTdGFydGVkKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKHNjcmlwdFRhZykpOwogfQog
Ci1QYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBj
cmVhdGVkQnlQYXJzZXIpCitQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBIVE1MU2NyaXB0
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTFNjcmlwdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNl
ciwgZmFsc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTY3JpcHRFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50LCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBmYWxzZSkpOwogfQogCiBib29s
IEhUTUxTY3JpcHRFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpIGNvbnN0
CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJv
ckV2ZQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1l
bnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEhUTUxTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNl
LCBpc0V2YWx1YXRlZCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU2NyaXB0RWxl
bWVudCh0YWdRTmFtZSgpLCBkb2N1bWVudCgpLCBmYWxzZSwgd2FzQWxyZWFkeVN0YXJ0ZWQoKSkp
OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gNzIyNjYp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTcgKzMxLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFNjcmlwdEVs
ZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBTY3JpcHRFbGVtZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxIVE1MU2NyaXB0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlcik7CiAKICAgICBTdHJp
bmcgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIHNjcmlwdENvbnRlbnQoKTsgfQogICAgIHZvaWQgc2V0
VGV4dChjb25zdCBTdHJpbmcmKTsKIAogICAgIEtVUkwgc3JjKCkgY29uc3Q7CiAKLSAgICBib29s
IGhhdmVGaXJlZExvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEVsZW1lbnQ6OmhhdmVG
aXJlZExvYWRFdmVudCgpOyB9Ci0KIHByaXZhdGU6Ci0gICAgSFRNTFNjcmlwdEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIsIGJvb2wg
aXNFdmFsdWF0ZWQpOworICAgIEhUTUxTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCosIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCB3YXNBbHJlYWR5U3Rh
cnRlZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzIyNjYpCisrKyBXZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTUgKzMxLDE1IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIFNWR1NjcmlwdEVsZW1lbnQ6OlNWR1NjcmlwdEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIGNyZWF0ZWRCeVBhcnNlciwgYm9vbCBpc0V2YWx1YXRlZCkKK2lubGluZSBTVkdTY3JpcHRF
bGVtZW50OjpTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIHdhc0FscmVh
ZHlTdGFydGVkKQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIFNj
cmlwdEVsZW1lbnQodGhpcywgY3JlYXRlZEJ5UGFyc2VyLCBpc0V2YWx1YXRlZCkKKyAgICAsIFNj
cmlwdEVsZW1lbnQodGhpcywgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgd2FzQWxyZWFkeVN0YXJ0ZWQp
CiB7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHU2NyaXB0RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpCitQYXNzUmVmUHRyPFNWR1NjcmlwdEVsZW1lbnQ+IFNWR1Nj
cmlwdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCogZG9jdW1lbnQsIGJvb2wgaW5zZXJ0ZWRCeVBhcnNlcikKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNWR1NjcmlwdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNl
ciwgZmFsc2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1NjcmlwdEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQsIGluc2VydGVkQnlQYXJzZXIsIGZhbHNlKSk7CiB9CiAKIHZvaWQgU1ZH
U2NyaXB0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQpAQCAt
NjgsNyArNjgsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAg
ICAgICAgIC8vIEhhbmRsZSBkeW5hbWljIHVwZGF0ZXMgb2YgdGhlICdleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkJyBhdHRyaWJ1dGUuIE9ubHkgcG9zc2libGUgY2FzZTogY2hhbmdpbmcgZnJvbSAn
dHJ1ZScgdG8gJ2ZhbHNlJwogICAgICAgICAvLyBjYXVzZXMgYW4gaW1tZWRpYXRlIGRpc3BhdGNo
IG9mIHRoZSBTVkdMb2FkIGV2ZW50LiBJZiB0aGUgYXR0cmlidXRlIHZhbHVlIHdhcyAnZmFsc2Un
IGJlZm9yZSBpbnNlcnRpbmcgdGhlIHNjcmlwdCBlbGVtZW50CiAgICAgICAgIC8vIGluIHRoZSBk
b2N1bWVudCwgdGhlIFNWR0xvYWQgZXZlbnQgaGFzIGFscmVhZHkgYmVlbiBkaXNwYXRjaGVkLgot
ICAgICAgICBpZiAoIWV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSAmJiAhaGF2
ZUZpcmVkTG9hZEV2ZW50KCkgJiYgIWNyZWF0ZWRCeVBhcnNlcigpKSB7CisgICAgICAgIGlmICgh
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpICYmICFoYXZlRmlyZWRMb2FkRXZl
bnQoKSAmJiAhd2FzSW5zZXJ0ZWRCeVBhcnNlcigpKSB7CiAgICAgICAgICAgICBzZXRIYXZlRmly
ZWRMb2FkRXZlbnQodHJ1ZSk7CiAgICAgICAgICAgICBBU1NFUlQoaGF2ZUxvYWRlZFJlcXVpcmVk
UmVzb3VyY2VzKCkpOwogCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW0KICAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgp
OwogICAgIFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KHNvdXJjZUF0dHJpYnV0
ZVZhbHVlKCkpOwogCi0gICAgaWYgKGNyZWF0ZWRCeVBhcnNlcigpKQorICAgIGlmICh3YXNJbnNl
cnRlZEJ5UGFyc2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEV2ZW50dWFsbHkgc2Vu
ZCBTVkdMb2FkIGV2ZW50IG5vdyBmb3IgdGhlIGR5bmFtaWNhbGx5IGluc2VydGVkIHNjcmlwdCBl
bGVtZW50CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpkaXNwYXRj
aExvYWRFdmVudAogewogICAgIGJvb2wgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCA9IGV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKTsKIAotICAgIGlmIChjcmVhdGVkQnlQYXJz
ZXIoKSkKKyAgICBpZiAod2FzSW5zZXJ0ZWRCeVBhcnNlcigpKQogICAgICAgICBBU1NFUlQoZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCAhPSBoYXZlRmlyZWRMb2FkRXZlbnQoKSk7CiAgICAgZWxz
ZSBpZiAoaGF2ZUZpcmVkTG9hZEV2ZW50KCkpIHsKICAgICAgICAgLy8gSWYgd2UndmUgYWxyZWFk
eSBmaXJlZCBhbiBsb2FkIGV2ZW50IGFuZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIGlzIHNl
dCB0byAndHJ1ZScKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRp
c3BhdGNoRXJyb3JFdmVuCiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6
Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50
KCksIGZhbHNlLCBpc0V2YWx1YXRlZCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdT
Y3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3VtZW50KCksIGZhbHNlLCB3YXNBbHJlYWR5U3Rh
cnRlZCgpKSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDcy
MjY2KQorKysgV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSwxMyArMzUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLCBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgU2NyaXB0RWxlbWVudCB7CiAgICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdTY3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdTY3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFyc2VyKTsKIAogICAgICAg
ICBTdHJpbmcgdHlwZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFR5cGUoY29uc3QgU3RyaW5n
Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBib29sIGlzRXZhbHVh
dGVkKTsKKyAgICAgICAgU1ZHU2NyaXB0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqLCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgd2FzQWxyZWFkeVN0YXJ0ZWQp
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74263</attachid>
            <date>2010-11-18 11:06:54 -0800</date>
            <delta_ts>2010-11-30 17:54:08 -0800</delta_ts>
            <desc>fixed comment</desc>
            <filename>bug-49705-20101118110653.patch</filename>
            <type>text/plain</type>
            <size>15132</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjMxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTAtMTEtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0hU
TUw1XSBSZW5hbWUgbWVtYmVyIHZhcmlhYmxlcyBvZiBIVE1MU2NyaXB0RWxlbWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk3MDUKKworICAgICAg
ICBSZW5hbWVkIG1fd2FzQ3JlYXRlZEJ5UGFyc2VyIHRvIG1fd2FzSW5zZXJ0ZWRCeVBhcnNlciwg
bV9yZXF1ZXN0ZWQgdG8gbV9pc0V4dGVybmFsU2NyaXB0LAorICAgICAgICBtX2lzRXZhbHVhdGVk
IHRvIG1fd2FzQWxyZWFkeVN0YXJ0ZWQsIGFuZCBtX2ZpcmVkTG9hZCB0byBtX2hhdmVGaXJlZExv
YWQuCisKKyAgICAgICAgQWxzbyBtYWRlIFNjcmlwdEVsZW1lbnQncyBoYXZlRmlyZWRMb2FkRXZl
bnQgYW5kIHJlbW92ZWQgSFRNTFNjcmlwdEVsZW1lbnQncyBoYXZlRmlyZWRMb2FkRXZlbnQuCisg
ICAgICAgIFRoaXMgZWZmZWN0aXZlbHkgYWRkcyB0aGUgc2FtZSBmdW5jdGlvbiB0byBTVkdTY3Jp
cHRFbGVtZW50LCB3aGljaCBpc24ndCBjdXJyZW50bHkgdXNlZCBhbnl3aGVyZS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYXJlIGFkZGVkIHNpbmNlIHRoaXMgaXMgYSByZWZhY3RvcmluZy4KKwor
ICAgICAgICAqIGRvbS9TY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEVsZW1lbnQ6OlNjcmlwdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmZp
bmlzaFBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50Ojpy
ZXF1ZXN0U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRl
U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVsZW1lbnQ6OmV4ZWN1dGVTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6aWdub3Jlc0xvYWRSZXF1ZXN0KToK
KyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RWxlbWVudDo6aGF2ZUZpcmVkTG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6OnNldEhhdmVGaXJlZExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
bGVtZW50Ojp3YXNJbnNlcnRlZEJ5UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEVs
ZW1lbnQ6Ondhc0FscmVhZHlTdGFydGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpIVE1MU2NyaXB0
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0
QXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU2NyaXB0RWxlbWVudDo6U1ZHU2NyaXB0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTY3JpcHRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3Jp
cHRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
Y3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
Y3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKToK
KyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorCiAyMDEwLTExLTE2ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KSW5kZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MjMxMSkKKysrIFdlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMyArNTEsMTMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRFbGVtZW50OjpTY3JpcHRFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBib29sIGlzRXZhbHVhdGVk
KQorU2NyaXB0RWxlbWVudDo6U2NyaXB0RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBib29sIHdh
c0luc2VydGVkQnlQYXJzZXIsIGJvb2wgd2FzQWxyZWFkeVN0YXJ0ZWQpCiAgICAgOiBtX2VsZW1l
bnQoZWxlbWVudCkKICAgICAsIG1fY2FjaGVkU2NyaXB0KDApCi0gICAgLCBtX2NyZWF0ZWRCeVBh
cnNlcihjcmVhdGVkQnlQYXJzZXIpCi0gICAgLCBtX3JlcXVlc3RlZChmYWxzZSkKLSAgICAsIG1f
aXNFdmFsdWF0ZWQoaXNFdmFsdWF0ZWQpCi0gICAgLCBtX2ZpcmVkTG9hZChmYWxzZSkKKyAgICAs
IG1fd2FzSW5zZXJ0ZWRCeVBhcnNlcih3YXNJbnNlcnRlZEJ5UGFyc2VyKQorICAgICwgbV9pc0V4
dGVybmFsU2NyaXB0KGZhbHNlKQorICAgICwgbV93YXNBbHJlYWR5U3RhcnRlZCh3YXNBbHJlYWR5
U3RhcnRlZCkKKyAgICAsIG1faGF2ZUZpcmVkTG9hZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9l
bGVtZW50KTsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgU2NyaXB0RWxlbWVudDo6flNjcmlwdEVsZW1l
bnQoKQogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KGNvbnN0IFN0
cmluZyYgc291cmNlVXJsKQogewotICAgIGlmIChjcmVhdGVkQnlQYXJzZXIoKSAmJiAhaXNBc3lu
Y2hyb25vdXMoKSkKKyAgICBpZiAod2FzSW5zZXJ0ZWRCeVBhcnNlcigpICYmICFpc0FzeW5jaHJv
bm91cygpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNzY3JpcHQKQEAgLTkzLDcgKzkzLDcgQEAgdm9p
ZCBTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KAogCiB2b2lkIFNjcmlwdEVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKGNyZWF0ZWRCeVBhcnNlcigpKQorICAg
IGlmICh3YXNJbnNlcnRlZEJ5UGFyc2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElm
IGEgbm9kZSBpcyBpbnNlcnRlZCBhcyBhIGNoaWxkIG9mIHRoZSBzY3JpcHQgZWxlbWVudApAQCAt
MTA4LDcgKzEwOCw3IEBAIHZvaWQgU2NyaXB0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmUK
ICAgICAvLyBUaGUgcGFyc2VyIGp1c3QgcmVhY2hlZCA8L3NjcmlwdD4uIElmIHdlIGhhdmUgbm8g
c3JjIGFuZCBubyB0ZXh0LAogICAgIC8vIGFsbG93IGR5bmFtaWMgbG9hZGluZyBsYXRlci4KICAg
ICBpZiAoc291cmNlVXJsLmlzRW1wdHkoKSAmJiBzY3JpcHRDb250ZW50KCkuaXNFbXB0eSgpKQot
ICAgICAgICBtX2NyZWF0ZWRCeVBhcnNlciA9IGZhbHNlOworICAgICAgICBtX3dhc0luc2VydGVk
QnlQYXJzZXIgPSBmYWxzZTsKIH0KIAogdm9pZCBTY3JpcHRFbGVtZW50OjpoYW5kbGVTb3VyY2VB
dHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBzb3VyY2VVcmwpCkBAIC0xNTgsMTIgKzE1OCwxMiBAQCB2
b2lkIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RTY3JpcHQoY29uc3QgCiAKICAgICBBU1NFUlQoIW1f
Y2FjaGVkU2NyaXB0KTsKICAgICBtX2NhY2hlZFNjcmlwdCA9IGRvY3VtZW50LT5jYWNoZWRSZXNv
dXJjZUxvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KHNvdXJjZVVybCwgc2NyaXB0Q2hhcnNldCgpKTsK
LSAgICBtX3JlcXVlc3RlZCA9IHRydWU7CisgICAgbV9pc0V4dGVybmFsU2NyaXB0ID0gdHJ1ZTsK
IAotICAgIC8vIG1fY3JlYXRlZEJ5UGFyc2VyIGlzIG5ldmVyIHJlc2V0IC0gYWx3YXlzIHJlc2ll
ZCBhdCB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgd2hpbGUgcGFyc2luZy4KLSAgICAvLyBtX2V2YWx1
YXRlZCBpcyBsZWZ0IHVudG91Y2hlZCBhcyB3ZWxsIHRvIGF2b2lkIHNjcmlwdCByZWV4ZWN1dGlv
biwgaWYgYSA8c2NyaXB0PiBlbGVtZW50CisgICAgLy8gbV93YXNJbnNlcnRlZEJ5UGFyc2VyIGlz
IG5ldmVyIHJlc2V0IC0gYWx3YXlzIHJlc2llZCBhdCB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgd2hp
bGUgcGFyc2luZy4KKyAgICAvLyBtX3dhc0FscmVhZHlTdGFydGVkIGlzIGxlZnQgdW50b3VjaGVk
IGFzIHdlbGwgdG8gYXZvaWQgc2NyaXB0IHJlZXhlY3V0aW9uLCBpZiBhIDxzY3JpcHQ+IGVsZW1l
bnQKICAgICAvLyBpcyByZW1vdmVkIGFuZCByZWFwcGVuZGVkIHRvIHRoZSBkb2N1bWVudC4KLSAg
ICBtX2ZpcmVkTG9hZCA9IGZhbHNlOworICAgIG1faGF2ZUZpcmVkTG9hZCA9IGZhbHNlOwogCiAg
ICAgaWYgKG1fY2FjaGVkU2NyaXB0KSB7CiAgICAgICAgIG1fY2FjaGVkU2NyaXB0LT5hZGRDbGll
bnQodGhpcyk7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpyZXF1ZXN0
U2NyaXB0KGNvbnN0IAogCiB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRlU2NyaXB0KGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7Ci0gICAgaWYgKG1faXNFdmFsdWF0ZWQg
fHwgc291cmNlQ29kZS5pc0VtcHR5KCkgfHwgIXNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKSkK
KyAgICBpZiAod2FzQWxyZWFkeVN0YXJ0ZWQoKSB8fCBzb3VyY2VDb2RlLmlzRW1wdHkoKSB8fCAh
c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gbV9lbGVtZW50LT5kb2N1bWVudCgpOwpAQCAtMTg0LDEy
ICsxODQsMTIgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNjcmlwdChjb25zdAogICAg
ICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1
dGVTY3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1faXNFdmFsdWF0ZWQg
PSB0cnVlOworICAgICAgICBtX3dhc0FscmVhZHlTdGFydGVkID0gdHJ1ZTsKIAogICAgICAgICAv
LyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNzY3Jp
cHQKIAogICAgICAgICB7Ci0gICAgICAgICAgICBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJ
bmNyZW1lbnRlciBpZ25vcmVEZXNjdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIobV9yZXF1
ZXN0ZWQgPyBkb2N1bWVudC5nZXQoKSA6IDApOworICAgICAgICAgICAgSWdub3JlRGVzdHJ1Y3Rp
dmVXcml0ZUNvdW50SW5jcmVtZW50ZXIgaWdub3JlRGVzY3RydWN0aXZlV3JpdGVDb3VudEluY3Jl
bWVudGVyKG1faXNFeHRlcm5hbFNjcmlwdCA/IGRvY3VtZW50LmdldCgpIDogMCk7CiAgICAgICAg
ICAgICAvLyBDcmVhdGUgYSBzY3JpcHQgZnJvbSB0aGUgc2NyaXB0IGVsZW1lbnQgbm9kZSwgdXNp
bmcgdGhlIHNjcmlwdAogICAgICAgICAgICAgLy8gYmxvY2sncyBzb3VyY2UgYW5kIHRoZSBzY3Jp
cHQgYmxvY2sncyB0eXBlLgogICAgICAgICAgICAgLy8gTm90ZTogVGhpcyBpcyB3aGVyZSB0aGUg
c2NyaXB0IGlzIGNvbXBpbGVkIGFuZCBhY3R1YWxseSBleGVjdXRlZC4KQEAgLTIwMiw3ICsyMDIs
NyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRlU2NyaXB0KGNvbnN0CiAKIHZvaWQgU2Ny
aXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlKQogewotICAgIGlmIChtX2lzRXZhbHVhdGVkIHx8IHNvdXJjZUNvZGUuaXNFbXB0eSgpKQor
ICAgIGlmICh3YXNBbHJlYWR5U3RhcnRlZCgpIHx8IHNvdXJjZUNvZGUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1fZWxlbWVudC0+
ZG9jdW1lbnQoKTsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZv
aWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdChjb25zdCAKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2lzRXZhbHVhdGVkID0gdHJ1ZTsKKyAgICBtX3dhc0Fs
cmVhZHlTdGFydGVkID0gdHJ1ZTsKIAogICAgIGZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlw
dChzb3VyY2VDb2RlKTsKIH0KQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIFNjcmlwdEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlCiAKIGJvb2wgU2NyaXB0RWxlbWVudDo6aWdub3Jlc0xvYWRS
ZXF1ZXN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pc0V2YWx1YXRlZCB8fCBtX3JlcXVlc3Rl
ZCB8fCBtX2NyZWF0ZWRCeVBhcnNlciB8fCAhbV9lbGVtZW50LT5pbkRvY3VtZW50KCk7CisgICAg
cmV0dXJuIHdhc0FscmVhZHlTdGFydGVkKCkgfHwgbV9pc0V4dGVybmFsU2NyaXB0IHx8IHdhc0lu
c2VydGVkQnlQYXJzZXIoKSB8fCAhbV9lbGVtZW50LT5pbkRvY3VtZW50KCk7CiB9CiAKIGJvb2wg
U2NyaXB0RWxlbWVudDo6c2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlwdCgpIGNvbnN0CkluZGV4OiBX
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2Ny
aXB0RWxlbWVudC5oCShyZXZpc2lvbiA3MjMxMSkKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRXJyb3JFdmVudCgpID0gMDsKIAorICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9oYXZlRmlyZWRMb2FkOyB9CisKIHByb3RlY3RlZDoKLSAgICBib29sIGhh
dmVGaXJlZExvYWRFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyZWRMb2FkOyB9Ci0gICAgdm9p
ZCBzZXRIYXZlRmlyZWRMb2FkRXZlbnQoYm9vbCBmaXJlZExvYWQpIHsgbV9maXJlZExvYWQgPSBm
aXJlZExvYWQ7IH0KLSAgICBib29sIGNyZWF0ZWRCeVBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y3JlYXRlZEJ5UGFyc2VyOyB9Ci0gICAgYm9vbCBpc0V2YWx1YXRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNFdmFsdWF0ZWQ7IH0KKyAgICB2b2lkIHNldEhhdmVGaXJlZExvYWRFdmVudChib29sIGhh
dmVGaXJlZExvYWQpIHsgbV9oYXZlRmlyZWRMb2FkID0gaGF2ZUZpcmVkTG9hZDsgfQorICAgIGJv
b2wgd2FzSW5zZXJ0ZWRCeVBhcnNlcigpIGNvbnN0IHsgcmV0dXJuIG1fd2FzSW5zZXJ0ZWRCeVBh
cnNlcjsgfQorICAgIGJvb2wgd2FzQWxyZWFkeVN0YXJ0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dh
c0FscmVhZHlTdGFydGVkOyB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkgb3Vy
IHBhcmVudCBjbGFzc2VzLgogICAgIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiBzb3VyY2VVcmwpOwpAQCAtODUsMTAgKzg2LDEwIEBAIHByaXZhdGU6CiAKICAgICBFbGVt
ZW50KiBtX2VsZW1lbnQ7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBt
X2NhY2hlZFNjcmlwdDsKLSAgICBib29sIG1fY3JlYXRlZEJ5UGFyc2VyOyAvLyBIVE1MNTogInBh
cnNlci1pbnNlcnRlZCIKLSAgICBib29sIG1fcmVxdWVzdGVkOwotICAgIGJvb2wgbV9pc0V2YWx1
YXRlZDsgLy8gSFRNTDU6ICJhbHJlYWR5IHN0YXJ0ZWQiCi0gICAgYm9vbCBtX2ZpcmVkTG9hZDsK
KyAgICBib29sIG1fd2FzSW5zZXJ0ZWRCeVBhcnNlcjsKKyAgICBib29sIG1faXNFeHRlcm5hbFNj
cmlwdDsKKyAgICBib29sIG1fd2FzQWxyZWFkeVN0YXJ0ZWQ7CisgICAgYm9vbCBtX2hhdmVGaXJl
ZExvYWQ7CiB9OwogCiBTY3JpcHRFbGVtZW50KiB0b1NjcmlwdEVsZW1lbnQoRWxlbWVudCopOwpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3MjMxMSkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2
ICszNSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLWlubGluZSBIVE1MU2NyaXB0RWxlbWVudDo6SFRNTFNjcmlwdEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRC
eVBhcnNlciwgYm9vbCBpc0V2YWx1YXRlZCkKK2lubGluZSBIVE1MU2NyaXB0RWxlbWVudDo6SFRN
TFNjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgd2FzQWxyZWFkeVN0YXJ0ZWQp
CiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKLSAgICAsIFNjcmlwdEVsZW1l
bnQodGhpcywgY3JlYXRlZEJ5UGFyc2VyLCBpc0V2YWx1YXRlZCkKKyAgICAsIFNjcmlwdEVsZW1l
bnQodGhpcywgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgd2FzQWxyZWFkeVN0YXJ0ZWQpCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoc2NyaXB0VGFnKSk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTFNjcmlw
dEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK1Bhc3NS
ZWZQdHI8SFRNTFNjcmlwdEVsZW1lbnQ+IEhUTUxTY3JpcHRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHdhc0luc2Vy
dGVkQnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MU2NyaXB0RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyLCBmYWxzZSkpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTFNjcmlwdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIHdhc0lu
c2VydGVkQnlQYXJzZXIsIGZhbHNlKSk7CiB9CiAKIGJvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6Omlz
VVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikgY29uc3QKQEAgLTE3NSw3ICsxNzUsNyBAQCB2
b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaEVycm9yRXZlCiAKIFBhc3NSZWZQdHI8RWxl
bWVudD4gSFRNTFNjcmlwdEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5k
Q2hpbGRyZW4oKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFNjcmlwdEVs
ZW1lbnQodGFnUU5hbWUoKSwgZG9jdW1lbnQoKSwgZmFsc2UsIGlzRXZhbHVhdGVkKCkpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTY3JpcHRFbGVtZW50KHRhZ1FOYW1lKCksIGRvY3Vt
ZW50KCksIGZhbHNlLCB3YXNBbHJlYWR5U3RhcnRlZCgpKSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA3MjMxMSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNyArMzEsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MU2NyaXB0RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxl
bWVudCwgcHVibGljIFNjcmlwdEVsZW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxTY3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxT
Y3JpcHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9v
bCB3YXNJbnNlcnRlZEJ5UGFyc2VyKTsKIAogICAgIFN0cmluZyB0ZXh0KCkgY29uc3QgeyByZXR1
cm4gc2NyaXB0Q29udGVudCgpOyB9CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwog
CiAgICAgS1VSTCBzcmMoKSBjb25zdDsKIAotICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkg
Y29uc3QgeyByZXR1cm4gU2NyaXB0RWxlbWVudDo6aGF2ZUZpcmVkTG9hZEV2ZW50KCk7IH0KLQog
cHJpdmF0ZToKLSAgICBIVE1MU2NyaXB0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlciwgYm9vbCBpc0V2YWx1YXRlZCk7CisgICAgSFRN
TFNjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCB3YXNJ
bnNlcnRlZEJ5UGFyc2VyLCBib29sIHdhc0FscmVhZHlTdGFydGVkKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3MjMxMSkKKysrIFdlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1p
bmxpbmUgU1ZHU2NyaXB0RWxlbWVudDo6U1ZHU2NyaXB0RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyLCBi
b29sIGlzRXZhbHVhdGVkKQoraW5saW5lIFNWR1NjcmlwdEVsZW1lbnQ6OlNWR1NjcmlwdEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29s
IHdhc0luc2VydGVkQnlQYXJzZXIsIGJvb2wgd2FzQWxyZWFkeVN0YXJ0ZWQpCiAgICAgOiBTVkdF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQotICAgICwgU2NyaXB0RWxlbWVudCh0aGlzLCBjcmVh
dGVkQnlQYXJzZXIsIGlzRXZhbHVhdGVkKQorICAgICwgU2NyaXB0RWxlbWVudCh0aGlzLCB3YXNJ
bnNlcnRlZEJ5UGFyc2VyLCB3YXNBbHJlYWR5U3RhcnRlZCkKIHsKIH0KIAotUGFzc1JlZlB0cjxT
VkdTY3JpcHRFbGVtZW50PiBTVkdTY3JpcHRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikK
K1Bhc3NSZWZQdHI8U1ZHU2NyaXB0RWxlbWVudD4gU1ZHU2NyaXB0RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpbnNl
cnRlZEJ5UGFyc2VyKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHU2NyaXB0RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyLCBmYWxzZSkpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU1ZHU2NyaXB0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgaW5zZXJ0
ZWRCeVBhcnNlciwgZmFsc2UpKTsKIH0KIAogdm9pZCBTVkdTY3JpcHRFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgU1ZH
U2NyaXB0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKICAgICAgICAgLy8gSGFuZGxlIGR5bmFt
aWMgdXBkYXRlcyBvZiB0aGUgJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnIGF0dHJpYnV0ZS4g
T25seSBwb3NzaWJsZSBjYXNlOiBjaGFuZ2luZyBmcm9tICd0cnVlJyB0byAnZmFsc2UnCiAgICAg
ICAgIC8vIGNhdXNlcyBhbiBpbW1lZGlhdGUgZGlzcGF0Y2ggb2YgdGhlIFNWR0xvYWQgZXZlbnQu
IElmIHRoZSBhdHRyaWJ1dGUgdmFsdWUgd2FzICdmYWxzZScgYmVmb3JlIGluc2VydGluZyB0aGUg
c2NyaXB0IGVsZW1lbnQKICAgICAgICAgLy8gaW4gdGhlIGRvY3VtZW50LCB0aGUgU1ZHTG9hZCBl
dmVudCBoYXMgYWxyZWFkeSBiZWVuIGRpc3BhdGNoZWQuCi0gICAgICAgIGlmICghZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSgpICYmICFoYXZlRmlyZWRMb2FkRXZlbnQoKSAmJiAh
Y3JlYXRlZEJ5UGFyc2VyKCkpIHsKKyAgICAgICAgaWYgKCFleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkQmFzZVZhbHVlKCkgJiYgIWhhdmVGaXJlZExvYWRFdmVudCgpICYmICF3YXNJbnNlcnRlZEJ5
UGFyc2VyKCkpIHsKICAgICAgICAgICAgIHNldEhhdmVGaXJlZExvYWRFdmVudCh0cnVlKTsKICAg
ICAgICAgICAgIEFTU0VSVChoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSk7CiAKQEAgLTk4
LDcgKzk4LDcgQEAgdm9pZCBTVkdTY3JpcHRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bQogICAg
IFNWR0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgU2NyaXB0RWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoc291cmNlQXR0cmlidXRlVmFsdWUoKSk7CiAKLSAgICBpZiAo
Y3JlYXRlZEJ5UGFyc2VyKCkpCisgICAgaWYgKHdhc0luc2VydGVkQnlQYXJzZXIoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gRXZlbnR1YWxseSBzZW5kIFNWR0xvYWQgZXZlbnQgbm93IGZv
ciB0aGUgZHluYW1pY2FsbHkgaW5zZXJ0ZWQgc2NyaXB0IGVsZW1lbnQKQEAgLTIwMSw3ICsyMDEs
NyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW50CiB7CiAgICAgYm9v
bCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJh
c2VWYWx1ZSgpOwogCi0gICAgaWYgKGNyZWF0ZWRCeVBhcnNlcigpKQorICAgIGlmICh3YXNJbnNl
cnRlZEJ5UGFyc2VyKCkpCiAgICAgICAgIEFTU0VSVChleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
ICE9IGhhdmVGaXJlZExvYWRFdmVudCgpKTsKICAgICBlbHNlIGlmIChoYXZlRmlyZWRMb2FkRXZl
bnQoKSkgewogICAgICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGZpcmVkIGFuIGxvYWQgZXZlbnQg
YW5kIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgaXMgc2V0IHRvICd0cnVlJwpAQCAtMjMyLDcg
KzIzMiw3IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZGlzcGF0Y2hFcnJvckV2ZW4KIAogUGFz
c1JlZlB0cjxFbGVtZW50PiBTVkdTY3JpcHRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0
cmlidXRlc0FuZENoaWxkcmVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNW
R1NjcmlwdEVsZW1lbnQodGFnUU5hbWUoKSwgZG9jdW1lbnQoKSwgZmFsc2UsIGlzRXZhbHVhdGVk
KCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1NjcmlwdEVsZW1lbnQodGFnUU5hbWUo
KSwgZG9jdW1lbnQoKSwgZmFsc2UsIHdhc0FscmVhZHlTdGFydGVkKCkpKTsKIH0KIAogfQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gNzIzMTEpCisrKyBXZWJDb3JlL3N2Zy9T
VkdTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHB1
YmxpYyBTY3JpcHRFbGVtZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR1NjcmlwdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R1NjcmlwdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBi
b29sIHdhc0luc2VydGVkQnlQYXJzZXIpOwogCiAgICAgICAgIFN0cmluZyB0eXBlKCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgc2V0VHlwZShjb25zdCBTdHJpbmcmKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFNWR1NjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIsIGJvb2wgaXNFdmFsdWF0ZWQpOworICAgICAgICBTVkdTY3Jp
cHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgd2FzSW5zZXJ0
ZWRCeVBhcnNlciwgYm9vbCB3YXNBbHJlYWR5U3RhcnRlZCk7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsK
</data>
<flag name="review"
          id="64824"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>