<?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>169544</bug_id>
          
          <creation_ts>2017-03-13 01:45:39 -0700</creation_ts>
          <short_desc>[DFG] ToString operation should have fixup for primitives to say this node does not have side effects</short_desc>
          <delta_ts>2017-03-15 21:49:55 -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>JavaScriptCore</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1287108</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-13 01:45:39 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287210</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-13 09:49:43 -0700</bug_when>
    <thetext>Let&apos;s consider the case like this.

`${array[0]} and ${array[1]}`

If we think ToString(array element) is side effectful, we need to lookup butterfly twice for that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287225</commentid>
    <comment_count>2</comment_count>
      <attachid>304268</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-13 10:21:51 -0700</bug_when>
    <thetext>Created attachment 304268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287228</commentid>
    <comment_count>3</comment_count>
      <attachid>304270</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-13 10:27:00 -0700</bug_when>
    <thetext>Created attachment 304270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288347</commentid>
    <comment_count>4</comment_count>
      <attachid>304270</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-15 16:38:27 -0700</bug_when>
    <thetext>Comment on attachment 304270
Patch

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

r=me with comments

&gt; Source/JavaScriptCore/ChangeLog:24
&gt; +            template-string-array       12.6284+-0.2766     ^      9.4998+-0.2295        ^ definitely 1.3293x faster
&gt; +
&gt; +        And SixSpeed template_string.es6 shows 16.68x performance improvement due to LICM onto this non-side-effectful ToString().
&gt; +
&gt; +                                          baseline                  patched
&gt; +
&gt; +            template_string.es6     3229.7343+-40.5705    ^    193.6077+-36.3349       ^ definitely 16.6818x faster

nice

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:2239
&gt; +        // While Symbol can throw an error, it is excluded since it is a Cell!

Symbol can or can&apos;t throw an error? Why would it be able to?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7940
&gt; +            callOperation(operationToString, resultGPR, extractResult(op1Regs));

I understand what extractResult does, but it&apos;s a very weird function name to be calling for an operand to a function. Perhaps we can come up with a better name.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7943
&gt; +            callOperation(operationCallStringConstructor, resultGPR, extractResult(op1Regs));

ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4942
&gt; +            else if (m_node-&gt;child1().useKind() == NotCellUse)
&gt; +                value = lowNotCell(m_node-&gt;child1());

This is very weird. You&apos;re emitting lowNotCell, but then branching on isCell.
Please add a new place to emit code for this. Or just assign isCellPredicate to false.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:12240
&gt; +    LValue lowNotCell(Edge edge)
&gt; +    {
&gt; +        LValue result = lowJSValue(edge, ManualOperandSpeculation);
&gt; +        speculateNotCell(edge, result);
&gt; +        return result;
&gt; +    }

Style nit:
I think this makes more sense if you did this the other way around:
Implement speculateNotCell in terms of lowNotCell.
That way, speculateNotCell would be implemented like:

void speculateNotCell(Edge edge) { lowNotCell(edge); }

(This is how lowCell and speculateCell work.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288448</commentid>
    <comment_count>5</comment_count>
      <attachid>304270</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-15 21:38:26 -0700</bug_when>
    <thetext>Comment on attachment 304270
Patch

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

Thanks for your review!

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:2239
&gt;&gt; +        // While Symbol can throw an error, it is excluded since it is a Cell!
&gt; 
&gt; Symbol can or can&apos;t throw an error? Why would it be able to?

ToString(Symbol) throws an error. So, in that case, we should annotate so in the clobberize.
But in the following case, we use NotCellUse edge filter. That filters Symbols since Symbols are Cells.
So here, we do not need to consider about ToString(Symbol) case in the clobberize if the edge filter is NotCellUse.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7940
&gt;&gt; +            callOperation(operationToString, resultGPR, extractResult(op1Regs));
&gt; 
&gt; I understand what extractResult does, but it&apos;s a very weird function name to be calling for an operand to a function. Perhaps we can come up with a better name.

Make sense. Instead, I added a definition for callOperation(C_JITOperation_EJ, GPRReg, JSValueRegs) for 64bit. It drops them and makes it cleaner.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:7943
&gt;&gt; +            callOperation(operationCallStringConstructor, resultGPR, extractResult(op1Regs));
&gt; 
&gt; ditto.

Ditto.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:4942
&gt;&gt; +                value = lowNotCell(m_node-&gt;child1());
&gt; 
&gt; This is very weird. You&apos;re emitting lowNotCell, but then branching on isCell.
&gt; Please add a new place to emit code for this. Or just assign isCellPredicate to false.

Thanks! I&apos;ve just assigned isCellPredicate to false.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:12240
&gt;&gt; +    }
&gt; 
&gt; Style nit:
&gt; I think this makes more sense if you did this the other way around:
&gt; Implement speculateNotCell in terms of lowNotCell.
&gt; That way, speculateNotCell would be implemented like:
&gt; 
&gt; void speculateNotCell(Edge edge) { lowNotCell(edge); }
&gt; 
&gt; (This is how lowCell and speculateCell work.)

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288453</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-15 21:49:55 -0700</bug_when>
    <thetext>Committed r214028: &lt;http://trac.webkit.org/changeset/214028&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304268</attachid>
            <date>2017-03-13 10:21:51 -0700</date>
            <delta_ts>2017-03-13 10:26:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169544-20170314022149.patch</filename>
            <type>text/plain</type>
            <size>16645</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OGZhODFkYjUyNjg2MDAwYTJmOGJkZTdiN2IyYzg0NDY3NWUxZDE5Li41NmM0OTZhMjEwNzlhNmJl
MzdkYWJhMzlkYTgyYzFkNGI5NmU0ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNy0wMy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBUb1N0cmluZyBvcGVyYXRpb24gc2hvdWxkIGhhdmUgZml4
dXAgZm9yIHByaW1pdGl2ZXMgdG8gc2F5IHRoaXMgbm9kZSBkb2VzIG5vdCBoYXZlIHNpZGUgZWZm
ZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3Vy
IERGRyBUb1N0cmluZyBvbmx5IGNvbnNpZGVycyB3ZWxsIGFib3V0IFN0cmluZyBvcGVyYW5kcy4g
V2hpbGUgVG9TdHJpbmcobm9uIGNlbGwgb3BlcmFuZCkgZG9lcyBub3QgaGF2ZQorICAgICAgICBh
bnkgc2lkZSBlZmZlY3QsIGl0IGlzIG5vdCBtb2RlbGVkIHdlbGwgaW4gREZHLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZpeHVwIGZvciBUb1N0cmluZyB3aXRoIE5vbkNlbGxV
c2UgZWRnZS4gSWYgdGhpcyBlZGdlIGlzIHNldCwgVG9TdHJpbmcgZG9lcyBub3QKKyAgICAgICAg
Y2xvYmJlciB0aGluZ3MgKGxpa2UgVG9Mb3dlckNhc2UsIHByb2R1Y2luZyBTdHJpbmcpLiBBbmQg
VG9TdHJpbmcoTm9uQ2VsbFVzZSkgYWxsb3dzIHVzIHRvIHBlcmZvcm0gQ1NFIQorCisgICAgICAg
IE91ciBtaWNyb2JlbmNobWFyayBzaG93cyAzMi45JSBpbXByb3ZlbWVudCBkdWUgdG8gZHJvcHBl
ZCBHZXRCdXR0ZXJmbHkgYW5kIENTRSBmb3IgVG9TdHJpbmcoKS4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBh
dGNoZWQKKworICAgICAgICAgICAgdGVtcGxhdGUtc3RyaW5nLWFycmF5ICAgICAgIDEyLjYyODQr
LTAuMjc2NiAgICAgXiAgICAgIDkuNDk5OCstMC4yMjk1ICAgICAgICBeIGRlZmluaXRlbHkgMS4z
MjkzeCBmYXN0ZXIKKworICAgICAgICBBbmQgU2l4U3BlZWQgdGVtcGxhdGVfc3RyaW5nLmVzNiBz
aG93cyAxNi42OHggcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgZHVlIHRvIExJQ00gb250byB0aGlz
IG5vbi1zaWRlLWVmZmVjdGZ1bCBUb1N0cmluZygpLgorCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBhdGNoZWQKKwor
ICAgICAgICAgICAgdGVtcGxhdGVfc3RyaW5nLmVzNiAgICAgMzIyOS43MzQzKy00MC41NzA1ICAg
IF4gICAgMTkzLjYwNzcrLTM2LjMzNDkgICAgICAgXiBkZWZpbml0ZWx5IDE2LjY4MTh4IGZhc3Rl
cgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvU3RyaW5nT3JDYWxsU3RyaW5n
Q29uc3RydWN0b3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmlu
Z0NvbnN0cnVjdG9yT25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlTm90Q2VsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd05vdENlbGwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVOb3RDZWxsKToK
KwogMjAxNy0wMy0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IFN0cnVjdHVyZTo6d2lsbFN0b3JlVmFsdWVTbG93IG5lZWRzIHRvIGtlZXAgdGhlIHByb3BlcnR5
IHRhYmxlIGFsaXZlIHVudGlsIHRoZSBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAwZDJlOTI5
YmExYmY4YTRjM2Q3MGRiNmNlYTI4NDlmMDQ0NzUwYmZiLi5mYmZlMTY2ZWI3MzljMjhmZGFhYmZh
MjJjYmE2ZTYxODAyMWEwYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xODU4LDYgKzE4NTgs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgorICAgICAgICBjYXNlIE5vdENlbGxV
c2U6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDZWxsVXNlOgogICAgICAgICBj
YXNlIFVudHlwZWRVc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CmluZGV4IDRhNjY1YTNmNDg4NDdlYjgzMDhlZWM4ZTdhZmJjZTU1NGM0NjZmNWUuLmQyZTM3MmVh
MjdmYjNhMGY2YTZmNWRhNWNmMzc2ZDRmZGM2N2VlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNDA4LDYgKzE0MDgsMTAgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNv
bnN0IFdyaXRlRnUKICAgICAgICAgICAgIHJlYWQoV29ybGQpOwogICAgICAgICAgICAgd3JpdGUo
SGVhcCk7CiAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBOb3RDZWxsVXNlOgor
ICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCA4OWI5MDQ2M2VkMjQ4MzI1MzdlZDE4NTRkYzk0MzdhMmJmM2IyMjAwLi4xOWRk
MzM4ZGQ3NzUyNzc1OWQ4NzZjZGE2MjQxM2VkM2FjMzYxZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTIyMzUsNiArMjIzNSwxMyBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVz
ZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAg
ICAgICAgLy8gV2hpbGUgU3ltYm9sIGNhbiB0aHJvdyBhbiBlcnJvciwgaXQgaXMgZXhjbHVkZWQg
c2luY2UgaXQgaXMgYSBDZWxsIQorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZU5vdENlbGwoKSkgeworICAgICAgICAgICAgZml4RWRnZTxOb3RDZWxsVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJh
dGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCBh
dHRlbXB0VG9NYWtlRmFzdFN0cmluZ0FkZChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBmYmFlZjNiZjI5ZWI0NzQx
MjhmYTIwYmQ3MGJhOTFjN2ZkZTFjNGI0Li5lYzUzMzkyM2QxNmI0NWNlNjI4NmVhZDUxYmJhNWI4
NzFmMmRhYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtNzkyNSw2ICs3OTI1LDYxIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
dGVtcG9yYXJ5UmVnaXN0ZXJGb3JQdXRCeVZhbChHUFJUZW1wb3JhcnkmIHRlbXBvcmFyeSwgQXJy
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yT25DZWxsKE5vZGUqIG5vZGUpCiB7CisgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBOb3RDZWxsVXNlKSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOworCisgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKworICAgICAgICBzcGVjdWxhdGVOb3RDZWxsKG5vZGUtPmNoaWxkMSgpLCBvcDFS
ZWdzKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworCisgICAgICAgIGlmIChub2RlLT5v
cCgpID09IFRvU3RyaW5nKQorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0
cmluZywgcmVzdWx0R1BSLCBleHRyYWN0UmVzdWx0KG9wMVJlZ3MpKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBBU1NFUlQob3AgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKKyAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1
bHRHUFIsIGV4dHJhY3RSZXN1bHQob3AxUmVncykpOworICAgICAgICB9CisgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSkgeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVS
ZWdzKCk7CisgICAgICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxUmVncy5wYXlsb2FkR1BS
KCk7CisKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZTsKKyAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7CisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDEgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3AxLmpz
VmFsdWVSZWdzKCkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgyID0g
bV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcob3AxUGF5bG9hZEdQUik7CisgICAgICAgICAgICBtX2pp
dC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3VsdEdQUik7CisgICAgICAgICAgICBkb25lID0gbV9q
aXQuanVtcCgpOworICAgICAgICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKKyAgICAgICAg
ICAgIHNsb3dQYXRoMi5saW5rKCZtX2ppdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUt
Pm9wKCkgPT0gVG9TdHJpbmcpCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRv
U3RyaW5nLCByZXN1bHRHUFIsIGV4dHJhY3RSZXN1bHQob3AxUmVncykpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOworICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IsIHJl
c3VsdEdQUiwgZXh0cmFjdFJlc3VsdChvcDFSZWdzKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKKyAgICAgICAg
ICAgIGRvbmUubGluaygmbV9qaXQpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIo
KTsKICAgICAKQEAgLTg1MzMsMTMgKzg1ODgsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlU3ltYm9sKEVkZ2UgZWRnZSkKICAgICBzcGVjdWxhdGVTeW1ib2woZWRnZSwgb3BlcmFu
ZC5ncHIoKSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU5vdENlbGwoRWRn
ZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzKQoreworICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVk
Z2UsIH5TcGVjQ2VsbCwgbV9qaXQuYnJhbmNoSWZDZWxsKHJlZ3MpKTsKK30KKwogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCB+U3BlY0NlbGwpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
SlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOyAKLSAgICB0eXBlQ2hlY2sob3BlcmFuZC5qc1ZhbHVlUmVncygpLCBlZGdlLCB+U3BlY0Nl
bGwsIG1faml0LmJyYW5jaElmQ2VsbChvcGVyYW5kLmpzVmFsdWVSZWdzKCkpKTsKKyAgICBzcGVj
dWxhdGVOb3RDZWxsKGVkZ2UsIG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSk7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU90aGVyKEVkZ2UgZWRnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBlOTYzN2ZiMGQzYTU5MWJjMzM2
ODY4NDYzNGVkODZmMDJjMzIxZTEwLi4zOWU3NDk1ZGZlNjNiNjNhZDk2Nzc2ZDg1YzJhOGI3MTVj
M2VkOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCkBAIC0yOTU0LDYgKzI5NTQsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9p
ZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0
ZVN5bWJvbChFZGdlLCBHUFJSZWcgY2VsbCk7CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRn
ZSk7CisgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2
b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVPdGhlcihFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZU1pc2MoRWRnZSwgSlNWYWx1ZVJlZ3MpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5k
ZXggNzM1NjEyMmJlYmI1Mzc3NTllYTRkNTRjYTFlZThmMjkzYzA1NDk3NS4uZGM3NjMzNDgwZmI0
Yjc2M2QyNWFjNjc4NjU2MGE2NDhhZGE4N2JhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNzY5LDM4ICszNzY5
LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAK
ICAgICBjYXNlIFRvU3RyaW5nOgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOiB7Ci0g
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewotICAg
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxLnBheWxvYWRHUFIoKTsKLSAgICAgICAg
ICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgZG9uZTsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJl
ZGljdGlvbigpICYgU3BlY1N0cmluZykgewotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoMSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChvcDEuanNWYWx1ZVJlZ3MoKSk7
Ci0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgyID0gbV9qaXQuYnJh
bmNoSWZOb3RTdHJpbmcob3AxUGF5bG9hZEdQUik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92
ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRHUFIpOwotICAgICAgICAgICAgICAgIGRvbmUgPSBtX2pp
dC5qdW1wKCk7Ci0gICAgICAgICAgICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKLSAgICAg
ICAgICAgICAgICBzbG93UGF0aDIubGluaygmbV9qaXQpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKG9wID09IFRvU3RyaW5nKQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVG9TdHJpbmcsIHJlc3VsdEdQUiwgb3AxUmVncyk7Ci0gICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQob3AgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsK
LSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3RvciwgcmVzdWx0R1BSLCBvcDFSZWdzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQotICAg
ICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwotICAgICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
CiAgICAgICAgIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBhMDVkOGRiZDhhNDY3YmI5MTdmMzNl
NzZiNTg4ZDhjMThkMGY2ZjhkLi5hNTNhNzdhMjQyNzVkODIwZWYyMDFhMThhNzlmMDU2MzYzNGIz
OGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKQEAgLTM3MzksMzcgKzM3MzksNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgVG9TdHJpbmc6CiAgICAgY2FzZSBD
YWxsU3RyaW5nQ29uc3RydWN0b3I6IHsKLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIo
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwotICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZTsKLSAgICAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY1N0cmluZykgewotICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1Zh
bHVlUmVncyhvcDFHUFIpKTsKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aDIgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFHUFIpOwotICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwotICAgICAgICAgICAgICAgIGRvbmUgPSBt
X2ppdC5qdW1wKCk7Ci0gICAgICAgICAgICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgICAgICAgICBzbG93UGF0aDIubGluaygmbV9qaXQpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKG9wID09IFRvU3RyaW5nKQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVG9TdHJpbmcsIHJlc3VsdEdQUiwgb3AxR1BSKTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3Ip
OwotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yLCByZXN1bHRHUFIsIG9wMUdQUik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKLSAg
ICAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IAogICAgICAgICBjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbChu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDZjOTg4NWYxYjYwYTcxMjJmMWZhYWQ1OTk4MWMy
MzViMTViOGJmN2YuLmRhYmE2YmE1NzNjMzU0MGU0OTcxNmNhOWZmMDJhZDkyOTJiYjY2NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQ5
MzMsMTAgKzQ5MzMsMTMgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgQ2VsbFVzZToKKyAgICAgICAgY2FzZSBOb3RDZWxsVXNlOgog
ICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZTsKICAg
ICAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQogICAg
ICAgICAgICAgICAgIHZhbHVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE5vdENlbGxVc2UpCisg
ICAgICAgICAgICAgICAgdmFsdWUgPSBsb3dOb3RDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIApAQCAtMTIyMjgsNiArMTIyMzEsMTMgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlZhbHVl
IG5vdCBkZWZpbmVkIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKworICAgIExWYWx1ZSBs
b3dOb3RDZWxsKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBsb3dK
U1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0
ZU5vdENlbGwoZWRnZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAg
ICAgCiAgICAgTFZhbHVlIGxvd1N0b3JhZ2UoRWRnZSBlZGdlKQogICAgIHsKQEAgLTEzMTUwLDEz
ICsxMzE2MCwxNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX291dC5hcHBlbmRU
byhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzcGVjdWxh
dGVOb3RDZWxsKEVkZ2UgZWRnZSwgTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgRlRMX1RZ
UEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgflNwZWNDZWxsLCBpc0NlbGwodmFs
dWUpKTsKKyAgICB9CisKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSBlZGdlKQogICAg
IHsKICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNW
YWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICB0eXBlQ2hlY2so
anNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgflNwZWNDZWxsLCBpc0NlbGwodmFsdWUpKTsKKyAg
ICAgICAgc3BlY3VsYXRlTm90Q2VsbChlZGdlLCBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbikpOwogICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVk
Z2UgZWRnZSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMDViYjAxMDE1OGUxNTRkYzRlYWNlY2YyODMwMzNmODIxMTcwMzlmZi4uMTI1YzU3
M2UzOWI3MDg0Y2U5NDM4MDU4MDYxYzU3OGUzNGY5MWNjNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0w
My0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
REZHXSBUb1N0cmluZyBvcGVyYXRpb24gc2hvdWxkIGhhdmUgZml4dXAgZm9yIHByaW1pdGl2ZXMg
dG8gc2F5IHRoaXMgbm9kZSBkb2VzIG5vdCBoYXZlIHNpZGUgZWZmZWN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NTQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvdGVt
cGxhdGUtc3RyaW5nLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAq
IHN0cmVzcy90by1zdHJpbmctbm9uLWNlbGwtdXNlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKwogMjAxNy0wMy0xMCAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTogTWFrZSBtb3JlIGRl
bW9zIHJ1bgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdGVtcGxhdGUtc3Ry
aW5nLWFycmF5LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdGVtcGxhdGUtc3RyaW5nLWFy
cmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg4YjY2OWM0OTYwOWYwNDAxZGMwN2Q5NDg2NzcwNDY1NmRhNjU4
YzkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy90ZW1wbGF0ZS1z
dHJpbmctYXJyYXkuanMKQEAgLTAsMCArMSw5IEBACit2YXIgYXJyYXkgPSBbMSwgMiwgM107Citm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZXR1cm4gYCR7YXJyYXlbMF19LCAke2FycmF5WzFdfSwg
JHthcnJheVsyXX0sICR7YXJyYXlbMF19LCAke2FycmF5WzFdfSwgJHthcnJheVsyXX1gOworfQor
bm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgdGVz
dCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdG8tc3RyaW5nLW5vbi1jZWxsLXVzZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3RvLXN0cmluZy1ub24tY2VsbC11c2UuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTczY2Q1NjdjNjczNjgwMDhkMmZhZDUzMGQ5ZDFjYjUzZGFkYzhiMQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3RvLXN0cmluZy1ub24tY2VsbC11c2UuanMKQEAgLTAsMCArMSw0
MyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2Up
Cit7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gdG9TdHJp
bmcodmFsdWUpCit7CisgICAgcmV0dXJuIGAke3ZhbHVlfWA7Cit9Citub0lubGluZSh0b1N0cmlu
Zyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91bGRCZSh0b1N0
cmluZyhpKSwgaSArICIiKTsKKyAgICBzaG91bGRCZSh0b1N0cmluZyhudWxsKSwgIm51bGwiKTsK
KyAgICBzaG91bGRCZSh0b1N0cmluZyh1bmRlZmluZWQpLCAidW5kZWZpbmVkIik7CisgICAgc2hv
dWxkQmUodG9TdHJpbmcoMTAuNSksICIxMC41Iik7CisgICAgc2hvdWxkQmUodG9TdHJpbmcoLTEw
LjUpLCAiLTEwLjUiKTsKKyAgICBzaG91bGRCZSh0b1N0cmluZyh0cnVlKSwgInRydWUiKTsKKyAg
ICBzaG91bGRCZSh0b1N0cmluZyhmYWxzZSksICJmYWxzZSIpOworICAgIHNob3VsZEJlKHRvU3Ry
aW5nKDAgLyAwKSwgIk5hTiIpOworfQorCitzaG91bGRCZSh0b1N0cmluZygiSEVMTE8iKSwgIkhF
TExPIik7CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgdG9TdHJpbmcoU3ltYm9sKCJDb2NvYSIp
KTsKK30sIGBUeXBlRXJyb3I6IENhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nYCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304270</attachid>
            <date>2017-03-13 10:27:00 -0700</date>
            <delta_ts>2017-03-15 16:38:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169544-20170314022659.patch</filename>
            <type>text/plain</type>
            <size>16738</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZWFmYThmMDU3OWFjMzMxOWE3NWJkN2U5M2FkYzI1ZDNlY2QzNmYwLi4wZDE4ZWVmZThlYWJhM2Vj
MzdhNDFlODM3ZDliZDE4OTNiNDBlOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNy0wMy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBUb1N0cmluZyBvcGVyYXRpb24gc2hvdWxkIGhhdmUgZml4
dXAgZm9yIHByaW1pdGl2ZXMgdG8gc2F5IHRoaXMgbm9kZSBkb2VzIG5vdCBoYXZlIHNpZGUgZWZm
ZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3Vy
IERGRyBUb1N0cmluZyBvbmx5IGNvbnNpZGVycyB3ZWxsIGFib3V0IFN0cmluZyBvcGVyYW5kcy4g
V2hpbGUgVG9TdHJpbmcobm9uIGNlbGwgb3BlcmFuZCkgZG9lcyBub3QgaGF2ZQorICAgICAgICBh
bnkgc2lkZSBlZmZlY3QsIGl0IGlzIG5vdCBtb2RlbGVkIHdlbGwgaW4gREZHLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGZpeHVwIGZvciBUb1N0cmluZyB3aXRoIE5vbkNlbGxV
c2UgZWRnZS4gSWYgdGhpcyBlZGdlIGlzIHNldCwgVG9TdHJpbmcgZG9lcyBub3QKKyAgICAgICAg
Y2xvYmJlciB0aGluZ3MgKGxpa2UgVG9Mb3dlckNhc2UsIHByb2R1Y2luZyBTdHJpbmcpLiBBbmQg
VG9TdHJpbmcoTm9uQ2VsbFVzZSkgYWxsb3dzIHVzIHRvIHBlcmZvcm0gQ1NFIQorCisgICAgICAg
IE91ciBtaWNyb2JlbmNobWFyayBzaG93cyAzMi45JSBpbXByb3ZlbWVudCBkdWUgdG8gZHJvcHBl
ZCBHZXRCdXR0ZXJmbHkgYW5kIENTRSBmb3IgVG9TdHJpbmcoKS4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBh
dGNoZWQKKworICAgICAgICAgICAgdGVtcGxhdGUtc3RyaW5nLWFycmF5ICAgICAgIDEyLjYyODQr
LTAuMjc2NiAgICAgXiAgICAgIDkuNDk5OCstMC4yMjk1ICAgICAgICBeIGRlZmluaXRlbHkgMS4z
MjkzeCBmYXN0ZXIKKworICAgICAgICBBbmQgU2l4U3BlZWQgdGVtcGxhdGVfc3RyaW5nLmVzNiBz
aG93cyAxNi42OHggcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgZHVlIHRvIExJQ00gb250byB0aGlz
IG5vbi1zaWRlLWVmZmVjdGZ1bCBUb1N0cmluZygpLgorCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBhdGNoZWQKKwor
ICAgICAgICAgICAgdGVtcGxhdGVfc3RyaW5nLmVzNiAgICAgMzIyOS43MzQzKy00MC41NzA1ICAg
IF4gICAgMTkzLjYwNzcrLTM2LjMzNDkgICAgICAgXiBkZWZpbml0ZWx5IDE2LjY4MTh4IGZhc3Rl
cgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cFRvU3RyaW5nT3JDYWxsU3RyaW5n
Q29uc3RydWN0b3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmlu
Z0NvbnN0cnVjdG9yT25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRlTm90Q2VsbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd05vdENlbGwpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVOb3RDZWxsKToK
KwogMjAxNy0wMy0xMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAg
ICAgW0pTQ10gSXQgc2hvdWxkIGJlIHBvc3NpYmxlIGNyZWF0ZSBhIGxhYmVsIG5hbWVkIGxldCB3
aGVuIHBhcnNpbmcgU3RhdGVtZW50IGluIG5vbiBzdHJpY3QgbW9kZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CmluZGV4IDBkMmU5MjliYTFiZjhhNGMzZDcwZGI2Y2VhMjg0OWYwNDQ3NTBiZmIuLmZiZmUxNjZl
YjczOWMyOGZkYWFiZmEyMmNiYTZlNjE4MDIxYTBiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAg
LTE4NTgsNiArMTg1OCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6CisgICAgICAg
IGNhc2UgTm90Q2VsbFVzZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENlbGxV
c2U6CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKaW5kZXggNGE2NjVhM2Y0ODg0N2ViODMwOGVlYzhlN2FmYmNlNTU0YzQ2
NmY1ZS4uZDJlMzcyZWEyN2ZiM2EwZjZhNmY1ZGE1Y2YzNzZkNGZkYzY3ZWUwNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTE0MDgsNiArMTQwOCwxMCBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAgcmVhZChXb3JsZCk7CiAgICAg
ICAgICAgICB3cml0ZShIZWFwKTsKICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNl
IE5vdENlbGxVc2U6CisgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDg5YjkwNDYzZWQyNDgzMjUzN2VkMTg1NGRjOTQzN2Ey
YmYzYjIyMDAuLjE5ZGQzMzhkZDc3NTI3NzU5ZDg3NmNkYTYyNDEzZWQzYWMzNjFlNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjIzNSw2ICsy
MjM1LDEzIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KKworICAgICAgICAvLyBXaGlsZSBTeW1ib2wgY2FuIHRocm93IGFuIGVycm9yLCBp
dCBpcyBleGNsdWRlZCBzaW5jZSBpdCBpcyBhIENlbGwhCisgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS0+c2hvdWxkU3BlY3VsYXRlTm90Q2VsbCgpKSB7CisgICAgICAgICAgICBmaXhFZGdlPE5v
dENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3Mo
Tm9kZU11c3RHZW5lcmF0ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9
CiAKICAgICBib29sIGF0dGVtcHRUb01ha2VGYXN0U3RyaW5nQWRkKE5vZGUqIG5vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGZi
YWVmM2JmMjllYjQ3NDEyOGZhMjBiZDcwYmE5MWM3ZmRlMWM0YjQuLmVhYjEyNmViMTg5YzM2YWVj
MmIwMzY2M2UyMThmYjBkZjhkZWViZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC03OTI1LDYgKzc5MjUsNjEgQEAgR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjp0ZW1wb3JhcnlSZWdpc3RlckZvclB1dEJ5VmFsKEdQUlRlbXBvcmFyeSYg
dGVtcG9yYXJ5LCBBcnIKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JD
YWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwoTm9kZSogbm9kZSkKIHsKKyAgICBpZiAobm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IE5vdENlbGxVc2UpIHsKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwor
ICAgICAgICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CisKKyAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIHNwZWN1bGF0ZU5vdENlbGwobm9kZS0+
Y2hpbGQxKCksIG9wMVJlZ3MpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisKKyAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gVG9TdHJpbmcpCisgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblRvU3RyaW5nLCByZXN1bHRHUFIsIGV4dHJhY3RSZXN1bHQob3AxUmVncykpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IENhbGxTdHJp
bmdDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxT
dHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBleHRyYWN0UmVzdWx0KG9wMVJlZ3MpKTsKKyAg
ICAgICAgfQorICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mg
b3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOworICAgICAgICBHUFJSZWcgb3AxUGF5bG9hZEdQ
UiA9IG9wMVJlZ3MucGF5bG9hZEdQUigpOworCisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
KworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmU7CisgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY1N0
cmluZykgeworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgxID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKG9wMS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaElmTm90U3RyaW5nKG9wMVBheWxvYWRH
UFIpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRHUFIpOwor
ICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgIHNsb3dQYXRoMS5s
aW5rKCZtX2ppdCk7CisgICAgICAgICAgICBzbG93UGF0aDIubGluaygmbV9qaXQpOworICAgICAg
ICB9CisgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQorICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBleHRyYWN0UmVzdWx0KG9w
MVJlZ3MpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9
PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgZXh0cmFjdFJlc3VsdChvcDFS
ZWdzKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAg
ICAgaWYgKGRvbmUuaXNTZXQoKSkKKyAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICAKQEAgLTg1MzMsMTMgKzg1ODgs
MTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3ltYm9sKEVkZ2UgZWRnZSkKICAg
ICBzcGVjdWxhdGVTeW1ib2woZWRnZSwgb3BlcmFuZC5ncHIoKSk7CiB9CiAKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZU5vdENlbGwoRWRnZSBlZGdlLCBKU1ZhbHVlUmVncyByZWdzKQor
eworICAgIERGR19UWVBFX0NIRUNLKHJlZ3MsIGVkZ2UsIH5TcGVjQ2VsbCwgbV9qaXQuYnJhbmNo
SWZDZWxsKHJlZ3MpKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2Vs
bChFZGdlIGVkZ2UpCiB7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCB+U3BlY0NlbGwp
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlz
LCBlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOyAKLSAgICB0eXBlQ2hlY2sob3BlcmFu
ZC5qc1ZhbHVlUmVncygpLCBlZGdlLCB+U3BlY0NlbGwsIG1faml0LmJyYW5jaElmQ2VsbChvcGVy
YW5kLmpzVmFsdWVSZWdzKCkpKTsKKyAgICBzcGVjdWxhdGVOb3RDZWxsKGVkZ2UsIG9wZXJhbmQu
anNWYWx1ZVJlZ3MoKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU90aGVy
KEVkZ2UgZWRnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAppbmRleCBlOTYzN2ZiMGQzYTU5MWJjMzM2ODY4NDYzNGVkODZmMDJjMzIxZTEwLi4zOWU3
NDk1ZGZlNjNiNjNhZDk2Nzc2ZDg1YzJhOGI3MTVjM2VkOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yOTU0LDYgKzI5NTQsNyBAQCBj
bGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09i
amVjdChFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZVN5bWJvbChFZGdlLCBHUFJSZWcgY2VsbCk7
CiAgICAgdm9pZCBzcGVjdWxhdGVTeW1ib2woRWRnZSk7CisgICAgdm9pZCBzcGVjdWxhdGVOb3RD
ZWxsKEVkZ2UsIEpTVmFsdWVSZWdzKTsKICAgICB2b2lkIHNwZWN1bGF0ZU5vdENlbGwoRWRnZSk7
CiAgICAgdm9pZCBzcGVjdWxhdGVPdGhlcihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZU1pc2Mo
RWRnZSwgSlNWYWx1ZVJlZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNzM1NjEyMmJlYmI1Mzc3NTllYTRkNTRj
YTFlZThmMjkzYzA1NDk3NS4uZGM3NjMzNDgwZmI0Yjc2M2QyNWFjNjc4NjU2MGE2NDhhZGE4N2Jh
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCkBAIC0zNzY5LDM4ICszNzY5LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICBjYXNlIFRvU3RyaW5nOgogICAgIGNh
c2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOiB7Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gVW50eXBlZFVzZSkgewotICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BS
ID0gb3AxLnBheWxvYWRHUFIoKTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBv
cDEuanNWYWx1ZVJlZ3MoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZTsKLSAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY1N0cmluZykgewot
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMSA9IG1faml0LmJyYW5j
aElmTm90Q2VsbChvcDEuanNWYWx1ZVJlZ3MoKSk7Ci0gICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGgyID0gbV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcob3AxUGF5bG9hZEdQ
Uik7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRHUFIp
OwotICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAgICAgICAgICAg
c2xvd1BhdGgxLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgICAgICBzbG93UGF0aDIubGluaygm
bV9qaXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG9wID09IFRvU3RyaW5nKQot
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmcsIHJlc3VsdEdQ
Uiwgb3AxUmVncyk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
b3AgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBvcDFSZWdzKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAg
ICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQotICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9q
aXQpOwotICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIGNvbXBpbGVUb1N0cmluZ09y
Q2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCBhMDVkOGRiZDhhNDY3YmI5MTdmMzNlNzZiNTg4ZDhjMThkMGY2ZjhkLi5hNTNhNzdh
MjQyNzVkODIwZWYyMDFhMThhNzlmMDU2MzYzNGIzOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM3MzksMzcgKzM3Mzks
NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAog
ICAgIGNhc2UgVG9TdHJpbmc6CiAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6IHsKLSAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKSB7Ci0gICAg
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgZG9uZTsKLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYg
U3BlY1N0cmluZykgewotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRo
MSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhvcDFHUFIpKTsKLSAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hJZk5vdFN0
cmluZyhvcDFHUFIpOwotICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRH
UFIpOwotICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7Ci0gICAgICAgICAgICAg
ICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgICAgICBzbG93UGF0aDIubGlu
aygmbV9qaXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG9wID09IFRvU3RyaW5n
KQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmcsIHJlc3Vs
dEdQUiwgb3AxR1BSKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VS
VChvcCA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwotICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIG9wMUdQUik7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAg
ICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKLSAgICAgICAgICAgICAgICBkb25lLmxpbmsoJm1f
aml0KTsKLSAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBjb21waWxlVG9TdHJpbmdP
ckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4
IDZjOTg4NWYxYjYwYTcxMjJmMWZhYWQ1OTk4MWMyMzViMTViOGJmN2YuLmRhYmE2YmE1NzNjMzU0
MGU0OTcxNmNhOWZmMDJhZDkyOTJiYjY2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQ5MzMsMTAgKzQ5MzMsMTMgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2VsbFVz
ZToKKyAgICAgICAgY2FzZSBOb3RDZWxsVXNlOgogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsK
ICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZTsKICAgICAgICAgICAgIGlmIChtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKQogICAgICAgICAgICAgICAgIHZhbHVlID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1fbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IE5vdENlbGxVc2UpCisgICAgICAgICAgICAgICAgdmFsdWUgPSBsb3dO
b3RDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIApA
QCAtMTIyMjgsNiArMTIyMzEsMTMgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgREZH
X0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlZhbHVlIG5vdCBkZWZpbmVkIik7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KKworICAgIExWYWx1ZSBsb3dOb3RDZWxsKEVkZ2UgZWRnZSkKKyAgICB7
CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CisgICAgICAgIHNwZWN1bGF0ZU5vdENlbGwoZWRnZSwgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAgICAgCiAgICAgTFZhbHVlIGxvd1N0b3JhZ2Uo
RWRnZSBlZGdlKQogICAgIHsKQEAgLTEzMTUwLDEzICsxMzE2MCwxNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
ICAgICB9CiAgICAgCisgICAgdm9pZCBzcGVjdWxhdGVOb3RDZWxsKEVkZ2UgZWRnZSwgTFZhbHVl
IHZhbHVlKQorICAgIHsKKyAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKHZhbHVl
KSwgZWRnZSwgflNwZWNDZWxsLCBpc0NlbGwodmFsdWUpKTsKKyAgICB9CisKICAgICB2b2lkIHNw
ZWN1bGF0ZU5vdENlbGwoRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2ludGVycHJl
dGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
LSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3Bl
Y3VsYXRpb24pOwotICAgICAgICB0eXBlQ2hlY2soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwg
flNwZWNDZWxsLCBpc0NlbGwodmFsdWUpKTsKKyAgICAgICAgc3BlY3VsYXRlTm90Q2VsbChlZGdl
LCBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIHNwZWN1bGF0ZU90aGVyKEVkZ2UgZWRnZSkKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjEzOGFkOTM4ZWUwZDE1Mzlm
YmU0ZjEzMGUwYzhkYmE5NjU5MmUwZS4uNmIwYjBhYjAyYTc3ODNjZDc5ZDc1Y2QxYTg0ZmQwZmNh
MjM0ZjFhMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wMy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXSBUb1N0cmluZyBvcGVyYXRpb24gc2hv
dWxkIGhhdmUgZml4dXAgZm9yIHByaW1pdGl2ZXMgdG8gc2F5IHRoaXMgbm9kZSBkb2VzIG5vdCBo
YXZlIHNpZGUgZWZmZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvdGVtcGxhdGUtc3RyaW5nLWFycmF5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90by1zdHJpbmctbm9uLWNlbGwt
dXNlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93
KToKKwogMjAxNy0wMy0xMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAg
ICAgICAgW0pTQ10gSXQgc2hvdWxkIGJlIHBvc3NpYmxlIGNyZWF0ZSBhIGxhYmVsIG5hbWVkIGxl
dCB3aGVuIHBhcnNpbmcgU3RhdGVtZW50IGluIG5vbiBzdHJpY3QgbW9kZQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvdGVtcGxhdGUtc3RyaW5nLWFycmF5LmpzIGIvSlNUZXN0
cy9taWNyb2JlbmNobWFya3MvdGVtcGxhdGUtc3RyaW5nLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4
YjY2OWM0OTYwOWYwNDAxZGMwN2Q5NDg2NzcwNDY1NmRhNjU4YzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy90ZW1wbGF0ZS1zdHJpbmctYXJyYXkuanMKQEAgLTAs
MCArMSw5IEBACit2YXIgYXJyYXkgPSBbMSwgMiwgM107CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZXR1cm4gYCR7YXJyYXlbMF19LCAke2FycmF5WzFdfSwgJHthcnJheVsyXX0sICR7YXJyYXlb
MF19LCAke2FycmF5WzFdfSwgJHthcnJheVsyXX1gOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvdG8tc3RyaW5nLW5vbi1jZWxsLXVzZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rv
LXN0cmluZy1ub24tY2VsbC11c2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTczY2Q1NjdjNjczNjgwMDhkMmZh
ZDUzMGQ5ZDFjYjUzZGFkYzhiMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rv
LXN0cmluZy1ub24tY2VsbC11c2UuanMKQEAgLTAsMCArMSw0MyBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpCit7CisgICAgdmFyIGVycm9yVGhy
b3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBm
dW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7Cisg
ICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09
IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3Ry
aW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpCit7CisgICAgcmV0
dXJuIGAke3ZhbHVlfWA7Cit9Citub0lubGluZSh0b1N0cmluZyk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91bGRCZSh0b1N0cmluZyhpKSwgaSArICIiKTsKKyAg
ICBzaG91bGRCZSh0b1N0cmluZyhudWxsKSwgIm51bGwiKTsKKyAgICBzaG91bGRCZSh0b1N0cmlu
Zyh1bmRlZmluZWQpLCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmUodG9TdHJpbmcoMTAuNSks
ICIxMC41Iik7CisgICAgc2hvdWxkQmUodG9TdHJpbmcoLTEwLjUpLCAiLTEwLjUiKTsKKyAgICBz
aG91bGRCZSh0b1N0cmluZyh0cnVlKSwgInRydWUiKTsKKyAgICBzaG91bGRCZSh0b1N0cmluZyhm
YWxzZSksICJmYWxzZSIpOworICAgIHNob3VsZEJlKHRvU3RyaW5nKDAgLyAwKSwgIk5hTiIpOwor
fQorCitzaG91bGRCZSh0b1N0cmluZygiSEVMTE8iKSwgIkhFTExPIik7CitzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgdG9TdHJpbmcoU3ltYm9sKCJDb2NvYSIpKTsKK30sIGBUeXBlRXJyb3I6IENh
bm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nYCk7Cg==
</data>
<flag name="review"
          id="325823"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>