<?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>125331</bug_id>
          
          <creation_ts>2013-12-05 20:25:33 -0800</creation_ts>
          <short_desc>Split sizing of VarArgs frames from loading arguments for the frame</short_desc>
          <delta_ts>2013-12-06 13:35:37 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116888</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>957139</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-05 20:25:33 -0800</bug_when>
    <thetext>The C helper loadVarargs() in Interpreter.cpp is currently responsible for sizing and creating the calleeFrame for a variable argument call.  When we transition to the C stack, we can&apos;t allocate space on the stack possibly in use by loadVarargs() and its callers operationLoadVarargs() and llint_slow_path_call_varargs().  loadVarargs() can be split into two phases, the first function to compute size of the new frame and the second function to fill in the argument values.  The first function would return the size to the JIT or LLint engine to allocate the frame.  After allocating the frame, the second function can freely populate the new frame.

In preparation, this patch can have the first function size and allocate the new frame.  When the transition is made to the C stack, the first function will be changed as described.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957312</commentid>
    <comment_count>1</comment_count>
      <attachid>218606</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-06 11:04:45 -0800</bug_when>
    <thetext>Created attachment 218606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957316</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-06 11:23:10 -0800</bug_when>
    <thetext>&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1118
&gt; +    vm.newCallFrameReturnValue = execCallee;

This is pretty weird. Why can&apos;t we just return execCallee as a void*?

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:559
&gt; +macro branchIfException(label)
&gt; +    loadp ScopeChain[cfr], t3
&gt; +    andp MarkedBlockMask, t3
&gt; +    loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
&gt; +    bineq VM::m_exception + TagOffset[t3], EmptyValueTag, label
&gt; +end

Can we just have _llint_slow_path_size_varargs return 0 in the failure case?

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:727
&gt; +    # Check for exception from _llint_slow_path_size_varargs

This comment doesn&apos;t add anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957324</commentid>
    <comment_count>3</comment_count>
      <attachid>218606</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-12-06 11:33:14 -0800</bug_when>
    <thetext>Comment on attachment 218606
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        prepartion for moving onto the C stack.  sizeAndAllocFrameForVarargs() will

prepartion ==&gt; preparation.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1108
&gt; +LLINT_SLOW_PATH_DECL(slow_path_size_varargs)

Why not call this “slow_path_size_and_alloc_frame_for_varargs” (similar to what you did for JIT) to be more clear of its purpose?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1114
&gt; +    ExecState* execCallee = sizeAndAllocFrameForVarargs(exec, &amp;vm.interpreter-&gt;stack(),

I prefer “calleeCallFrame” (or “newCallFrame”) to “execCallee”.  “execCallee” sounds too much like “the ExecState’s callee field” which is misleading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957367</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-06 13:16:34 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1118
&gt; &gt; +    vm.newCallFrameReturnValue = execCallee;
&gt; 
&gt; This is pretty weird. Why can&apos;t we just return execCallee as a void*?

The llint slow paths always return a PC, ExecState* pair.  Any slow path that wants to return a value writes into the virtual register array based on opcode args.  I&apos;m reluctant to return the new CallFrame* as the ExecState* return value as that breaks the convention.

&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:559
&gt; &gt; +macro branchIfException(label)
&gt; &gt; +    loadp ScopeChain[cfr], t3
&gt; &gt; +    andp MarkedBlockMask, t3
&gt; &gt; +    loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
&gt; &gt; +    bineq VM::m_exception + TagOffset[t3], EmptyValueTag, label
&gt; &gt; +end
&gt; 
&gt; Can we just have _llint_slow_path_size_varargs return 0 in the failure case?
&gt; 
&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:727
&gt; &gt; +    # Check for exception from _llint_slow_path_size_varargs
&gt; 
&gt; This comment doesn&apos;t add anything.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957368</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-06 13:19:39 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 218606 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=218606&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; +        prepartion for moving onto the C stack.  sizeAndAllocFrameForVarargs() will
&gt; 
&gt; prepartion ==&gt; preparation.

Fixed.

&gt; &gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1108
&gt; &gt; +LLINT_SLOW_PATH_DECL(slow_path_size_varargs)
&gt; 
&gt; Why not call this “slow_path_size_and_alloc_frame_for_varargs” (similar to what you did for JIT) to be more clear of its purpose?

Done.
 
&gt; &gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1114
&gt; &gt; +    ExecState* execCallee = sizeAndAllocFrameForVarargs(exec, &amp;vm.interpreter-&gt;stack(),
&gt; 
&gt; I prefer “calleeCallFrame” (or “newCallFrame”) to “execCallee”.  “execCallee” sounds too much like “the ExecState’s callee field” which is misleading.

execCallee is the current convention in the file the callee&apos;s ExecState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957379</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-06 13:35:37 -0800</bug_when>
    <thetext>Committed r160244: &lt;http://trac.webkit.org/changeset/160244&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218606</attachid>
            <date>2013-12-06 11:04:45 -0800</date>
            <delta_ts>2013-12-06 11:33:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>125331.patch</filename>
            <type>text/plain</type>
            <size>21888</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEzLTEyLTA2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFNwbGl0IHNpemluZyBvZiBWYXJBcmdzIGZyYW1lcyBmcm9tIGxvYWRpbmcgYXJndW1lbnRz
IGZvciB0aGUgZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNTMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNwbGl0IGxvYWRWYXJhcmdzIGludG8gc2l6ZUFuZEFsbG9jRnJhbWVGb3JWYXJhcmdz
KCkgYW5kIGxvYWRWYXJhcmdzKCkgaW4KKyAgICAgICAgcHJlcGFydGlvbiBmb3IgbW92aW5nIG9u
dG8gdGhlIEMgc3RhY2suICBzaXplQW5kQWxsb2NGcmFtZUZvclZhcmFyZ3MoKSB3aWxsCisgICAg
ICAgIGNvbXB1dGUgdGhlIHNpemUgb2YgdGhlIGNhbGxlZSBmcmFtZSBhbmQgYWxsb2NhdGUgaXQs
IHdoaWxlIGxvYWRWYXJhcmdzKCkKKyAgICAgICAgYWN0dWFsbHkgbG9hZHMgdGhlIGFyZ3VtZW50
IHZhbHVlcy4KKworICAgICAgICBBcyBwYXJ0IG9mIG1vdmluZyBvbnRvIHRoZSBDIHN0YWNrLCBz
aXplQW5kQWxsb2NGcmFtZUZvclZhcmFyZ3MoKSB3aWxsIGJlCisgICAgICAgIGNoYW5nZWQgdG8g
YSBmdW5jdGlvbiB0aGF0IGp1c3QgY29tcHV0ZXMgdGhlIHNpemUuICBUaGUgY2FsbGVyIHdpbGwg
dXNlIHRoYXQKKyAgICAgICAgc2l6ZSB0byBhbGxvY2F0ZSB0aGUgbmV3IGZyYW1lIG9uIHRoZSBz
dGFjayBiZWZvcmUgY2FsbGluZyBsb2FkVmFyZ3MoKSBhbmQKKyAgICAgICAgYWN0dWFsbHkgbWFr
aW5nIHRoZSBjYWxsLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpzaXplQW5kQWxsb2NGcmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAoSlND
Ojpsb2FkVmFyYXJncyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAg
ICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyk6CisgICAgICAgICogaml0L0pJVENhbGwzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAg
KiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisK
IDIwMTMtMTItMDUgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMTYwMjEzKTogQ3Jhc2ggaW4ganMvZG9tL0pTT04tcGFyc2UuaHRtbApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAxNjAyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAg
SlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIHJldHVybiBpbnRlcnByZXRl
ci0+ZXhlY3V0ZShldmFsLCBjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgY2FsbGVyU2NvcGVDaGFpbik7
CiB9CiAKLUNhbGxGcmFtZSogbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU3Rh
Y2sqIHN0YWNrLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVudHMsIGludCBmaXJz
dEZyZWVSZWdpc3RlcikKK0NhbGxGcmFtZSogc2l6ZUFuZEFsbG9jRnJhbWVGb3JWYXJhcmdzKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU1N0YWNrKiBzdGFjaywgSlNWYWx1ZSBhcmd1bWVudHMsIGlu
dCBmaXJzdEZyZWVSZWdpc3RlcikKIHsKICAgICBpZiAoIWFyZ3VtZW50cykgeyAvLyBmLmFwcGx5
KHgsIGFyZ3VtZW50cyksIHdpdGggYXJndW1lbnRzIHVubW9kaWZpZWQuCiAgICAgICAgIHVuc2ln
bmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpOwpAQCAtMTYxLDExICsxNjEsNiBAQCBDYWxsRnJhbWUqIGxvYWRWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyCiAgICAgICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dF
eGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotCi0gICAgICAgIG5ld0NhbGxGcmFt
ZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpOwotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldFRoaXNWYWx1ZSh0aGlzVmFsdWUpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyAr
K2kpCi0gICAgICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGNhbGxGcmFtZS0+
YXJndW1lbnRBZnRlckNhcHR1cmUoaSkpOwogICAgICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwog
ICAgIH0KIApAQCAtMTc1LDggKzE3MCw2IEBAIENhbGxGcmFtZSogbG9hZFZhcmFyZ3MoQ2FsbEZy
YW1lKiBjYWxsRnIKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIG5ld0NhbGxGcmFtZS0+c2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoMSk7Ci0gICAgICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1Zh
bHVlKHRoaXNWYWx1ZSk7CiAgICAgICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CiAgICAgfQogCkBA
IC0xOTMsOSArMTg2LDYgQEAgQ2FsbEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxG
cgogICAgICAgICAgICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgIH0KLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyhhcmdDb3VudCArIDEpOwotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldFRoaXNW
YWx1ZSh0aGlzVmFsdWUpOwotICAgICAgICBhcmdzT2JqZWN0LT5jb3B5VG9Bcmd1bWVudHMoY2Fs
bEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFyZ0NvdW50KTsKICAgICAgICAgcmV0dXJuIG5ld0NhbGxG
cmFtZTsKICAgICB9CiAKQEAgLTIwNyw5ICsxOTcsNiBAQCBDYWxsRnJhbWUqIGxvYWRWYXJhcmdz
KENhbGxGcmFtZSogY2FsbEZyCiAgICAgICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBuZXdDYWxsRnJhbWUtPnNl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50ICsgMSk7Ci0gICAgICAgIG5ld0Nh
bGxGcmFtZS0+c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7Ci0gICAgICAgIGFycmF5LT5jb3B5VG9B
cmd1bWVudHMoY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFyZ0NvdW50KTsKICAgICAgICAgcmV0
dXJuIG5ld0NhbGxGcmFtZTsKICAgICB9CiAKQEAgLTIyMCwxNCArMjA3LDU0IEBAIENhbGxGcmFt
ZSogbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnIKICAgICAgICAgY2FsbEZyYW1lLT52bSgp
LnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxs
RnJhbWUpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIHJldHVybiBuZXdDYWxsRnJh
bWU7Cit9CisKK3ZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxGcmFt
ZSogbmV3Q2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVudHMpCit7
CisgICAgaWYgKCFhcmd1bWVudHMpIHsgLy8gZi5hcHBseSh4LCBhcmd1bWVudHMpLCB3aXRoIGFy
Z3VtZW50cyB1bm1vZGlmaWVkLgorICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAg
ICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUo
dGhpc1ZhbHVlKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKTsgKytpKQorICAgICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVu
dChpLCBjYWxsRnJhbWUtPmFyZ3VtZW50QWZ0ZXJDYXB0dXJlKGkpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBpZiAoYXJndW1lbnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
KyAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygxKTsK
KyAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1ZhbHVlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoYXNPYmplY3QoYXJndW1lbnRzKS0+Y2xhc3NJ
bmZvKCkgPT0gQXJndW1lbnRzOjppbmZvKCkpIHsKKyAgICAgICAgQXJndW1lbnRzKiBhcmdzT2Jq
ZWN0ID0gYXNBcmd1bWVudHMoYXJndW1lbnRzKTsKKyAgICAgICAgdW5zaWduZWQgYXJnQ291bnQg
PSBhcmdzT2JqZWN0LT5sZW5ndGgoY2FsbEZyYW1lKTsKKyAgICAgICAgbmV3Q2FsbEZyYW1lLT5z
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdDb3VudCArIDEpOworICAgICAgICBuZXdD
YWxsRnJhbWUtPnNldFRoaXNWYWx1ZSh0aGlzVmFsdWUpOworICAgICAgICBhcmdzT2JqZWN0LT5j
b3B5VG9Bcmd1bWVudHMoY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFyZ0NvdW50KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoaXNKU0FycmF5KGFyZ3VtZW50cykpIHsK
KyAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGFyZ3VtZW50cyk7CisgICAgICAgIHVu
c2lnbmVkIGFyZ0NvdW50ID0gYXJyYXktPmxlbmd0aCgpOworICAgICAgICBuZXdDYWxsRnJhbWUt
PnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50ICsgMSk7CisgICAgICAgIG5l
d0NhbGxGcmFtZS0+c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7CisgICAgICAgIGFycmF5LT5jb3B5
VG9Bcmd1bWVudHMoY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFyZ0NvdW50KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogYXJnT2JqZWN0ID0gYXNPYmplY3Qo
YXJndW1lbnRzKTsKKyAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGFyZ09iamVjdC0+Z2V0KGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihjYWxsRnJh
bWUpOwogICAgIG5ld0NhbGxGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJn
Q291bnQgKyAxKTsKICAgICBuZXdDYWxsRnJhbWUtPnNldFRoaXNWYWx1ZSh0aGlzVmFsdWUpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnQ291bnQ7ICsraSkgewogICAgICAgICBuZXdD
YWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGFzT2JqZWN0KGFyZ3VtZW50cyktPmdldChjYWxsRnJh
bWUsIGkpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24o
KSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKIH0KIAogSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKFZN
JiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCShyZXZpc2lvbiAxNjAyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDggKzI4Niw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKik7
Ci0gICAgQ2FsbEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqLCBKU1N0YWNrKiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTVmFsdWUgYXJndW1lbnRzLCBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIpOwot
CisgICAgQ2FsbEZyYW1lKiBzaXplQW5kQWxsb2NGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiwg
SlNTdGFjayosIEpTVmFsdWUsIGludCk7CisgICAgdm9pZCBsb2FkVmFyYXJncyhDYWxsRnJhbWUq
LCBDYWxsRnJhbWUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZp
c2lvbiAxNjAyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NzAsNyArNjcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRU8sIEdQUlJlZyk7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRp
b25fRVN0LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FWiwgaW50MzJfdCk7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUpKWiwgR1BSUmVnLCBHUFJS
ZWcsIGludDMyX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEZfSklUT3BlcmF0aW9uX0VKWiwgR1BSUmVnLCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FLCBpbnQpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBYXBK
LCBpbnQsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBYXBKY3BaLCBpbnQs
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBHUFJSZWcsIGludDMyX3QpOwpAQCAtNzExLDYgKzcx
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpJZEpKLCBSZWdpc3RlcklELCBjb25z
dCBJZGVudGlmaWVyKiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGX0pJVE9wZXJh
dGlvbl9FRkpKLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJ
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFN0cmluZ0ltcGwq
KTsKICNlbHNlCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklELCBSZWdp
c3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CkBAIC03MjQsNyAr
NzI1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlv
bl9FQ2IsIENvZGVCbG9jayopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oWl9KSVRPcGVyYXRpb25fRSk7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FSkpaLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBH
UFJSZWcsIGludDMyX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEZfSklUT3BlcmF0aW9uX0VGSkosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVy
SUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VKWiwgR1BSUmVnLCBHUFJSZWcsIGludDMy
X3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3Bl
cmF0aW9uX0VBYXBKLCBpbnQsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBHUFJSZWcsIEdQUlJl
Zyk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVy
YXRpb25fRUosIGludCwgR1BSUmVnLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSWRjLCBpbnQsIEdQUlJlZywgR1BS
UmVnLCBjb25zdCBJZGVudGlmaWVyKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNjAyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw5ICsxODQs
MTIgQEAgdm9pZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0cnVjdGlvbgogICAgIGlmIChj
YW5PcHRpbWl6ZSkKICAgICAgICAgc2xvd0Nhc2UubGluayh0aGlzKTsKIAorICAgIGVtaXRMb2Fk
KGFyZ3VtZW50cywgcmVnVDEsIHJlZ1QwKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNp
emVBbmRBbGxvY0ZyYW1lRm9yVmFyYXJncywgcmVnVDEsIHJlZ1QwLCBmaXJzdEZyZWVSZWdpc3Rl
cik7CisgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgcmVnVDUpOwogICAgIGVtaXRMb2FkKHRoaXNW
YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBlbWl0TG9hZChhcmd1bWVudHMsIHJlZ1QzLCByZWdU
Mik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Mb2FkVmFyYXJncywgcmVnVDEsIHJlZ1Qw
LCByZWdUMywgcmVnVDIsIGZpcnN0RnJlZVJlZ2lzdGVyKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkxvYWRWYXJhcmdzLCByZWdUNSwgcmVnVDEsIHJlZ1QwLCByZWdUMywgcmVnVDIpOwog
ICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJlZ1QzKTsKIAogICAgIGlmIChjYW5PcHRpbWl6ZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTYwMjIw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDkgKzEwNCwxMSBAQCB2b2lkIEpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKEluc3Ry
dWN0aW9uCiAgICAgaWYgKGNhbk9wdGltaXplKQogICAgICAgICBzbG93Q2FzZS5saW5rKHRoaXMp
OwogCi0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih0aGlzVmFsdWUsIHJlZ1QwKTsKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywgcmVnVDEpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIHJlZ1QwLCByZWdUMSwgZmlyc3RGcmVlUmVnaXN0ZXIp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUFuZEFsbG9jRnJhbWVGb3JWYXJhcmdz
LCByZWdUMSwgZmlyc3RGcmVlUmVnaXN0ZXIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
dGhpc1ZhbHVlLCByZWdUMSk7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMs
IHJlZ1QyKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzLCByZXR1cm5W
YWx1ZUdQUiwgcmVnVDEsIHJlZ1QyKTsKICAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUMSk7
CiAKICAgICBpZiAoY2FuT3B0aW1pemUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAkocmV2aXNpb24gMTYwMjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw5ICsyODUsMTUgQEAgQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogCiAKICNpZiBVU0UoSlNWQUxVRTY0
KQotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24o
Rl9KSVRPcGVyYXRpb25fRUpKWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
aW50MzJfdCBhcmczKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNh
bGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIGlu
dDMyX3QgYXJnMykKIHsKLSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgVHJ1c3RlZEltbTMyKGFyZzMpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbTMyKGFyZzMpKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVjayhvcGVyYXRpb24pOworfQorCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpKIG9wZXJhdGlvbiwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKK3sKKyAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIApAQCAtNDIwLDE3ICs0MjYsMjMg
QEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VKSlogb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVn
IGFyZzJQYXlsb2FkLCBpbnQzMl90IGFyZzMpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FSlogb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBpbnQzMl90IGFyZzIpCiB7CiAjaWYg
Q1BVKFNINCkKICAgICAvLyBXZSBoYXZlIHRvIHB1dCBhcmczIGluIHRoZSA0dGggYXJndW1lbnQg
cmVnaXN0ZXIgKHI3KSBhcyA2NC1iaXQgdmFsdWUgYXJnMiB3aWxsIGJlIHB1dCBvbiBzdGFjayBm
b3Igc2g0IGFyY2hpdGVjdXJlLgotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
UGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbTMyKGFyZzMpLCBhcmcyUGF5bG9hZCwgYXJnMlRh
Zyk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBhcmcxVGFn
LCBUcnVzdGVkSW1tMzIoYXJnMikpOwogI2Vsc2UKLSAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXls
b2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMykpOworICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1
c3RlZEltbTMyKGFyZzIpKTsKICNlbmRpZgogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSkogb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVnIGFy
ZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIGFyZzNQYXlsb2FkLCBhcmczVGFnKTsK
KyAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworfQor
ICAgIAogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRUFhcEogb3BlcmF0aW9uLCBpbnQgZHN0LCBBcnJheUFsbG9jYXRp
b25Qcm9maWxlKiBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogewog
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpLCBhcmcy
UGF5bG9hZCwgYXJnMlRhZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE2MDIyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjYsMTQgKzE1MjYs
MjMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQogCi1DYWxsRnJhbWUqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTG9hZFZhcmFyZ3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50cywgaW50
MzJfdCBmaXJzdEZyZWVSZWdpc3RlcikKK0NhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRp
b25TaXplQW5kQWxsb2NGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQXJndW1lbnRzLCBpbnQzMl90IGZpcnN0RnJlZVJlZ2lzdGVyKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOwogICAgIEpTU3RhY2sqIHN0YWNrID0gJmV4ZWMtPmludGVycHJldGVyKCktPnN0
YWNrKCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFy
Z3VtZW50cyk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBzaXplQW5kQWxsb2NGcmFt
ZUZvclZhcmFyZ3MoZXhlYywgc3RhY2ssIGFyZ3VtZW50cywgZmlyc3RGcmVlUmVnaXN0ZXIpOwor
ICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Cit9CisKK0NhbGxGcmFtZSogSklUX09QRVJBVElPTiBv
cGVyYXRpb25Mb2FkVmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMsIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFy
Z3VtZW50cykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVGhpcyk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7Ci0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBsb2FkVmFyYXJncyhleGVjLCBzdGFjaywgdGhpc1ZhbHVlLCBhcmd1bWVudHMsIGZpcnN0RnJl
ZVJlZ2lzdGVyKTsKKyAgICBsb2FkVmFyYXJncyhleGVjLCBuZXdDYWxsRnJhbWUsIHRoaXNWYWx1
ZSwgYXJndW1lbnRzKTsKICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTYwMjIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDcgKzc5LDkgQEAgZXh0ZXJuICJDIiB7CiAgICAgVndzOiBWYXJpYWJsZVdhdGNo
cG9pbnRTZXQqCiAgICAgWjogaW50MzJfdAogKi8KLXR5cGVkZWYgQ2FsbEZyYW1lKiBKSVRfT1BF
UkFUSU9OICgqRl9KSVRPcGVyYXRpb25fRUpKWikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKKwordHlwZWRlZiBDYWxsRnJhbWUqIEpJVF9PUEVS
QVRJT04gKCpGX0pJVE9wZXJhdGlvbl9FRkpKKShFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwordHlwZWRlZiBDYWxsRnJhbWUqIEpJVF9PUEVS
QVRJT04gKCpGX0pJVE9wZXJhdGlvbl9FSlopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBp
bnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3Bl
cmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OICgqSl9KSVRPcGVyYXRpb25fRUEpKEV4ZWNTdGF0ZSosIEpTQXJyYXkqKTsKIHR5cGVkZWYg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VBWikoRXhlY1N0
YXRlKiwgSlNBcnJheSosIGludDMyX3QpOwpAQCAtMjY0LDcgKzI2Niw4IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmQXJndW0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVsZXRlQnlJZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBj
b25zdCBJZGVudGlmaWVyKikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldFBOYW1lcyhFeGVjU3RhdGUqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZihFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgcHJvdG8pIFdURl9JTlRFUk5BTDsKLUNh
bGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb2FkVmFyYXJncyhFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJf
dCBmaXJzdEZyZWVSZWdpc3RlcikgV1RGX0lOVEVSTkFMOworQ2FsbEZyYW1lKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblNpemVBbmRBbGxvY0ZyYW1lRm9yVmFyYXJncyhFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBhcmd1bWVudHMsIGludDMyX3QgZmlyc3RGcmVlUmVnaXN0ZXIpIFdURl9JTlRF
Uk5BTDsKK0NhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25Mb2FkVmFyYXJncyhFeGVj
U3RhdGUqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGFyZ3VtZW50cykgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Ub09iamVjdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOwogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93
bktleVR5cGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRl
eCkgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNjAyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTA1LDE5
ICsxMTA1LDMzIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QKICAg
ICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQogCi1M
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF92YXJhcmdzKQorTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3NpemVfdmFyYXJncykKIHsKICAgICBMTElOVF9CRUdJTigpOwog
ICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxl
IHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAKKyAgICBFeGVjU3RhdGUq
IGV4ZWNDYWxsZWUgPSBzaXplQW5kQWxsb2NGcmFtZUZvclZhcmFyZ3MoZXhlYywgJnZtLmludGVy
cHJldGVyLT5zdGFjaygpLAorICAgICAgICBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSwgcGNbNV0u
dS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjKTsKKyAgICAK
KyAgICB2bS5uZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZSA9IGV4ZWNDYWxsZWU7CisKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfdmFyYXJn
cykKK3sKKyAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKKyAgICAvLyBUaGlzIG5lZWRzIHRv
OgogICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVj
ZXNzYXJ5LgogICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3Mg
dG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgogICAgIAogICAgIEpTVmFsdWUgY2FsbGVl
QXNWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwogICAgIAotICAgIEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAotICAgICAgICBleGVjLCAmdm0uaW50ZXJwcmV0ZXIt
PnN0YWNrKCksCi0gICAgICAgIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQp
LmpzVmFsdWUoKSwgcGNbNV0udS5vcGVyYW5kKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUg
PSB2bS5uZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZTsKKworICAgIGxvYWRWYXJhcmdzKGV4ZWMsIGV4
ZWNDYWxsZWUsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUo
KSk7CiAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYyk7CiAgICAgCiAgICAgZXhl
Y0NhbGxlZS0+dW5jaGVja2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZp
c2lvbiAxNjAyMjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVj
dCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NpemVfdmFyYXJncyk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGxfdmFyYXJncyk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbCk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RlYXJfb2ZmX2FjdGl2YXRpb24pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE2MDIyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC01NTEsNiArNTUxLDE0IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNs
b3cKIGVuZAogCiAKK21hY3JvIGJyYW5jaElmRXhjZXB0aW9uKGxhYmVsKQorICAgIGxvYWRwIFNj
b3BlQ2hhaW5bY2ZyXSwgdDMKKyAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKKyAgICBsb2Fk
cCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsgV2Vha1NldDo6bV92bVt0M10sIHQzCisgICAgYmlu
ZXEgVk06Om1fZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgRW1wdHlWYWx1ZVRhZywgbGFiZWwK
K2VuZAorCisKICMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCiAKIF9sbGludF9vcF9lbnRl
cjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNjAyMjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAt
Mzg5LDYgKzM4OSwxNCBAQCBtYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBzbG93
CiBlbmQKIAogCittYWNybyBicmFuY2hJZkV4Y2VwdGlvbihsYWJlbCkKKyAgICBsb2FkcCBTY29w
ZUNoYWluW2Nmcl0sIHQzCisgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQzCisgICAgbG9hZHAg
TWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNdLCB0MworICAgIGJ0cW56
IFZNOjptX2V4Y2VwdGlvblt0M10sIGxhYmVsCitlbmQKKworCiAjIEluc3RydWN0aW9uIGltcGxl
bWVudGF0aW9ucwogCiBfbGxpbnRfb3BfZW50ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNjAy
MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20JKHdvcmtpbmcgY29weSkKQEAgLTcyMyw2ICs3MjMsOSBAQCBfbGxpbnRfb3BfY29uc3RydWN0
OgogCiBfbGxpbnRfb3BfY2FsbF92YXJhcmdzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zaXplX3ZhcmFyZ3MpCisgICAgIyBDaGVjayBm
b3IgZXhjZXB0aW9uIGZyb20gX2xsaW50X3Nsb3dfcGF0aF9zaXplX3ZhcmFyZ3MKKyAgICBicmFu
Y2hJZkV4Y2VwdGlvbihfbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSkKICAg
ICBzbG93UGF0aEZvckNhbGwoX2xsaW50X3Nsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MpCiAKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNjAyMjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODMsNiAr
MzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNl
cHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOworICAg
ICAgICBFeGVjU3RhdGUqIG5ld0NhbGxGcmFtZVJldHVyblZhbHVlOwogICAgICAgICBFeGVjU3Rh
dGUqIGNhbGxGcmFtZUZvclRocm93OwogICAgICAgICB2b2lkKiB0YXJnZXRNYWNoaW5lUENGb3JU
aHJvdzsKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHRhcmdldEludGVycHJldGVyUENGb3JUaHJvdzsK
</data>
<flag name="review"
          id="242078"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>