<?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>104807</bug_id>
          
          <creation_ts>2012-12-12 07:28:31 -0800</creation_ts>
          <short_desc>Adds support for fromCharCode intrinsic</short_desc>
          <delta_ts>2014-02-13 04:04:07 -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>UNCONFIRMED</bug_status>
          <resolution></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>0</everconfirmed>
          <reporter name="Vahag">vaag</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>789518</commentid>
    <comment_count>0</comment_count>
    <who name="Vahag">vaag</who>
    <bug_when>2012-12-12 07:28:31 -0800</bug_when>
    <thetext>Overview:

    Adds support for fromCharCode intrinsic

Actual Results:

   Improve performance for string operations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789522</commentid>
    <comment_count>1</comment_count>
      <attachid>179038</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2012-12-12 07:32:32 -0800</bug_when>
    <thetext>Created attachment 179038
Adds Support for fromCharCode intrinsic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789525</commentid>
    <comment_count>2</comment_count>
      <attachid>179038</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2012-12-12 07:35:36 -0800</bug_when>
    <thetext>Comment on attachment 179038
Adds Support for fromCharCode intrinsic

&gt;Index: Source/JavaScriptCore/ChangeLog
&gt;===================================================================
&gt;--- Source/JavaScriptCore/ChangeLog	(revision 137464)
&gt;+++ Source/JavaScriptCore/ChangeLog	(working copy)
&gt;@@ -1,3 +1,30 @@
&gt;+2012-12-12  Vahag Vardanyan  &lt;vaag@ispras.ru&gt;
&gt;+
&gt;+        Adds support for fromCharCode intrinsic
&gt;+        https://bugs.webkit.org/show_bug.cgi?id=104807
&gt;+
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).
&gt;+
&gt;+        * dfg/DFGAbstractState.cpp:
&gt;+        (JSC::DFG::AbstractState::execute):
&gt;+        * dfg/DFGByteCodeParser.cpp:
&gt;+        (JSC::DFG::ByteCodeParser::handleIntrinsic):
&gt;+        * dfg/DFGNodeType.h:
&gt;+        (DFG):
&gt;+        * dfg/DFGPredictionPropagationPhase.cpp:
&gt;+        (JSC::DFG::PredictionPropagationPhase::propagate):
&gt;+        * dfg/DFGSpeculativeJIT.cpp:
&gt;+        (JSC::DFG::SpeculativeJIT::compileFromCharCode):
&gt;+        (DFG):
&gt;+        * dfg/DFGSpeculativeJIT.h:
&gt;+        (SpeculativeJIT):
&gt;+        * dfg/DFGSpeculativeJIT32_64.cpp:
&gt;+        (JSC::DFG::SpeculativeJIT::compile):
&gt;+        * dfg/DFGSpeculativeJIT64.cpp:
&gt;+        (JSC::DFG::SpeculativeJIT::compile):
&gt;+
&gt; 2012-12-11  Gabor Ballabas  &lt;gaborb@inf.u-szeged.hu&gt;
&gt; 
&gt;         Implement add64 for ARM traditional assembler after r136601
&gt;Index: Source/JavaScriptCore/dfg/DFGNodeType.h
&gt;===================================================================
&gt;--- Source/JavaScriptCore/dfg/DFGNodeType.h	(revision 137458)
&gt;+++ Source/JavaScriptCore/dfg/DFGNodeType.h	(working copy)
&gt;@@ -174,6 +174,7 @@
&gt;     /* Optimizations for string access */ \
&gt;     macro(StringCharCodeAt, NodeResultInt32) \
&gt;     macro(StringCharAt, NodeResultJS) \
&gt;+    macro(StringFromCharCode, NodeResultJS) \
&gt;     \
&gt;     /* Nodes for comparison operations. */\
&gt;     macro(CompareLess, NodeResultBoolean | NodeMustGenerate | NodeMightClobber) \
&gt;Index: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
&gt;===================================================================
&gt;--- Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp	(revision 137458)
&gt;+++ Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp	(working copy)
&gt;@@ -2582,6 +2582,11 @@
&gt;         compileGetByValOnString(node);
&gt;         break;
&gt;     }
&gt;+
&gt;+    case StringFromCharCode: {
&gt;+        compileFromCharCode(node);
&gt;+        break;
&gt;+    }
&gt;         
&gt;     case CheckArray: {
&gt;         checkArray(node);
&gt;Index: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp
&gt;===================================================================
&gt;--- Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp	(revision 137458)
&gt;+++ Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp	(working copy)
&gt;@@ -2551,6 +2551,11 @@
&gt;         compileGetByValOnString(node);
&gt;         break;
&gt;     }
&gt;+
&gt;+    case StringFromCharCode: {
&gt;+        compileFromCharCode(node);
&gt;+        break;
&gt;+    }
&gt;         
&gt;     case CheckArray: {
&gt;         checkArray(node);
&gt;Index: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
&gt;===================================================================
&gt;--- Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp	(revision 137458)
&gt;+++ Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp	(working copy)
&gt;@@ -2016,6 +2016,25 @@
&gt;     cellResult(scratchReg, m_compileIndex);
&gt; }
&gt; 
&gt;+void SpeculativeJIT::compileFromCharCode(Node&amp; node)
&gt;+{
&gt;+    SpeculateStrictInt32Operand property(this, node.child1());
&gt;+    GPRReg propertyReg = property.gpr();
&gt;+    GPRTemporary smallStrings(this);
&gt;+    GPRTemporary scratch(this);
&gt;+    GPRReg scratchReg = scratch.gpr();
&gt;+    GPRReg smallStringsReg = smallStrings.gpr();
&gt;+
&gt;+    // Only ASCII characters are supported
&gt;+    speculationCheck(Uncountable, JSValueRegs(), NoNode, m_jit.branch32(MacroAssembler::AboveOrEqual, propertyReg, TrustedImm32(0x100)));
&gt;+
&gt;+    m_jit.move(MacroAssembler::TrustedImmPtr(m_jit.globalData()-&gt;smallStrings.singleCharacterStrings()), smallStringsReg);
&gt;+    m_jit.loadPtr(MacroAssembler::BaseIndex(smallStringsReg, propertyReg, MacroAssembler::ScalePtr, 0), scratchReg);
&gt;+    speculationCheck(Uncountable, JSValueRegs(), NoNode, m_jit.branchTest32(MacroAssembler::Zero, scratchReg));
&gt;+
&gt;+    cellResult(scratchReg, m_compileIndex);
&gt;+}
&gt;+
&gt; GeneratedOperandType SpeculativeJIT::checkGeneratedTypeForToInt32(NodeIndex nodeIndex)
&gt; {
&gt; #if DFG_ENABLE(DEBUG_VERBOSE)
&gt;Index: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
&gt;===================================================================
&gt;--- Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h	(revision 137458)
&gt;+++ Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h	(working copy)
&gt;@@ -2338,6 +2338,7 @@
&gt;     
&gt;     void compileGetCharCodeAt(Node&amp;);
&gt;     void compileGetByValOnString(Node&amp;);
&gt;+    void compileFromCharCode(Node&amp;);
&gt; 
&gt;     void compileGetByValOnArguments(Node&amp;);
&gt;     void compileGetArgumentsLength(Node&amp;);
&gt;Index: Source/JavaScriptCore/dfg/DFGAbstractState.cpp
&gt;===================================================================
&gt;--- Source/JavaScriptCore/dfg/DFGAbstractState.cpp	(revision 137458)
&gt;+++ Source/JavaScriptCore/dfg/DFGAbstractState.cpp	(working copy)
&gt;@@ -887,6 +887,12 @@
&gt;         forNode(nodeIndex).set(SpecInt32);
&gt;         break;
&gt;         
&gt;+    case StringFromCharCode:
&gt;+        node.setCanExit(true);
&gt;+        forNode(node.child1()).filter(SpecInt32);
&gt;+        forNode(nodeIndex).set(SpecString);
&gt;+        break;
&gt;+
&gt;     case StringCharAt:
&gt;         node.setCanExit(true);
&gt;         forNode(node.child1()).filter(SpecString);
&gt;Index: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
&gt;===================================================================
&gt;--- Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp	(revision 137458)
&gt;+++ Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp	(working copy)
&gt;@@ -1734,7 +1734,19 @@
&gt;             set(resultOperand, charCode);
&gt;         return true;
&gt;     }
&gt;+    case FromCharCodeIntrinsic: {
&gt;+        if (argumentCountIncludingThis != 2)
&gt;+            return false;
&gt; 
&gt;+        int indexOperand = registerOffset + argumentToOperand(1);
&gt;+        NodeIndex charCode = addToGraph(StringFromCharCode, getToInt32(indexOperand));
&gt;+
&gt;+        if (usesResult)
&gt;+            set(resultOperand, charCode);
&gt;+
&gt;+        return true;
&gt;+    }
&gt;+
&gt;     case RegExpExecIntrinsic: {
&gt;         if (argumentCountIncludingThis != 2)
&gt;             return false;
&gt;Index: Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp
&gt;===================================================================
&gt;--- Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp	(revision 137458)
&gt;+++ Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp	(working copy)
&gt;@@ -640,6 +640,12 @@
&gt;             break;
&gt;         }
&gt;         
&gt;+        case StringFromCharCode: {
&gt;+            changed |= setPrediction(SpecString);
&gt;+            changed |= m_graph[node.child1()].mergeFlags(NodeUsedAsNumber | NodeUsedAsInt);
&gt;+            break;
&gt;+        }
&gt;+
&gt;         case StringCharAt: {
&gt;             changed |= setPrediction(SpecString);
&gt;             changed |= m_graph[node.child1()].mergeFlags(NodeUsedAsValue);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789718</commentid>
    <comment_count>3</comment_count>
      <attachid>179038</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-12-12 11:09:23 -0800</bug_when>
    <thetext>Comment on attachment 179038
Adds Support for fromCharCode intrinsic

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

Code looks good to me, but you need to make sure you have a real change log.  Once you&apos;ve got that re-upload and i&apos;ll re-review and land.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Need a short description (OOPS!).
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=104807
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

Alas you need a real change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789725</commentid>
    <comment_count>4</comment_count>
      <attachid>179038</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-12 11:15:57 -0800</bug_when>
    <thetext>Comment on attachment 179038
Adds Support for fromCharCode intrinsic

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2029
&gt; +    speculationCheck(Uncountable, JSValueRegs(), NoNode, m_jit.branch32(MacroAssembler::AboveOrEqual, propertyReg, TrustedImm32(0x100)));

I know that the other string intrinsically do this as well but I would rather we not perpetuate it. Your patch could easily be a huge regression if someone does a Unicode fromcharcodeat that dominates a look. Please switch this to a slow path invocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789726</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-12 11:16:45 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 179038 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179038&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2029
&gt; &gt; +    speculationCheck(Uncountable, JSValueRegs(), NoNode, m_jit.branch32(MacroAssembler::AboveOrEqual, propertyReg, TrustedImm32(0x100)));
&gt; 
&gt; I know that the other string intrinsically do this as well but I would rather we not perpetuate it. Your patch could easily be a huge regression if someone does a Unicode fromcharcodeat that dominates a look. Please switch this to a slow path invocation.

*that dominates a loop. 

-F</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793972</commentid>
    <comment_count>6</comment_count>
      <attachid>180011</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2012-12-18 13:11:15 -0800</bug_when>
    <thetext>Created attachment 180011
Adds fromCharCode support. 

New version switch to use slow path invocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793980</commentid>
    <comment_count>7</comment_count>
      <attachid>180011</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-18 13:16:37 -0800</bug_when>
    <thetext>Comment on attachment 180011
Adds fromCharCode support. 

Attachment 180011 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15408290</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793983</commentid>
    <comment_count>8</comment_count>
      <attachid>180011</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-18 13:17:54 -0800</bug_when>
    <thetext>Comment on attachment 180011
Adds fromCharCode support. 

Attachment 180011 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15405303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797143</commentid>
    <comment_count>9</comment_count>
      <attachid>180709</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2012-12-25 05:35:26 -0800</bug_when>
    <thetext>Created attachment 180709
Adds Support for fromCharCode intrinsic

Fixes previous versions building problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797145</commentid>
    <comment_count>10</comment_count>
      <attachid>180709</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-25 05:58:05 -0800</bug_when>
    <thetext>Comment on attachment 180709
Adds Support for fromCharCode intrinsic

Attachment 180709 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15492844</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797146</commentid>
    <comment_count>11</comment_count>
      <attachid>180709</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-25 05:58:14 -0800</bug_when>
    <thetext>Comment on attachment 180709
Adds Support for fromCharCode intrinsic

Attachment 180709 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15491866</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801420</commentid>
    <comment_count>12</comment_count>
      <attachid>181527</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2013-01-07 10:44:06 -0800</bug_when>
    <thetext>Created attachment 181527
Switch to using fromCharCode intrinsic instead of call operation in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829850</commentid>
    <comment_count>13</comment_count>
      <attachid>181527</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 10:28:58 -0800</bug_when>
    <thetext>Comment on attachment 181527
Switch to using fromCharCode intrinsic instead of call operation in some cases.

Rejecting attachment 181527 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 181527, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
rej
patching file Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
Hunk #1 succeeded at 1587 (offset -114 lines).
patching file Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp
Hunk #1 succeeded at 665 with fuzz 1 (offset 4 lines).
patching file Source/JavaScriptCore/dfg/DFGNodeType.h
Hunk #1 succeeded at 179 (offset 1 line).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Oliver Hunt&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16491312</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838347</commentid>
    <comment_count>14</comment_count>
      <attachid>189511</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2013-02-21 05:11:01 -0800</bug_when>
    <thetext>Created attachment 189511
Switch to using fromCharCode intrinsic instead of call operation in some cases.

Patch updated for latest trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838412</commentid>
    <comment_count>15</comment_count>
      <attachid>189511</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-21 07:37:00 -0800</bug_when>
    <thetext>Comment on attachment 189511
Switch to using fromCharCode intrinsic instead of call operation in some cases.

Rejecting attachment 189511 from commit-queue.

vaag@ispras.ru does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871140</commentid>
    <comment_count>16</comment_count>
      <attachid>196949</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2013-04-08 13:31:32 -0700</bug_when>
    <thetext>Created attachment 196949
Patch updated for latest trunk

Patch updated for latest trunk, please review it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871160</commentid>
    <comment_count>17</comment_count>
      <attachid>196949</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-08 14:07:26 -0700</bug_when>
    <thetext>Comment on attachment 196949
Patch updated for latest trunk

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2109
&gt; +    JITCompiler::Jump jmpAfter = m_jit.jump();
&gt; +
&gt; +    isNotASCIICharacter.link(&amp;m_jit);
&gt; +    JITCompiler::Jump jmpSlowCase = m_jit.jump();
&gt; +    addSlowPathGenerator(slowPathCall(jmpSlowCase, this, operationStringFromCharCode, scratchReg, propertyReg));
&gt; +
&gt; +    jmpAfter.link(&amp;m_jit);

This is wrong.  You should be passing isNotASCIICharacter as the first argument to slowPathCall(), and omitting the jmpAfter thing.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2110
&gt; +    speculationCheck(Uncountable, JSValueRegs(), 0, m_jit.branchTest32(MacroAssembler::Zero, scratchReg));

Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871177</commentid>
    <comment_count>18</comment_count>
      <attachid>196957</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2013-04-08 14:36:59 -0700</bug_when>
    <thetext>Created attachment 196957
Adds Support for fromCharCode intrinsic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871178</commentid>
    <comment_count>19</comment_count>
    <who name="Vahag">vaag</who>
    <bug_when>2013-04-08 14:38:06 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 196949 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196949&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2109
&gt; &gt; +    JITCompiler::Jump jmpAfter = m_jit.jump();
&gt; &gt; +
&gt; &gt; +    isNotASCIICharacter.link(&amp;m_jit);
&gt; &gt; +    JITCompiler::Jump jmpSlowCase = m_jit.jump();
&gt; &gt; +    addSlowPathGenerator(slowPathCall(jmpSlowCase, this, operationStringFromCharCode, scratchReg, propertyReg));
&gt; &gt; +
&gt; &gt; +    jmpAfter.link(&amp;m_jit);
&gt; 
&gt; This is wrong.  You should be passing isNotASCIICharacter as the first argument to slowPathCall(), and omitting the jmpAfter thing.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2110
&gt; &gt; +    speculationCheck(Uncountable, JSValueRegs(), 0, m_jit.branchTest32(MacroAssembler::Zero, scratchReg));
&gt; 
&gt; Why?

Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871179</commentid>
    <comment_count>20</comment_count>
      <attachid>196957</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-08 14:40:42 -0700</bug_when>
    <thetext>Comment on attachment 196957
Adds Support for fromCharCode intrinsic 

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2100
&gt; +    JITCompiler::Jump isNotASCIICharacter = m_jit.branch32(MacroAssembler::AboveOrEqual, propertyReg, TrustedImm32(0x100));

Can we test for above 0xff here instead? I believe that&apos;s a slightly smaller encoded immediate on most platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871180</commentid>
    <comment_count>21</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-08 14:41:17 -0700</bug_when>
    <thetext>(The rest looks good to me.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871182</commentid>
    <comment_count>22</comment_count>
      <attachid>196957</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-08 14:45:25 -0700</bug_when>
    <thetext>Comment on attachment 196957
Adds Support for fromCharCode intrinsic 

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

LGTM except for those minor fixes.

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:865
&gt; +        node-&gt;setCanExit(true);

Not needed.

&gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:866
&gt; +        forNode(node-&gt;child1()).filter(SpecInt32);

Not needed.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:352
&gt; +            setUseKindAndUnboxIfProfitable&lt;Int32Use&gt;(node-&gt;child1());

The reason why you don&apos;t need the filter() and setCanExit() in AbstractState is that AbstractState::executeEdges() takes care of this based on Int32Use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871190</commentid>
    <comment_count>23</comment_count>
    <who name="Vahag">vaag</who>
    <bug_when>2013-04-08 14:54:36 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 196957 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196957&amp;action=review
&gt; 
&gt; LGTM except for those minor fixes.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:865
&gt; &gt; +        node-&gt;setCanExit(true);
&gt; 
&gt; Not needed.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:866
&gt; &gt; +        forNode(node-&gt;child1()).filter(SpecInt32);
&gt; 
&gt; Not needed.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:352
&gt; &gt; +            setUseKindAndUnboxIfProfitable&lt;Int32Use&gt;(node-&gt;child1());
It will fail on SpeculateStrictInt32Operand property(this, node-&gt;child1()); without this.

&gt; 
&gt; The reason why you don&apos;t need the filter() and setCanExit() in AbstractState is that AbstractState::executeEdges() takes care of this based on Int32Use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871191</commentid>
    <comment_count>24</comment_count>
    <who name="Vahag">vaag</who>
    <bug_when>2013-04-08 14:56:18 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; (From update of attachment 196949 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196949&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2109
&gt; &gt; &gt; +    JITCompiler::Jump jmpAfter = m_jit.jump();
&gt; &gt; &gt; +
&gt; &gt; &gt; +    isNotASCIICharacter.link(&amp;m_jit);
&gt; &gt; &gt; +    JITCompiler::Jump jmpSlowCase = m_jit.jump();
&gt; &gt; &gt; +    addSlowPathGenerator(slowPathCall(jmpSlowCase, this, operationStringFromCharCode, scratchReg, propertyReg));
&gt; &gt; &gt; +
&gt; &gt; &gt; +    jmpAfter.link(&amp;m_jit);
&gt; &gt; 
&gt; &gt; This is wrong.  You should be passing isNotASCIICharacter as the first argument to slowPathCall(), and omitting the jmpAfter thing.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2110
&gt; &gt; &gt; +    speculationCheck(Uncountable, JSValueRegs(), 0, m_jit.branchTest32(MacroAssembler::Zero, scratchReg));
&gt; &gt; 
&gt; &gt; Why?
&gt; 
It fails on some tests without this check, for example on stringSHA1 from browsemark.
&gt; Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871193</commentid>
    <comment_count>25</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-08 14:57:07 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; (From update of attachment 196949 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196949&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2109
&gt; &gt; &gt; &gt; +    JITCompiler::Jump jmpAfter = m_jit.jump();
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; +    isNotASCIICharacter.link(&amp;m_jit);
&gt; &gt; &gt; &gt; +    JITCompiler::Jump jmpSlowCase = m_jit.jump();
&gt; &gt; &gt; &gt; +    addSlowPathGenerator(slowPathCall(jmpSlowCase, this, operationStringFromCharCode, scratchReg, propertyReg));
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; +    jmpAfter.link(&amp;m_jit);
&gt; &gt; &gt; 
&gt; &gt; &gt; This is wrong.  You should be passing isNotASCIICharacter as the first argument to slowPathCall(), and omitting the jmpAfter thing.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2110
&gt; &gt; &gt; &gt; +    speculationCheck(Uncountable, JSValueRegs(), 0, m_jit.branchTest32(MacroAssembler::Zero, scratchReg));
&gt; &gt; &gt; 
&gt; &gt; &gt; Why?
&gt; &gt; 
&gt; It fails on some tests without this check, for example on stringSHA1 from browsemark.

OK, but why?

&gt; &gt; Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871195</commentid>
    <comment_count>26</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-08 14:57:48 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (From update of attachment 196957 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196957&amp;action=review
&gt; &gt; 
&gt; &gt; LGTM except for those minor fixes.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:865
&gt; &gt; &gt; +        node-&gt;setCanExit(true);
&gt; &gt; 
&gt; &gt; Not needed.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractState.cpp:866
&gt; &gt; &gt; +        forNode(node-&gt;child1()).filter(SpecInt32);
&gt; &gt; 
&gt; &gt; Not needed.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:352
&gt; &gt; &gt; +            setUseKindAndUnboxIfProfitable&lt;Int32Use&gt;(node-&gt;child1());
&gt; It will fail on SpeculateStrictInt32Operand property(this, node-&gt;child1()); without this.
&gt; 

This line that sets the use kind *is* needed.  I&apos;m not saying that it isn&apos;t.  I&apos;m saying that the setCanExit() and filter(SpecInt32) in AbstractState aren&apos;t needed.

&gt; &gt; 
&gt; &gt; The reason why you don&apos;t need the filter() and setCanExit() in AbstractState is that AbstractState::executeEdges() takes care of this based on Int32Use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871215</commentid>
    <comment_count>27</comment_count>
    <who name="Vahag">vaag</who>
    <bug_when>2013-04-08 15:23:10 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; &gt; (From update of attachment 196949 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196949&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2109
&gt; &gt; &gt; &gt; &gt; +    JITCompiler::Jump jmpAfter = m_jit.jump();
&gt; &gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; &gt; +    isNotASCIICharacter.link(&amp;m_jit);
&gt; &gt; &gt; &gt; &gt; +    JITCompiler::Jump jmpSlowCase = m_jit.jump();
&gt; &gt; &gt; &gt; &gt; +    addSlowPathGenerator(slowPathCall(jmpSlowCase, this, operationStringFromCharCode, scratchReg, propertyReg));
&gt; &gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; &gt; +    jmpAfter.link(&amp;m_jit);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; This is wrong.  You should be passing isNotASCIICharacter as the first argument to slowPathCall(), and omitting the jmpAfter thing.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2110
&gt; &gt; &gt; &gt; &gt; +    speculationCheck(Uncountable, JSValueRegs(), 0, m_jit.branchTest32(MacroAssembler::Zero, scratchReg));
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Why?
&gt; &gt; &gt; 
&gt; &gt; It fails on some tests without this check, for example on stringSHA1 from browsemark.
&gt; 
&gt; OK, but why?
&gt; Can&apos;t figure out yet, but the check is exists for StringCharAtIntrisic. 
&gt; &gt; &gt; Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871231</commentid>
    <comment_count>28</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-08 15:29:59 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #25)
&gt; &gt; (In reply to comment #24)
&gt; &gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 196949 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=196949&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2109
&gt; &gt; &gt; &gt; &gt; &gt; +    JITCompiler::Jump jmpAfter = m_jit.jump();
&gt; &gt; &gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; &gt; &gt; +    isNotASCIICharacter.link(&amp;m_jit);
&gt; &gt; &gt; &gt; &gt; &gt; +    JITCompiler::Jump jmpSlowCase = m_jit.jump();
&gt; &gt; &gt; &gt; &gt; &gt; +    addSlowPathGenerator(slowPathCall(jmpSlowCase, this, operationStringFromCharCode, scratchReg, propertyReg));
&gt; &gt; &gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; &gt; &gt; +    jmpAfter.link(&amp;m_jit);
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; This is wrong.  You should be passing isNotASCIICharacter as the first argument to slowPathCall(), and omitting the jmpAfter thing.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2110
&gt; &gt; &gt; &gt; &gt; &gt; +    speculationCheck(Uncountable, JSValueRegs(), 0, m_jit.branchTest32(MacroAssembler::Zero, scratchReg));
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Why?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; It fails on some tests without this check, for example on stringSHA1 from browsemark.
&gt; &gt; 
&gt; &gt; OK, but why?
&gt; &gt; Can&apos;t figure out yet, but the check is exists for StringCharAtIntrisic. 

Aha, I think I know: the string table is filled lazily and may be cleared by GC.

While speculation failure is sound - it won&apos;t cause the program to crash - it is a really inefficient way of doing things.  I understand that there may be other code in the DFG that is similarly broken but we should fix that separately and not introduce that bug here.  The problem is that we don&apos;t want to blindly speculate on properties that we know may not hold.  Imagine a program in which small strings are always transient and always cleared by GC.  Speculating means you want the code block to be recompiled because you encountered an invalid assumption (we don&apos;t recompile immediately but we will after some small number of speculation failures).  Do you believe that it is best to recompile the code block because the GC cleared a small string?  Probably, it&apos;s not what you wanted.

I think what you want to do is call to slow path if the entry is empty.  You can do it by having a slow path JumpList that includes both the not-ascii case and the null small string case.  Your current slow path will take care of both of those cases correctly, I think - so it should be only a modest change to your code in DFG::SpeculativeJIT.

&gt; &gt; &gt; &gt; Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871240</commentid>
    <comment_count>29</comment_count>
      <attachid>196964</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2013-04-08 15:47:50 -0700</bug_when>
    <thetext>Created attachment 196964
FromCharCode Fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871252</commentid>
    <comment_count>30</comment_count>
      <attachid>196964</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-08 16:06:21 -0700</bug_when>
    <thetext>Comment on attachment 196964
FromCharCode Fixed patch

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

LGTM other than the minor fixes.  Marking r+/cq-; I&apos;ll cq+ the patch with those minor fixes.

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1593
&gt; +

Unnecessary white space.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2100
&gt; +    JITCompiler::JumpList isNotASCIICharacter;

Rename this to just slowCase or slowPath, since it&apos;s no longer about whether or not the input is an ASCII character.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871259</commentid>
    <comment_count>31</comment_count>
      <attachid>196968</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2013-04-08 16:16:34 -0700</bug_when>
    <thetext>Created attachment 196968
FromCharCode Fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871262</commentid>
    <comment_count>32</comment_count>
      <attachid>196968</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-08 16:30:51 -0700</bug_when>
    <thetext>Comment on attachment 196968
FromCharCode Fixed patch

Rejecting attachment 196968 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--non-interactive&apos;, 196968, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

/Volumes/Data/EWS/WebKit/Source/JavaScriptCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-commit-queue.appspot.com/results/17635013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871473</commentid>
    <comment_count>33</comment_count>
      <attachid>197001</attachid>
    <who name="Vahag">vaag</who>
    <bug_when>2013-04-08 23:16:39 -0700</bug_when>
    <thetext>Created attachment 197001
Fixed commit-queue problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871484</commentid>
    <comment_count>34</comment_count>
      <attachid>197001</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-08 23:43:54 -0700</bug_when>
    <thetext>Comment on attachment 197001
Fixed commit-queue problem

Clearing flags on attachment: 197001

Committed r147985: &lt;http://trac.webkit.org/changeset/147985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980231</commentid>
    <comment_count>35</comment_count>
      <attachid>196964</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-13 04:04:07 -0800</bug_when>
    <thetext>Comment on attachment 196964
FromCharCode Fixed patch

Cleared Filip Pizlo&apos;s review+ from obsolete attachment 196964 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179038</attachid>
            <date>2012-12-12 07:32:32 -0800</date>
            <delta_ts>2012-12-18 13:11:15 -0800</delta_ts>
            <desc>Adds Support for fromCharCode intrinsic</desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>7001</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDEyLTEyLTEyICBWYWhhZyBWYXJkYW55YW4gIDx2YWFnQGlzcHJhcy5ydT4KKworICAgICAg
ICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDgwNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhl
IGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0
aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUp
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyk6CisgICAgICAgICogZGZnL0RGR05v
ZGVUeXBlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZyb21DaGFyQ29k
ZSk6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxMi0xMi0xMSAgR2Fib3IgQmFsbGFi
YXMgIDxnYWJvcmJAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIEltcGxlbWVudCBhZGQ2NCBm
b3IgQVJNIHRyYWRpdGlvbmFsIGFzc2VtYmxlciBhZnRlciByMTM2NjAxCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMzc0NTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
NCw2ICsxNzQsNyBAQAogICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIHN0cmluZyBhY2Nlc3MgKi8g
XAogICAgIG1hY3JvKFN0cmluZ0NoYXJDb2RlQXQsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1h
Y3JvKFN0cmluZ0NoYXJBdCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oU3RyaW5nRnJvbUNo
YXJDb2RlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGNvbXBhcmlz
b24gb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQ29tcGFyZUxlc3MsIE5vZGVSZXN1bHRCb29s
ZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkocmV2aXNpb24gMTM3NDU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4Miw2ICsyNTgyLDExIEBA
CiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CisKKyAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZTogeworICAgICAgICBjb21waWxl
RnJvbUNoYXJDb2RlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAg
IGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBjaGVja0FycmF5KG5vZGUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAxMzc0NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUxLDYgKzI1NTEsMTEgQEAKICAgICAg
ICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KworICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOiB7CisgICAgICAgIGNvbXBpbGVGcm9tQ2hh
ckNvZGUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBD
aGVja0FycmF5OiB7CiAgICAgICAgIGNoZWNrQXJyYXkobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTM3
NDU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMTYsNiArMjAxNiwyNSBAQAogICAgIGNlbGxSZXN1bHQoc2Ny
YXRjaFJlZywgbV9jb21waWxlSW5kZXgpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRnJvbUNoYXJDb2RlKE5vZGUmIG5vZGUpCit7CisgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJP
cGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIEdQUlJlZyBwcm9wZXJ0
eVJlZyA9IHByb3BlcnR5LmdwcigpOworICAgIEdQUlRlbXBvcmFyeSBzbWFsbFN0cmluZ3ModGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNjcmF0Y2hS
ZWcgPSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJlZyBzbWFsbFN0cmluZ3NSZWcgPSBzbWFsbFN0
cmluZ3MuZ3ByKCk7CisKKyAgICAvLyBPbmx5IEFTQ0lJIGNoYXJhY3RlcnMgYXJlIHN1cHBvcnRl
ZAorICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlS
ZWcsIFRydXN0ZWRJbW0zMigweDEwMCkpKTsKKworICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Muc2luZ2xl
Q2hhcmFjdGVyU3RyaW5ncygpKSwgc21hbGxTdHJpbmdzUmVnKTsKKyAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21hbGxTdHJpbmdzUmVnLCBwcm9wZXJ0eVJlZywg
TWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCAwKSwgc2NyYXRjaFJlZyk7CisgICAgc3BlY3VsYXRp
b25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hU
ZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hSZWcpKTsKKworICAgIGNlbGxSZXN1
bHQoc2NyYXRjaFJlZywgbV9jb21waWxlSW5kZXgpOworfQorCiBHZW5lcmF0ZWRPcGVyYW5kVHlw
ZSBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tHZW5lcmF0ZWRUeXBlRm9yVG9JbnQzMihOb2RlSW5kZXgg
bm9kZUluZGV4KQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDEz
NzQ1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMzOCw2ICsyMzM4LDcgQEAKICAgICAKICAgICB2b2lkIGNvbXBp
bGVHZXRDaGFyQ29kZUF0KE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5n
KE5vZGUmKTsKKyAgICB2b2lkIGNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSYpOwogCiAgICAgdm9p
ZCBjb21waWxlR2V0QnlWYWxPbkFyZ3VtZW50cyhOb2RlJik7CiAgICAgdm9pZCBjb21waWxlR2V0
QXJndW1lbnRzTGVuZ3RoKE5vZGUmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTM3NDU4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODg3LDYgKzg4NywxMiBAQAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQz
Mik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKKyAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29k
ZToKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOworICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KFNwZWNTdHJpbmcpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgU3RyaW5nQ2hhckF0
OgogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJpbmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEzNzQ1OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzM0LDcgKzE3MzQsMTkgQEAKICAgICAgICAgICAgIHNldChyZXN1bHRPcGVyYW5k
LCBjaGFyQ29kZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBjYXNlIEZyb21D
aGFyQ29kZUludHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgIT0gMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICBpbnQgaW5kZXhP
cGVyYW5kID0gcmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgxKTsKKyAgICAgICAg
Tm9kZUluZGV4IGNoYXJDb2RlID0gYWRkVG9HcmFwaChTdHJpbmdGcm9tQ2hhckNvZGUsIGdldFRv
SW50MzIoaW5kZXhPcGVyYW5kKSk7CisKKyAgICAgICAgaWYgKHVzZXNSZXN1bHQpCisgICAgICAg
ICAgICBzZXQocmVzdWx0T3BlcmFuZCwgY2hhckNvZGUpOworCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKwogICAgIGNhc2UgUmVnRXhwRXhlY0ludHJpbnNpYzogewogICAgICAgICBpZiAo
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMzc0NTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjQwLDYgKzY0MCwxMiBAQAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOiB7Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY1N0cmluZyk7CisgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNl
ZEFzTnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9
IHNldFByZWRpY3Rpb24oU3BlY1N0cmluZyk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOwo=
</data>
<flag name="review"
          id="195750"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="195812"
          type_id="3"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180011</attachid>
            <date>2012-12-18 13:11:15 -0800</date>
            <delta_ts>2012-12-25 05:35:26 -0800</delta_ts>
            <desc>Adds fromCharCode support. </desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>10275</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4MDE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDEyLTEyLTE4ICBWYWhhZyBWYXJkYW55YW4gIDx2YWFnQGlzcHJhcy5ydT4KKworICAgICAg
ICBBZGRzIGZyb21DaGFyQ29kZSBpbnRyaW5zaWMgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODA3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5nIGZyb21DaGFyQ29k
ZSBpbnRyaW5zaWMgaW5zdGVhZCBvZiBjYWxsIG9wZXJhdGlvbiBpbiBzb21lIGNhc2VzLiAKKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWMp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUpOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OnN0cmluZ0Zyb21DaGFyQ29kZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQyk6CisKIDIwMTItMTItMTcgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBDb25zdGFudCBmb2xk
ICF7bnVtYmVyfSBpbiB0aGUgcGFyc2VyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEzODAxNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1NTEsNiArMjU1MSwxMSBAQAogICAgICAgICBjb21waWxlR2V0QnlWYWxPblN0
cmluZyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBTdHJpbmdGcm9t
Q2hhckNvZGU6IHsKKyAgICAgICAgY29tcGlsZUZyb21DaGFyQ29kZShub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAg
Y2hlY2tBcnJheShub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMzgwMTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcz
NCw3ICsxNzM0LDE5IEBACiAgICAgICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgY2hhckNvZGUp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgY2FzZSBGcm9tQ2hhckNvZGVJbnRy
aW5zaWM6IHsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgaW50IGluZGV4T3BlcmFuZCA9IHJl
Z2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoMSk7CisgICAgICAgIE5vZGVJbmRleCBj
aGFyQ29kZSA9IGFkZFRvR3JhcGgoU3RyaW5nRnJvbUNoYXJDb2RlLCBnZXRUb0ludDMyKGluZGV4
T3BlcmFuZCkpOworCisgICAgICAgIGlmICh1c2VzUmVzdWx0KQorICAgICAgICAgICAgc2V0KHJl
c3VsdE9wZXJhbmQsIGNoYXJDb2RlKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
ICAgICBjYXNlIFJlZ0V4cEV4ZWNJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTM4MDE0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2MSw2ICs2NjEsMTIgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIAorICAgICAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZTogeworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc051bWJlciB8
IE5vZGVVc2VkQXNJbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAg
ICBjYXNlIFN0cmluZ0NoYXJBdDogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0
aW9uKFNwZWNTdHJpbmcpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hp
bGQxKCldLm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxMzgwMTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA5
LDYgKzIwOSw3IEBACiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblJhZ2VFbnN1cmVDb250
aWd1b3VzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiBjaGFyKiBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkVuc3VyZUFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwogU3RyaW5nSW1w
bCogREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlUm9wZShFeGVjU3RhdGUqLCBKU1N0cmlu
ZyopOworRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdGcm9tQ2hh
ckNvZGUoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiAKIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8g
bG9va3VwIGFuIGV4Y2VwdGlvbiBoYW5kZXIsIGtleWVkIGJ5IGZhdWx0TG9jYXRpb24sIHdoaWNo
IGlzCiAvLyB0aGUgcmV0dXJuIGxvY2F0aW9uIGZyb20gb25lIG9mIHRoZSBjYWxscyBvdXQgdG8g
b25lIG9mIHRoZSBoZWxwZXIgb3BlcmF0aW9ucyBhYm92ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEzODAxNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3
NCw3IEBACiAgICAgLyogT3B0aW1pemF0aW9ucyBmb3Igc3RyaW5nIGFjY2VzcyAqLyBcCiAgICAg
bWFjcm8oU3RyaW5nQ2hhckNvZGVBdCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oU3Ry
aW5nQ2hhckF0LCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhTdHJpbmdGcm9tQ2hhckNvZGUs
IE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgY29tcGFyaXNvbiBvcGVy
YXRpb25zLiAqL1wKICAgICBtYWNybyhDb21wYXJlTGVzcywgTm9kZVJlc3VsdEJvb2xlYW4gfCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMzgwMTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJO
YW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU3RyaW5n
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKICNpZiBFTkFCTEUo
SklUKQpAQCAtMTQ3Myw2ICsxNDc0LDE0IEBACiAgICAgcmV0dXJuIGZtb2QoYSwgYik7CiB9CiAK
K0VuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2Rl
KEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBvcDEpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIHJldHVybiBKU0M6OnN0cmluZ0Zyb21DaGFy
Q29kZShleGVjLCBvcDEpOworCit9CisKIERGR0hhbmRsZXJFbmNvZGVkIERGR19PUEVSQVRJT04g
bG9va3VwRXhjZXB0aW9uSGFuZGxlcihFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGNhbGxJbmRl
eCkKIHsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAkocmV2aXNpb24gMTM4MDE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzM4LDYgKzIzMzgsNyBAQAogICAgIAog
ICAgIHZvaWQgY29tcGlsZUdldENoYXJDb2RlQXQoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZUdl
dEJ5VmFsT25TdHJpbmcoTm9kZSYpOworICAgIHZvaWQgY29tcGlsZUZyb21DaGFyQ29kZShOb2Rl
Jik7CiAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRzKE5vZGUmKTsKICAgICB2
b2lkIGNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgoTm9kZSYpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZp
c2lvbiAxMzgwMTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgyLDYgKzI1ODIsMTEgQEAKICAgICAg
ICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KworICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOiB7CisgICAgICAgIGNvbXBpbGVGcm9tQ2hh
ckNvZGUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBD
aGVja0FycmF5OiB7CiAgICAgICAgIGNoZWNrQXJyYXkobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTM4
MDE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMTksNiArMjAxOSwzMCBAQAogICAgIGNlbGxSZXN1bHQoc2Ny
YXRjaFJlZywgbV9jb21waWxlSW5kZXgpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRnJvbUNoYXJDb2RlKE5vZGUmIG5vZGUpCit7CisgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJP
cGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIEdQUlJlZyBwcm9wZXJ0
eVJlZyA9IHByb3BlcnR5LmdwcigpOworICAgIEdQUlRlbXBvcmFyeSBzbWFsbFN0cmluZ3ModGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSUmVnIHNjcmF0Y2hS
ZWcgPSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJlZyBzbWFsbFN0cmluZ3NSZWcgPSBzbWFsbFN0
cmluZ3MuZ3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdEFTQ0lJQ2hhcmFjdGVy
ID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlS
ZWcsIFRydXN0ZWRJbW0zMigweDEwMCkpOworICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hh
cmFjdGVyU3RyaW5ncygpKSwgc21hbGxTdHJpbmdzUmVnKTsKKyAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21hbGxTdHJpbmdzUmVnLCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCAwKSwgc2NyYXRjaFJlZyk7CisgICAgSklUQ29tcGlsZXI6
Okp1bXAgam1wQWZ0ZXIgPSBtX2ppdC5qdW1wKCk7CisKKyAgICBpc05vdEFTQ0lJQ2hhcmFjdGVy
LmxpbmsoJm1faml0KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBqbXBTbG93Q2FzZSA9IG1faml0
Lmp1bXAoKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoam1wU2xvd0Nh
c2UsIHRoaXMsIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZSwgc2NyYXRjaFJlZywgcHJvcGVy
dHlSZWcpKTsKKworICAgIGptcEFmdGVyLmxpbmsoJm1faml0KTsKKyAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3Qz
MihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaFJlZykpOworCisgICAgY2VsbFJlc3VsdChz
Y3JhdGNoUmVnLCBtX2NvbXBpbGVJbmRleCk7Cit9CisKIEdlbmVyYXRlZE9wZXJhbmRUeXBlIFNw
ZWN1bGF0aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGVJbmRleCBub2Rl
SW5kZXgpCiB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMzgw
MTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04ODcsNiArODg3LDEyIEBACiAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAorICAgIGNhc2Ug
U3RyaW5nRnJvbUNoYXJDb2RlOgorICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CisgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQzMik7CisgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY1N0cmluZyk7CisgICAgICAgIGJyZWFrOworCiAgICAg
Y2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKICAgICAg
ICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY1N0cmluZyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAxMzgwMTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDExIEBACiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdGcm9tQ2hhckNvZGVTbG93Q2FzZShleGVjKSk7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4
ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBhcmcpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhleGVjLCBhcmcpKTsKK30KKwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJ
bnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDEzODAxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAKICAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlEZXNjcmlwdG9yJik7CiAgICAgfTsKKyAgICAKKyAgICBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqLCBpbnQzMl90KTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAK
</data>
<flag name="commit-queue"
          id="197137"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180709</attachid>
            <date>2012-12-25 05:35:26 -0800</date>
            <delta_ts>2013-01-07 10:44:06 -0800</delta_ts>
            <desc>Adds Support for fromCharCode intrinsic</desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>10312</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkocmV2aXNpb24gMTM4NDYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1MSw2ICsyNTUxLDEx
IEBACiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9CisKKyAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZTogeworICAgICAgICBjb21w
aWxlRnJvbUNoYXJDb2RlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBjaGVja0FycmF5KG5vZGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDEzODQ2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTAsNiArMjEwLDcgQEAKIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
UmFnZUVuc3VyZUNvbnRpZ3VvdXMoRXhlY1N0YXRlKiwgSlNDZWxsKik7CiBjaGFyKiBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkVuc3VyZUFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCBKU0NlbGwqKTsK
IFN0cmluZ0ltcGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZVJvcGUoRXhlY1N0YXRl
KiwgSlNTdHJpbmcqKTsKK0VuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uU3Ry
aW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIAogLy8g
VGhpcyBtZXRob2QgaXMgdXNlZCB0byBsb29rdXAgYW4gZXhjZXB0aW9uIGhhbmRlciwga2V5ZWQg
YnkgZmF1bHRMb2NhdGlvbiwgd2hpY2ggaXMKIC8vIHRoZSByZXR1cm4gbG9jYXRpb24gZnJvbSBv
bmUgb2YgdGhlIGNhbGxzIG91dCB0byBvbmUgb2YgdGhlIGhlbHBlciBvcGVyYXRpb25zIGFib3Zl
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDEzODQ2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYzLDYgKzE5NjMsMzAgQEAK
ICAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY29tcGlsZUluZGV4KTsKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZyb21DaGFyQ29kZShOb2RlJiBub2RlKQoreworICAgIFNw
ZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
KyAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICBHUFJUZW1wb3Jh
cnkgc21hbGxTdHJpbmdzKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwor
ICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgc21hbGxT
dHJpbmdzUmVnID0gc21hbGxTdHJpbmdzLmdwcigpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNOb3RBU0NJSUNoYXJhY3RlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBUcnVzdGVkSW1tMzIoMHgxMDApKTsKKyAgICBtX2ppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c21h
bGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNtYWxsU3RyaW5nc1JlZyk7Cisg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNtYWxsU3RyaW5nc1Jl
ZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgMCksIHNjcmF0Y2hSZWcp
OworICAgIEpJVENvbXBpbGVyOjpKdW1wIGptcEFmdGVyID0gbV9qaXQuanVtcCgpOworCisgICAg
aXNOb3RBU0NJSUNoYXJhY3Rlci5saW5rKCZtX2ppdCk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAg
am1wU2xvd0Nhc2UgPSBtX2ppdC5qdW1wKCk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKGptcFNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGUs
IHNjcmF0Y2hSZWcsIHByb3BlcnR5UmVnKSk7CisKKyAgICBqbXBBZnRlci5saW5rKCZtX2ppdCk7
CisgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hSZWcpKTsK
KworICAgIGNlbGxSZXN1bHQoc2NyYXRjaFJlZywgbV9jb21waWxlSW5kZXgpOworfQorCiBHZW5l
cmF0ZWRPcGVyYW5kVHlwZSBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tHZW5lcmF0ZWRUeXBlRm9yVG9J
bnQzMihOb2RlSW5kZXggbm9kZUluZGV4KQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9T
RSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHJldmlzaW9uIDEzODQ2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjM0OSw2ICsyMzQ5LDcgQEAKICAgICAK
ICAgICB2b2lkIGNvbXBpbGVHZXRDaGFyQ29kZUF0KE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVH
ZXRCeVZhbE9uU3RyaW5nKE5vZGUmKTsKKyAgICB2b2lkIGNvbXBpbGVGcm9tQ2hhckNvZGUoTm9k
ZSYpOwogCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkFyZ3VtZW50cyhOb2RlJik7CiAgICAg
dm9pZCBjb21waWxlR2V0QXJndW1lbnRzTGVuZ3RoKE5vZGUmKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTM4NDYy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODg3LDYgKzg4NywxMiBAQAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKKyAgICBjYXNlIFN0
cmluZ0Zyb21DaGFyQ29kZToKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOworICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KFNwZWNTdHJpbmcpOworICAgICAgICBicmVhazsKKwogICAgIGNh
c2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJpbmcpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDEzODQ2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzM2LDcgKzE3MzYsMTkgQEAKICAgICAgICAgICAgIHNl
dChyZXN1bHRPcGVyYW5kLCBjaGFyQ29kZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyAgICBjYXNlIEZyb21DaGFyQ29kZUludHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgIT0gMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAg
ICAgICBpbnQgaW5kZXhPcGVyYW5kID0gcmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFu
ZCgxKTsKKyAgICAgICAgTm9kZUluZGV4IGNoYXJDb2RlID0gYWRkVG9HcmFwaChTdHJpbmdGcm9t
Q2hhckNvZGUsIGdldFRvSW50MzIoaW5kZXhPcGVyYW5kKSk7CisKKyAgICAgICAgaWYgKHVzZXNS
ZXN1bHQpCisgICAgICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgY2hhckNvZGUpOworCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGNhc2UgUmVnRXhwRXhlY0ludHJpbnNpYzog
ewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
Mzg0NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYxLDYgKzY2MSwxMiBAQAogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGNhc2UgU3RyaW5nRnJv
bUNoYXJDb2RlOiB7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY1N0
cmluZyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVy
Z2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7CiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY1N0cmluZyk7CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFs
dWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNp
b24gMTM4NDYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDcgQEAKICAgICAvKiBPcHRpbWl6YXRpb25zIGZv
ciBzdHJpbmcgYWNjZXNzICovIFwKICAgICBtYWNybyhTdHJpbmdDaGFyQ29kZUF0LCBOb2RlUmVz
dWx0SW50MzIpIFwKICAgICBtYWNybyhTdHJpbmdDaGFyQXQsIE5vZGVSZXN1bHRKUykgXAorICAg
IG1hY3JvKFN0cmluZ0Zyb21DaGFyQ29kZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8q
IE5vZGVzIGZvciBjb21wYXJpc29uIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKENvbXBhcmVM
ZXNzLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9i
YmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEzODQ2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1ODIsNiArMjU4MiwxMSBAQAogICAgICAgICBjb21waWxlR2V0QnlWYWxPblN0cmluZyhub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6
IHsKKyAgICAgICAgY29tcGlsZUZyb21DaGFyQ29kZShub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgY2hlY2tBcnJh
eShub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMTM4NDYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUg
IkpTTmFtZVNjb3BlLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgorI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L0lubGluZUFTTS5oPgogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0ODgsNiArMTQ4OSwxNCBAQAog
ICAgIHJldHVybiBmbW9kKGEsIGIpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3Qgb3Ax
KQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKKyAg
ICByZXR1cm4gSlNDOjpzdHJpbmdGcm9tQ2hhckNvZGUoZXhlYywgb3AxKTsKKworfQorCiBERkdI
YW5kbGVyRW5jb2RlZCBERkdfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoRXhlY1N0
YXRlKiBleGVjLCB1aW50MzJfdCBjYWxsSW5kZXgpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDEzODQ2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMTEgQEAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHN0cmluZ0Zyb21DaGFyQ29kZVNsb3dDYXNlKGV4ZWMpKTsKIH0KIAorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjLCBp
bnQzMl90IGFyZykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGV4ZWMsIGFyZykpOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24o
ZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTM4NDYy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBAQAogICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
ICAgICB9OworICAgIAorICAgIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJv
bUNoYXJDb2RlKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzg0NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMTItMTItMjUgIFZhaGFnIFZhcmRhbnlhbiAgPHZhYWdAaXNwcmFzLnJ1PgorCisgICAgICAg
IEFkZHMgZnJvbUNoYXJDb2RlIGludHJpbnNpYyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ4MDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgZnJvbUNoYXJDb2Rl
IGludHJpbnNpYyBpbnN0ZWFkIG9mIGNhbGwgb3BlcmF0aW9uLiBJbXByb3ZlIHBlcmZvcm1hbmNl
IGZvciBzdHJpbmcgb3BlcmF0aW9ucworCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6
CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZyb21DaGFyQ29k
ZSk6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0Nv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDKToKKwogMjAxMi0xMi0yNSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBmb2xsb3ctdXAgZm9yIHIxMzg0NTUuCg==
</data>
<flag name="commit-queue"
          id="198075"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181527</attachid>
            <date>2013-01-07 10:44:06 -0800</date>
            <delta_ts>2013-02-11 10:28:58 -0800</delta_ts>
            <desc>Switch to using fromCharCode intrinsic instead of call operation in some cases.</desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>11844</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3Ry
dWN0b3IuaAkocmV2aXNpb24gMTM4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBAQAog
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OworICAgIAorICAgIEpTQ2VsbCogSlNDX0hP
U1RfQ0FMTCBzdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxMzg5NTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDYgKzg4LDExIEBACiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdG
cm9tQ2hhckNvZGVTbG93Q2FzZShleGVjKSk7CiB9CiAKK0pTQ2VsbCogSlNDX0hPU1RfQ0FMTCBz
dHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IGFyZykKK3sKKyAgICBy
ZXR1cm4ganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZXhlYywgYXJnKTsKK30KKwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
YXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODk1MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBAQAorMjAx
My0wMS0wNyAgVmFoYWcgVmFyZGFueWFuICA8dmFhZ0Bpc3ByYXMucnU+CisKKyAgICAgICAgQWRk
cyBmcm9tQ2hhckNvZGUgaW50cmluc2ljIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ4MDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBmcm9tQ2hhckNvZGUg
aW50cmluc2ljIGluc3RlYWQgb2YgY2FsbCBvcGVyYXRpb24gaW4gc29tZSBjYXNlcy4KKworICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWMpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAg
ICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUpOgorICAgICAgICAoREZHKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpzdHJp
bmdGcm9tQ2hhckNvZGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL1N0cmlu
Z0NvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0MpOgorCiAyMDEzLTAxLTA2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgc2xvdyBjYXNlIHByb2Zp
bGluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMzg5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiSlNO
YW1lU2NvcGUuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCisjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlIDx3dGYvSW5s
aW5lQVNNLmg+CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ4OCw2ICsxNDg5LDE0IEBACiAgICAg
cmV0dXJuIGZtb2QoYSwgYik7CiB9CiAKK0pTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25T
dHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IG9wMSkKK3sKKyAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgcmV0dXJuIEpT
Qzo6c3RyaW5nRnJvbUNoYXJDb2RlKGV4ZWMsIG9wMSk7CisKK30KKwogREZHSGFuZGxlckVuY29k
ZWQgREZHX09QRVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyKEV4ZWNTdGF0ZSogZXhlYywg
dWludDMyX3QgY2FsbEluZGV4KQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEzODk1MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Nyw2
ICs4ODcsMTIgQEAKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwog
ICAgICAgICBicmVhazsKICAgICAgICAgCisgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6Cisg
ICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChT
cGVjU3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAg
ICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihTcGVjU3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTM4OTUyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU1MSw2ICsyNTUxLDExIEBACiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU3Ry
aW5nKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIFN0cmluZ0Zyb21D
aGFyQ29kZTogeworICAgICAgICBjb21waWxlRnJvbUNoYXJDb2RlKG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBj
aGVja0FycmF5KG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgJKHJldmlzaW9uIDEzODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiB0eXBlZGVm
IEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VDQykoRXhlY1N0YXRlKiwg
SlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZH
T3BlcmF0aW9uX0VJY2YpKEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSopOwogdHlwZWRlZiBK
U0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FU3QpKEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSopOwordHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlv
bl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIGRvdWJsZSBERkdfT1BFUkFUSU9O
ICgqRF9ERkdPcGVyYXRpb25fREQpKGRvdWJsZSwgZG91YmxlKTsKIHR5cGVkZWYgZG91YmxlIERG
R19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlvbl9aWikoaW50MzJfdCwgaW50MzJfdCk7CiB0eXBl
ZGVmIGRvdWJsZSBERkdfT1BFUkFUSU9OICgqRF9ERkdPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlKTsKQEAgLTIxMCw2ICsyMTEsNyBAQAogY2hhciogREZHX09QRVJBVElP
TiBvcGVyYXRpb25SYWdlRW5zdXJlQ29udGlndW91cyhFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIGNo
YXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSos
IEpTQ2VsbCopOwogU3RyaW5nSW1wbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlUm9w
ZShFeGVjU3RhdGUqLCBKU1N0cmluZyopOworSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
blN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAK
IC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbG9va3VwIGFuIGV4Y2VwdGlvbiBoYW5kZXIsIGtl
eWVkIGJ5IGZhdWx0TG9jYXRpb24sIHdoaWNoIGlzCiAvLyB0aGUgcmV0dXJuIGxvY2F0aW9uIGZy
b20gb25lIG9mIHRoZSBjYWxscyBvdXQgdG8gb25lIG9mIHRoZSBoZWxwZXIgb3BlcmF0aW9ucyBh
Ym92ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAxMzg5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2Myw2ICsxOTYzLDMw
IEBACiAgICAgY2VsbFJlc3VsdChzY3JhdGNoUmVnLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSYgbm9kZSkKK3sKKyAg
ICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDEo
KSk7CisgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CisgICAgR1BSVGVt
cG9yYXJ5IHNtYWxsU3RyaW5ncyh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKKyAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgR1BSUmVnIHNt
YWxsU3RyaW5nc1JlZyA9IHNtYWxsU3RyaW5ncy5ncHIoKTsKKworICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzTm90QVNDSUlDaGFyYWN0ZXIgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgVHJ1c3RlZEltbTMyKDB4MTAwKSk7CisgICAgbV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCBzbWFsbFN0cmluZ3NSZWcp
OworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmlu
Z3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNo
UmVnKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBqbXBBZnRlciA9IG1faml0Lmp1bXAoKTsKKwor
ICAgIGlzTm90QVNDSUlDaGFyYWN0ZXIubGluaygmbV9qaXQpOworICAgIEpJVENvbXBpbGVyOjpK
dW1wIGptcFNsb3dDYXNlID0gbV9qaXQuanVtcCgpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChqbXBTbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJD
b2RlLCBzY3JhdGNoUmVnLCBwcm9wZXJ0eVJlZykpOworCisgICAgam1wQWZ0ZXIubGluaygmbV9q
aXQpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVn
KSk7CisKKyAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY29tcGlsZUluZGV4KTsKK30KKwog
R2VuZXJhdGVkT3BlcmFuZFR5cGUgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJhdGVkVHlwZUZv
clRvSW50MzIoTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEzODk1MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1ODIsNiArMjU4MiwxMSBAQAogICAgICAgICBjb21waWxlR2V0QnlWYWxPblN0cmluZyhub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6
IHsKKyAgICAgICAgY29tcGlsZUZyb21DaGFyQ29kZShub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgY2hlY2tBcnJh
eShub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHJldmlzaW9uIDEzODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzNSw2ICsxNTM1LDExIEBA
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENf
REZHT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCisg
ICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICB9CiAjZWxzZQogCiAvLyBFbmNvZGVkSlNWYWx1ZSBpbiBKU1ZB
TFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlci4gV2hlbiBiZWluZyBjb21waWxlZCBpbiBBUk0g
RUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVkIGV2ZW4tbnVtYmVyZWQgcmVnaXN0ZXIgKHIwLCByMiBv
ciBbc3BdKS4KQEAgLTE5MzMsNyArMTkzOCwxMyBAQAogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FWiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdp
dGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogCisK
ICN1bmRlZiBFQUJJXzMyQklUX0RVTU1ZX0FSRwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0aW9uVHlwZT4KQEAgLTIzNDksNiArMjM2MCw3IEBACiAgICAgCiAgICAgdm9pZCBjb21w
aWxlR2V0Q2hhckNvZGVBdChOb2RlJik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPblN0cmlu
ZyhOb2RlJik7CisgICAgdm9pZCBjb21waWxlRnJvbUNoYXJDb2RlKE5vZGUmKTsKIAogICAgIHZv
aWQgY29tcGlsZUdldEJ5VmFsT25Bcmd1bWVudHMoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZUdl
dEFyZ3VtZW50c0xlbmd0aChOb2RlJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTM4OTUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3MDEsNyArMTcwMSwxOSBAQAogICAgICAgICAgICAgc2V0KHJlc3VsdE9wZXJhbmQsIGNo
YXJDb2RlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgRnJvbUNoYXJD
b2RlSW50cmluc2ljOiB7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAh
PSAyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGludCBpbmRleE9wZXJh
bmQgPSByZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDEpOworICAgICAgICBOb2Rl
SW5kZXggY2hhckNvZGUgPSBhZGRUb0dyYXBoKFN0cmluZ0Zyb21DaGFyQ29kZSwgZ2V0VG9JbnQz
MihpbmRleE9wZXJhbmQpKTsKKworICAgICAgICBpZiAodXNlc1Jlc3VsdCkKKyAgICAgICAgICAg
IHNldChyZXN1bHRPcGVyYW5kLCBjaGFyQ29kZSk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCiAgICAgY2FzZSBSZWdFeHBFeGVjSW50cmluc2ljOiB7CiAgICAgICAgIGlmIChhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEzODk1MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NjEsNiArNjYxLDEyIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAKKyAgICAgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6IHsKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjU3RyaW5nKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNO
dW1iZXIgfCBOb2RlVXNlZEFzSW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0
UHJlZGljdGlvbihTcGVjU3RyaW5nKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMzg5NTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
OCw2ICsxNzgsNyBAQAogICAgIC8qIE9wdGltaXphdGlvbnMgZm9yIHN0cmluZyBhY2Nlc3MgKi8g
XAogICAgIG1hY3JvKFN0cmluZ0NoYXJDb2RlQXQsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1h
Y3JvKFN0cmluZ0NoYXJBdCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oU3RyaW5nRnJvbUNo
YXJDb2RlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGNvbXBhcmlz
b24gb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQ29tcGFyZUxlc3MsIE5vZGVSZXN1bHRCb29s
ZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIpIFwK
</data>
<flag name="review"
          id="199215"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="207393"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189511</attachid>
            <date>2013-02-21 05:11:01 -0800</date>
            <delta_ts>2013-04-08 13:31:32 -0700</delta_ts>
            <desc>Switch to using fromCharCode intrinsic instead of call operation in some cases.</desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>11874</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lv
biAxNDM1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQAogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVS
QVRJT04gKCpDX0RGR09wZXJhdGlvbl9FSWNmKShFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJhbWUq
KTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRU9aKShF
eGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVS
QVRJT04gKCpDX0RGR09wZXJhdGlvbl9FU3QpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwordHlw
ZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FWikoRXhlY1N0YXRl
KiwgaW50MzJfdCk7CiB0eXBlZGVmIGRvdWJsZSBERkdfT1BFUkFUSU9OICgqRF9ERkdPcGVyYXRp
b25fREQpKGRvdWJsZSwgZG91YmxlKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpE
X0RGR09wZXJhdGlvbl9aWikoaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGRvdWJsZSBERkdf
T1BFUkFUSU9OICgqRF9ERkdPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
KTsKQEAgLTIxMiw2ICsyMTMsNyBAQAogY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25SYWdl
RW5zdXJlQ29udGlndW91cyhFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIGNoYXIqIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogU3Ry
aW5nSW1wbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlUm9wZShFeGVjU3RhdGUqLCBK
U1N0cmluZyopOworSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFy
Q29kZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAKIC8vIFRoaXMgbWV0aG9k
IGlzIHVzZWQgdG8gbG9va3VwIGFuIGV4Y2VwdGlvbiBoYW5kZXIsIGtleWVkIGJ5IGZhdWx0TG9j
YXRpb24sIHdoaWNoIGlzCiAvLyB0aGUgcmV0dXJuIGxvY2F0aW9uIGZyb20gb25lIG9mIHRoZSBj
YWxscyBvdXQgdG8gb25lIG9mIHRoZSBoZWxwZXIgb3BlcmF0aW9ucyBhYm92ZS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNp
b24gMTQzNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMxLDYgKzkzMSwxMiBAQAogICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldChTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICAgICAgCisgICAgY2Fz
ZSBTdHJpbmdGcm9tQ2hhckNvZGU6CisgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Cisg
ICAgICAgIGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldChTcGVjU3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBj
YXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAg
ICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJpbmcpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlz
aW9uIDE0MzU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTkyLDcgKzE1OTIsMTkgQEAKICAgICAgICAgICAg
IHNldChyZXN1bHRPcGVyYW5kLCBjaGFyQ29kZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KKyAgICBjYXNlIEZyb21DaGFyQ29kZUludHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgICAgICBpbnQgaW5kZXhPcGVyYW5kID0gcmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3Bl
cmFuZCgxKTsKKyAgICAgICAgTm9kZSogY2hhckNvZGUgPSBhZGRUb0dyYXBoKFN0cmluZ0Zyb21D
aGFyQ29kZSwgZ2V0VG9JbnQzMihpbmRleE9wZXJhbmQpKTsKKworICAgICAgICBpZiAodXNlc1Jl
c3VsdCkKKyAgICAgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBjaGFyQ29kZSk7CisKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgY2FzZSBSZWdFeHBFeGVjSW50cmluc2ljOiB7
CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAkocmV2aXNpb24gMTQzNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAKICAgICAvKiBPcHRp
bWl6YXRpb25zIGZvciBzdHJpbmcgYWNjZXNzICovIFwKICAgICBtYWNybyhTdHJpbmdDaGFyQ29k
ZUF0LCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhTdHJpbmdDaGFyQXQsIE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKFN0cmluZ0Zyb21DaGFyQ29kZSwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgXAogICAgIC8qIE5vZGVzIGZvciBjb21wYXJpc29uIG9wZXJhdGlvbnMuICovXAogICAgIG1h
Y3JvKENvbXBhcmVMZXNzLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlTWlnaHRDbG9iYmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE0MzU3OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzMjksNiArMjMyOSwxMSBAQAogICAgICAgICBjb21waWxlR2V0QnlWYWxPblN0cmluZyhu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNv
ZGU6IHsKKyAgICAgICAgY29tcGlsZUZyb21DaGFyQ29kZShub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgY2hlY2tB
cnJheShub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNDM1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0OSw2ICsy
MDQ5LDMwIEBACiAgICAgY2VsbFJlc3VsdChzY3JhdGNoUmVnLCBtX2N1cnJlbnROb2RlKTsKIH0K
IAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZyb21DaGFyQ29kZShOb2RlKiBub2RlKQor
eworICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CisgICAg
R1BSVGVtcG9yYXJ5IHNtYWxsU3RyaW5ncyh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgR1BS
UmVnIHNtYWxsU3RyaW5nc1JlZyA9IHNtYWxsU3RyaW5ncy5ncHIoKTsKKworICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzTm90QVNDSUlDaGFyYWN0ZXIgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgVHJ1c3RlZEltbTMyKDB4MTAwKSk7Cisg
ICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxE
YXRhKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCBzbWFsbFN0cmlu
Z3NSZWcpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFs
bFN0cmluZ3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBz
Y3JhdGNoUmVnKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBqbXBBZnRlciA9IG1faml0Lmp1bXAo
KTsKKworICAgIGlzTm90QVNDSUlDaGFyYWN0ZXIubGluaygmbV9qaXQpOworICAgIEpJVENvbXBp
bGVyOjpKdW1wIGptcFNsb3dDYXNlID0gbV9qaXQuanVtcCgpOworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChqbXBTbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nRnJv
bUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBwcm9wZXJ0eVJlZykpOworCisgICAgam1wQWZ0ZXIubGlu
aygmbV9qaXQpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIDAsIG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaFJl
ZykpOworCisgICAgY2VsbFJlc3VsdChzY3JhdGNoUmVnLCBtX2N1cnJlbnROb2RlKTsKK30KKwog
R2VuZXJhdGVkT3BlcmFuZFR5cGUgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJhdGVkVHlwZUZv
clRvSW50MzIoTm9kZSogbm9kZSkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShy
ZXZpc2lvbiAxNDM1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMzcsNiArMTIzNywxMSBAQAogICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
ICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlv
bl9FWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgfQogI2Vsc2UKIAogLy8gRW5jb2RlZEpTVmFsdWUgaW4gSlNWQUxVRTMyXzY0IGlz
IGEgNjQtYml0IGludGVnZXIuIFdoZW4gYmVpbmcgY29tcGlsZWQgaW4gQVJNIEVBQkksIGl0IG11
c3QgYmUgYWxpZ25lZCBldmVuLW51bWJlcmVkIHJlZ2lzdGVyIChyMCwgcjIgb3IgW3NwXSkuCkBA
IC0xNjQwLDcgKzE2NDUsMTMgQEAKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVj
a1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KIAorCiAjdW5kZWYgRUFC
SV8zMkJJVF9EVU1NWV9BUkcKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5
cGU+CkBAIC0yMDU1LDYgKzIwNjYsNyBAQAogICAgIAogICAgIHZvaWQgY29tcGlsZUdldENoYXJD
b2RlQXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUZyb21DaGFyQ29kZShOb2RlKik7IAogCiAgICAgdm9pZCBjb21waWxl
R2V0QnlWYWxPbkFyZ3VtZW50cyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnRz
TGVuZ3RoKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNDM1
NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY3LDYgKzY2NywxMiBAQAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGNhc2UgU3RyaW5nRnJvbUNo
YXJDb2RlOiB7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY1N0cmlu
Zyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG5vZGUtPmNoaWxkMSgpLT5tZXJnZUZsYWdzKE5v
ZGVVc2VkQXNOdW1iZXIgfCBOb2RlVXNlZEFzSW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6IHsKICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjU3RyaW5nKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9kZVVzZWRBc1ZhbHVlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkocmV2aXNpb24gMTQzNTc5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4Nyw2ICsyMzg3LDExIEBA
CiAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CisKKyAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZTogeworICAgICAgICBjb21waWxl
RnJvbUNoYXJDb2RlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAg
IGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBjaGVja0FycmF5KG5vZGUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNDM1
NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAj
aW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisj
aW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+
CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTU1Miw2ICsxNTUzLDE0IEBACiAgICAgcmV0dXJuIGZt
b2QoYSwgYik7CiB9CiAKK0pTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25TdHJpbmdGcm9t
Q2hhckNvZGUoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IG9wMSkKK3sKKyAgICBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgcmV0dXJuIEpTQzo6c3RyaW5n
RnJvbUNoYXJDb2RlKGV4ZWMsIG9wMSk7CisKK30KKwogREZHSGFuZGxlckVuY29kZWQgREZHX09Q
RVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyKEV4ZWNTdGF0ZSogZXhlYywgdWludDMyX3Qg
Y2FsbEluZGV4KQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9i
YWxEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzU4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzOCBAQAorMjAxMy0wMi0yMSAgVmFoYWcgVmFyZGFueWFuICA8dmFhZ0Bpc3ByYXMucnU+
CisKKyAgICAgICAgQWRkcyBmcm9tQ2hhckNvZGUgaW50cmluc2ljIHN1cHBvcnQuIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODA3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIHRvIHVzaW5n
IGZyb21DaGFyQ29kZSBpbnRyaW5zaWMgaW5zdGVhZCBvZiBjYWxsIG9wZXJhdGlvbiBpbiBzb21l
IGNhc2VzLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpYyk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChERkcp
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3Bh
Z2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZyb21DaGFyQ29kZSk6CisgICAgICAgIChE
RkcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKFNwZWN1bGF0aXZl
SklUKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OnN0cmluZ0Zyb21DaGFyQ29kZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQyk6CisKIDIwMTMtMDIt
MTkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsZSgpIGhhcyBhbiB1bm5lY2Vzc2FyeSBjYXNl
IGZvciBjb25zdGFudCBvcGVyYW5kcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTQzNTc5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw2ICs4OSwxMSBAQAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
c3RyaW5nRnJvbUNoYXJDb2RlU2xvd0Nhc2UoZXhlYykpOwogfQogCitKU0NlbGwqIEpTQ19IT1NU
X0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBhcmcpCit7
CisgICAgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV4ZWMsIGFyZyk7Cit9CisKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiAxNDM1NzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw4IEBA
CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07CisgICAgCisgICAgSlNDZWxsKiBKU0Nf
SE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqLCBpbnQzMl90KTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAK
</data>
<flag name="commit-queue"
          id="209960"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196949</attachid>
            <date>2013-04-08 13:31:32 -0700</date>
            <delta_ts>2013-04-08 14:36:59 -0700</delta_ts>
            <desc>Patch updated for latest trunk</desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>13031</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3OTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEzLTA0LTA4ICBWYWhhZyBWYXJkYW55YW4gIDx2YWFnQGlzcHJhcy5ydT4KKworICAgICAg
ICBBZGRzIGZyb21DaGFyQ29kZSBpbnRyaW5zaWMgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDgwNworCisgICAgICAgIFN3aXRjaCB0
byB1c2luZyBmcm9tQ2hhckNvZGUgaW50cmluc2ljIGluc3RlYWQgb2YgY2FsbCBvcGVyYXRpb24g
aW4gc29tZSBjYXNlcy4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICog
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
bGxPcGVyYXRpb24pOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNo
YXJDb2RlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoSlNDKToKKwogMjAxMy0wNC0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NiArODIsNyBAQAogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdP
cGVyYXRpb25fRVpJY2ZaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBJbmxpbmVDYWxsRnJhbWUqLCBp
bnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAoKkpfREZHT3Bl
cmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIEpTQ2Vs
bCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwordHlwZWRl
ZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwg
aW50MzJfdCk7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9u
X0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9O
ICgqQ19ERkdPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKIHR5
cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUljZikoRXhlY1N0
YXRlKiwgSW5saW5lQ2FsbEZyYW1lKik7CkBAIC05MSw2ICs5Miw3IEBACiB0eXBlZGVmIEpTQ2Vs
bCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VKc3NKc3NKc3MpKEV4ZWNTdGF0ZSos
IEpTU3RyaW5nKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU0NlbGwqIERGR19P
UEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FT1opKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50
MzJfdCk7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VT
dCkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Cit0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElP
TiAoKkNfREZHT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKIHR5cGVkZWYgZG91
YmxlIERGR19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlvbl9ERCkoZG91YmxlLCBkb3VibGUpOwog
dHlwZWRlZiBkb3VibGUgREZHX09QRVJBVElPTiAoKkRfREZHT3BlcmF0aW9uX1paKShpbnQzMl90
LCBpbnQzMl90KTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlv
bl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwpAQCAtMTI0LDYgKzEyNiw3IEBACiB0
eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FU3RTUykoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgc2l6ZV90LCBzaXplX3QpOwogdHlwZWRlZiBjaGFyKiBERkdfT1BF
UkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRVN0WikoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50
MzJfdCk7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIERGR19PUEVSQVRJT04gKCpTdHJfREZHT3BlcmF0
aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CitKU0NlbGwqIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSosIGludDMyX3QpICBXVEZfSU5U
RVJOQUw7IAogCiAvLyBUaGVzZSByb3V0aW5lcyBhcmUgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRv
IEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0aW9ucyB0b28gY29tcGxleCB0byBKSVQuCiBK
U0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2Myw2
ICsxMjYzLDExIEBACiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAjZWxzZQogCiAvLyBFbmNvZGVkSlNW
YWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlci4gV2hlbiBiZWluZyBjb21w
aWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVkIGV2ZW4tbnVtYmVyZWQgcmVnaXN0
ZXIgKHIwLCByMiBvciBbc3BdKS4KQEAgLTE2ODYsNyArMTY5MSwxMyBAQAogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9F
WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CisgICAgfQogCisKICN1bmRlZiBFQUJJXzMyQklUX0RVTU1ZX0FSRwogICAgIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAgLTIxMDQsNiArMjExNSw3IEBACiAgICAgCiAg
ICAgdm9pZCBjb21waWxlR2V0Q2hhckNvZGVBdChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0
QnlWYWxPblN0cmluZyhOb2RlKik7CisgICAgdm9pZCBjb21waWxlRnJvbUNoYXJDb2RlKE5vZGUq
KTsgCiAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRzKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgoTm9kZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxNDc5NDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NjEsNiArODYxLDEyIEBACiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKKyAgICBjYXNlIFN0cmluZ0Zy
b21DaGFyQ29kZToKKyAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKKyAgICAgICAgZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQzMik7CisgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0KFNwZWNTdHJpbmcpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgU3RyaW5n
Q2hhckF0OgogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldChtX2dyYXBoLm1fZ2xvYmFsRGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTY0LDcgKzE1NjQsMTkgQEAKICAg
ICAgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBjaGFyQ29kZSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KKyAgICBjYXNlIEZyb21DaGFyQ29kZUludHJpbnNpYzogeworICAgICAgICBp
ZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgICAgICBpbnQgaW5kZXhPcGVyYW5kID0gcmVnaXN0ZXJPZmZzZXQgKyBhcmd1
bWVudFRvT3BlcmFuZCgxKTsKKyAgICAgICAgTm9kZSogY2hhckNvZGUgPSBhZGRUb0dyYXBoKFN0
cmluZ0Zyb21DaGFyQ29kZSwgZ2V0VG9JbnQzMihpbmRleE9wZXJhbmQpKTsKKworICAgICAgICBp
ZiAodXNlc1Jlc3VsdCkKKyAgICAgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBjaGFyQ29kZSk7
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgY2FzZSBSZWdFeHBFeGVjSW50
cmluc2ljOiB7CiAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiArNDIzLDExIEBA
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgY2FzZSBT
dHJpbmdGcm9tQ2hhckNvZGU6IHsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlv
bihTcGVjU3RyaW5nKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbm9kZS0+Y2hpbGQxKCktPm1l
cmdlRmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVVc2VkQXNJbnQpOyAgICAgICAgICAgIAor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6
CiAgICAgICAgIGNhc2UgVG9TdHJpbmc6CiAgICAgICAgIGNhc2UgTWFrZVJvcGU6IHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE0Nzk0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTgxLDYgKzE4MSw3IEBACiAgICAgLyogT3B0aW1pemF0aW9ucyBmb3Igc3RyaW5nIGFj
Y2VzcyAqLyBcCiAgICAgbWFjcm8oU3RyaW5nQ2hhckNvZGVBdCwgTm9kZVJlc3VsdEludDMyKSBc
CiAgICAgbWFjcm8oU3RyaW5nQ2hhckF0LCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhTdHJp
bmdGcm9tQ2hhckNvZGUsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3Ig
Y29tcGFyaXNvbiBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhDb21wYXJlTGVzcywgTm9kZVJl
c3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiTmFtZUluc3RhbmNl
LmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCisjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlIDx3dGYvSW5saW5l
QVNNLmg+CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTU4NCw2ICsxNTg1LDE0IEBACiAgICAgcmV0
dXJuIGZtb2QoYSwgYik7CiB9CiAKK0pTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25TdHJp
bmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IG9wMSkKK3sKKyAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CisgICAgcmV0dXJuIEpTQzo6
c3RyaW5nRnJvbUNoYXJDb2RlKGV4ZWMsIG9wMSk7CisKK30KKwogREZHSGFuZGxlckVuY29kZWQg
REZHX09QRVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyKEV4ZWNTdGF0ZSogZXhlYywgdWlu
dDMyX3QgY2FsbEluZGV4KQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0NTEsNiArMjQ1MSwxMSBAQAogICAgICAgICBjb21waWxlR2V0QnlWYWxPblN0
cmluZyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBTdHJpbmdGcm9t
Q2hhckNvZGU6IHsKKyAgICAgICAgY29tcGlsZUZyb21DaGFyQ29kZShub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAg
Y2hlY2tBcnJheShub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4
OCw2ICsyMDg4LDMwIEBACiAgICAgY2VsbFJlc3VsdChzY3JhdGNoUmVnLCBtX2N1cnJlbnROb2Rl
KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZyb21DaGFyQ29kZShOb2RlKiBu
b2RlKQoreworICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7
CisgICAgR1BSVGVtcG9yYXJ5IHNtYWxsU3RyaW5ncyh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKKyAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7Cisg
ICAgR1BSUmVnIHNtYWxsU3RyaW5nc1JlZyA9IHNtYWxsU3RyaW5ncy5ncHIoKTsKKworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzTm90QVNDSUlDaGFyYWN0ZXIgPSBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgVHJ1c3RlZEltbTMyKDB4MTAw
KSk7CisgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCBzbWFs
bFN0cmluZ3NSZWcpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eChzbWFsbFN0cmluZ3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIs
IDApLCBzY3JhdGNoUmVnKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBqbXBBZnRlciA9IG1faml0
Lmp1bXAoKTsKKworICAgIGlzTm90QVNDSUlDaGFyYWN0ZXIubGluaygmbV9qaXQpOworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGptcFNsb3dDYXNlID0gbV9qaXQuanVtcCgpOworICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChqbXBTbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uU3Ry
aW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBwcm9wZXJ0eVJlZykpOworCisgICAgam1wQWZ0
ZXIubGluaygmbV9qaXQpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2Ny
YXRjaFJlZykpOworCisgICAgY2VsbFJlc3VsdChzY3JhdGNoUmVnLCBtX2N1cnJlbnROb2RlKTsK
K30KKwogR2VuZXJhdGVkT3BlcmFuZFR5cGUgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJhdGVk
VHlwZUZvclRvSW50MzIoTm9kZSogbm9kZSkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJP
U0UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsMTAgQEAKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6Cisg
ICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8SW50MzJVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hh
ckF0OgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6IHsKICAgICAgICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBoYXZlIG5vIGdvb2Qgd2F5IG9mIHJlZmluaW5nIHRoZXNlLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzc4LDYgKzIzNzgsMTEgQEAKICAgICAg
ICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KworICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOiB7CisgICAgICAgIGNvbXBpbGVGcm9tQ2hh
ckNvZGUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBD
aGVja0FycmF5OiB7CiAgICAgICAgIGNoZWNrQXJyYXkobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHJldmlzaW9u
IDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAKICAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAgICAgfTsKKyAgICAKKyAgICBKU0NlbGwqIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJv
bUNoYXJDb2RlKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwx
MSBAQAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nRnJvbUNoYXJDb2RlU2xvd0Nh
c2UoZXhlYykpOwogfQogCitKU0NlbGwqIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2Rl
KEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBhcmcpCit7CisgICAgcmV0dXJuIGpzU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGV4ZWMsIGFyZyk7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOwo=
</data>
<flag name="review"
          id="219085"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="219086"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196957</attachid>
            <date>2013-04-08 14:36:59 -0700</date>
            <delta_ts>2013-04-08 15:47:50 -0700</delta_ts>
            <desc>Adds Support for fromCharCode intrinsic </desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>12763</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lv
biAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQAogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRVpJY2ZaKShFeGVjU3RhdGUqLCBpbnQzMl90
LCBJbmxpbmVDYWxsRnJhbWUqLCBpbnQzMl90KTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiAoKkpfREZHT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50
MzJfdCk7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0Up
KEV4ZWNTdGF0ZSopOwordHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJh
dGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJB
VElPTiAoKkNfREZHT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIHR5cGVkZWYg
SlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBK
U0NlbGwqLCBKU0NlbGwqKTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdP
cGVyYXRpb25fRUljZikoRXhlY1N0YXRlKiwgSW5saW5lQ2FsbEZyYW1lKik7CkBAIC05MSw2ICs5
Miw3IEBACiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VK
c3NKc3NKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiwgSlNTdHJpbmcqLCBKU1N0cmluZyopOwog
dHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FT1opKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCk7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElP
TiAoKkNfREZHT3BlcmF0aW9uX0VTdCkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7Cit0eXBlZGVm
IEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBp
bnQzMl90KTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlvbl9E
RCkoZG91YmxlLCBkb3VibGUpOwogdHlwZWRlZiBkb3VibGUgREZHX09QRVJBVElPTiAoKkRfREZH
T3BlcmF0aW9uX1paKShpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVS
QVRJT04gKCpEX0RGR09wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwpA
QCAtMTI0LDYgKzEyNiw3IEBACiB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09w
ZXJhdGlvbl9FU3RTUykoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgc2l6ZV90LCBzaXplX3QpOwog
dHlwZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRVN0WikoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCk7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIERGR19PUEVS
QVRJT04gKCpTdHJfREZHT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CitK
U0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0
ZSosIGludDMyX3QpICBXVEZfSU5URVJOQUw7IAogCiAvLyBUaGVzZSByb3V0aW5lcyBhcmUgcHJv
dmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0aW9ucyB0
b28gY29tcGxleCB0byBKSVQuCiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2Jq
ZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTQ3
OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODYxLDYgKzg2MSwxMiBAQAogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldChTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICAgICAgCisgICAgY2FzZSBTdHJp
bmdGcm9tQ2hhckNvZGU6CisgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CisgICAgICAg
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldChTcGVjU3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFN0
cmluZ0NoYXJBdDoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXQobV9ncmFwaC5tX2dsb2JhbERhdGEuc3RyaW5nU3RydWN0dXJlLmdldCgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2NCw3ICsxNTY0LDE5IEBA
CiAgICAgICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgY2hhckNvZGUpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CisgICAgY2FzZSBGcm9tQ2hhckNvZGVJbnRyaW5zaWM6IHsKKyAgICAg
ICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICAgICAgaW50IGluZGV4T3BlcmFuZCA9IHJlZ2lzdGVyT2Zmc2V0ICsg
YXJndW1lbnRUb09wZXJhbmQoMSk7CisgICAgICAgIE5vZGUqIGNoYXJDb2RlID0gYWRkVG9HcmFw
aChTdHJpbmdGcm9tQ2hhckNvZGUsIGdldFRvSW50MzIoaW5kZXhPcGVyYW5kKSk7CisKKyAgICAg
ICAgaWYgKHVzZXNSZXN1bHQpCisgICAgICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgY2hhckNv
ZGUpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGNhc2UgUmVnRXhwRXhl
Y0ludHJpbnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0g
MikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTQ3OTQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjM3OCw2ICsyMzc4LDExIEBACiAgICAgICAgIGNvbXBpbGVHZXRCeVZh
bE9uU3RyaW5nKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIFN0cmlu
Z0Zyb21DaGFyQ29kZTogeworICAgICAgICBjb21waWxlRnJvbUNoYXJDb2RlKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tBcnJheTogewogICAg
ICAgICBjaGVja0FycmF5KG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDg4LDYgKzIwODgsMjQgQEAKICAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY3VycmVu
dE5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlKE5v
ZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5n
cHIoKTsKKyAgICBHUFJUZW1wb3Jhcnkgc21hbGxTdHJpbmdzKHRoaXMpOworICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIo
KTsKKyAgICBHUFJSZWcgc21hbGxTdHJpbmdzUmVnID0gc21hbGxTdHJpbmdzLmdwcigpOworCisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RBU0NJSUNoYXJhY3RlciA9IG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBUcnVzdGVkSW1tMzIo
MHgxMDApKTsKKyAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSks
IHNtYWxsU3RyaW5nc1JlZyk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KHNtYWxsU3RyaW5nc1JlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpTY2Fs
ZVB0ciwgMCksIHNjcmF0Y2hSZWcpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKGlzTm90QVNDSUlDaGFyYWN0ZXIsIHRoaXMsIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFy
Q29kZSwgc2NyYXRjaFJlZywgcHJvcGVydHlSZWcpKTsKKworICAgIGNlbGxSZXN1bHQoc2NyYXRj
aFJlZywgbV9jdXJyZW50Tm9kZSk7Cit9CisKIEdlbmVyYXRlZE9wZXJhbmRUeXBlIFNwZWN1bGF0
aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqIG5vZGUpCiB7CiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiArNDIzLDExIEBA
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgY2FzZSBT
dHJpbmdGcm9tQ2hhckNvZGU6IHsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlv
bihTcGVjU3RyaW5nKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbm9kZS0+Y2hpbGQxKCktPm1l
cmdlRmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVVc2VkQXNJbnQpOyAgICAgICAgICAgIAor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6
CiAgICAgICAgIGNhc2UgVG9TdHJpbmc6CiAgICAgICAgIGNhc2UgTWFrZVJvcGU6IHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5o
IgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgorI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFT
TS5oPgogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE1ODQsNiArMTU4NSwxNCBAQAogICAgIHJldHVy
biBmbW9kKGEsIGIpOwogfQogCitKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5n
RnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBvcDEpCit7CisgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIHJldHVybiBKU0M6OnN0
cmluZ0Zyb21DaGFyQ29kZShleGVjLCBvcDEpOworCit9CisKIERGR0hhbmRsZXJFbmNvZGVkIERG
R19PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlcihFeGVjU3RhdGUqIGV4ZWMsIHVpbnQz
Ml90IGNhbGxJbmRleCkKIHsKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsNiArMzQ4LDEwIEBACiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgU3RyaW5nRnJvbUNo
YXJDb2RlOgorICAgICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPEludDMy
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNl
IFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OiB7CiAgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2UgaGF2ZSBubyBnb29kIHdheSBvZiByZWZpbmluZyB0aGVzZS4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE0
Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBACiAgICAgLyogT3B0aW1pemF0aW9ucyBmb3Igc3Ry
aW5nIGFjY2VzcyAqLyBcCiAgICAgbWFjcm8oU3RyaW5nQ2hhckNvZGVBdCwgTm9kZVJlc3VsdElu
dDMyKSBcCiAgICAgbWFjcm8oU3RyaW5nQ2hhckF0LCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNy
byhTdHJpbmdGcm9tQ2hhckNvZGUsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBOb2Rl
cyBmb3IgY29tcGFyaXNvbiBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhDb21wYXJlTGVzcywg
Tm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAkocmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYzLDYgKzEyNjMsMTEgQEAKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVy
YXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKKyAgICB7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOworICAgIH0KICNlbHNlCiAKIC8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82
NCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBXaGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBp
dCBtdXN0IGJlIGFsaWduZWQgZXZlbi1udW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0p
LgpAQCAtMTY4Niw3ICsxNjkxLDEzIEBACiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2Vw
dGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKKwogI3VuZGVm
IEVBQklfMzJCSVRfRFVNTVlfQVJHCiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rp
b25UeXBlPgpAQCAtMjEwNCw2ICsyMTE1LDcgQEAKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRD
aGFyQ29kZUF0KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSopOyAKIAogICAgIHZvaWQgY29t
cGlsZUdldEJ5VmFsT25Bcmd1bWVudHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEFyZ3Vt
ZW50c0xlbmd0aChOb2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0NTEsNiArMjQ1MSwxMSBAQAogICAgICAgICBjb21waWxlR2V0QnlWYWxP
blN0cmluZyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBTdHJpbmdG
cm9tQ2hhckNvZGU6IHsKKyAgICAgICAgY29tcGlsZUZyb21DaGFyQ29kZShub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAg
ICAgY2hlY2tBcnJheShub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTQ3OTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA0LTA4ICBWYWhhZyBWYXJkYW55YW4gIDx2YWFn
QGlzcHJhcy5ydT4KKworICAgICAgICBBZGRzIGZyb21DaGFyQ29kZSBpbnRyaW5zaWMgc3VwcG9y
dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDgw
NworCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBmcm9tQ2hhckNvZGUgaW50cmluc2ljIGluc3Rl
YWQgb2YgY2FsbCBvcGVyYXRpb24gaW4gc29tZSBjYXNlcy4KKworICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVj
dXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFn
YXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKERG
Ryk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoU3BlY3VsYXRpdmVK
SVQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6c3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICog
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDKToKKwogMjAxMy0wNC0w
OCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODks
MTEgQEAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ0Zyb21DaGFyQ29kZVNsb3dD
YXNlKGV4ZWMpKTsKIH0KIAorSlNDZWxsKiBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29k
ZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgYXJnKQoreworICAgIHJldHVybiBqc1NpbmdsZUNo
YXJhY3RlclN0cmluZyhleGVjLCBhcmcpOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTQ3
OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBAQAogICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmKTsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3Im
KTsKICAgICB9OworICAgIAorICAgIEpTQ2VsbCogSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9tQ2hh
ckNvZGUoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCg==
</data>
<flag name="review"
          id="219092"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="219093"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196964</attachid>
            <date>2013-04-08 15:47:50 -0700</date>
            <delta_ts>2014-02-13 04:04:07 -0800</delta_ts>
            <desc>FromCharCode Fixed patch</desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>12798</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3OTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEzLTA0LTA4ICBWYWhhZyBWYXJkYW55YW4gIDx2YWFnQGlzcHJhcy5ydT4KKworICAgICAg
ICBBZGRzIGZyb21DaGFyQ29kZSBpbnRyaW5zaWMgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDgwNworCisgICAgICAgIFN3aXRjaCB0
byB1c2luZyBmcm9tQ2hhckNvZGUgaW50cmluc2ljIGluc3RlYWQgb2YgY2FsbCBvcGVyYXRpb24g
aW4gc29tZSBjYXNlcy4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICog
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
bGxPcGVyYXRpb24pOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNo
YXJDb2RlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoSlNDKToKKwogMjAxMy0wNC0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE0Nzk0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI2Myw2ICsxMjYzLDExIEBACiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0
aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAjZWxzZQog
CiAvLyBFbmNvZGVkSlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlci4g
V2hlbiBiZWluZyBjb21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVkIGV2ZW4t
bnVtYmVyZWQgcmVnaXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KQEAgLTE2ODYsNyArMTY5MSwxMyBA
QAogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0RGR09wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwor
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgfQogCisKICN1bmRlZiBFQUJJXzMyQklUX0RVTU1ZX0FSRwog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KQEAgLTIxMDQsNiArMjEx
NSw3IEBACiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0Q2hhckNvZGVBdChOb2RlKik7CiAgICAg
dm9pZCBjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlKik7CisgICAgdm9pZCBjb21waWxlRnJv
bUNoYXJDb2RlKE5vZGUqKTsgCiAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uQXJndW1lbnRz
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgoTm9kZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzc4LDYgKzIzNzgsMTEgQEAK
ICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKworICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOiB7CisgICAgICAgIGNvbXBpbGVG
cm9tQ2hhckNvZGUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGNoZWNrQXJyYXkobm9kZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyMyw2ICs0MjMsMTEgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIAorICAgICAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZTogeworICAgICAgICAgICAgY2hh
bmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRB
c0ludCk7ICAgICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBUb1N0cmluZzoKICAgICAgICAgY2Fz
ZSBNYWtlUm9wZTogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5j
bHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTU4NCw2ICsx
NTg1LDE0IEBACiAgICAgcmV0dXJuIGZtb2QoYSwgYik7CiB9CiAKK0pTQ2VsbCogREZHX09QRVJB
VElPTiBvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90
IG9wMSkKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0
YSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7
CisgICAgcmV0dXJuIEpTQzo6c3RyaW5nRnJvbUNoYXJDb2RlKGV4ZWMsIG9wMSk7CisKK30KKwog
REZHSGFuZGxlckVuY29kZWQgREZHX09QRVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyKEV4
ZWNTdGF0ZSogZXhlYywgdWludDMyX3QgY2FsbEluZGV4KQogewogICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0OCw2ICszNDgsMTAgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAg
ICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6CisgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5i
b3hJZlByb2ZpdGFibGU8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIFN0cmluZ0No
YXJDb2RlQXQ6IHsKICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBoYXZlIG5vIGdvb2Qgd2F5
IG9mIHJlZmluaW5nIHRoZXNlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNDc5NDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDUxLDYgKzI0NTEsMTEgQEAKICAgICAgICAgY29tcGlsZUdldEJ5VmFs
T25TdHJpbmcobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgU3RyaW5n
RnJvbUNoYXJDb2RlOiB7CisgICAgICAgIGNvbXBpbGVGcm9tQ2hhckNvZGUobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAg
ICAgIGNoZWNrQXJyYXkobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAKIHR5
cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAoKkpfREZHT3BlcmF0aW9uX0VaSWNm
WikoRXhlY1N0YXRlKiwgaW50MzJfdCwgSW5saW5lQ2FsbEZyYW1lKiwgaW50MzJfdCk7CiB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FWlopKEV4
ZWNTdGF0ZSosIGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJ
T04gKCpDX0RGR09wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKK3R5cGVkZWYgSlNDZWxsKiBERkdf
T1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlw
ZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FQykoRXhlY1N0YXRl
KiwgSlNDZWxsKik7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0
aW9uX0VDQykoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIEpTQ2VsbCog
REZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VJY2YpKEV4ZWNTdGF0ZSosIElubGluZUNh
bGxGcmFtZSopOwpAQCAtOTEsNiArOTIsNyBAQAogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJ
T04gKCpDX0RGR09wZXJhdGlvbl9FSnNzSnNzSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyosIEpT
U3RyaW5nKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19E
RkdPcGVyYXRpb25fRU9aKShFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QpOwogdHlwZWRl
ZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FU3QpKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSopOwordHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJh
dGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIGRvdWJsZSBERkdfT1BFUkFU
SU9OICgqRF9ERkdPcGVyYXRpb25fREQpKGRvdWJsZSwgZG91YmxlKTsKIHR5cGVkZWYgZG91Ymxl
IERGR19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlvbl9aWikoaW50MzJfdCwgaW50MzJfdCk7CiB0
eXBlZGVmIGRvdWJsZSBERkdfT1BFUkFUSU9OICgqRF9ERkdPcGVyYXRpb25fRUopKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlKTsKQEAgLTEyNCw2ICsxMjYsNyBAQAogdHlwZWRlZiBjaGFyKiBE
RkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRVN0U1MpKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIHNpemVfdCwgc2l6ZV90KTsKIHR5cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAoKlBfREZH
T3BlcmF0aW9uX0VTdFopKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpOwogdHlwZWRl
ZiBTdHJpbmdJbXBsKiBERkdfT1BFUkFUSU9OICgqU3RyX0RGR09wZXJhdGlvbl9FSnNzKShFeGVj
U3RhdGUqLCBKU1N0cmluZyopOworSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmlu
Z0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqLCBpbnQzMl90KSAgV1RGX0lOVEVSTkFMOyAKIAogLy8g
VGhlc2Ugcm91dGluZXMgYXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50
YXRpb25zIG9mIG9wZXJhdGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgogSlNDZWxsKiBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5U
RVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2MSw2ICs4NjEsMTAgQEAK
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIAorICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOgorICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldChTcGVjU3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFN0cmluZ0No
YXJBdDoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXQobV9ncmFwaC5tX2dsb2JhbERhdGEuc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2NCw3ICsxNTY0LDE5IEBACiAgICAg
ICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgY2hhckNvZGUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CisgICAgY2FzZSBGcm9tQ2hhckNvZGVJbnRyaW5zaWM6IHsKKyAgICAgICAgaWYg
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICAgICAgaW50IGluZGV4T3BlcmFuZCA9IHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1l
bnRUb09wZXJhbmQoMSk7CisgICAgICAgIE5vZGUqIGNoYXJDb2RlID0gYWRkVG9HcmFwaChTdHJp
bmdGcm9tQ2hhckNvZGUsIGdldFRvSW50MzIoaW5kZXhPcGVyYW5kKSk7CisKKyAgICAgICAgaWYg
KHVzZXNSZXN1bHQpCisgICAgICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgY2hhckNvZGUpOwor
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGNhc2UgUmVnRXhwRXhlY0ludHJp
bnNpYzogewogICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgIT0gMikKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3IEBACiAgICAg
LyogT3B0aW1pemF0aW9ucyBmb3Igc3RyaW5nIGFjY2VzcyAqLyBcCiAgICAgbWFjcm8oU3RyaW5n
Q2hhckNvZGVBdCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oU3RyaW5nQ2hhckF0LCBO
b2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhTdHJpbmdGcm9tQ2hhckNvZGUsIE5vZGVSZXN1bHRK
UykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgY29tcGFyaXNvbiBvcGVyYXRpb25zLiAqL1wK
ICAgICBtYWNybyhDb21wYXJlTGVzcywgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDg4LDYgKzIwODgsMjUgQEAKICAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY3Vy
cmVudE5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2Rl
KE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0
eS5ncHIoKTsKKyAgICBHUFJUZW1wb3Jhcnkgc21hbGxTdHJpbmdzKHRoaXMpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5n
cHIoKTsKKyAgICBHUFJSZWcgc21hbGxTdHJpbmdzUmVnID0gc21hbGxTdHJpbmdzLmdwcigpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGlzTm90QVNDSUlDaGFyYWN0ZXI7CisgICAgaXNO
b3RBU0NJSUNoYXJhY3Rlci5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIFRydXN0ZWRJbW0zMigweGZmKSkpOworICAgIG1faml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpKSwgc21hbGxTdHJpbmdzUmVnKTsK
KyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21hbGxTdHJpbmdz
UmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCAwKSwgc2NyYXRjaFJl
Zyk7CisKKyAgICBpc05vdEFTQ0lJQ2hhcmFjdGVyLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hSZWcpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoaXNOb3RBU0NJSUNoYXJhY3RlciwgdGhpcywgb3BlcmF0aW9uU3Ry
aW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBwcm9wZXJ0eVJlZykpOworICAgIGNlbGxSZXN1
bHQoc2NyYXRjaFJlZywgbV9jdXJyZW50Tm9kZSk7Cit9CisKIEdlbmVyYXRlZE9wZXJhbmRUeXBl
IFNwZWN1bGF0aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqIG5vZGUp
CiB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxNDc5
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw4IEBACiAgICAgICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwogICAgIH07CisgICAgCisgICAgSlNDZWxsKiBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFy
Q29kZShFeGVjU3RhdGUqLCBpbnQzMl90KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksMTEgQEAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ0Zyb21DaGFyQ29kZVNsb3dDYXNlKGV4
ZWMpKTsKIH0KIAorSlNDZWxsKiBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21DaGFyQ29kZShFeGVj
U3RhdGUqIGV4ZWMsIGludDMyX3QgYXJnKQoreworICAgIHJldHVybiBqc1NpbmdsZUNoYXJhY3Rl
clN0cmluZyhleGVjLCBhcmcpOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196968</attachid>
            <date>2013-04-08 16:16:34 -0700</date>
            <delta_ts>2013-04-08 16:30:51 -0700</delta_ts>
            <desc>FromCharCode Fixed patch</desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>12756</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3OTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEzLTA0LTA4ICBWYWhhZyBWYXJkYW55YW4gIDx2YWFnQGlzcHJhcy5ydT4KKworICAgICAg
ICBBZGRzIGZyb21DaGFyQ29kZSBpbnRyaW5zaWMgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDgwNworCisgICAgICAgIFN3aXRjaCB0
byB1c2luZyBmcm9tQ2hhckNvZGUgaW50cmluc2ljIGluc3RlYWQgb2YgY2FsbCBvcGVyYXRpb24g
aW4gc29tZSBjYXNlcy4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICog
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
bGxPcGVyYXRpb24pOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBy
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNo
YXJDb2RlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAoSlNDKToKKwogMjAxMy0wNC0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTQ3
OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjM3OCw2ICsyMzc4LDExIEBACiAgICAgICAgIGNvbXBpbGVH
ZXRCeVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNl
IFN0cmluZ0Zyb21DaGFyQ29kZTogeworICAgICAgICBjb21waWxlRnJvbUNoYXJDb2RlKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tBcnJheTog
ewogICAgICAgICBjaGVja0FycmF5KG5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNDc5
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUxLDYgKzI0NTEsMTEgQEAKICAgICAgICAgY29tcGls
ZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNh
c2UgU3RyaW5nRnJvbUNoYXJDb2RlOiB7CisgICAgICAgIGNvbXBpbGVGcm9tQ2hhckNvZGUobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDaGVja0FycmF5
OiB7CiAgICAgICAgIGNoZWNrQXJyYXkobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTQ3OTQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NjQsNyArMTU2NCwxOSBAQAogICAgICAgICAgICAgc2V0KHJlc3VsdE9wZXJh
bmQsIGNoYXJDb2RlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGNhc2UgRnJv
bUNoYXJDb2RlSW50cmluc2ljOiB7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyAhPSAyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIGludCBpbmRl
eE9wZXJhbmQgPSByZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDEpOworICAgICAg
ICBOb2RlKiBjaGFyQ29kZSA9IGFkZFRvR3JhcGgoU3RyaW5nRnJvbUNoYXJDb2RlLCBnZXRUb0lu
dDMyKGluZGV4T3BlcmFuZCkpOworCisgICAgICAgIGlmICh1c2VzUmVzdWx0KQorICAgICAgICAg
ICAgc2V0KHJlc3VsdE9wZXJhbmQsIGNoYXJDb2RlKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKICAgICBjYXNlIFJlZ0V4cEV4ZWNJbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyMyw2ICs0MjMsMTEgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIAorICAgICAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZTogeworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOworICAgICAgICAg
ICAgY2hhbmdlZCB8PSBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVy
IHwgTm9kZVVzZWRBc0ludCk7ICAgICAgICAgICAgCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBUb1N0cmluZzoK
ICAgICAgICAgY2FzZSBNYWtlUm9wZTogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBA
CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9F
WkljZlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIElubGluZUNhbGxGcmFtZSosIGludDMyX3QpOwog
dHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRVpa
KShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BF
UkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRSkoRXhlY1N0YXRlKik7Cit0eXBlZGVmIEpTQ2VsbCog
REZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsK
IHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUMpKEV4ZWNT
dGF0ZSosIEpTQ2VsbCopOwogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09w
ZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwogdHlwZWRlZiBKU0Nl
bGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FSWNmKShFeGVjU3RhdGUqLCBJbmxp
bmVDYWxsRnJhbWUqKTsKQEAgLTkxLDYgKzkyLDcgQEAKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BF
UkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRUpzc0pzc0pzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcq
LCBKU1N0cmluZyosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAo
KkNfREZHT3BlcmF0aW9uX0VPWikoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90KTsKIHR5
cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRVN0KShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqKTsKK3R5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdP
cGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiBkb3VibGUgREZHX09Q
RVJBVElPTiAoKkRfREZHT3BlcmF0aW9uX0REKShkb3VibGUsIGRvdWJsZSk7CiB0eXBlZGVmIGRv
dWJsZSBERkdfT1BFUkFUSU9OICgqRF9ERkdPcGVyYXRpb25fWlopKGludDMyX3QsIGludDMyX3Qp
OwogdHlwZWRlZiBkb3VibGUgREZHX09QRVJBVElPTiAoKkRfREZHT3BlcmF0aW9uX0VKKShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSk7CkBAIC0xMjQsNiArMTI2LDcgQEAKIHR5cGVkZWYgY2hh
ciogREZHX09QRVJBVElPTiAoKlBfREZHT3BlcmF0aW9uX0VTdFNTKShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBzaXplX3QsIHNpemVfdCk7CiB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQ
X0RGR09wZXJhdGlvbl9FU3RaKShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KTsKIHR5
cGVkZWYgU3RyaW5nSW1wbCogREZHX09QRVJBVElPTiAoKlN0cl9ERkdPcGVyYXRpb25fRUpzcyko
RXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKK0pTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25T
dHJpbmdGcm9tQ2hhckNvZGUoRXhlY1N0YXRlKiwgaW50MzJfdCkgIFdURl9JTlRFUk5BTDsgCiAK
IC8vIFRoZXNlIHJvdXRpbmVzIGFyZSBwcm92aWRlIGNhbGxiYWNrcyBvdXQgdG8gQysrIGltcGxl
bWVudGF0aW9ucyBvZiBvcGVyYXRpb25zIHRvbyBjb21wbGV4IHRvIEpJVC4KIEpTQ2VsbCogREZH
X09QRVJBVElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RG
X0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
cmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNiArMTgxLDcgQEAKICAgICAvKiBPcHRpbWl6YXRp
b25zIGZvciBzdHJpbmcgYWNjZXNzICovIFwKICAgICBtYWNybyhTdHJpbmdDaGFyQ29kZUF0LCBO
b2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhTdHJpbmdDaGFyQXQsIE5vZGVSZXN1bHRKUykg
XAorICAgIG1hY3JvKFN0cmluZ0Zyb21DaGFyQ29kZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAog
ICAgIC8qIE5vZGVzIGZvciBjb21wYXJpc29uIG9wZXJhdGlvbnMuICovXAogICAgIG1hY3JvKENv
bXBhcmVMZXNzLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWln
aHRDbG9iYmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJOYW1lSW5zdGFuY2UuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xNTg0LDYgKzE1
ODUsMTMgQEAKICAgICByZXR1cm4gZm1vZChhLCBiKTsKIH0KIAorSlNDZWxsKiBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3Qg
b3AxKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsK
KyAgICByZXR1cm4gSlNDOjpzdHJpbmdGcm9tQ2hhckNvZGUoZXhlYywgb3AxKTsKK30KKwogREZH
SGFuZGxlckVuY29kZWQgREZHX09QRVJBVElPTiBsb29rdXBFeGNlcHRpb25IYW5kbGVyKEV4ZWNT
dGF0ZSogZXhlYywgdWludDMyX3QgY2FsbEluZGV4KQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNjMsNiArMTI2MywxMSBAQAogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FWiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogI2Vsc2UKIAogLy8g
RW5jb2RlZEpTVmFsdWUgaW4gSlNWQUxVRTMyXzY0IGlzIGEgNjQtYml0IGludGVnZXIuIFdoZW4g
YmVpbmcgY29tcGlsZWQgaW4gQVJNIEVBQkksIGl0IG11c3QgYmUgYWxpZ25lZCBldmVuLW51bWJl
cmVkIHJlZ2lzdGVyIChyMCwgcjIgb3IgW3NwXSkuCkBAIC0xNjg2LDcgKzE2OTEsMTMgQEAKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdP
cGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKKyAgICB7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOworICAgIH0KIAorCiAjdW5kZWYgRUFCSV8zMkJJVF9EVU1NWV9BUkcKICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CkBAIC0yMTA0LDYgKzIxMTUsNyBA
QAogICAgIAogICAgIHZvaWQgY29tcGlsZUdldENoYXJDb2RlQXQoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUZyb21DaGFy
Q29kZShOb2RlKik7IAogCiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkFyZ3VtZW50cyhOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlR2V0QXJndW1lbnRzTGVuZ3RoKE5vZGUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZp
c2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA4OCw2ICsyMDg4LDI1IEBACiAgICAgY2VsbFJl
c3VsdChzY3JhdGNoUmVnLCBtX2N1cnJlbnROb2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUZyb21DaGFyQ29kZShOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVn
IHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CisgICAgR1BSVGVtcG9yYXJ5IHNtYWxsU3Ry
aW5ncyh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJSZWcg
c2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgR1BSUmVnIHNtYWxsU3RyaW5nc1JlZyA9
IHNtYWxsU3RyaW5ncy5ncHIoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2Fz
ZXM7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgVHJ1c3RlZEltbTMyKDB4ZmYpKSk7CisgICAgbV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCBzbWFsbFN0cmluZ3NSZWcp
OworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmlu
Z3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNo
UmVnKTsKKworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVnKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlLCBz
Y3JhdGNoUmVnLCBwcm9wZXJ0eVJlZykpOworICAgIGNlbGxSZXN1bHQoc2NyYXRjaFJlZywgbV9j
dXJyZW50Tm9kZSk7Cit9CisKIEdlbmVyYXRlZE9wZXJhbmRUeXBlIFNwZWN1bGF0aXZlSklUOjpj
aGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqIG5vZGUpCiB7CiAjaWYgREZHX0VOQUJM
RShERUJVR19WRVJCT1NFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjEsNiAr
ODYxLDEwIEBACiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAg
IGJyZWFrOwogICAgICAgICAKKyAgICBjYXNlIFN0cmluZ0Zyb21DaGFyQ29kZToKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQoU3BlY1N0cmluZyk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2Fz
ZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgubV9nbG9iYWxEYXRhLnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsMTAgQEAKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6
CisgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8SW50MzJVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgU3RyaW5n
Q2hhckF0OgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6IHsKICAgICAgICAgICAgIC8v
IEN1cnJlbnRseSB3ZSBoYXZlIG5vIGdvb2Qgd2F5IG9mIHJlZmluaW5nIHRoZXNlLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw4IEBACiAgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogICAgIH07CisgICAgCisgICAgSlNDZWxsKiBKU0NfSE9TVF9DQUxM
IHN0cmluZ0Zyb21DaGFyQ29kZShFeGVjU3RhdGUqLCBpbnQzMl90KTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODksNiArODksMTEgQEAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ0Zyb21DaGFy
Q29kZVNsb3dDYXNlKGV4ZWMpKTsKIH0KIAorSlNDZWxsKiBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zy
b21DaGFyQ29kZShFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgYXJnKQoreworICAgIHJldHVybiBq
c1NpbmdsZUNoYXJhY3RlclN0cmluZyhleGVjLCBhcmcpOworfQorCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXaXRoU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVy
bmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsK
</data>
<flag name="review"
          id="219108"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="219109"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197001</attachid>
            <date>2013-04-08 23:16:39 -0700</date>
            <delta_ts>2013-04-08 23:43:54 -0700</delta_ts>
            <desc>Fixed commit-queue problem</desc>
            <filename>fromCharCode.diff</filename>
            <type>text/plain</type>
            <size>12817</size>
            <attacher name="Vahag">vaag</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3OTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDEzLTA0LTA4ICBWYWhhZyBWYXJkYW55YW4gIDx2YWFnQGlzcHJhcy5ydT4KKworICAgICAg
ICBBZGRzIGZyb21DaGFyQ29kZSBpbnRyaW5zaWMgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDgwNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0byB1c2luZyBmcm9tQ2hhckNv
ZGUgaW50cmluc2ljIGluc3RlYWQgb2YgY2FsbCBvcGVyYXRpb24gaW4gc29tZSBjYXNlcy4KKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJD
b2RlKToKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAg
ICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAgICAo
SlNDKToKKwogMjAxMy0wNC0wOCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIEhUTUwgTm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHJldmlzaW9u
IDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAKICAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAgICAgfTsKKyAgICAKKyAgICBKU0NlbGwqIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJv
bUNoYXJDb2RlKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSwx
MSBAQAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nRnJvbUNoYXJDb2RlU2xvd0Nh
c2UoZXhlYykpOwogfQogCitKU0NlbGwqIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2Rl
KEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBhcmcpCit7CisgICAgcmV0dXJuIGpzU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nKGV4ZWMsIGFyZyk7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE0Nzk0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTY0LDcgKzE1NjQsMTkgQEAKICAgICAgICAgICAgIHNldChyZXN1bHRP
cGVyYW5kLCBjaGFyQ29kZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBjYXNl
IEZyb21DaGFyQ29kZUludHJpbnNpYzogeworICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgIT0gMikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICBpbnQg
aW5kZXhPcGVyYW5kID0gcmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgxKTsKKyAg
ICAgICAgTm9kZSogY2hhckNvZGUgPSBhZGRUb0dyYXBoKFN0cmluZ0Zyb21DaGFyQ29kZSwgZ2V0
VG9JbnQzMihpbmRleE9wZXJhbmQpKTsKKworICAgICAgICBpZiAodXNlc1Jlc3VsdCkKKyAgICAg
ICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBjaGFyQ29kZSk7CisKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCiAgICAgY2FzZSBSZWdFeHBFeGVjSW50cmluc2ljOiB7CiAgICAgICAgIGlm
IChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzc4LDYgKzIz
NzgsMTEgQEAKICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOiB7CisgICAgICAg
IGNvbXBpbGVGcm9tQ2hhckNvZGUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGNoZWNrQXJyYXkobm9kZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwODgsNiArMjA4OCwyNSBAQAogICAg
IGNlbGxSZXN1bHQoc2NyYXRjaFJlZywgbV9jdXJyZW50Tm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxh
dGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
IEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOworICAgIEdQUlRlbXBvcmFyeSBz
bWFsbFN0cmluZ3ModGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAg
R1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOworICAgIEdQUlJlZyBzbWFsbFN0cmlu
Z3NSZWcgPSBzbWFsbFN0cmluZ3MuZ3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd0Nhc2VzOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIFRydXN0ZWRJbW0zMigweGZmKSkpOwor
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpKSwgc21hbGxTdHJp
bmdzUmVnKTsKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21h
bGxTdHJpbmdzUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCAwKSwg
c2NyYXRjaFJlZyk7CisKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaFJlZykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFy
Q29kZSwgc2NyYXRjaFJlZywgcHJvcGVydHlSZWcpKTsKKyAgICBjZWxsUmVzdWx0KHNjcmF0Y2hS
ZWcsIG1fY3VycmVudE5vZGUpOworfQorCiBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBTcGVjdWxhdGl2
ZUpJVDo6Y2hlY2tHZW5lcmF0ZWRUeXBlRm9yVG9JbnQzMihOb2RlKiBub2RlKQogewogI2lmIERG
R19FTkFCTEUoREVCVUdfVkVSQk9TRSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxNDc5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIzLDYgKzQyMywxMSBAQAog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGNhc2UgU3Ry
aW5nRnJvbUNoYXJDb2RlOiB7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
U3BlY1N0cmluZyk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG5vZGUtPmNoaWxkMSgpLT5tZXJn
ZUZsYWdzKE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlVXNlZEFzSW50KTsgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0Ogog
ICAgICAgICBjYXNlIFRvU3RyaW5nOgogICAgICAgICBjYXNlIE1ha2VSb3BlOiB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTEsNiArMjQ1MSwx
MSBAQAogICAgICAgICBjb21waWxlR2V0QnlWYWxPblN0cmluZyhub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorCisgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6IHsKKyAgICAgICAgY29t
cGlsZUZyb21DaGFyQ29kZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAK
ICAgICBjYXNlIENoZWNrQXJyYXk6IHsKICAgICAgICAgY2hlY2tBcnJheShub2RlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5o
IgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgorI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0lubGluZUFT
TS5oPgogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE1ODQsNiArMTU4NSwxMyBAQAogICAgIHJldHVy
biBmbW9kKGEsIGIpOwogfQogCitKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uU3RyaW5n
RnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJfdCBvcDEpCit7CisgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOworICAgIHJldHVybiBKU0M6OnN0
cmluZ0Zyb21DaGFyQ29kZShleGVjLCBvcDEpOworfQorCiBERkdIYW5kbGVyRW5jb2RlZCBERkdf
T1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoRXhlY1N0YXRlKiBleGVjLCB1aW50MzJf
dCBjYWxsSW5kZXgpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmds
b2JhbERhdGEoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkocmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ4LDYgKzM0OCwxMCBAQAogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFN0cmluZ0Zyb21DaGFy
Q29kZToKKyAgICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZTxJbnQzMlVz
ZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBT
dHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDogewogICAgICAgICAg
ICAgLy8gQ3VycmVudGx5IHdlIGhhdmUgbm8gZ29vZCB3YXkgb2YgcmVmaW5pbmcgdGhlc2UuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJ
KHJldmlzaW9uIDE0Nzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2MSw2ICs4NjEsMTAgQEAKICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAor
ICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChT
cGVjU3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAg
ICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQo
bV9ncmFwaC5tX2dsb2JhbERhdGEuc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE0Nzk0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTgxLDYgKzE4MSw3IEBACiAgICAgLyogT3B0aW1pemF0aW9ucyBmb3Igc3RyaW5nIGFjY2VzcyAq
LyBcCiAgICAgbWFjcm8oU3RyaW5nQ2hhckNvZGVBdCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAg
bWFjcm8oU3RyaW5nQ2hhckF0LCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhTdHJpbmdGcm9t
Q2hhckNvZGUsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBOb2RlcyBmb3IgY29tcGFy
aXNvbiBvcGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhDb21wYXJlTGVzcywgTm9kZVJlc3VsdEJv
b2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24g
MTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjYzLDYgKzEyNjMsMTEgQEAKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRVogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAg
IH0KICNlbHNlCiAKIC8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82NCBpcyBhIDY0LWJp
dCBpbnRlZ2VyLiBXaGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBpdCBtdXN0IGJlIGFs
aWduZWQgZXZlbi1udW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0pLgpAQCAtMTY4Niw3
ICsxNjkxLDEzIEBACiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfREZHT3BlcmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAKKwogI3VuZGVmIEVBQklfMzJCSVRf
RFVNTVlfQVJHCiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgpAQCAt
MjEwNCw2ICsyMTE1LDcgQEAKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRDaGFyQ29kZUF0KE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSopOyAKIAogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFs
T25Bcmd1bWVudHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50c0xlbmd0aChO
b2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAko
cmV2aXNpb24gMTQ3OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAKIHR5cGVkZWYgRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiAoKkpfREZHT3BlcmF0aW9uX0VaSWNmWikoRXhlY1N0YXRlKiwg
aW50MzJfdCwgSW5saW5lQ2FsbEZyYW1lKiwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGludDMy
X3QsIGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJh
dGlvbl9FKShFeGVjU3RhdGUqKTsKK3R5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19E
RkdPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwqIERG
R19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwgSlNDZWxsKik7CiB0
eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAoKkNfREZHT3BlcmF0aW9uX0VDQykoRXhlY1N0
YXRlKiwgSlNDZWxsKiwgSlNDZWxsKik7CiB0eXBlZGVmIEpTQ2VsbCogREZHX09QRVJBVElPTiAo
KkNfREZHT3BlcmF0aW9uX0VJY2YpKEV4ZWNTdGF0ZSosIElubGluZUNhbGxGcmFtZSopOwpAQCAt
OTEsNiArOTIsNyBAQAogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJh
dGlvbl9FSnNzSnNzSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyosIEpTU3RyaW5nKiwgSlNTdHJp
bmcqKTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25fRU9a
KShFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QpOwogdHlwZWRlZiBKU0NlbGwqIERGR19P
UEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FU3QpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwor
dHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FWikoRXhlY1N0
YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIGRvdWJsZSBERkdfT1BFUkFUSU9OICgqRF9ERkdPcGVy
YXRpb25fREQpKGRvdWJsZSwgZG91YmxlKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04g
KCpEX0RGR09wZXJhdGlvbl9aWikoaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGRvdWJsZSBE
RkdfT1BFUkFUSU9OICgqRF9ERkdPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlKTsKQEAgLTEyNCw2ICsxMjYsNyBAQAogdHlwZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9OICgq
UF9ERkdPcGVyYXRpb25fRVN0U1MpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHNpemVfdCwgc2l6
ZV90KTsKIHR5cGVkZWYgY2hhciogREZHX09QRVJBVElPTiAoKlBfREZHT3BlcmF0aW9uX0VTdFop
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpOwogdHlwZWRlZiBTdHJpbmdJbXBsKiBE
RkdfT1BFUkFUSU9OICgqU3RyX0RGR09wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmlu
ZyopOworSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZShF
eGVjU3RhdGUqLCBpbnQzMl90KSAgV1RGX0lOVEVSTkFMOyAKIAogLy8gVGhlc2Ugcm91dGluZXMg
YXJlIHByb3ZpZGUgY2FsbGJhY2tzIG91dCB0byBDKysgaW1wbGVtZW50YXRpb25zIG9mIG9wZXJh
dGlvbnMgdG9vIGNvbXBsZXggdG8gSklULgogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>