<?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>84103</bug_id>
          
          <creation_ts>2012-04-16 17:19:59 -0700</creation_ts>
          <short_desc>[Performance][V8] Skip Isolate look-up to find StringCache</short_desc>
          <delta_ts>2012-04-23 09:55:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84074</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603603</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-16 17:19:59 -0700</bug_when>
    <thetext>StringCache is an Isolate-local data structure. Currently, V8 bindings need to look up an Isolate to find the StringCache. By using AccessorInfo.GetIsolate() or Arguments.GetIsolate(), we can remove the Isolate look-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603605</commentid>
    <comment_count>1</comment_count>
      <attachid>137440</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-16 17:21:02 -0700</bug_when>
    <thetext>Created attachment 137440
Performance tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603613</commentid>
    <comment_count>2</comment_count>
      <attachid>137441</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-16 17:30:26 -0700</bug_when>
    <thetext>Created attachment 137441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603656</commentid>
    <comment_count>3</comment_count>
      <attachid>137441</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-16 18:08:39 -0700</bug_when>
    <thetext>Comment on attachment 137441
Patch

Attachment 137441 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12412665</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603884</commentid>
    <comment_count>4</comment_count>
      <attachid>137499</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-17 02:20:40 -0700</bug_when>
    <thetext>Created attachment 137499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603885</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-17 02:24:18 -0700</bug_when>
    <thetext>Rolled chromium DEPS to r132474 and re-uploaded the patch. The patch requires V8 r11306.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603890</commentid>
    <comment_count>6</comment_count>
      <attachid>137502</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-17 02:27:43 -0700</bug_when>
    <thetext>Created attachment 137502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604096</commentid>
    <comment_count>7</comment_count>
      <attachid>137502</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-17 09:54:54 -0700</bug_when>
    <thetext>Comment on attachment 137502
Patch

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

&gt; Source/WebCore/ChangeLog:34
&gt; +        Performance test: https://bugs.webkit.org/attachment.cgi?id=137440
&gt; +        div.id:           30.70ns -&gt; 26.70ns (+15%)
&gt; +        div.className:    31.10ns -&gt; 26.40ns (+18%)
&gt; +        div.nodeName:     37.70ns -&gt; 33.00ns (+14%)
&gt; +        text.nodeValue:   31.40ns -&gt; 25.90ns (+21%)
&gt; +        text.textContent: 51.50ns -&gt; 45.90ns (+12%)

Should we add it as a performance test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604098</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-17 09:58:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Source/WebCore/ChangeLog:34
&gt; &gt; +        Performance test: https://bugs.webkit.org/attachment.cgi?id=137440
&gt; &gt; +        div.id:           30.70ns -&gt; 26.70ns (+15%)
&gt; &gt; +        div.className:    31.10ns -&gt; 26.40ns (+18%)
&gt; &gt; +        div.nodeName:     37.70ns -&gt; 33.00ns (+14%)
&gt; &gt; +        text.nodeValue:   31.40ns -&gt; 25.90ns (+21%)
&gt; &gt; +        text.textContent: 51.50ns -&gt; 45.90ns (+12%)
&gt; 
&gt; Should we add it as a performance test?

Bindings/dom-attributes.html should cover it. I&apos;ll update it later. (Currently, the div.id test in dom-attributes.html returns null, which is a different call-path from the performance test attached in this bug.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604270</commentid>
    <comment_count>9</comment_count>
      <attachid>137502</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 13:05:40 -0700</bug_when>
    <thetext>Comment on attachment 137502
Patch

Clearing flags on attachment: 137502

Committed r114421: &lt;http://trac.webkit.org/changeset/114421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604271</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 13:05:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605649</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-19 10:00:34 -0700</bug_when>
    <thetext>Reverted r114421 for reason:

Chromium crash

Committed r114645: &lt;http://trac.webkit.org/changeset/114645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607766</commentid>
    <comment_count>12</comment_count>
      <attachid>138368</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-23 09:54:45 -0700</bug_when>
    <thetext>Created attachment 138368
Patch for relanding. It is revealed that the patch was innocent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>607767</commentid>
    <comment_count>13</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-04-23 09:55:28 -0700</bug_when>
    <thetext>Committed r114912: &lt;http://trac.webkit.org/changeset/114912&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>137440</attachid>
            <date>2012-04-16 17:21:02 -0700</date>
            <delta_ts>2012-04-16 17:21:02 -0700</delta_ts>
            <desc>Performance tests</desc>
            <filename>dom_stringcache.html</filename>
            <type>text/html</type>
            <size>1945</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPjwvaGVhZD4KPHNjcmlwdD4KaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwoKZnVuY3Rp
b24gcnVuKHRpdGxlLCByZXBlYXROdW0sIGZ1bmMpIHsKICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOwoKICB2YXIgcm91bmRzID0gMTA7CiAgdmFyIHRpbWVz
ID0gW107CiAgZm9yICh2YXIgciA9IDA7IHIgPCByb3VuZHM7IHIrKykgewogICAgdmFyIHN0YXJ0
ID0gRGF0ZS5ub3coKTsKICAgIGZ1bmMocmVwZWF0TnVtKTsKICAgIHRpbWVzLnB1c2goRGF0ZS5u
b3coKSAtIHN0YXJ0KTsKICB9CgogIHRpbWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJu
IGEgLSBiOyB9KTsKICB2YXIgc3VtID0gMDsKICB2YXIgbWluID0gdGltZXNbMF07CiAgdmFyIG1h
eCA9IHRpbWVzW3RpbWVzLmxlbmd0aCAtIDFdOwogIHZhciBtZWRpYW4gPSB0aW1lc1tNYXRoLmZs
b29yKHRpbWVzLmxlbmd0aCAvIDIpXTsKICBmb3IgKHZhciBpID0gMDsgaSA8IHRpbWVzLmxlbmd0
aDsgaSsrKSB7CiAgICBzdW0gKz0gdGltZXNbaV07CiAgfQogIHZhciBtZWFuID0gc3VtIC8gcm91
bmRzOwoKICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUg
KyAiIDogbWVhbj0iICsgbWVhbi50b0ZpeGVkKDIpICsgIm1zICgiICsgKG1lYW4gKiAxZTYgLyBy
ZXBlYXROdW0pLnRvRml4ZWQoMikgKyAibnMvaXRlcmF0aW9uKSwgbWluPSIgKyBtaW4gKyAibXMs
IG1lZGlhbj0iICsgbWVkaWFuICsgIm1zLCBtYXg9IiArIG1heCArICJtcyIpKTsKICByZXN1bHQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cn0KCndpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbiAoKSB7CiAgdmFyIHJlcGVhdE51bSA9IDEwMDAwMDA7CgogIHJ1bigiZGl2
LmlkIiwgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIHZhciBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGRpdi5pZCA9ICJmb28iOwogICAgZm9yICh2
YXIgaiA9IDA7IGogPCByZXBlYXROdW07IGorKykgewogICAgICBkaXYuaWQ7CiAgICB9CiAgfSk7
CgogIHJ1bigiZGl2LmNsYXNzTmFtZSIsIHJlcGVhdE51bSwgZnVuY3Rpb24ocmVwZWF0TnVtKSB7
CiAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICBkaXYuY2xh
c3NOYW1lID0gImZvbyI7CiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlcGVhdE51bTsgaisrKSB7
CiAgICAgIGRpdi5jbGFzc05hbWU7CiAgICB9CiAgfSk7CgogIHJ1bigiZGl2Lm5vZGVOYW1lIiwg
cmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBq
KyspIHsKICAgICAgZGl2Lm5vZGVOYW1lOwogICAgfQogIH0pOwoKICBydW4oInRleHQubm9kZVZh
bHVlIiwgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoImZvbyIpOwogICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXBl
YXROdW07IGorKykgewogICAgICB0ZXh0Lm5vZGVWYWx1ZTsKICAgIH0KICB9KTsKCiAgcnVuKCJ0
ZXh0LnRleHRDb250ZW50IiwgcmVwZWF0TnVtLCBmdW5jdGlvbihyZXBlYXROdW0pIHsKICAgIHZh
ciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImZvbyIpOwogICAgZm9yICh2YXIgaiA9
IDA7IGogPCByZXBlYXROdW07IGorKykgewogICAgICB0ZXh0LnRleHRDb250ZW50OwogICAgfQog
IH0pOwp9Cjwvc2NyaXB0Pgo8Ym9keT4KPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KPC9ib2R5Pgo8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137441</attachid>
            <date>2012-04-16 17:30:26 -0700</date>
            <delta_ts>2012-04-17 02:20:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84103-20120416173025.patch</filename>
            <type>text/plain</type>
            <size>8934</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc0OGJlOWI2MWNhZmY3
ZWRjMGUxZjQzOTAwZGNkYTdjYTU0YjBjZi4uYWJiMTYwNWQ4YjUyNmMxNzkxMmJmYzhhM2Y2YWMy
MzE3NzFlOWRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDEyLTA0LTE2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbUGVyZm9ybWFuY2Vd
W1Y4XSBTa2lwIElzb2xhdGUgbG9vay11cCB0byBmaW5kIFN0cmluZ0NhY2hlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDEwMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMg
dGhlIHBlcmZvcm1hbmNlIG9mIGEgbG90IG9mIERPTSBhdHRyaWJ1dGUKKyAgICAgICAgZ2V0dGVy
cyB0aGF0IHJldHVybiBhIHN0cmluZy4KKworICAgICAgICAtIEltcHJvdmVzIHRoZSBwZXJmb3Jt
YW5jZSBvZiBEcm9tYWVvL2RvbS1hdHRyLmh0bWwoZWxlbWVudC5wcm9wZXJ0eSkKKyAgICAgICAg
ICBieSAyNy43JS4KKyAgICAgICAgLSBJbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgRHJvbWFl
by9kb20tYXR0ci5odG1sKGdldEF0dHJpYnV0ZSkKKyAgICAgICAgICBieSAxMC42JS4KKyAgICAg
ICAgLSBJbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgZGl2LmlkLCBkaXYuY2xhc3NOYW1lLAor
ICAgICAgICAgIGRpdi5ub2RlTmFtZSwgdGV4dC5ub2RlVmFsdWUsIHRleHQudGV4dENvbnRlbnQg
YnkgMTIlIC0tIDIxJS4KKworICAgICAgICBUaGUgZm9sbG93aW5ncyBhcmUgdGhlIHRlc3QgcmVz
dWx0cyBpbiBteSBMaW51eCBkZXNrdG9wLgorCisgICAgICAgIFBlcmZvcm1hbmNlIHRlc3Q6IERy
b21hZW8vZG9tLWF0dHIuaHRtbAorICAgICAgICBUb3RhbDogICAgICAgICAgICAgICAgICAgICA2
NzQuNjRydW5zL3MgLT4gIDcwNy4wM3J1bnMvcyAoKyA0LjglKQorICAgICAgICBnZXRBdHRyaWJ1
dGU6ICAgICAgICAgICAgIDE1MzcuNjBydW5zL3MgLT4gMTcwMC4yMHJ1bnMvcyAoKzEwLjYlKQor
ICAgICAgICBlbGVtZW50LnByb3BlcnR5OiAgICAgICAgIDEzODkuMDBydW5zL3MgLT4gMTc3NC4y
MHJ1bnMvcyAoKzI3LjclKQorICAgICAgICBzZXRBdHRyaWJ1dGU6ICAgICAgICAgICAgICA1Mzgu
ODhydW5zL3MgLT4gIDU0OC44N3J1bnMvcyAoKyAxLjklKQorICAgICAgICBlbGVtZW50LnByb3Bl
cnR5ID0gdmFsdWU6ICA2NDQuMDdydW5zL3MgLT4gIDY1Ni42N3J1bnMvcyAoKyAyLjAlKQorICAg
ICAgICBlbGVtZW50LmV4cGFuZG8gPSB2YWx1ZTogICAyMTkuNzZydW5zL3MgLT4gIDIwNy4xNHJ1
bnMvcyAoLSA2LjglKQorICAgICAgICBlbGVtZW50LmV4cGFuZG86ICAgICAgICAgICA1NzguNzdy
dW5zL3MgLT4gIDU1NC42N3J1bnMvcyAoLSA0LjIlKQorCisgICAgICAgIFBlcmZvcm1hbmNlIHRl
c3Q6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTEzNzQ0MAorICAg
ICAgICBkaXYuaWQ6ICAgICAgICAgICAzMC43MG5zIC0+IDI2LjcwbnMgKCsxNSUpCisgICAgICAg
IGRpdi5jbGFzc05hbWU6ICAgIDMxLjEwbnMgLT4gMjYuNDBucyAoKzE4JSkKKyAgICAgICAgZGl2
Lm5vZGVOYW1lOiAgICAgMzcuNzBucyAtPiAzMy4wMG5zICgrMTQlKQorICAgICAgICB0ZXh0Lm5v
ZGVWYWx1ZTogICAzMS40MG5zIC0+IDI1LjkwbnMgKCsyMSUpCisgICAgICAgIHRleHQudGV4dENv
bnRlbnQ6IDUxLjUwbnMgLT4gNDUuOTBucyAoKzEyJSkKKworICAgICAgICBQcmV2aW91c2x5IFY4
IGJpbmRpbmdzIG5lZWQgdG8gbG9vayB1cCBhbiBJc29sYXRlIHRvIGZpbmQKKyAgICAgICAgYW4g
SXNvbGF0ZS1sb2NhbCBTdHJpbmdDYWNoZS4gVGhpcyBwYXRjaCBza2lwcyB0aGUgbG9vay11cAor
ICAgICAgICBieSBnZXR0aW5nIHRoZSBJc29sYXRlIGZyb20gQWNjZXNzb3JJbmZvLkdldElzb2xh
dGUoKQorICAgICAgICBvciBBcmd1bWVudHMuR2V0SXNvbGF0ZSgpLgorCisgICAgICAgIE5vIHRl
c3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6
CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAgICAgIChOYXRpdmVU
b0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRFbGVtZW50U3RyaW5nQXR0cik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp2OEV4dGVybmFsU3RyaW5nKTogTWFrZSAn
aXNvbGF0ZScgYW4gb3B0aW9uYWwgYXJndW1lbnQuCisgICAgICAgIElkZWFsbHkgd2Ugd2FudCB0
byBtYWtlICdpc29sYXRlJyBhIG5vbi1vcHRpb25hbCBhcmd1bWVudCwKKyAgICAgICAgYnV0IGl0
IGlzIGRpZmZpY3VsdCB0byByZXdyaXRlIGFsbCB2OEV4dGVybmFsU3RyaW5nKCkgY2FsbGVycwor
ICAgICAgICBhdCBhIGJyZWF0aC4gV2UgY2FuIHJld3JpdGUgdGhlbSBpbmNyZW1lbnRhbGx5Lgor
ICAgICAgICAoV2ViQ29yZTo6djhTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnY4
U3RyaW5nT3JOdWxsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2OFN0cmluZ09yVW5kZWZp
bmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2OFN0cmluZ09yRmFsc2UpOiBEaXR0by4K
KworMjAxMi0wNC0xNiAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgW1JlZmFjdG9yaW5nXVtWOF0gUmVtb3ZlICRpbmRlbnQgZnJvbSBOYXRpdmVUb0pTVmFs
dWUoKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQw
NzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCAwOWRiODA2NzJlMDlkOTdlOTAwYmU3MmQ3Yjg1MjA2NzU0NTg5ZDYyLi4w
YzZmYmUwMGZhMjY5Zjk1YjBmZTY1YWI1OTg0YzA5NWM3ZTczZWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtOTk0LDcg
Kzk5NCw3IEBAIEVORAogICAgIHJldHVybiB2YWx1ZTsKIEVORAogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gUmV0dXJuTmF0aXZl
VG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCkuIjtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gUmV0dXJuTmF0aXZlVG9KU1Zh
bHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCwgImluZm8uR2V0SXNvbGF0ZSgpIiku
IjtcbiIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMzA2LDcgKzMzMDYsNyBAQCBzdWIgR2Vu
ZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgIH0KIAogICAgICRyZXR1cm4gLj0gIi5yZWxl
YXNlKCkiIGlmICgkcmV0dXJuSXNSZWYpOwotICAgICRyZXN1bHQgLj0gJGluZGVudCAuIFJldHVy
bk5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSwgJHJldHVybikgLiAiO1xuIjsK
KyAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiBSZXR1cm5OYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9u
LT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkdldElzb2xhdGUoKSIpIC4gIjtcbiI7CiAKICAg
ICByZXR1cm4gJHJlc3VsdDsKIH0KQEAgLTM3MjMsNiArMzcyMyw3IEBAIHN1YiBOYXRpdmVUb0pT
VmFsdWUKIHsKICAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7CiAgICAgbXkgJHZhbHVlID0gc2hp
ZnQ7CisgICAgbXkgJGdldElzb2xhdGUgPSBzaGlmdDsKICAgICBteSAkdHlwZSA9IEdldFR5cGVG
cm9tU2lnbmF0dXJlKCRzaWduYXR1cmUpOwogCiAgICAgcmV0dXJuICJ2OEJvb2xlYW4oJHZhbHVl
KSIgaWYgJHR5cGUgZXEgImJvb2xlYW4iOwpAQCAtMzc1MywxNCArMzc1NCwxNSBAQCBzdWIgTmF0
aXZlVG9KU1ZhbHVlCiAKICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlw
ZSkpIHsKICAgICAgICAgbXkgJGNvbnYgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcyJ9OworICAgICAgICBteSAkZ2V0SXNvbGF0ZUFy
Z3VtZW50ID0gJGdldElzb2xhdGUgPyAiLCAkZ2V0SXNvbGF0ZSIgOiAiIjsKICAgICAgICAgaWYg
KGRlZmluZWQgJGNvbnYpIHsKLSAgICAgICAgICAgIHJldHVybiAidjhTdHJpbmdPck51bGwoJHZh
bHVlKSIgaWYgJGNvbnYgZXEgIk51bGwiOwotICAgICAgICAgICAgcmV0dXJuICJ2OFN0cmluZ09y
VW5kZWZpbmVkKCR2YWx1ZSkiIGlmICRjb252IGVxICJVbmRlZmluZWQiOwotICAgICAgICAgICAg
cmV0dXJuICJ2OFN0cmluZ09yRmFsc2UoJHZhbHVlKSIgaWYgJGNvbnYgZXEgIkZhbHNlIjsKKyAg
ICAgICAgICAgIHJldHVybiAidjhTdHJpbmdPck51bGwoJHZhbHVlJGdldElzb2xhdGVBcmd1bWVu
dCkiIGlmICRjb252IGVxICJOdWxsIjsKKyAgICAgICAgICAgIHJldHVybiAidjhTdHJpbmdPclVu
ZGVmaW5lZCgkdmFsdWUkZ2V0SXNvbGF0ZUFyZ3VtZW50KSIgaWYgJGNvbnYgZXEgIlVuZGVmaW5l
ZCI7CisgICAgICAgICAgICByZXR1cm4gInY4U3RyaW5nT3JGYWxzZSgkdmFsdWUkZ2V0SXNvbGF0
ZUFyZ3VtZW50KSIgaWYgJGNvbnYgZXEgIkZhbHNlIjsKIAogICAgICAgICAgICAgZGllICJVbmtu
b3duIHZhbHVlIGZvciBUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzIGV4dGVuZGVkIGF0dHJpYnV0
ZSI7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJ2OFN0cmluZygkdmFsdWUpIjsKKyAgICAg
ICAgcmV0dXJuICJ2OFN0cmluZygkdmFsdWUkZ2V0SXNvbGF0ZUFyZ3VtZW50KSI7CiAgICAgfQog
CiAgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggNDBhOTQwZGQz
MGU5ZmMzNzQ0Yjc5OTUwOTdhMjhjYjJmNjJlMzU4Yi4uMmRiNzZhOGI4NTEwZmM2YWNmMGRkMzFi
ODdjZmM2MDg5NjE1ODIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCkBAIC01NTEsNyArNTUxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldEVsZW1lbnRT
dHJpbmdBdHRyKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgCiB7
CiAgICAgRWxlbWVudCogaW1wID0gVjhFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
LSAgICByZXR1cm4gdjhFeHRlcm5hbFN0cmluZyhpbXAtPmdldEF0dHJpYnV0ZShuYW1lKSk7Cisg
ICAgcmV0dXJuIHY4RXh0ZXJuYWxTdHJpbmcoaW1wLT5nZXRBdHRyaWJ1dGUobmFtZSksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKIH0KIAogdm9pZCBzZXRFbGVtZW50U3RyaW5nQXR0cihjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApp
bmRleCA5NWE1MDA1NzUxNmI4Nzg5MGRkYjQzZDAwNTQ2NTI4ZjcwMmZiOGIwLi45MTQxMmExMDJm
MmFlNTgwYWIxYWY4MDQwZTU4MjA4ODE1NDljZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuaApAQCAtMjQ0LDIwICsyNDQsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIC8vIFJldHVybiBhIFY4IGV4dGVybmFsIHN0cmluZyB0aGF0IHNoYXJlcyB0aGUgdW5kZXJs
eWluZyBidWZmZXIgd2l0aCB0aGUgZ2l2ZW4KICAgICAvLyBXZWJDb3JlIHN0cmluZy4gVGhlIHJl
ZmVyZW5jZSBjb3VudGluZyBtZWNoYW5pc20gaXMgdXNlZCB0byBrZWVwIHRoZQogICAgIC8vIHVu
ZGVybHlpbmcgYnVmZmVyIGFsaXZlIHdoaWxlIHRoZSBzdHJpbmcgaXMgc3RpbGwgbGl2ZSBpbiB0
aGUgVjggZW5naW5lLgotICAgIGlubGluZSB2ODo6TG9jYWw8djg6OlN0cmluZz4gdjhFeHRlcm5h
bFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBpbmxpbmUgdjg6OkxvY2FsPHY4OjpT
dHJpbmc+IHY4RXh0ZXJuYWxTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKICAgICB7CiAgICAgICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBz
dHJpbmcuaW1wbCgpOwogICAgICAgICBpZiAoIXN0cmluZ0ltcGwpCiAgICAgICAgICAgICByZXR1
cm4gdjg6OlN0cmluZzo6RW1wdHkoKTsKIAotICAgICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CisgICAgICAgIFY4
QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRhID0gaXNvbGF0ZSA/IHN0YXRpY19jYXN0PFY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhKj4oaXNvbGF0ZS0+R2V0RGF0YSgpKSA6IFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgICAgIHJldHVybiBkYXRhLT5zdHJpbmdDYWNoZSgp
LT52OEV4dGVybmFsU3RyaW5nKHN0cmluZ0ltcGwpOwogICAgIH0KIAogICAgIC8vIENvbnZlcnQg
YSBzdHJpbmcgdG8gYSBWOCBzdHJpbmcuCi0gICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlN0cmlu
Zz4gdjhTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gdjhTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHY4OjpJc29sYXRlKiBp
c29sYXRlID0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2OEV4dGVybmFsU3RyaW5nKHN0cmlu
Zyk7CisgICAgICAgIHJldHVybiB2OEV4dGVybmFsU3RyaW5nKHN0cmluZywgaXNvbGF0ZSk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTM5NiwxOSArMzk2LDE5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1VuZGV0ZWN0
YWJsZShmcm9tV2ViQ29yZVN0cmluZyhzdHIpLCBzdHIubGVuZ3RoKCkpOwogICAgIH0KIAotICAg
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhTdHJpbmdPck51bGwoY29uc3QgU3RyaW5n
JiBzdHIpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFN0cmluZ09yTnVsbChj
b25zdCBTdHJpbmcmIHN0ciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgp
KSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OFN0cmluZyhzdHIpKTsKKyAgICAgICAgcmV0dXJu
IHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgpKSA6IHY4OjpI
YW5kbGU8djg6OlZhbHVlPih2OFN0cmluZyhzdHIsIGlzb2xhdGUpKTsKICAgICB9CiAKLSAgICBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4U3RyaW5nT3JVbmRlZmluZWQoY29uc3QgU3Ry
aW5nJiBzdHIpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFN0cmluZ09yVW5k
ZWZpbmVkKGNvbnN0IFN0cmluZyYgc3RyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RyLmlzTnVsbCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4
OjpVbmRlZmluZWQoKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhTdHJpbmcoc3RyKSk7Cisg
ICAgICAgIHJldHVybiBzdHIuaXNOdWxsKCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6OlVu
ZGVmaW5lZCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OFN0cmluZyhzdHIsIGlzb2xhdGUp
KTsKICAgICB9CiAKLSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4U3RyaW5nT3JG
YWxzZShjb25zdCBTdHJpbmcmIHN0cikKKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHY4U3RyaW5nT3JGYWxzZShjb25zdCBTdHJpbmcmIHN0ciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUg
PSAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6
OlZhbHVlPih2ODo6RmFsc2UoKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhTdHJpbmcoc3Ry
KSk7CisgICAgICAgIHJldHVybiBzdHIuaXNOdWxsKCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
djg6OkZhbHNlKCkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4U3RyaW5nKHN0ciwgaXNvbGF0
ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdjhOdW1iZXJBcnJheShjb25zdCBWZWN0b3I8VD4mIHZhbHVlcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137499</attachid>
            <date>2012-04-17 02:20:40 -0700</date>
            <delta_ts>2012-04-17 02:27:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84103-20120417022039.patch</filename>
            <type>text/plain</type>
            <size>8934</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc0OGJlOWI2MWNhZmY3
ZWRjMGUxZjQzOTAwZGNkYTdjYTU0YjBjZi4uYWJiMTYwNWQ4YjUyNmMxNzkxMmJmYzhhM2Y2YWMy
MzE3NzFlOWRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDEyLTA0LTE2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbUGVyZm9ybWFuY2Vd
W1Y4XSBTa2lwIElzb2xhdGUgbG9vay11cCB0byBmaW5kIFN0cmluZ0NhY2hlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDEwMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMg
dGhlIHBlcmZvcm1hbmNlIG9mIGEgbG90IG9mIERPTSBhdHRyaWJ1dGUKKyAgICAgICAgZ2V0dGVy
cyB0aGF0IHJldHVybiBhIHN0cmluZy4KKworICAgICAgICAtIEltcHJvdmVzIHRoZSBwZXJmb3Jt
YW5jZSBvZiBEcm9tYWVvL2RvbS1hdHRyLmh0bWwoZWxlbWVudC5wcm9wZXJ0eSkKKyAgICAgICAg
ICBieSAyNy43JS4KKyAgICAgICAgLSBJbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgRHJvbWFl
by9kb20tYXR0ci5odG1sKGdldEF0dHJpYnV0ZSkKKyAgICAgICAgICBieSAxMC42JS4KKyAgICAg
ICAgLSBJbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgZGl2LmlkLCBkaXYuY2xhc3NOYW1lLAor
ICAgICAgICAgIGRpdi5ub2RlTmFtZSwgdGV4dC5ub2RlVmFsdWUsIHRleHQudGV4dENvbnRlbnQg
YnkgMTIlIC0tIDIxJS4KKworICAgICAgICBUaGUgZm9sbG93aW5ncyBhcmUgdGhlIHRlc3QgcmVz
dWx0cyBpbiBteSBMaW51eCBkZXNrdG9wLgorCisgICAgICAgIFBlcmZvcm1hbmNlIHRlc3Q6IERy
b21hZW8vZG9tLWF0dHIuaHRtbAorICAgICAgICBUb3RhbDogICAgICAgICAgICAgICAgICAgICA2
NzQuNjRydW5zL3MgLT4gIDcwNy4wM3J1bnMvcyAoKyA0LjglKQorICAgICAgICBnZXRBdHRyaWJ1
dGU6ICAgICAgICAgICAgIDE1MzcuNjBydW5zL3MgLT4gMTcwMC4yMHJ1bnMvcyAoKzEwLjYlKQor
ICAgICAgICBlbGVtZW50LnByb3BlcnR5OiAgICAgICAgIDEzODkuMDBydW5zL3MgLT4gMTc3NC4y
MHJ1bnMvcyAoKzI3LjclKQorICAgICAgICBzZXRBdHRyaWJ1dGU6ICAgICAgICAgICAgICA1Mzgu
ODhydW5zL3MgLT4gIDU0OC44N3J1bnMvcyAoKyAxLjklKQorICAgICAgICBlbGVtZW50LnByb3Bl
cnR5ID0gdmFsdWU6ICA2NDQuMDdydW5zL3MgLT4gIDY1Ni42N3J1bnMvcyAoKyAyLjAlKQorICAg
ICAgICBlbGVtZW50LmV4cGFuZG8gPSB2YWx1ZTogICAyMTkuNzZydW5zL3MgLT4gIDIwNy4xNHJ1
bnMvcyAoLSA2LjglKQorICAgICAgICBlbGVtZW50LmV4cGFuZG86ICAgICAgICAgICA1NzguNzdy
dW5zL3MgLT4gIDU1NC42N3J1bnMvcyAoLSA0LjIlKQorCisgICAgICAgIFBlcmZvcm1hbmNlIHRl
c3Q6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTEzNzQ0MAorICAg
ICAgICBkaXYuaWQ6ICAgICAgICAgICAzMC43MG5zIC0+IDI2LjcwbnMgKCsxNSUpCisgICAgICAg
IGRpdi5jbGFzc05hbWU6ICAgIDMxLjEwbnMgLT4gMjYuNDBucyAoKzE4JSkKKyAgICAgICAgZGl2
Lm5vZGVOYW1lOiAgICAgMzcuNzBucyAtPiAzMy4wMG5zICgrMTQlKQorICAgICAgICB0ZXh0Lm5v
ZGVWYWx1ZTogICAzMS40MG5zIC0+IDI1LjkwbnMgKCsyMSUpCisgICAgICAgIHRleHQudGV4dENv
bnRlbnQ6IDUxLjUwbnMgLT4gNDUuOTBucyAoKzEyJSkKKworICAgICAgICBQcmV2aW91c2x5IFY4
IGJpbmRpbmdzIG5lZWQgdG8gbG9vayB1cCBhbiBJc29sYXRlIHRvIGZpbmQKKyAgICAgICAgYW4g
SXNvbGF0ZS1sb2NhbCBTdHJpbmdDYWNoZS4gVGhpcyBwYXRjaCBza2lwcyB0aGUgbG9vay11cAor
ICAgICAgICBieSBnZXR0aW5nIHRoZSBJc29sYXRlIGZyb20gQWNjZXNzb3JJbmZvLkdldElzb2xh
dGUoKQorICAgICAgICBvciBBcmd1bWVudHMuR2V0SXNvbGF0ZSgpLgorCisgICAgICAgIE5vIHRl
c3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6
CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAgICAgIChOYXRpdmVU
b0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRFbGVtZW50U3RyaW5nQXR0cik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp2OEV4dGVybmFsU3RyaW5nKTogTWFrZSAn
aXNvbGF0ZScgYW4gb3B0aW9uYWwgYXJndW1lbnQuCisgICAgICAgIElkZWFsbHkgd2Ugd2FudCB0
byBtYWtlICdpc29sYXRlJyBhIG5vbi1vcHRpb25hbCBhcmd1bWVudCwKKyAgICAgICAgYnV0IGl0
IGlzIGRpZmZpY3VsdCB0byByZXdyaXRlIGFsbCB2OEV4dGVybmFsU3RyaW5nKCkgY2FsbGVycwor
ICAgICAgICBhdCBhIGJyZWF0aC4gV2UgY2FuIHJld3JpdGUgdGhlbSBpbmNyZW1lbnRhbGx5Lgor
ICAgICAgICAoV2ViQ29yZTo6djhTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnY4
U3RyaW5nT3JOdWxsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2OFN0cmluZ09yVW5kZWZp
bmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2OFN0cmluZ09yRmFsc2UpOiBEaXR0by4K
KworMjAxMi0wNC0xNiAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgW1JlZmFjdG9yaW5nXVtWOF0gUmVtb3ZlICRpbmRlbnQgZnJvbSBOYXRpdmVUb0pTVmFs
dWUoKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQw
NzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCAwOWRiODA2NzJlMDlkOTdlOTAwYmU3MmQ3Yjg1MjA2NzU0NTg5ZDYyLi4w
YzZmYmUwMGZhMjY5Zjk1YjBmZTY1YWI1OTg0YzA5NWM3ZTczZWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtOTk0LDcg
Kzk5NCw3IEBAIEVORAogICAgIHJldHVybiB2YWx1ZTsKIEVORAogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gUmV0dXJuTmF0aXZl
VG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCkuIjtcbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gUmV0dXJuTmF0aXZlVG9KU1Zh
bHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCwgImluZm8uR2V0SXNvbGF0ZSgpIiku
IjtcbiIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMzA2LDcgKzMzMDYsNyBAQCBzdWIgR2Vu
ZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgIH0KIAogICAgICRyZXR1cm4gLj0gIi5yZWxl
YXNlKCkiIGlmICgkcmV0dXJuSXNSZWYpOwotICAgICRyZXN1bHQgLj0gJGluZGVudCAuIFJldHVy
bk5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSwgJHJldHVybikgLiAiO1xuIjsK
KyAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiBSZXR1cm5OYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9u
LT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkdldElzb2xhdGUoKSIpIC4gIjtcbiI7CiAKICAg
ICByZXR1cm4gJHJlc3VsdDsKIH0KQEAgLTM3MjMsNiArMzcyMyw3IEBAIHN1YiBOYXRpdmVUb0pT
VmFsdWUKIHsKICAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7CiAgICAgbXkgJHZhbHVlID0gc2hp
ZnQ7CisgICAgbXkgJGdldElzb2xhdGUgPSBzaGlmdDsKICAgICBteSAkdHlwZSA9IEdldFR5cGVG
cm9tU2lnbmF0dXJlKCRzaWduYXR1cmUpOwogCiAgICAgcmV0dXJuICJ2OEJvb2xlYW4oJHZhbHVl
KSIgaWYgJHR5cGUgZXEgImJvb2xlYW4iOwpAQCAtMzc1MywxNCArMzc1NCwxNSBAQCBzdWIgTmF0
aXZlVG9KU1ZhbHVlCiAKICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlw
ZSkpIHsKICAgICAgICAgbXkgJGNvbnYgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcyJ9OworICAgICAgICBteSAkZ2V0SXNvbGF0ZUFy
Z3VtZW50ID0gJGdldElzb2xhdGUgPyAiLCAkZ2V0SXNvbGF0ZSIgOiAiIjsKICAgICAgICAgaWYg
KGRlZmluZWQgJGNvbnYpIHsKLSAgICAgICAgICAgIHJldHVybiAidjhTdHJpbmdPck51bGwoJHZh
bHVlKSIgaWYgJGNvbnYgZXEgIk51bGwiOwotICAgICAgICAgICAgcmV0dXJuICJ2OFN0cmluZ09y
VW5kZWZpbmVkKCR2YWx1ZSkiIGlmICRjb252IGVxICJVbmRlZmluZWQiOwotICAgICAgICAgICAg
cmV0dXJuICJ2OFN0cmluZ09yRmFsc2UoJHZhbHVlKSIgaWYgJGNvbnYgZXEgIkZhbHNlIjsKKyAg
ICAgICAgICAgIHJldHVybiAidjhTdHJpbmdPck51bGwoJHZhbHVlJGdldElzb2xhdGVBcmd1bWVu
dCkiIGlmICRjb252IGVxICJOdWxsIjsKKyAgICAgICAgICAgIHJldHVybiAidjhTdHJpbmdPclVu
ZGVmaW5lZCgkdmFsdWUkZ2V0SXNvbGF0ZUFyZ3VtZW50KSIgaWYgJGNvbnYgZXEgIlVuZGVmaW5l
ZCI7CisgICAgICAgICAgICByZXR1cm4gInY4U3RyaW5nT3JGYWxzZSgkdmFsdWUkZ2V0SXNvbGF0
ZUFyZ3VtZW50KSIgaWYgJGNvbnYgZXEgIkZhbHNlIjsKIAogICAgICAgICAgICAgZGllICJVbmtu
b3duIHZhbHVlIGZvciBUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzIGV4dGVuZGVkIGF0dHJpYnV0
ZSI7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJ2OFN0cmluZygkdmFsdWUpIjsKKyAgICAg
ICAgcmV0dXJuICJ2OFN0cmluZygkdmFsdWUkZ2V0SXNvbGF0ZUFyZ3VtZW50KSI7CiAgICAgfQog
CiAgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggNDBhOTQwZGQz
MGU5ZmMzNzQ0Yjc5OTUwOTdhMjhjYjJmNjJlMzU4Yi4uMmRiNzZhOGI4NTEwZmM2YWNmMGRkMzFi
ODdjZmM2MDg5NjE1ODIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCkBAIC01NTEsNyArNTUxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldEVsZW1lbnRT
dHJpbmdBdHRyKGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgCiB7
CiAgICAgRWxlbWVudCogaW1wID0gVjhFbGVtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
LSAgICByZXR1cm4gdjhFeHRlcm5hbFN0cmluZyhpbXAtPmdldEF0dHJpYnV0ZShuYW1lKSk7Cisg
ICAgcmV0dXJuIHY4RXh0ZXJuYWxTdHJpbmcoaW1wLT5nZXRBdHRyaWJ1dGUobmFtZSksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKIH0KIAogdm9pZCBzZXRFbGVtZW50U3RyaW5nQXR0cihjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApp
bmRleCA5NWE1MDA1NzUxNmI4Nzg5MGRkYjQzZDAwNTQ2NTI4ZjcwMmZiOGIwLi45MTQxMmExMDJm
MmFlNTgwYWIxYWY4MDQwZTU4MjA4ODE1NDljZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEJpbmRpbmcuaApAQCAtMjQ0LDIwICsyNDQsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIC8vIFJldHVybiBhIFY4IGV4dGVybmFsIHN0cmluZyB0aGF0IHNoYXJlcyB0aGUgdW5kZXJs
eWluZyBidWZmZXIgd2l0aCB0aGUgZ2l2ZW4KICAgICAvLyBXZWJDb3JlIHN0cmluZy4gVGhlIHJl
ZmVyZW5jZSBjb3VudGluZyBtZWNoYW5pc20gaXMgdXNlZCB0byBrZWVwIHRoZQogICAgIC8vIHVu
ZGVybHlpbmcgYnVmZmVyIGFsaXZlIHdoaWxlIHRoZSBzdHJpbmcgaXMgc3RpbGwgbGl2ZSBpbiB0
aGUgVjggZW5naW5lLgotICAgIGlubGluZSB2ODo6TG9jYWw8djg6OlN0cmluZz4gdjhFeHRlcm5h
bFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBpbmxpbmUgdjg6OkxvY2FsPHY4OjpT
dHJpbmc+IHY4RXh0ZXJuYWxTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKICAgICB7CiAgICAgICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBz
dHJpbmcuaW1wbCgpOwogICAgICAgICBpZiAoIXN0cmluZ0ltcGwpCiAgICAgICAgICAgICByZXR1
cm4gdjg6OlN0cmluZzo6RW1wdHkoKTsKIAotICAgICAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0
YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CisgICAgICAgIFY4
QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRhID0gaXNvbGF0ZSA/IHN0YXRpY19jYXN0PFY4Qmlu
ZGluZ1Blcklzb2xhdGVEYXRhKj4oaXNvbGF0ZS0+R2V0RGF0YSgpKSA6IFY4QmluZGluZ1Blcklz
b2xhdGVEYXRhOjpjdXJyZW50KCk7CiAgICAgICAgIHJldHVybiBkYXRhLT5zdHJpbmdDYWNoZSgp
LT52OEV4dGVybmFsU3RyaW5nKHN0cmluZ0ltcGwpOwogICAgIH0KIAogICAgIC8vIENvbnZlcnQg
YSBzdHJpbmcgdG8gYSBWOCBzdHJpbmcuCi0gICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlN0cmlu
Zz4gdjhTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gdjhTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHY4OjpJc29sYXRlKiBp
c29sYXRlID0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2OEV4dGVybmFsU3RyaW5nKHN0cmlu
Zyk7CisgICAgICAgIHJldHVybiB2OEV4dGVybmFsU3RyaW5nKHN0cmluZywgaXNvbGF0ZSk7CiAg
ICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTM5NiwxOSArMzk2LDE5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1VuZGV0ZWN0
YWJsZShmcm9tV2ViQ29yZVN0cmluZyhzdHIpLCBzdHIubGVuZ3RoKCkpOwogICAgIH0KIAotICAg
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhTdHJpbmdPck51bGwoY29uc3QgU3RyaW5n
JiBzdHIpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFN0cmluZ09yTnVsbChj
b25zdCBTdHJpbmcmIHN0ciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgp
KSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OFN0cmluZyhzdHIpKTsKKyAgICAgICAgcmV0dXJu
IHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgpKSA6IHY4OjpI
YW5kbGU8djg6OlZhbHVlPih2OFN0cmluZyhzdHIsIGlzb2xhdGUpKTsKICAgICB9CiAKLSAgICBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4U3RyaW5nT3JVbmRlZmluZWQoY29uc3QgU3Ry
aW5nJiBzdHIpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFN0cmluZ09yVW5k
ZWZpbmVkKGNvbnN0IFN0cmluZyYgc3RyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiAgICAg
ewotICAgICAgICByZXR1cm4gc3RyLmlzTnVsbCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4
OjpVbmRlZmluZWQoKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhTdHJpbmcoc3RyKSk7Cisg
ICAgICAgIHJldHVybiBzdHIuaXNOdWxsKCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6OlVu
ZGVmaW5lZCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OFN0cmluZyhzdHIsIGlzb2xhdGUp
KTsKICAgICB9CiAKLSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4U3RyaW5nT3JG
YWxzZShjb25zdCBTdHJpbmcmIHN0cikKKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHY4U3RyaW5nT3JGYWxzZShjb25zdCBTdHJpbmcmIHN0ciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUg
PSAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6
OlZhbHVlPih2ODo6RmFsc2UoKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhTdHJpbmcoc3Ry
KSk7CisgICAgICAgIHJldHVybiBzdHIuaXNOdWxsKCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
djg6OkZhbHNlKCkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4U3RyaW5nKHN0ciwgaXNvbGF0
ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUPiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdjhOdW1iZXJBcnJheShjb25zdCBWZWN0b3I8VD4mIHZhbHVlcykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137502</attachid>
            <date>2012-04-17 02:27:43 -0700</date>
            <delta_ts>2012-04-17 13:05:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84103-20120417022742.patch</filename>
            <type>text/plain</type>
            <size>17480</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0Mjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc0OGJlOWI2MWNhZmY3
ZWRjMGUxZjQzOTAwZGNkYTdjYTU0YjBjZi4uNmVmZWI3YjgyZTdjODYwMWIxNTU4YjE3ZGNmYzM0
NGM4ZGIyMjc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgwIEBACiAyMDEyLTA0LTE2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbUGVyZm9ybWFuY2Vd
W1Y4XSBTa2lwIElzb2xhdGUgbG9vay11cCB0byBmaW5kIFN0cmluZ0NhY2hlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDEwMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMg
dGhlIHBlcmZvcm1hbmNlIG9mIGEgbG90IG9mIERPTSBhdHRyaWJ1dGUKKyAgICAgICAgZ2V0dGVy
cyB0aGF0IHJldHVybiBhIHN0cmluZy4KKworICAgICAgICAtIEltcHJvdmVzIHRoZSBwZXJmb3Jt
YW5jZSBvZiBEcm9tYWVvL2RvbS1hdHRyLmh0bWwoZWxlbWVudC5wcm9wZXJ0eSkKKyAgICAgICAg
ICBieSAyNy43JS4KKyAgICAgICAgLSBJbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgRHJvbWFl
by9kb20tYXR0ci5odG1sKGdldEF0dHJpYnV0ZSkKKyAgICAgICAgICBieSAxMC42JS4KKyAgICAg
ICAgLSBJbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgZGl2LmlkLCBkaXYuY2xhc3NOYW1lLAor
ICAgICAgICAgIGRpdi5ub2RlTmFtZSwgdGV4dC5ub2RlVmFsdWUsIHRleHQudGV4dENvbnRlbnQg
YnkgMTIlIC0tIDIxJS4KKworICAgICAgICBUaGUgZm9sbG93aW5ncyBhcmUgdGhlIHRlc3QgcmVz
dWx0cyBpbiBteSBMaW51eCBkZXNrdG9wLgorCisgICAgICAgIFBlcmZvcm1hbmNlIHRlc3Q6IERy
b21hZW8vZG9tLWF0dHIuaHRtbAorICAgICAgICBUb3RhbDogICAgICAgICAgICAgICAgICAgICA2
NzQuNjRydW5zL3MgLT4gIDcwNy4wM3J1bnMvcyAoKyA0LjglKQorICAgICAgICBnZXRBdHRyaWJ1
dGU6ICAgICAgICAgICAgIDE1MzcuNjBydW5zL3MgLT4gMTcwMC4yMHJ1bnMvcyAoKzEwLjYlKQor
ICAgICAgICBlbGVtZW50LnByb3BlcnR5OiAgICAgICAgIDEzODkuMDBydW5zL3MgLT4gMTc3NC4y
MHJ1bnMvcyAoKzI3LjclKQorICAgICAgICBzZXRBdHRyaWJ1dGU6ICAgICAgICAgICAgICA1Mzgu
ODhydW5zL3MgLT4gIDU0OC44N3J1bnMvcyAoKyAxLjklKQorICAgICAgICBlbGVtZW50LnByb3Bl
cnR5ID0gdmFsdWU6ICA2NDQuMDdydW5zL3MgLT4gIDY1Ni42N3J1bnMvcyAoKyAyLjAlKQorICAg
ICAgICBlbGVtZW50LmV4cGFuZG8gPSB2YWx1ZTogICAyMTkuNzZydW5zL3MgLT4gIDIwNy4xNHJ1
bnMvcyAoLSA2LjglKQorICAgICAgICBlbGVtZW50LmV4cGFuZG86ICAgICAgICAgICA1NzguNzdy
dW5zL3MgLT4gIDU1NC42N3J1bnMvcyAoLSA0LjIlKQorCisgICAgICAgIFBlcmZvcm1hbmNlIHRl
c3Q6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTEzNzQ0MAorICAg
ICAgICBkaXYuaWQ6ICAgICAgICAgICAzMC43MG5zIC0+IDI2LjcwbnMgKCsxNSUpCisgICAgICAg
IGRpdi5jbGFzc05hbWU6ICAgIDMxLjEwbnMgLT4gMjYuNDBucyAoKzE4JSkKKyAgICAgICAgZGl2
Lm5vZGVOYW1lOiAgICAgMzcuNzBucyAtPiAzMy4wMG5zICgrMTQlKQorICAgICAgICB0ZXh0Lm5v
ZGVWYWx1ZTogICAzMS40MG5zIC0+IDI1LjkwbnMgKCsyMSUpCisgICAgICAgIHRleHQudGV4dENv
bnRlbnQ6IDUxLjUwbnMgLT4gNDUuOTBucyAoKzEyJSkKKworICAgICAgICBQcmV2aW91c2x5IFY4
IGJpbmRpbmdzIG5lZWQgdG8gbG9vayB1cCBhbiBJc29sYXRlIHRvIGZpbmQKKyAgICAgICAgYW4g
SXNvbGF0ZS1sb2NhbCBTdHJpbmdDYWNoZS4gVGhpcyBwYXRjaCBza2lwcyB0aGUgbG9vay11cAor
ICAgICAgICBieSBnZXR0aW5nIHRoZSBJc29sYXRlIGZyb20gQWNjZXNzb3JJbmZvLkdldElzb2xh
dGUoKQorICAgICAgICBvciBBcmd1bWVudHMuR2V0SXNvbGF0ZSgpLgorCisgICAgICAgIE5vIHRl
c3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6
CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAgICAgIChOYXRpdmVU
b0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRFbGVtZW50U3RyaW5nQXR0cik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp2OEV4dGVybmFsU3RyaW5nKTogTWFrZSAn
aXNvbGF0ZScgYW4gb3B0aW9uYWwgYXJndW1lbnQuCisgICAgICAgIElkZWFsbHkgd2Ugd2FudCB0
byBtYWtlICdpc29sYXRlJyBhIG5vbi1vcHRpb25hbCBhcmd1bWVudCwKKyAgICAgICAgYnV0IGl0
IGlzIGRpZmZpY3VsdCB0byByZXdyaXRlIGFsbCB2OEV4dGVybmFsU3RyaW5nKCkgY2FsbGVycwor
ICAgICAgICBhdCBhIGJyZWF0aC4gV2UgY2FuIHJld3JpdGUgdGhlbSBpbmNyZW1lbnRhbGx5Lgor
ICAgICAgICAoV2ViQ29yZTo6djhTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnY4
U3RyaW5nT3JOdWxsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2OFN0cmluZ09yVW5kZWZp
bmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2OFN0cmluZ09yRmFsc2UpOiBEaXR0by4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVj
dG9yLmNwcDogVXBkYXRlZCBydW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0cy4KKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRyR2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjJB
dHRyR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpz
dXBwbGVtZW50YWxTdHIxQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
VVJMQXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6aGFzaEF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OmNvbmRpdGlvbmFsTWV0aG9kMUNhbGxiYWNrKToKKworMjAxMi0wNC0xNiAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW1JlZmFjdG9yaW5nXVtWOF0g
UmVtb3ZlICRpbmRlbnQgZnJvbSBOYXRpdmVUb0pTVmFsdWUoKQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwNzcKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAwOWRiODA2NzJl
MDlkOTdlOTAwYmU3MmQ3Yjg1MjA2NzU0NTg5ZDYyLi4wYzZmYmUwMGZhMjY5Zjk1YjBmZTY1YWI1
OTg0YzA5NWM3ZTczZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtOTk0LDcgKzk5NCw3IEBAIEVORAogICAgIHJldHVy
biB2YWx1ZTsKIEVORAogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICAiIC4gUmV0dXJuTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgJHJlc3VsdCkuIjtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICAiIC4gUmV0dXJuTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSwgJHJlc3VsdCwgImluZm8uR2V0SXNvbGF0ZSgpIikuIjtcbiIpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0zMzA2LDcgKzMzMDYsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmco
KQogICAgIH0KIAogICAgICRyZXR1cm4gLj0gIi5yZWxlYXNlKCkiIGlmICgkcmV0dXJuSXNSZWYp
OwotICAgICRyZXN1bHQgLj0gJGluZGVudCAuIFJldHVybk5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rp
b24tPnNpZ25hdHVyZSwgJHJldHVybikgLiAiO1xuIjsKKyAgICAkcmVzdWx0IC49ICRpbmRlbnQg
LiBSZXR1cm5OYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4sICJh
cmdzLkdldElzb2xhdGUoKSIpIC4gIjtcbiI7CiAKICAgICByZXR1cm4gJHJlc3VsdDsKIH0KQEAg
LTM3MjMsNiArMzcyMyw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIHsKICAgICBteSAkc2lnbmF0
dXJlID0gc2hpZnQ7CiAgICAgbXkgJHZhbHVlID0gc2hpZnQ7CisgICAgbXkgJGdldElzb2xhdGUg
PSBzaGlmdDsKICAgICBteSAkdHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRzaWduYXR1cmUp
OwogCiAgICAgcmV0dXJuICJ2OEJvb2xlYW4oJHZhbHVlKSIgaWYgJHR5cGUgZXEgImJvb2xlYW4i
OwpAQCAtMzc1MywxNCArMzc1NCwxNSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAKICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKICAgICAgICAgbXkgJGNvbnYg
PSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXRSZXR1cm5lZE51bGxTdHJp
bmdBcyJ9OworICAgICAgICBteSAkZ2V0SXNvbGF0ZUFyZ3VtZW50ID0gJGdldElzb2xhdGUgPyAi
LCAkZ2V0SXNvbGF0ZSIgOiAiIjsKICAgICAgICAgaWYgKGRlZmluZWQgJGNvbnYpIHsKLSAgICAg
ICAgICAgIHJldHVybiAidjhTdHJpbmdPck51bGwoJHZhbHVlKSIgaWYgJGNvbnYgZXEgIk51bGwi
OwotICAgICAgICAgICAgcmV0dXJuICJ2OFN0cmluZ09yVW5kZWZpbmVkKCR2YWx1ZSkiIGlmICRj
b252IGVxICJVbmRlZmluZWQiOwotICAgICAgICAgICAgcmV0dXJuICJ2OFN0cmluZ09yRmFsc2Uo
JHZhbHVlKSIgaWYgJGNvbnYgZXEgIkZhbHNlIjsKKyAgICAgICAgICAgIHJldHVybiAidjhTdHJp
bmdPck51bGwoJHZhbHVlJGdldElzb2xhdGVBcmd1bWVudCkiIGlmICRjb252IGVxICJOdWxsIjsK
KyAgICAgICAgICAgIHJldHVybiAidjhTdHJpbmdPclVuZGVmaW5lZCgkdmFsdWUkZ2V0SXNvbGF0
ZUFyZ3VtZW50KSIgaWYgJGNvbnYgZXEgIlVuZGVmaW5lZCI7CisgICAgICAgICAgICByZXR1cm4g
InY4U3RyaW5nT3JGYWxzZSgkdmFsdWUkZ2V0SXNvbGF0ZUFyZ3VtZW50KSIgaWYgJGNvbnYgZXEg
IkZhbHNlIjsKIAogICAgICAgICAgICAgZGllICJVbmtub3duIHZhbHVlIGZvciBUcmVhdFJldHVy
bmVkTnVsbFN0cmluZ0FzIGV4dGVuZGVkIGF0dHJpYnV0ZSI7CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuICJ2OFN0cmluZygkdmFsdWUpIjsKKyAgICAgICAgcmV0dXJuICJ2OFN0cmluZygkdmFs
dWUkZ2V0SXNvbGF0ZUFyZ3VtZW50KSI7CiAgICAgfQogCiAgICAgbXkgJGFycmF5VHlwZSA9ICRj
b2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5cGUoJHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuY3BwCmluZGV4IDgyM2FmYTMwNDU1YWFmYWJjNGM5NTU5ZjEwNzc4Y2IzMmE0ZjVi
YmIuLjlkNmEyZjA5ODZjYWUwNzMyNDA1NmRlYjRhMDUzMjYzYjQzYjViMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQzLDE0ICs0MywxNCBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3QgdgogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RFdmVudENvbnN0cnVjdG9y
LmF0dHIxLl9nZXQiKTsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wID0gVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIHY4U3Ry
aW5nKGltcC0+YXR0cjEoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+YXR0cjEoKSwgaW5m
by5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIy
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0RXZlbnRDb25zdHJ1Y3Rvci5h
dHRyMi5fZ2V0Iik7CiAgICAgVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcCA9IFY4VGVzdEV2ZW50
Q29uc3RydWN0b3I6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmlu
ZyhpbXAtPmF0dHIyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmF0dHIyKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdEV2ZW50Q29uc3RydWN0b3JW
OEludGVybmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDUxOTI2ZGJiMGU5Y2Q0NjMzY2Fj
Y2JjNWQ2ZGQzMDMxNWNiNDg2Y2EuLmM0MTgyYzdjYTg2ZTUyNTZkZTQzZDk1NmMyNTIxYzFiYTUy
NGM4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5zdXBw
bGVtZW50YWxTdHIxLl9nZXQiKTsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRl
cmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhUZXN0
U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIxKGltcCkpOworICAgIHJldHVybiB2OFN0cmlu
ZyhUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIxKGltcCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1
cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogewogICAg
IElOQ19TVEFUUygiRE9NLlRlc3RJbnRlcmZhY2Uuc3VwcGxlbWVudGFsU3RyMi5fZ2V0Iik7CiAg
ICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKLSAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVu
dGFsU3RyMihpbXApKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3Vw
cGxlbWVudGFsU3RyMihpbXApLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXgg
MjBjYjk4ZDE1MWU4ODZhMWQ3Nzc2MjUyMTk4MDg3ZDlhMmRiYmI3MS4uNzExNzdhZGVlMmI0M2Fj
ZDgzMWI4MWI3MGRmMGFhNGFiYmQ5NjBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTkwLDcgKzkwLDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVh
ZE9ubHlTdHJpbmdBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnJlYWRPbmx5
U3RyaW5nQXR0cigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5yZWFkT25seVN0cmluZ0F0
dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zdHJp
bmdBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0dHIoKSk7Cisg
ICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+c3RyaW5nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7
CiB9CiAKIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKQEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgog
ewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVjdGVkU3RyaW5nQXR0ci5fZ2V0Iik7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
LSAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0cikpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdl
dEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdBdHRy
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC0zMzUsNyArMzM1LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVUkxBdHRyQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
LnJlZmxlY3RlZFVSTEF0dHIuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+Z2V0VVJM
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKKyAg
ICByZXR1cm4gdjhTdHJpbmcoaW1wLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgcmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQpAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVm
bGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiB7CiAgICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0ZWRTdHJpbmdBdHRyLl9nZXQiKTsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJl
dHVybiB2OFN0cmluZyhpbXAtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3Rv
bUNvbnRlbnRTdHJpbmdBdHRyQXR0cikpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldEF0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0ciks
IGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0
ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMzk5LDcgKzM5OSw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0
dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai5yZWZsZWN0ZWRDdXN0b21VUkxBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAt
PmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRy
QXR0cikpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldFVSTEF0dHJpYnV0ZShXZWJDb3Jl
OjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKIH0KIAogc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
KHY4OjpMb2NhbDx2CiAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CiAgICAg
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAgICB9Ci0gICAgcmV0dXJuIHY4
U3RyaW5nKHYpOworICAgIHJldHVybiB2OFN0cmluZyh2LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9
CiAKIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC00ODQsNyArNDg0LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0
ZXIodjg6OkxvY2FsPHYKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAog
c3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTk5OSw3ICs5OTksNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGhhc2hBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2OAogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouaGFzaC5fZ2V0Iik7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAg
ICByZXR1cm4gdjhTdHJpbmcoaW1wLT5oYXNoKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAt
Pmhhc2goKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFRlc3RPYmpDb25zdHJ1Y3RvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTE0NjAsNyArMTQ2MCw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxNZXRob2QxQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5jb25k
aXRpb25hbE1ldGhvZDEiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmNvbmRpdGlvbmFsTWV0
aG9kMSgpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5jb25kaXRpb25hbE1ldGhvZDEoKSwg
YXJncy5HZXRJc29sYXRlKCkpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA0MGE5NDBkZDMwZTlm
YzM3NDRiNzk5NTA5N2EyOGNiMmY2MmUzNThiLi4yZGI3NmE4Yjg1MTBmYzZhY2YwZGQzMWI4N2Nm
YzYwODk2MTU4MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAK
QEAgLTU1MSw3ICs1NTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0RWxlbWVudFN0cmlu
Z0F0dHIoY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSAKIHsKICAg
ICBFbGVtZW50KiBpbXAgPSBWOEVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAg
IHJldHVybiB2OEV4dGVybmFsU3RyaW5nKGltcC0+Z2V0QXR0cmlidXRlKG5hbWUpKTsKKyAgICBy
ZXR1cm4gdjhFeHRlcm5hbFN0cmluZyhpbXAtPmdldEF0dHJpYnV0ZShuYW1lKSwgaW5mby5HZXRJ
c29sYXRlKCkpOwogfQogCiB2b2lkIHNldEVsZW1lbnRTdHJpbmdBdHRyKGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4
IDk1YTUwMDU3NTE2Yjg3ODkwZGRiNDNkMDA1NDY1MjhmNzAyZmI4YjAuLjkxNDEyYTEwMmYyYWU1
ODBhYjFhZjgwNDBlNTgyMDg4MTU0OWNlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oCkBAIC0yNDQsMjAgKzI0NCwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Ly8gUmV0dXJuIGEgVjggZXh0ZXJuYWwgc3RyaW5nIHRoYXQgc2hhcmVzIHRoZSB1bmRlcmx5aW5n
IGJ1ZmZlciB3aXRoIHRoZSBnaXZlbgogICAgIC8vIFdlYkNvcmUgc3RyaW5nLiBUaGUgcmVmZXJl
bmNlIGNvdW50aW5nIG1lY2hhbmlzbSBpcyB1c2VkIHRvIGtlZXAgdGhlCiAgICAgLy8gdW5kZXJs
eWluZyBidWZmZXIgYWxpdmUgd2hpbGUgdGhlIHN0cmluZyBpcyBzdGlsbCBsaXZlIGluIHRoZSBW
OCBlbmdpbmUuCi0gICAgaW5saW5lIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OEV4dGVybmFsU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIGlubGluZSB2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gdjhFeHRlcm5hbFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSAwKQogICAgIHsKICAgICAgICAgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCA9IHN0cmlu
Zy5pbXBsKCk7CiAgICAgICAgIGlmICghc3RyaW5nSW1wbCkKICAgICAgICAgICAgIHJldHVybiB2
ODo6U3RyaW5nOjpFbXB0eSgpOwogCi0gICAgICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBk
YXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICAgICAgVjhCaW5k
aW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBpc29sYXRlID8gc3RhdGljX2Nhc3Q8VjhCaW5kaW5n
UGVySXNvbGF0ZURhdGEqPihpc29sYXRlLT5HZXREYXRhKCkpIDogVjhCaW5kaW5nUGVySXNvbGF0
ZURhdGE6OmN1cnJlbnQoKTsKICAgICAgICAgcmV0dXJuIGRhdGEtPnN0cmluZ0NhY2hlKCktPnY4
RXh0ZXJuYWxTdHJpbmcoc3RyaW5nSW1wbCk7CiAgICAgfQogCiAgICAgLy8gQ29udmVydCBhIHN0
cmluZyB0byBhIFY4IHN0cmluZy4KLSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2
OFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
U3RyaW5nPiB2OFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHY4RXh0ZXJuYWxTdHJpbmcoc3RyaW5nKTsK
KyAgICAgICAgcmV0dXJuIHY4RXh0ZXJuYWxTdHJpbmcoc3RyaW5nLCBpc29sYXRlKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMzk2LDE5ICszOTYsMTkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3VW5kZXRlY3RhYmxl
KGZyb21XZWJDb3JlU3RyaW5nKHN0ciksIHN0ci5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgaW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFN0cmluZ09yTnVsbChjb25zdCBTdHJpbmcmIHN0
cikKKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4U3RyaW5nT3JOdWxsKGNvbnN0
IFN0cmluZyYgc3RyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiAgICAgewotICAgICAgICBy
ZXR1cm4gc3RyLmlzTnVsbCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKCkpIDog
djg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4U3RyaW5nKHN0cikpOworICAgICAgICByZXR1cm4gc3Ry
LmlzTnVsbCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKCkpIDogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KHY4U3RyaW5nKHN0ciwgaXNvbGF0ZSkpOwogICAgIH0KIAotICAgIGlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhTdHJpbmdPclVuZGVmaW5lZChjb25zdCBTdHJpbmcm
IHN0cikKKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4U3RyaW5nT3JVbmRlZmlu
ZWQoY29uc3QgU3RyaW5nJiBzdHIsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzdHIuaXNOdWxsKCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6OlVu
ZGVmaW5lZCgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OFN0cmluZyhzdHIpKTsKKyAgICAg
ICAgcmV0dXJuIHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6VW5kZWZp
bmVkKCkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4U3RyaW5nKHN0ciwgaXNvbGF0ZSkpOwog
ICAgIH0KIAotICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhTdHJpbmdPckZhbHNl
KGNvbnN0IFN0cmluZyYgc3RyKQorICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhT
dHJpbmdPckZhbHNlKGNvbnN0IFN0cmluZyYgc3RyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDAp
CiAgICAgewotICAgICAgICByZXR1cm4gc3RyLmlzTnVsbCgpID8gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KHY4OjpGYWxzZSgpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OFN0cmluZyhzdHIpKTsK
KyAgICAgICAgcmV0dXJuIHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6
RmFsc2UoKSkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhTdHJpbmcoc3RyLCBpc29sYXRlKSk7
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
OE51bWJlckFycmF5KGNvbnN0IFZlY3RvcjxUPiYgdmFsdWVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138368</attachid>
            <date>2012-04-23 09:54:45 -0700</date>
            <delta_ts>2012-04-23 09:54:45 -0700</delta_ts>
            <desc>Patch for relanding. It is revealed that the patch was innocent.</desc>
            <filename>bug-84103-20120423095444.patch</filename>
            <type>text/plain</type>
            <size>17473</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0OTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzg5ZjliN2ZhNjUzODcz
ZDE3MDA1M2QxYjRlYjI1MGNhZDgzM2M0MS4uNjc3OTZjNzRiNzE2MGNiNjlhNjQzMzFlYWQwYjc1
N2Q1YjQyMmExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgwIEBACiAyMDEyLTA0LTE3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbUGVyZm9ybWFuY2Vd
W1Y4XSBTa2lwIElzb2xhdGUgbG9vay11cCB0byBmaW5kIFN0cmluZ0NhY2hlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDEwMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5hdGUgQ2hhcGluLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhl
IHBlcmZvcm1hbmNlIG9mIGEgbG90IG9mIERPTSBhdHRyaWJ1dGUKKyAgICAgICAgZ2V0dGVycyB0
aGF0IHJldHVybiBhIHN0cmluZy4KKworICAgICAgICAtIEltcHJvdmVzIHRoZSBwZXJmb3JtYW5j
ZSBvZiBEcm9tYWVvL2RvbS1hdHRyLmh0bWwoZWxlbWVudC5wcm9wZXJ0eSkKKyAgICAgICAgICBi
eSAyNy43JS4KKyAgICAgICAgLSBJbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgRHJvbWFlby9k
b20tYXR0ci5odG1sKGdldEF0dHJpYnV0ZSkKKyAgICAgICAgICBieSAxMC42JS4KKyAgICAgICAg
LSBJbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgZGl2LmlkLCBkaXYuY2xhc3NOYW1lLAorICAg
ICAgICAgIGRpdi5ub2RlTmFtZSwgdGV4dC5ub2RlVmFsdWUsIHRleHQudGV4dENvbnRlbnQgYnkg
MTIlIC0tIDIxJS4KKworICAgICAgICBUaGUgZm9sbG93aW5ncyBhcmUgdGhlIHRlc3QgcmVzdWx0
cyBpbiBteSBMaW51eCBkZXNrdG9wLgorCisgICAgICAgIFBlcmZvcm1hbmNlIHRlc3Q6IERyb21h
ZW8vZG9tLWF0dHIuaHRtbAorICAgICAgICBUb3RhbDogICAgICAgICAgICAgICAgICAgICA2NzQu
NjRydW5zL3MgLT4gIDcwNy4wM3J1bnMvcyAoKyA0LjglKQorICAgICAgICBnZXRBdHRyaWJ1dGU6
ICAgICAgICAgICAgIDE1MzcuNjBydW5zL3MgLT4gMTcwMC4yMHJ1bnMvcyAoKzEwLjYlKQorICAg
ICAgICBlbGVtZW50LnByb3BlcnR5OiAgICAgICAgIDEzODkuMDBydW5zL3MgLT4gMTc3NC4yMHJ1
bnMvcyAoKzI3LjclKQorICAgICAgICBzZXRBdHRyaWJ1dGU6ICAgICAgICAgICAgICA1MzguODhy
dW5zL3MgLT4gIDU0OC44N3J1bnMvcyAoKyAxLjklKQorICAgICAgICBlbGVtZW50LnByb3BlcnR5
ID0gdmFsdWU6ICA2NDQuMDdydW5zL3MgLT4gIDY1Ni42N3J1bnMvcyAoKyAyLjAlKQorICAgICAg
ICBlbGVtZW50LmV4cGFuZG8gPSB2YWx1ZTogICAyMTkuNzZydW5zL3MgLT4gIDIwNy4xNHJ1bnMv
cyAoLSA2LjglKQorICAgICAgICBlbGVtZW50LmV4cGFuZG86ICAgICAgICAgICA1NzguNzdydW5z
L3MgLT4gIDU1NC42N3J1bnMvcyAoLSA0LjIlKQorCisgICAgICAgIFBlcmZvcm1hbmNlIHRlc3Q6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTEzNzQ0MAorICAgICAg
ICBkaXYuaWQ6ICAgICAgICAgICAzMC43MG5zIC0+IDI2LjcwbnMgKCsxNSUpCisgICAgICAgIGRp
di5jbGFzc05hbWU6ICAgIDMxLjEwbnMgLT4gMjYuNDBucyAoKzE4JSkKKyAgICAgICAgZGl2Lm5v
ZGVOYW1lOiAgICAgMzcuNzBucyAtPiAzMy4wMG5zICgrMTQlKQorICAgICAgICB0ZXh0Lm5vZGVW
YWx1ZTogICAzMS40MG5zIC0+IDI1LjkwbnMgKCsyMSUpCisgICAgICAgIHRleHQudGV4dENvbnRl
bnQ6IDUxLjUwbnMgLT4gNDUuOTBucyAoKzEyJSkKKworICAgICAgICBQcmV2aW91c2x5IFY4IGJp
bmRpbmdzIG5lZWQgdG8gbG9vayB1cCBhbiBJc29sYXRlIHRvIGZpbmQKKyAgICAgICAgYW4gSXNv
bGF0ZS1sb2NhbCBTdHJpbmdDYWNoZS4gVGhpcyBwYXRjaCBza2lwcyB0aGUgbG9vay11cAorICAg
ICAgICBieSBnZXR0aW5nIHRoZSBJc29sYXRlIGZyb20gQWNjZXNzb3JJbmZvLkdldElzb2xhdGUo
KQorICAgICAgICBvciBBcmd1bWVudHMuR2V0SXNvbGF0ZSgpLgorCisgICAgICAgIE5vIHRlc3Rz
LiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAgICAgIChOYXRpdmVUb0pT
VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRFbGVtZW50U3RyaW5nQXR0cik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjp2OEV4dGVybmFsU3RyaW5nKTogTWFrZSAnaXNv
bGF0ZScgYW4gb3B0aW9uYWwgYXJndW1lbnQuCisgICAgICAgIElkZWFsbHkgd2Ugd2FudCB0byBt
YWtlICdpc29sYXRlJyBhIG5vbi1vcHRpb25hbCBhcmd1bWVudCwKKyAgICAgICAgYnV0IGl0IGlz
IGRpZmZpY3VsdCB0byByZXdyaXRlIGFsbCB2OEV4dGVybmFsU3RyaW5nKCkgY2FsbGVycworICAg
ICAgICBhdCBhIGJyZWF0aC4gV2UgY2FuIHJld3JpdGUgdGhlbSBpbmNyZW1lbnRhbGx5LgorICAg
ICAgICAoV2ViQ29yZTo6djhTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnY4U3Ry
aW5nT3JOdWxsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2OFN0cmluZ09yVW5kZWZpbmVk
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2OFN0cmluZ09yRmFsc2UpOiBEaXR0by4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmNwcDogVXBkYXRlZCBydW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0cy4KKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRyR2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjJBdHRy
R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBw
bGVtZW50YWxTdHIxQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNl
VjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJM
QXR0ckF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJl
ZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6aGFzaEF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmNvbmRpdGlvbmFsTWV0aG9kMUNhbGxiYWNrKToKKworMjAxMi0wNC0xNyAgS2VudGFybyBIYXJh
ICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW1Y4XSBBZGQgYW4gb3B0aW9uYWwg
SXNvbGF0ZSBhcmd1bWVudCB0byB3cmFwKCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0MjAyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggMDRiNjA2ZGU4NTJlZmY1NDY1YTQy
NmI3OTY0OTU0ODZlYWE2NjRlZC4uYjEyMWU5OTFkNTUyYTZiYzEyZjQzZTUyODkwMGU0ZTQ5NTQ5
MTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KQEAgLTEwMTAsNyArMTAxMCw3IEBAIEVORAogICAgIHJldHVybiB2YWx1ZTsK
IEVORAogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICAiIC4gUmV0dXJuTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
JHJlc3VsdCkuIjtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICAiIC4gUmV0dXJuTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3Vs
dCwgImluZm8uR2V0SXNvbGF0ZSgpIikuIjtcbiIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0z
MzQzLDcgKzMzNDMsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgIH0K
IAogICAgICRyZXR1cm4gLj0gIi5yZWxlYXNlKCkiIGlmICgkcmV0dXJuSXNSZWYpOwotICAgICRy
ZXN1bHQgLj0gJGluZGVudCAuIFJldHVybk5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25h
dHVyZSwgJHJldHVybikgLiAiO1xuIjsKKyAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiBSZXR1cm5O
YXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkdldElz
b2xhdGUoKSIpIC4gIjtcbiI7CiAKICAgICByZXR1cm4gJHJlc3VsdDsKIH0KQEAgLTM3NjAsNiAr
Mzc2MCw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIHsKICAgICBteSAkc2lnbmF0dXJlID0gc2hp
ZnQ7CiAgICAgbXkgJHZhbHVlID0gc2hpZnQ7CisgICAgbXkgJGdldElzb2xhdGUgPSBzaGlmdDsK
ICAgICBteSAkdHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRzaWduYXR1cmUpOwogCiAgICAg
cmV0dXJuICJ2OEJvb2xlYW4oJHZhbHVlKSIgaWYgJHR5cGUgZXEgImJvb2xlYW4iOwpAQCAtMzc5
MCwxNCArMzc5MSwxNSBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAKICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKICAgICAgICAgbXkgJGNvbnYgPSAkc2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcyJ9Owor
ICAgICAgICBteSAkZ2V0SXNvbGF0ZUFyZ3VtZW50ID0gJGdldElzb2xhdGUgPyAiLCAkZ2V0SXNv
bGF0ZSIgOiAiIjsKICAgICAgICAgaWYgKGRlZmluZWQgJGNvbnYpIHsKLSAgICAgICAgICAgIHJl
dHVybiAidjhTdHJpbmdPck51bGwoJHZhbHVlKSIgaWYgJGNvbnYgZXEgIk51bGwiOwotICAgICAg
ICAgICAgcmV0dXJuICJ2OFN0cmluZ09yVW5kZWZpbmVkKCR2YWx1ZSkiIGlmICRjb252IGVxICJV
bmRlZmluZWQiOwotICAgICAgICAgICAgcmV0dXJuICJ2OFN0cmluZ09yRmFsc2UoJHZhbHVlKSIg
aWYgJGNvbnYgZXEgIkZhbHNlIjsKKyAgICAgICAgICAgIHJldHVybiAidjhTdHJpbmdPck51bGwo
JHZhbHVlJGdldElzb2xhdGVBcmd1bWVudCkiIGlmICRjb252IGVxICJOdWxsIjsKKyAgICAgICAg
ICAgIHJldHVybiAidjhTdHJpbmdPclVuZGVmaW5lZCgkdmFsdWUkZ2V0SXNvbGF0ZUFyZ3VtZW50
KSIgaWYgJGNvbnYgZXEgIlVuZGVmaW5lZCI7CisgICAgICAgICAgICByZXR1cm4gInY4U3RyaW5n
T3JGYWxzZSgkdmFsdWUkZ2V0SXNvbGF0ZUFyZ3VtZW50KSIgaWYgJGNvbnYgZXEgIkZhbHNlIjsK
IAogICAgICAgICAgICAgZGllICJVbmtub3duIHZhbHVlIGZvciBUcmVhdFJldHVybmVkTnVsbFN0
cmluZ0FzIGV4dGVuZGVkIGF0dHJpYnV0ZSI7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJ2
OFN0cmluZygkdmFsdWUpIjsKKyAgICAgICAgcmV0dXJuICJ2OFN0cmluZygkdmFsdWUkZ2V0SXNv
bGF0ZUFyZ3VtZW50KSI7CiAgICAgfQogCiAgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJh
dG9yLT5HZXRBcnJheVR5cGUoJHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IDgyM2FmYTMwNDU1YWFmYWJjNGM5NTU5ZjEwNzc4Y2IzMmE0ZjViYmIuLjlkNmEy
ZjA5ODZjYWUwNzMyNDA1NmRlYjRhMDUzMjYzYjQzYjViMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQzLDE0ICs0MywxNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3QgdgogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RFdmVudENvbnN0cnVjdG9yLmF0dHIxLl9n
ZXQiKTsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wID0gVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+
YXR0cjEoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+YXR0cjEoKSwgaW5mby5HZXRJc29s
YXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIyQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0RXZlbnRDb25zdHJ1Y3Rvci5hdHRyMi5fZ2V0
Iik7CiAgICAgVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcCA9IFY4VGVzdEV2ZW50Q29uc3RydWN0
b3I6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmF0
dHIyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmF0dHIyKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDUxOTI2ZGJiMGU5Y2Q0NjMzY2FjY2JjNWQ2ZGQz
MDMxNWNiNDg2Y2EuLmM0MTgyYzdjYTg2ZTUyNTZkZTQzZDk1NmMyNTIxYzFiYTUyNGM4ODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJ
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEludGVyZmFjZS5zdXBwbGVtZW50YWxT
dHIxLl9nZXQiKTsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhUZXN0U3VwcGxlbWVu
dGFsOjpzdXBwbGVtZW50YWxTdHIxKGltcCkpOworICAgIHJldHVybiB2OFN0cmluZyhUZXN0U3Vw
cGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIxKGltcCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQpA
QCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRh
bFN0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogewogICAgIElOQ19TVEFU
UygiRE9NLlRlc3RJbnRlcmZhY2Uuc3VwcGxlbWVudGFsU3RyMi5fZ2V0Iik7CiAgICAgVGVzdElu
dGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
LSAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMihp
bXApKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFs
U3RyMihpbXApLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggZGZhNGQzYTQy
MmU1ODc3YzNjNDFjZjA4ZDkzOGRmMTE1NjQ3M2Q0ZS4uZjkxOWQ0ZmU4ZDE2ZjgyZDM2YTdmNTI1
NjE2YmRlMzI4OTQwODA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPgogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoucmVhZE9ubHlTdHJp
bmdBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnJlYWRPbmx5U3RyaW5nQXR0
cigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5yZWFkT25seVN0cmluZ0F0dHIoKSwgaW5m
by5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRP
bmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zdHJpbmdBdHRyLl9n
ZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0dHIoKSk7CisgICAgcmV0dXJu
IHY4U3RyaW5nKGltcC0+c3RyaW5nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIHN0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKQEAgLTQ3OSw3ICs0NzksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxl
Y3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogewogICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoucmVmbGVjdGVkU3RyaW5nQXR0ci5fZ2V0Iik7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1
cm4gdjhTdHJpbmcoaW1wLT5nZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWRzdHJpbmdhdHRyQXR0cikpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldEF0dHJpYnV0
ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSwgaW5mby5HZXRJ
c29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVUkxBdHRyQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmEKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlZmxlY3Rl
ZFVSTEF0dHIuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+Z2V0VVJMQXR0cmlidXRl
KFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKKyAgICByZXR1cm4g
djhTdHJpbmcoaW1wLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0
ZWR1cmxhdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVm
bGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAt
NTU5LDcgKzU1OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3Ry
aW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiB7CiAgICAgSU5DX1NUQVRT
KCJET00uVGVzdE9iai5yZWZsZWN0ZWRTdHJpbmdBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0
cmluZyhpbXAtPmdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRT
dHJpbmdBdHRyQXR0cikpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0ciksIGluZm8uR2V0
SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNjA3LDcgKzYwNyw3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWZsZWN0
ZWRDdXN0b21VUkxBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldFVSTEF0
dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikpOwor
ICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAog
c3RhdGljIHZvaWQgcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQpAQCAtNjczLDcgKzY3Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2CiAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CiAgICAgICAgIHJldHVy
biB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKICAgICB9Ci0gICAgcmV0dXJuIHY4U3RyaW5nKHYp
OworICAgIHJldHVybiB2OFN0cmluZyh2LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRp
YyB2b2lkIHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCkBAIC02OTIsNyArNjkyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHYKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZv
aWQgc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKQEAgLTEyMDcsNyArMTIwNyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gaGFzaEF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4CiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5oYXNoLl9nZXQiKTsKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVy
biB2OFN0cmluZyhpbXAtPmhhc2goKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+aGFzaCgp
LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMTY2NCw3ICsxNjY0LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbE1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmcKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmNvbmRpdGlvbmFs
TWV0aG9kMSIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7Ci0gICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+Y29uZGl0aW9uYWxNZXRob2QxKCkp
OworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmNvbmRpdGlvbmFsTWV0aG9kMSgpLCBhcmdzLkdl
dElzb2xhdGUoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDQwYTk0MGRkMzBlOWZjMzc0NGI3
OTk1MDk3YTI4Y2IyZjYyZTM1OGIuLjJkYjc2YThiODUxMGZjNmFjZjBkZDMxYjg3Y2ZjNjA4OTYx
NTgyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtNTUx
LDcgKzU1MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRFbGVtZW50U3RyaW5nQXR0cihj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIAogewogICAgIEVsZW1l
bnQqIGltcCA9IFY4RWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJu
IHY4RXh0ZXJuYWxTdHJpbmcoaW1wLT5nZXRBdHRyaWJ1dGUobmFtZSkpOworICAgIHJldHVybiB2
OEV4dGVybmFsU3RyaW5nKGltcC0+Z2V0QXR0cmlidXRlKG5hbWUpLCBpbmZvLkdldElzb2xhdGUo
KSk7CiB9CiAKIHZvaWQgc2V0RWxlbWVudFN0cmluZ0F0dHIoY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggOTVhNTAw
NTc1MTZiODc4OTBkZGI0M2QwMDU0NjUyOGY3MDJmYjhiMC4uOTE0MTJhMTAyZjJhZTU4MGFiMWFm
ODA0MGU1ODIwODgxNTQ5Y2U5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmgKQEAgLTI0NCwyMCArMjQ0LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBSZXR1
cm4gYSBWOCBleHRlcm5hbCBzdHJpbmcgdGhhdCBzaGFyZXMgdGhlIHVuZGVybHlpbmcgYnVmZmVy
IHdpdGggdGhlIGdpdmVuCiAgICAgLy8gV2ViQ29yZSBzdHJpbmcuIFRoZSByZWZlcmVuY2UgY291
bnRpbmcgbWVjaGFuaXNtIGlzIHVzZWQgdG8ga2VlcCB0aGUKICAgICAvLyB1bmRlcmx5aW5nIGJ1
ZmZlciBhbGl2ZSB3aGlsZSB0aGUgc3RyaW5nIGlzIHN0aWxsIGxpdmUgaW4gdGhlIFY4IGVuZ2lu
ZS4KLSAgICBpbmxpbmUgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4RXh0ZXJuYWxTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCisgICAgaW5saW5lIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OEV4
dGVybmFsU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9
IDApCiAgICAgewogICAgICAgICBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsID0gc3RyaW5nLmltcGwo
KTsKICAgICAgICAgaWYgKCFzdHJpbmdJbXBsKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpTdHJp
bmc6OkVtcHR5KCk7CiAKLSAgICAgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpOworICAgICAgICBWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IGlzb2xhdGUgPyBzdGF0aWNfY2FzdDxWOEJpbmRpbmdQZXJJc29s
YXRlRGF0YSo+KGlzb2xhdGUtPkdldERhdGEoKSkgOiBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
Y3VycmVudCgpOwogICAgICAgICByZXR1cm4gZGF0YS0+c3RyaW5nQ2FjaGUoKS0+djhFeHRlcm5h
bFN0cmluZyhzdHJpbmdJbXBsKTsKICAgICB9CiAKICAgICAvLyBDb252ZXJ0IGEgc3RyaW5nIHRv
IGEgVjggc3RyaW5nLgotICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+
IHY4U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDAp
CiAgICAgewotICAgICAgICByZXR1cm4gdjhFeHRlcm5hbFN0cmluZyhzdHJpbmcpOworICAgICAg
ICByZXR1cm4gdjhFeHRlcm5hbFN0cmluZyhzdHJpbmcsIGlzb2xhdGUpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0zOTYsMTkgKzM5NiwxOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXdVbmRldGVjdGFibGUoZnJvbVdl
YkNvcmVTdHJpbmcoc3RyKSwgc3RyLmxlbmd0aCgpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHY4U3RyaW5nT3JOdWxsKGNvbnN0IFN0cmluZyYgc3RyKQorICAg
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhTdHJpbmdPck51bGwoY29uc3QgU3RyaW5n
JiBzdHIsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiBz
dHIuaXNOdWxsKCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoKSkgOiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4odjhTdHJpbmcoc3RyKSk7CisgICAgICAgIHJldHVybiBzdHIuaXNOdWxs
KCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Ok51bGwoKSkgOiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4odjhTdHJpbmcoc3RyLCBpc29sYXRlKSk7CiAgICAgfQogCi0gICAgaW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2OFN0cmluZ09yVW5kZWZpbmVkKGNvbnN0IFN0cmluZyYgc3RyKQor
ICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhTdHJpbmdPclVuZGVmaW5lZChjb25z
dCBTdHJpbmcmIHN0ciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6VW5kZWZpbmVk
KCkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4U3RyaW5nKHN0cikpOworICAgICAgICByZXR1
cm4gc3RyLmlzTnVsbCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpVbmRlZmluZWQoKSkg
OiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhTdHJpbmcoc3RyLCBpc29sYXRlKSk7CiAgICAgfQog
Ci0gICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFN0cmluZ09yRmFsc2UoY29uc3Qg
U3RyaW5nJiBzdHIpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFN0cmluZ09y
RmFsc2UoY29uc3QgU3RyaW5nJiBzdHIsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdHIuaXNOdWxsKCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6
OkZhbHNlKCkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4U3RyaW5nKHN0cikpOworICAgICAg
ICByZXR1cm4gc3RyLmlzTnVsbCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpGYWxzZSgp
KSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OFN0cmluZyhzdHIsIGlzb2xhdGUpKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4TnVtYmVy
QXJyYXkoY29uc3QgVmVjdG9yPFQ+JiB2YWx1ZXMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>