<?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>138707</bug_id>
          
          <creation_ts>2014-11-13 14:15:11 -0800</creation_ts>
          <short_desc>Add scope operand to op_new_func* byte codes</short_desc>
          <delta_ts>2014-11-13 17:07:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>312.x</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>136724</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1048488</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-11-13 14:15:11 -0800</bug_when>
    <thetext>These byte codes currently use implicit exec-&gt;scope() to get there scope.  This needs to be changed to use a passed in scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048502</commentid>
    <comment_count>1</comment_count>
      <attachid>241505</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-11-13 14:48:54 -0800</bug_when>
    <thetext>Created attachment 241505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048527</commentid>
    <comment_count>2</comment_count>
      <attachid>241505</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-13 15:28:00 -0800</bug_when>
    <thetext>Comment on attachment 241505
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048532</commentid>
    <comment_count>3</comment_count>
      <attachid>241505</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-13 15:35:41 -0800</bug_when>
    <thetext>Comment on attachment 241505
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4519
&gt; +        SpeculateCellOperand scope(this, node-&gt;child2());

You don&apos;t want SpeculateCellOperand here; that will emit a branch to check that the scope is a cell, even though we are certain that it is a cell.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4549
&gt; +        SpeculateCellOperand scope(this, node-&gt;child2());

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4162
&gt; +    SpeculateCellOperand scope(this, node-&gt;child1());

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4174
&gt; +    SpeculateCellOperand scope(this, node-&gt;child1());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048559</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-11-13 16:55:02 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 241505 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241505&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4519
&gt; &gt; +        SpeculateCellOperand scope(this, node-&gt;child2());
&gt; 
&gt; You don&apos;t want SpeculateCellOperand here; that will emit a branch to check
&gt; that the scope is a cell, even though we are certain that it is a cell.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:4549
&gt; &gt; +        SpeculateCellOperand scope(this, node-&gt;child2());
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4162
&gt; &gt; +    SpeculateCellOperand scope(this, node-&gt;child1());
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4174
&gt; &gt; +    SpeculateCellOperand scope(this, node-&gt;child1());
&gt; 
&gt; Ditto.

The way I read fillSpeculateCell(), we won&apos;t issue the check for DataFormatCell or DataFormatJSCell:

    case DataFormatCell:
    case DataFormatJSCell: {
        GPRReg gpr = info.gpr();
        m_gprs.lock(gpr);
        if (!ASSERT_DISABLED) {
            MacroAssembler::Jump checkCell = branchIsCell(JSValueRegs(gpr));
            m_jit.abortWithReason(DFGIsNotCell);
            checkCell.link(&amp;m_jit);
        }
        return gpr;
    }

I&apos;m just following the existing pattern for other accesses to the scope chain.

    case SkipScope: {
        SpeculateCellOperand scope(this, node-&gt;child1());
        GPRTemporary result(this, Reuse, scope);
        m_jit.loadPtr(JITCompiler::Address(scope.gpr(), JSScope::offsetOfNext()), result.gpr());
        cellResult(result.gpr(), node);
        break;
    }

    case GetClosureRegisters: {
 ...        
        SpeculateCellOperand scope(this, node-&gt;child1());
        GPRTemporary result(this);
        GPRReg scopeGPR = scope.gpr();
        GPRReg resultGPR = result.gpr();

The current code that uses the call frame ScopeChain register slot will either have the VirtualRegister as a cell or a constant.  For non-inlined frames the child is from a GetMyScope node, which returns a cellResult.  For inlined frames, child is from a JSConstant of the JSScope* value.  Which won&apos;t create a check.

When this work is done, op_get_scope will turn into a GetScope node which also has a cellResult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048563</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-11-13 17:07:44 -0800</bug_when>
    <thetext>Committed r176109: &lt;http://trac.webkit.org/changeset/176109&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241505</attachid>
            <date>2014-11-13 14:48:54 -0800</date>
            <delta_ts>2014-11-13 15:28:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>138707.patch</filename>
            <type>text/plain</type>
            <size>27214</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2MDkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBA
CisyMDE0LTExLTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzY29wZSBvcGVyYW5kIHRvIG9wX25ld19mdW5jKiBieXRlIGNvZGVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg3MDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzY29wZSBvcGVy
YW5kIHRvIG9wX25ld19mdW5jIGFuZCBvcF9uZXdfZnVuY19leHByIHRvIHJlcGxhY2UgdGhlIGlt
cGxpY2l0IHVzZQorICAgICAgICBvZiBleGVjLT5zY29wZSgpLgorCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb246IEluY3JlYXNlZCBzaXplIG9mIG9wX25ld19mdW5jICYgb3Bf
bmV3X2Z1bmNfZXhwciBieXRlY29kZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6IEFkZGVkIHNjb3Bl
IG9wZXJhbmQgdG8gZHVtcCBvdXRwdXQuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIEVtaXQgc2NvcGUgb3BlcmFuZC4KKwor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAg
ICBBZGRlZCBuZXcgc2NvcGUgc291cmNlIG5vZGVzIHRvIE5ld0Z1bmN0aW9uLCBOZXdGdW5jdGlv
bkV4cHJlc3Npb24gJiBOZXdGdW5jdGlvbk5vQ2hlY2suCisgICAgICAgIAorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdGdW5jdGlvbk5vQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIFVz
ZSBzY29wZSBjaGlsZHJlbiB3aGVuIG1ha2luZyBuZXcgZnVuY3Rpb24gSklUX09wZXJhdGlvbiBj
YWxscy4gIFVzZSBKU1Njb3BlKiB2YWx1ZSBpbnN0ZWFkIG9mCisgICAgICAgIGV4ZWMtPnNjb3Bl
KCkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJ
VDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2Z1bmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbmV3X2Z1bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgQWRkZWQgbmV3IEpzYyBKSVRfT3Bl
cmF0aW9uIHBhcmFtZXRlciB0eXBlIGZvciBKU1Njb3BlKiB2YWx1ZXMuICBDcmVhdGVkIGRlY2xh
cmF0aW9ucyBhbmQKKyAgICAgICAgZGVmaW5pdGlvbnMgZm9yIG5ldyBKSVRfT3BlcmF0aW9ucyB3
aXRoIEpzYyBwYXJhbWV0ZXJzLiAgVXNlIHRoZSBKU1Njb3BlKiBwYXJhbWV0ZXJzIGluIGxpZXUK
KyAgICAgICAgb2YgZXhlYy0+c2NvcGUoKSBpbiBvcGVyYXRpb25OZXdGdW5jdGlvbigpLgorICAg
ICAgICBSZW1vdmVkIGNvbW1lbnQgZm9yIHVudXNlZCBKc2EgKEpTTGV4aWNhbEVudmlyb25tZW50
KikgSklUX09wZXJhdGlvbiBwYXJhbWV0ZXIgdHlwZS4KKworICAgICAgICAqIGxsaW50L0xMSW50
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgVXNlIHRoZSBzY29wZSBvcGVyYW5kIGluc3RlYWQgb2YgZXhlYy0+c2NvcGUo
KS4KKworICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgQ2hhbmdlZCB0aGUgb3BlcmFuZCBpbmRl
Y2llcyBmb3IgYWRkZWQgc2NvcGUgb3BlcmFuZC4KKwogMjAxNC0xMS0xMyAgSnVlcmdlbiBSaWJ1
dHprYSAgPGp1ZXJnZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBXZWJLaXQgdG8gYnVp
bGQgd2l0aCBMTFZNIFRPVApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbgkocmV2aXNpb24gMTc2MDA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC05
Myw4ICs5Myw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfaW1tIiwgImxl
bmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zd2l0Y2hfY2hhciIsICJs
ZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc3dpdGNoX3N0cmluZyIs
ICJsZW5ndGgiIDogNCB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAi
bGVuZ3RoIiA6IDQgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIs
ICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmMiLCAi
bGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIs
ICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbCIsICJsZW5n
dGgiIDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2FsbF9ldmFsIiwgImxlbmd0
aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsX3ZhcmFyZ3MiLCAibGVu
Z3RoIiA6IDkgfSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxNzYwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3MSwxNyArMTI3MSwxOSBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfbmV3X2Z1bmM6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQg
ZjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBzaG91bGRDaGVjayA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAibmV3X2Z1bmMiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCBmJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGYwLCBzaG91bGRDaGVjayA/ICI8
Q2hlY2tlZD4iIDogIjxVbmNoZWNrZWQ+Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsIGYlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5k
YXRhKCksIGYwLCBzaG91bGRDaGVjayA/ICI8Q2hlY2tlZD4iIDogIjxVbmNoZWNrZWQ+Iik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4
cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAibmV3X2Z1bmNfZXhwIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2NhbGw6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNzYwMDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxNSw2ICsxNzE1LDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdQogewogICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChpbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRvTnVsbENoZWNr
KTsKICAgICByZXR1cm4gZHN0OwpAQCAtMTczNSw2ICsxNzM2LDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdQogCiAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuY19l
eHApOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChyMC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGluZGV4KTsKICAgICByZXR1cm4gcjA7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTc2
MDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0MzMsMjIgKzM0MzMsMjIgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBvcF9uZXdfZnVuYzogewotICAgICAgICAgICAgaWYgKCFjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQpIHsKICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KE5ld0Z1bmN0aW9uTm9DaGVjaywgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpKSk7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTmV3RnVuY3Rpb25Ob0NoZWNr
LCBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCksIGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCksCiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXdGdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgICAgICAgICBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKSwgZ2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19mdW5jKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAotICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoTmV3RnVuY3Rpb25FeHByZXNzaW9uLCBPcEluZm8oY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKE5ld0Z1bmN0
aW9uRXhwcmVzc2lvbiwgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpLCBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSkpOwog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICAgICAgfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlz
aW9uIDE3NjAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzIsNiArMTE3MiwxNiBAQCBwcml2YXRlOgogCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7Cisg
ICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBOZXdGdW5jdGlvbk5vQ2hlY2s6Cisg
ICAgICAgIGNhc2UgTmV3RnVuY3Rpb25FeHByZXNzaW9uOiB7CisgICAgICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgICAgICAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhl
c2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQg
aGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgpAQCAtMTIxMyw5ICsxMjIzLDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgY2FzZSBHZXRNeUFy
Z3VtZW50c0xlbmd0aFNhZmU6CiAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVk
OgotICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uTm9D
aGVjazoKLSAgICAgICAgY2FzZSBOZXdGdW5jdGlvbkV4cHJlc3Npb246CiAgICAgICAgIGNhc2Ug
SnVtcDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGhyb3c6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE3
NjAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgyMCwxMiArODIwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFyZ3VtZW50c1Zh
bHVlLmdldChleGVjLCBpbmRleCkpOwogfQogCi1KU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RnVuY3Rpb25Ob0NoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBmdW5jdGlvbkV4
ZWN1dGFibGUpCitKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25Ob0No
ZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVj
dXRhYmxlKQogewogICAgIEFTU0VSVChmdW5jdGlvbkV4ZWN1dGFibGUtPmluaGVyaXRzKEZ1bmN0
aW9uRXhlY3V0YWJsZTo6aW5mbygpKSk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0gICAgcmV0dXJuIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rp
b25FeGVjdXRhYmxlKSwgZXhlYy0+c2NvcGUoKSk7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZnVuY3Rpb25FeGVjdXRh
YmxlKSwgc2NvcGUpOwogfQogCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jc09iamVj
dChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHZhbHVlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE3NjAwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDEsNyArMTAxLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUlu
bAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJPZmZJbmxpbmVkQXJndW1lbnRzKEV4
ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCosIElubGluZUNhbGxGcmFtZSopIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0SW5saW5lZEFyZ3Vt
ZW50QnlWYWwoRXhlY1N0YXRlKiwgaW50MzJfdCwgSW5saW5lQ2FsbEZyYW1lKiwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRB
cmd1bWVudEJ5VmFsKEV4ZWNTdGF0ZSosIGludDMyX3QsIGludDMyX3QpIFdURl9JTlRFUk5BTDsK
LUpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbk5vQ2hlY2soRXhlY1N0
YXRlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0Z1bmN0aW9uTm9DaGVjayhFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RG
X0lOVEVSTkFMOwogZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRk1vZE9uSW50cyhpbnQz
Ml90LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25Jc09iamVjdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSXNGdW5jdGlvbihFbmNvZGVkSlNWYWx1ZSkgV1RG
X0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNzYwMDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTE2LDcgKzQ1MTYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5wYXlsb2FkR1BS
KCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKLSAgICAg
ICAgCisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNjb3BlKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7CisKICAgICAgICAg
bV9qaXQubW92ZSh2YWx1ZVBheWxvYWRHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBt
X2ppdC5tb3ZlKHZhbHVlVGFnR1BSLCByZXN1bHRUYWdHUFIpOwogICAgICAgICAKQEAgLTQ1MjQs
NyArNDUyNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsKAotICAgICAgICAgICAgICAgIG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uLCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLAorICAg
ICAgICAgICAgICAgIG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBKU1Zh
bHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBzY29wZUdQUiwKICAgICAg
ICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+ZnVuY3Rpb25EZWNsKG5vZGUtPmZ1bmN0aW9u
RGVjbEluZGV4KCkpKSk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE3NjAwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1NDYsNiArNDU0Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0Z1bmN0aW9uOiB7CiAgICAgICAgIEpTVmFs
dWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyBzY29wZUdQ
UiA9IHNjb3BlLmdwcigpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFs
dWUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CkBAIC00
NTU3LDcgKzQ1NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgICAgIG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbk5ld0Z1bmN0aW9u
LAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgbV9qaXQuY29kZUJsb2NrKCktPmZ1bmN0aW9u
RGVjbChub2RlLT5mdW5jdGlvbkRlY2xJbmRleCgpKSkpOworICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgc2NvcGVHUFIsIG1faml0LmNvZGVCbG9jaygpLT5mdW5jdGlvbkRlY2wobm9kZS0+ZnVu
Y3Rpb25EZWNsSW5kZXgoKSkpKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTc2MDA0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxNTksOSArNDE1OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TmV3RnVuY3Rpb25OCiB7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBzY29wZUdQUiA9
IHNjb3BlLmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgY2FsbE9wZXJhdGlvbigK
LSAgICAgICAgb3BlcmF0aW9uTmV3RnVuY3Rpb25Ob0NoZWNrLCByZXN1bHRHUFIsIG1faml0LmNv
ZGVCbG9jaygpLT5mdW5jdGlvbkRlY2wobm9kZS0+ZnVuY3Rpb25EZWNsSW5kZXgoKSkpOworICAg
ICAgICBvcGVyYXRpb25OZXdGdW5jdGlvbk5vQ2hlY2ssIHJlc3VsdEdQUiwgc2NvcGVHUFIsIG1f
aml0LmNvZGVCbG9jaygpLT5mdW5jdGlvbkRlY2wobm9kZS0+ZnVuY3Rpb25EZWNsSW5kZXgoKSkp
OwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIApAQCAtNDE2OSwxMCArNDE3
MSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25FCiB7CiAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3BlLmdwcigpOwogICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgb3BlcmF0aW9uTmV3
RnVuY3Rpb25Ob0NoZWNrLAotICAgICAgICByZXN1bHRHUFIsCisgICAgICAgIHJlc3VsdEdQUiwg
c2NvcGVHUFIsIAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+ZnVuY3Rpb25FeHByKG5vZGUt
PmZ1bmN0aW9uRXhwckluZGV4KCkpKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCShyZXZpc2lvbiAxNzYwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNDksNyArMTA0OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwpAQCAtMTI4OCw2ICsxMjg4LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHIoY2VsbCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwg
Y29uc3QgU3RyaW5nSW1wbCogdWlkKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3R1YkluZm8pLCBhcmcxLCBUcnVzdGVkSW1t
UHRyKHVpZCkpOwpAQCAtMTU5NSw2ICsxNjAwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKKyAgICB7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1t
UHRyKGNlbGwpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXlsb2FkLCByZXN1bHRUYWcpOworICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VTc2lDSSBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIEdQUlJlZyBhcmcxLCBjb25zdCBTdHJpbmdJbXBsKiB1aWQp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHViSW5mbyksIGFyZzEsIFRydXN0ZWRJbW1QdHIodWlkKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE3NjAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTY5Nyw2ICs2OTcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNlbmRpZgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VKSWRjLCBpbnQsIEdQUlJlZywgY29uc3QgSWRlbnRpZmllciop
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKSiwgaW50LCBHUFJSZWcsIEdQUlJlZyk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0MsIGludCwgR1BSUmVnLCBKU0Nl
bGwqKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFdpdGhQcm9maWxlVGFnLCBKX0pJVE9wZXJhdGlvbl9FSkosIGludCwgR1BS
UmVnLCBHUFJSZWcpOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCShyZXZpc2lvbiAxNzYwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDYgKzI1OCwxMiBAQCBBTFdBWVNfSU5M
SU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmF0
aW9uLCBpbnQgZHN0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQoreworICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldEpTVmFsdWVSZXN1bHQob3BlcmF0aW9u
LCBkc3QpOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FUCBvcGVyYXRpb24sIGludCBkc3QsIHZvaWQqIHBv
aW50ZXIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
cG9pbnRlcikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CShyZXZpc2lvbiAxNzYwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM0LDcgKzEwMzQsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogCiB7CiAgICAgSnVtcCBsYXp5SnVtcDsKICAgICBp
bnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBpZiAoY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkgeworICAgIGlmIChjdXJyZW50SW5zdHJ1Y3Rpb25b
NF0udS5vcGVyYW5kKSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgbGF6eUp1bXAg
PSBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKGRzdCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpF
bXB0eVZhbHVlVGFnKSk7CiAjZWxzZQpAQCAtMTA0MiwxOCArMTA0MiwyOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9uZXdfZnVuYyhJbnN0cnVjdGlvbiogCiAjZW5kaWYKICAgICB9CiAKLSAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0Z1bmN0aW9uLCBkc3QsIGZ1bmNFeGVjKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVn
VDApOworI2Vsc2UKKyAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCwgcmVnVDApOworI2VuZGlmCisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jRXhl
YyA9IG1fY29kZUJsb2NrLT5mdW5jdGlvbkRlY2woY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdU
MCwgZnVuY0V4ZWMpOwogCi0gICAgaWYgKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
CisgICAgaWYgKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpCiAgICAgICAgIGxhenlK
dW1wLmxpbmsodGhpcyk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX25ld19mdW5jX2V4cChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY0V4cHIg
PSBtX2NvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgZnVuY0V4
cHIpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisjZWxzZQorICAgIGVtaXRMb2Fk
UGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CisjZW5kaWYK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeHByID0gbV9jb2RlQmxvY2stPmZ1bmN0aW9u
RXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhwcik7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAxNzYwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDcsMTIgKzk0NywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5lCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgcHJvZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBzaXplVmFsdWUpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogZnVuY3Rpb25F
eGVjdXRhYmxlKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5j
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSkKIHsKICAgICBBU1NFUlQoZnVuY3Rpb25FeGVjdXRhYmxlLT5pbmhlcml0cyhGdW5j
dGlvbkV4ZWN1dGFibGU6OmluZm8oKSkpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihmdW5jdGlvbkV4ZWN1dGFibGUpLCBleGVjLT5zY29wZSgpKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGZ1bmN0aW9uRXhlY3V0YWJsZSksIHNjb3BlKSk7CiB9CiAKIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNzYwMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBleHRl
cm4gIkMiIHsKICAgICBJZGM6IGNvbnN0IElkZW50aWZpZXIqCiAgICAgSjogRW5jb2RlZEpTVmFs
dWUKICAgICBKY3A6IGNvbnN0IEpTVmFsdWUqCi0gICAgSnNhOiBKU0xleGljYWxFbnZpcm9ubWVu
dCoKKyAgICBKc2M6IEpTU2NvcGUqCiAgICAgSnNzOiBKU1N0cmluZyoKICAgICBPOiBKU09iamVj
dCoKICAgICBQOiBwb2ludGVyIChjaGFyKikKQEAgLTExMyw2ICsxMTMsNyBAQCB0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZvaWQqLCB2b2lk
Kik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlv
bl9FUFMpKEV4ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRVBjKShFeGVjU3RhdGUqLCBJbnN0cnVj
dGlvbiopOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVy
YXRpb25fRUpzY0MpKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKTsKIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VTUykoRXhlY1N0YXRl
Kiwgc2l6ZV90LCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
ICgqSl9KSVRPcGVyYXRpb25fRVNzaUNJKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEpTQ2VsbCosIFN0cmluZ0ltcGwqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiAoKkpfSklUT3BlcmF0aW9uX0VTc2lKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgU3RyaW5nSW1wbCopOwpAQCAtMTI3LDYgKzEyOCw3IEBAIHR5
cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGUKIHR5cGVkZWYgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBK
U0NlbGwqKTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRpb25f
RUljZikoRXhlY1N0YXRlKiwgSW5saW5lQ2FsbEZyYW1lKik7CiB0eXBlZGVmIEpTQ2VsbCogSklU
X09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSk7Cit0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VKc2ND
KShFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKik7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09Q
RVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlv
bl9FSlpDKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgSlNDZWxsKik7CiB0
eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VKSkMpKEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKik7CkBAIC0yNjYs
NyArMjY4LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzUHJvcGVydAogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEV4
ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMs
IGludDMyX3Qgc2l6ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcldpdGhQcm9maWxlKEV4ZWNTdGF0ZSosIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUqLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludDMyX3Qgc2l6ZSkgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJh
eVdpdGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwg
RW5jb2RlZEpTVmFsdWUgc2l6ZSkgV1RGX0lOVEVSTkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9u
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdU
Rl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVn
ZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSGFuZGxlV2F0Y2hkb2dUaW1lcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDE3NjAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDEsMTggKzEwMDEsMjAgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQogICAgIExMSU5UX0JFR0lOKCk7CiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBBU1NFUlQo
Y29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSB8fCAhY29kZUJsb2NrLT5uZWVk
c0FjdGl2YXRpb24oKSB8fCBleGVjLT5oYXNBY3RpdmF0aW9uKCkpOworICAgIEpTU2NvcGUqIHNj
b3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgp
OwogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGZ1
bmN0aW9uIVxuIik7CiAjZW5kaWYKLSAgICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQpLCBleGVjLT5zY29w
ZSgpKSk7CisgICAgTExJTlRfUkVUVVJOKEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2Nr
LT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKIH0KIAogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigp
OwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Ci0gICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzJd
LnUub3BlcmFuZCk7Ci0gICAgSlNGdW5jdGlvbiogZnVuYyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZnVuY3Rpb24sIGV4ZWMtPnNjb3BlKCkpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+
dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51
Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGZ1bmN0aW9uLCBzY29wZSk7CiAgICAgCiAgICAgTExJTlRfUkVUVVJOKGZ1bmMpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE3NjAwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTExLDEzICsxOTExLDEzIEBAIF9sbGludF9vcF9zd2l0Y2hfY2hhcjoKIAogX2xsaW50X29w
X25ld19mdW5jOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBidGl6IDEyW1BDXSwgLm9wTmV3
RnVuY1VuY2hlY2tlZAorICAgIGJ0aXogMTZbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCiAgICAg
bG9hZGkgNFtQQ10sIHQxCiAgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZh
bHVlVGFnLCAub3BOZXdGdW5jRG9uZQogLm9wTmV3RnVuY1VuY2hlY2tlZDoKICAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuYykKIC5vcE5ld0Z1bmNEb25lOgotICAgIGRp
c3BhdGNoKDQpCisgICAgZGlzcGF0Y2goNSkKIAogbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbCgp
CiAgICAgbG9hZGkgMTZbUENdLCB0MwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE3NjAwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzY5LDE0ICsxNzY5LDE0IEBAIF9sbGludF9vcF9zd2l0Y2hf
Y2hhcjoKIAogX2xsaW50X29wX25ld19mdW5jOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDQs
IHQyKQogICAgIGJ0aXogdDIsIC5vcE5ld0Z1bmNVbmNoZWNrZWQKICAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oMSwgdDEpCiAgICAgYnRxbnogW2NmciwgdDEsIDhdLCAub3BOZXdGdW5jRG9uZQog
Lm9wTmV3RnVuY1VuY2hlY2tlZDoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9u
ZXdfZnVuYykKIC5vcE5ld0Z1bmNEb25lOgotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0Y2go
NSkKIAogbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbCgpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDQsIHQzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTc2MDA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTMyLDcgKzExMzIsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKIF9sbGludF9vcF9u
ZXdfZnVuY19leHA6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19mdW5jX2V4cCkKLSAgICBkaXNwYXRjaCgzKQorICAgIGRpc3BhdGNo
KDQpCiAKIAogX2xsaW50X29wX2NhbGw6Cg==
</data>
<flag name="review"
          id="266384"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>