<?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>130134</bug_id>
          
          <creation_ts>2014-03-12 09:20:54 -0700</creation_ts>
          <short_desc>REGRESSION(r165459): It broke 109 jsc stress test on ARM Thumb2 and Mac 32 bit</short_desc>
          <delta_ts>2014-03-19 13:37:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108645</blocked>
    
    <blocked>129778</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rgabor</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>989650</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-03-12 09:20:54 -0700</bug_when>
    <thetext>before: 265 failures - http://build.webkit.sed.hu/builders/EFL%20ARMv7%20Linux%20Release%20%28Build%29/builds/3308
after: 374 failures - http://build.webkit.sed.hu/builders/EFL%20ARMv7%20Linux%20Release%20%28Build%29/builds/3306

new failures:
--------------
jsc-layout-tests.yaml/js/script-tests/dfg-getter.js.layout
jsc-layout-tests.yaml/js/script-tests/dfg-getter.js.layout-no-cjit
jsc-layout-tests.yaml/js/script-tests/dfg-getter.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-getter-throw.js.layout
jsc-layout-tests.yaml/js/script-tests/dfg-getter-throw.js.layout-no-cjit
jsc-layout-tests.yaml/js/script-tests/dfg-getter-throw.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-all-the-places.js.layout
jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-all-the-places.js.layout-no-cjit
jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-all-the-places.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-getter.js.layout
jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-getter.js.layout-no-cjit
jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-getter.js.layout-no-llint
regress/script-tests/get-by-id-proto-or-self.js.always-trigger-copy-phase
regress/script-tests/get-by-id-proto-or-self.js.default
regress/script-tests/get-by-id-proto-or-self.js.no-cjit-validate-phases
regress/script-tests/get-by-id-self-or-proto.js.always-trigger-copy-phase
regress/script-tests/get-by-id-self-or-proto.js.default
regress/script-tests/get-by-id-self-or-proto.js.dfg-eager
regress/script-tests/get-by-id-self-or-proto.js.dfg-eager-no-cjit-validate
regress/script-tests/get-by-id-self-or-proto.js.no-cjit-validate-phases
regress/script-tests/get-by-id-self-or-proto.js.no-llint
regress/script-tests/polymorphic-get-by-id.js.always-trigger-copy-phase
regress/script-tests/polymorphic-get-by-id.js.default
regress/script-tests/polymorphic-get-by-id.js.dfg-eager
regress/script-tests/polymorphic-get-by-id.js.dfg-eager-no-cjit-validate
regress/script-tests/polymorphic-get-by-id.js.no-cjit-validate-phases
regress/script-tests/polymorphic-get-by-id.js.no-llint
regress/script-tests/polymorphic-put-by-id.js.always-trigger-copy-phase
regress/script-tests/polymorphic-put-by-id.js.default
regress/script-tests/polymorphic-put-by-id.js.dfg-eager
regress/script-tests/polymorphic-put-by-id.js.dfg-eager-no-cjit-validate
regress/script-tests/polymorphic-put-by-id.js.no-cjit-validate-phases
regress/script-tests/polymorphic-put-by-id.js.no-llint
regress/script-tests/polymorphic-structure.js.dfg-eager
regress/script-tests/polymorphic-structure.js.dfg-eager-no-cjit-validate
stress/fold-multi-get-by-offset-to-get-by-offset.js.default
stress/fold-multi-get-by-offset-to-get-by-offset.js.no-cjit
stress/fold-multi-get-by-offset-to-get-by-offset-with-watchpoint.js.default
stress/fold-multi-get-by-offset-to-get-by-offset-with-watchpoint.js.no-cjit
stress/fold-multi-put-by-offset-to-put-by-offset.js.dfg-eager
stress/fold-multi-put-by-offset-to-put-by-offset.js.dfg-eager-no-cjit-validate
stress/get-by-id-throw-from-getter-through-optimized-code.js.always-trigger-copy-phase
stress/get-by-id-throw-from-getter-through-optimized-code.js.default
stress/get-by-id-throw-from-getter-through-optimized-code.js.dfg-eager
stress/get-by-id-throw-from-getter-through-optimized-code.js.dfg-eager-no-cjit-validate
stress/get-by-id-throw-from-getter-through-optimized-code.js.no-cjit-validate-phases
stress/get-by-id-throw-from-getter-through-optimized-code.js.no-llint
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code.js.always-trigger-copy-phase
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code.js.default
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code.js.dfg-eager
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code.js.dfg-eager-no-cjit-validate
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code.js.no-cjit-validate-phases
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code.js.no-llint
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code-that-does-not-exit.js.always-trigger-copy-phase
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code-that-does-not-exit.js.default
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code-that-does-not-exit.js.dfg-eager
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code-that-does-not-exit.js.dfg-eager-no-cjit-validate
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code-that-does-not-exit.js.no-cjit-validate-phases
stress/get-by-id-throw-from-unexpected-getter-through-optimized-code-that-does-not-exit.js.no-llint
stress/get-by-id-untyped.js.dfg-eager
stress/get-by-id-untyped.js.dfg-eager-no-cjit-validate
stress/getter.js.always-trigger-copy-phase
stress/getter.js.default
stress/getter.js.no-cjit-validate-phases
stress/getter.js.no-llint
stress/multi-get-by-offset-proto-and-self.js.no-llint
stress/multi-put-by-offset-reallocation-butterfly-cse.js.always-trigger-copy-phase
stress/multi-put-by-offset-reallocation-butterfly-cse.js.default
stress/multi-put-by-offset-reallocation-butterfly-cse.js.dfg-eager
stress/multi-put-by-offset-reallocation-butterfly-cse.js.dfg-eager-no-cjit-validate
stress/multi-put-by-offset-reallocation-butterfly-cse.js.no-cjit-validate-phases
stress/multi-put-by-offset-reallocation-butterfly-cse.js.no-llint
stress/multi-put-by-offset-reallocation-cases.js.always-trigger-copy-phase
stress/multi-put-by-offset-reallocation-cases.js.default
stress/multi-put-by-offset-reallocation-cases.js.dfg-eager
stress/multi-put-by-offset-reallocation-cases.js.dfg-eager-no-cjit-validate
stress/multi-put-by-offset-reallocation-cases.js.no-cjit-validate-phases
stress/multi-put-by-offset-reallocation-cases.js.no-llint
stress/prototype-getter.js.always-trigger-copy-phase
stress/prototype-getter.js.default
stress/prototype-getter.js.no-cjit-validate-phases
stress/prototype-getter.js.no-llint
stress/simple-polyvariant-get-by-id-inlining-example.js.always-trigger-copy-phase
stress/simple-polyvariant-get-by-id-inlining-example.js.default
stress/simple-polyvariant-get-by-id-inlining-example.js.no-cjit-validate-phases
stress/to-this-polymorphic.js.always-trigger-copy-phase
stress/to-this-polymorphic.js.default
stress/to-this-polymorphic.js.no-cjit-validate-phases
stress/to-this-polymorphic.js.no-llint
v8-v6/v8-crypto.js.dfg-eager
v8-v6/v8-crypto.js.dfg-eager-no-cjit-validate
v8-v6/v8-deltablue.js.always-trigger-copy-phase
v8-v6/v8-deltablue.js.default
v8-v6/v8-deltablue.js.dfg-eager
v8-v6/v8-deltablue.js.dfg-eager-no-cjit-validate
v8-v6/v8-deltablue.js.no-cjit-validate-phases
v8-v6/v8-deltablue.js.no-llint
v8-v6/v8-raytrace.js.always-trigger-copy-phase
v8-v6/v8-raytrace.js.default
v8-v6/v8-raytrace.js.dfg-eager
v8-v6/v8-raytrace.js.dfg-eager-no-cjit-validate
v8-v6/v8-raytrace.js.no-cjit-validate-phases
v8-v6/v8-raytrace.js.no-llint
v8-v6/v8-splay.js.always-trigger-copy-phase
v8-v6/v8-splay.js.default
v8-v6/v8-splay.js.dfg-eager
v8-v6/v8-splay.js.dfg-eager-no-cjit-validate
v8-v6/v8-splay.js.no-cjit-validate-phases
v8-v6/v8-splay.js.no-llint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990379</commentid>
    <comment_count>1</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-03-14 03:29:53 -0700</bug_when>
    <thetext>Same regression occured on 32 bit Apple Mac build too.
But https://bugs.webkit.org/show_bug.cgi?id=130203
fixed 94 failures from the 110 , only 16 failures remains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990382</commentid>
    <comment_count>2</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-03-14 03:34:19 -0700</bug_when>
    <thetext>the remaining failures:

** The following JSC stress test failures have been introduced:
        mozilla-tests.yaml/js1_3/inherit/proto_10.js.mozilla-dfg-eager-no-cjit-validate-phases
        stress/get-by-id-throw-from-getter-through-optimized-code.js.default
        stress/get-by-id-throw-from-getter-through-optimized-code.js.no-llint
        stress/get-by-id-throw-from-getter-through-optimized-code.js.always-trigger-copy-phase
        stress/get-by-id-throw-from-getter-through-optimized-code.js.no-cjit-validate-phases
        stress/getter.js.default
        stress/getter.js.no-llint
        stress/getter.js.always-trigger-copy-phase
        stress/getter.js.no-cjit-validate-phases
        stress/prototype-getter.js.default
        stress/prototype-getter.js.no-llint
        stress/prototype-getter.js.always-trigger-copy-phase
        stress/prototype-getter.js.no-cjit-validate-phases
        jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-all-the-places.js.layout
        jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-all-the-places.js.layout-no-llint
        jsc-layout-tests.yaml/js/script-tests/dfg-inline-arguments-use-from-all-the-places.js.layout-no-cjit

Results for JSC stress tests:
    16 failures found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990383</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-03-14 03:38:48 -0700</bug_when>
    <thetext>Nowadays regressions occure on 32 bit regularly. 

Don&apos;t you want to make &quot;Apple MountainLion Release (32-bit Build)&quot;
bot to run jsc stress tests too?

(Unfortunately our ARMv7 tester is slow, jsc stress tests takes ~55 minutes.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990390</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-03-14 04:08:31 -0700</bug_when>
    <thetext>I tried reverting r165459 and its followup fix r165559,
and after it all jsc tests passed on 32 bit Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990472</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-03-14 07:43:00 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Results for JSC stress tests:
&gt;     16 failures found.

Thanks for bringing this up.  I thought the tests were all passing, but I guess it regressed after I last checked.  I’ll look into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990531</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-03-14 09:57:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/16326745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990635</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-03-14 13:19:56 -0700</bug_when>
    <thetext>I see a crasher in a LLINT slow path, but this was only because the slow path code was stepping on a bad JSValue.  The damage was done a long time ago by something else before getting here.

If I run with just the LLINT or LLINT + baslineJIT, all the tests run fine.  Hence,  the issue lies in the DFG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992203</commentid>
    <comment_count>8</comment_count>
      <attachid>227208</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-03-19 12:24:19 -0700</bug_when>
    <thetext>Created attachment 227208
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992206</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-19 12:25:13 -0700</bug_when>
    <thetext>Attachment 227208 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/Repatch.cpp:233:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992207</commentid>
    <comment_count>10</comment_count>
      <attachid>227208</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-19 12:25:25 -0700</bug_when>
    <thetext>Comment on attachment 227208
the patch

I think Phil is working on this right now, so this might not be necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992209</commentid>
    <comment_count>11</comment_count>
      <attachid>227208</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-19 12:28:54 -0700</bug_when>
    <thetext>Comment on attachment 227208
the patch

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

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        The new fix is to change generateGetByIdStub() to ensure that we aren&apos;t
&gt; +        using the same register for baseGPR and resultTagGPR.  We&apos;ll move baseGPR
&gt; +        to a new scratch register if needed.

This is just not the right approach at all.  The invariant of inline caching is that baseGPR is never resultTagGPR.  You can arrange to have the register allocator guarantee this.  That is a much simpler solution.

In fact, right now the register allocator *thinks* that it should be preventing baseGPR from aliasing resultGPR.  That&apos;s unnecessary.

Your solution adds a ton of complexity and makes it so that:

- The register allocator is working hard to prevent baseGPR from aliasing resultGPR even though Repatch is totally fine with it
- Repatch is working hard to allow baseGPR to alias resultTagGPR even though the register allocator could be told to prevent that

Let&apos;s just do a simpler fix that tells the register allocator to that resultTagGPR, not resultGPR, is the thing that baseGPR ought not alias.  I&apos;m working on it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992214</commentid>
    <comment_count>12</comment_count>
      <attachid>227210</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-19 12:38:09 -0700</bug_when>
    <thetext>Created attachment 227210
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992215</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-19 12:39:16 -0700</bug_when>
    <thetext>Attachment 227210 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:116:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:98:  The parameter name &quot;codeBlock&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:98:  The parameter name &quot;codeOrigin&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:99:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992217</commentid>
    <comment_count>14</comment_count>
      <attachid>227210</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-19 12:44:08 -0700</bug_when>
    <thetext>Comment on attachment 227210
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992218</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-19 12:44:40 -0700</bug_when>
    <thetext>This new fix makes 32-bit pass, and it actually fixes the root cause, which was the DFG register allocator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992224</commentid>
    <comment_count>16</comment_count>
      <attachid>227210</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-19 13:24:20 -0700</bug_when>
    <thetext>Comment on attachment 227210
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:421
&gt; +            if (node-&gt;child1()-&gt;shouldSpeculateString() &amp;&amp; node-&gt;child2()-&gt;shouldSpeculateString() &amp;&amp; (GPRInfo::numberOfRegisters &gt;= 7 || isFTL(m_graph.m_plan.mode))) {

Where does this 7 come from?

Does anything in the pipeline verify that we did this right?

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:452
&gt;                  fixEdge&lt;StringUse&gt;(node-&gt;child1());

Same question re: 8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992225</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-19 13:25:07 -0700</bug_when>
    <thetext>&gt; The invariant of inline caching is that baseGPR is never resultTagGPR.

Does anything check this invariant? Can we add a check for it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992229</commentid>
    <comment_count>18</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-19 13:31:44 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 227210 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=227210&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:421
&gt; &gt; +            if (node-&gt;child1()-&gt;shouldSpeculateString() &amp;&amp; node-&gt;child2()-&gt;shouldSpeculateString() &amp;&amp; (GPRInfo::numberOfRegisters &gt;= 7 || isFTL(m_graph.m_plan.mode))) {
&gt; 
&gt; Where does this 7 come from?
&gt; 
&gt; Does anything in the pipeline verify that we did this right?
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:452
&gt; &gt;                  fixEdge&lt;StringUse&gt;(node-&gt;child1());
&gt; 
&gt; Same question re: 8.

You have to just count the number of registers that we allocate in the DFG::SpeculativeJIT code.  Yes, it can change.  And if it changes, you will get an immediate test failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992230</commentid>
    <comment_count>19</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-19 13:32:06 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; The invariant of inline caching is that baseGPR is never resultTagGPR.
&gt; 
&gt; Does anything check this invariant? Can we add a check for it?

This patch adds a RELEASE_ASSERT() to that effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992232</commentid>
    <comment_count>20</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-19 13:37:27 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/165912</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227208</attachid>
            <date>2014-03-19 12:24:19 -0700</date>
            <delta_ts>2014-03-19 12:38:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-130134.patch</filename>
            <type>text/plain</type>
            <size>12774</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1OTA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDE0LTAzLTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
RUdSRVNTSU9OKHIxNjU0NTkpOiBJdCBicm9rZSAxMDkganNjIHN0cmVzcyB0ZXN0IG9uIEFSTSBU
aHVtYjIgYW5kIE1hYyAzMiBiaXQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzAx
MzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGZpeCBpbiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMwMjAzPiAod2hpY2ggcmVzb2x2ZWQgbW9z
dCBvZiB0aGUKKyAgICAgICAgcmVncmVzc2lvbnMpIHdhcyBpbnN1ZmZpY2llbnQuICBUaGVyZSB3
YXMgYSBjYXNlIHdoZXJlIHRoZSBiYXNlIHJlZ2lzdGVyCisgICAgICAgIHdhcyBzdGlsbCBuZWVk
ZWQgYWZ0ZXIgaXQgZ290IG92ZXJ3cml0dGVuIHdpdGggYSByZXN1bHQgdGFnIHZhbHVlLiAgVGhp
cworICAgICAgICByZW1haW5pbmcgaXNzdWUgaXMgdGhlIHNvdXJjZSBvZiB0aGUgMTYgcmVtYWlu
aW5nIHJlZ3Jlc3Npb25zIGR1ZSB0bworICAgICAgICByMTY1NDU5LgorCisgICAgICAgIFRoZSBu
ZXcgZml4IGlzIHRvIGNoYW5nZSBnZW5lcmF0ZUdldEJ5SWRTdHViKCkgdG8gZW5zdXJlIHRoYXQg
d2UgYXJlbid0CisgICAgICAgIHVzaW5nIHRoZSBzYW1lIHJlZ2lzdGVyIGZvciBiYXNlR1BSIGFu
ZCByZXN1bHRUYWdHUFIuICBXZSdsbCBtb3ZlIGJhc2VHUFIKKyAgICAgICAgdG8gYSBuZXcgc2Ny
YXRjaCByZWdpc3RlciBpZiBuZWVkZWQuCisKKyAgICAgICAgVG8gZW5hYmxlIHRoZSBhbGxvY2F0
aW9uIG9mIHRoZSBhZGRpdGlvbmFsIHNjcmF0Y2ggcmVnaXN0ZXIsIEkgYWxzbyBzd2l0Y2hlZAor
ICAgICAgICBnZW5lcmF0ZUdldEJ5SWRTdHViKCkgb3ZlciB0byB1c2luZyB0aGUgU2NyYXRjaFJl
Z2lzdGVyQWxsb2NhdG9yIGluc3RlYWQKKyAgICAgICAgb2YgdGhlIFRlbXBSZWdpc3RlclNldC4g
IFdpdGggdGhpcyBzd2l0Y2gsIGEgZmV3IG90aGVyIGZ1bmN0aW9ucyB3ZXJlIGFsc28KKyAgICAg
ICAgdXBkYXRlZCB0byB3b3JrIHdpdGggdGhlIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci4KKwor
ICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIHBlcmYgb24gNjQtYml0IGFwcGVhcnMgdG8gYmUgYSB3
YXNoIGluIGFnZ3JlZ2F0ZS4gIEluCisgICAgICAgIEpTUmVncmVzcywgcG9seXZhcmlhbnQtbW9u
b21vcnBoaWMtZ2V0LWJ5LWlkIGRpZCBzaG93IGEgfjE0JSByZWdyZXNzaW9uLgorICAgICAgICBI
b3dldmVyLCB3aGVuIEkgbWFkZSB0aGUgbW92aW5nIG9mIGJhc2VSZWcgaW4gZ2VuZXJhdGVHZXRC
eUlkU3R1YigpCisgICAgICAgIGFwcGxpY2FibGUgb25seSBmb3IgMzItYml0IGJ1aWxkcywgdGhl
IHBvbHl2YXJpYW50LW1vbm9tb3JwaGljLWdldC1ieS1pZAorICAgICAgICByZWdyZXNzaW9uIHdl
bnQgYXdheSwgd2hpbGUgMiBvdGhlciBiZW5jaG1hcmtzIGNvbXBvbmVudHMgc3RhcnRlZCBzaG93
aW5nCisgICAgICAgIHJlZ3Jlc3Npb25zIG9mIGFib3V0IDMwJS4gIFRoZSBhZ2dyZWdhdGUgYWx3
YXlzIHNob3dzIG5vIHJlZ3Jlc3Npb24gaW4KKyAgICAgICAgbmV0LiAgSSB0YWtlIHRoaXMgdG8g
bWVhbiB0aGF0IHRoZSBwZXJmIGRpZmZlcmVuY2VzIGlzIGR1ZSB0byBub2lzZSBhbmQKKyAgICAg
ICAgc2hvdWxkIG5vdCBwcmV2ZW50IHRoaXMgcGF0Y2ggZnJvbSBsYW5kaW5nLgorCisgICAgICAg
IE5vdGU6IHRoaXMgcGF0Y2ggZml4ZXMgYWxsIDMyLWJpdCBKU0Mgc3RyZXNzIHRlc3QgcmVncmVz
c2lvbnMgcHJpb3IgdG8KKyAgICAgICAgcjE2NTg0Mi4gIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
MzA0NDc+IHdpbGwgdHJhY2sgdGhlIGZpeGVzIGZvciB0aGUKKyAgICAgICAgcjE2NTg0MiByZWdy
ZXNzaW9ucy4KKworICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6ZW1p
dFJlc3RvcmVSZXVzZWRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpsaW5rUmVzdG9yZVJldXNl
ZFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OmdlbmVyYXRlR2V0QnlJZFN0dWIpOgorICAgICAg
ICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0
dWIpOgorICAgICAgICAoSlNDOjplbWl0Q3VzdG9tU2V0dGVyU3R1Yik6CisgICAgICAgIChKU0M6
OnRyeVJlcGF0Y2hJbik6CisKIDIwMTQtMDMtMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVwZGF0ZSB0eXBlIG9mIGxvY2FsIHZhcnMgdG8gbWF0Y2ggdGhlIHR5
cGUgb2YgU3RyaW5nIGxlbmd0aC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAkocmV2aXNpb24gMTY1ODQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDE4ICsxODMsMTQgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVdpdGhKdW1wKFJlcGF0Y2hCdWZmZQogICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCh0
YXJnZXQpKTsKIH0KIAotc3RhdGljIHZvaWQgZW1pdFJlc3RvcmVTY3JhdGNoKE1hY3JvQXNzZW1i
bGVyJiBzdHViSml0LCBib29sIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBHUFJSZWcgc2NyYXRjaEdQ
UiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIHN1Y2Nlc3MsIE1hY3JvQXNzZW1ibGVyOjpKdW1wJiBm
YWlsLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzKQorc3RhdGljIHZvaWQg
ZW1pdFJlc3RvcmVSZXVzZWRSZWdpc3RlcnMoTWFjcm9Bc3NlbWJsZXImIHN0dWJKaXQsIFNjcmF0
Y2hSZWdpc3RlckFsbG9jYXRvciYgYWxsb2NhdG9yLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCYgc3Vj
Y2VzcywgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIGZhaWwsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBmYWlsdXJlQ2FzZXMpCiB7Ci0gICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKSB7Ci0gICAg
ICAgIHN0dWJKaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hHUFIpOwotICAgICAgICAKKyAgICBpZiAo
YWxsb2NhdG9yLmRpZFJldXNlUmVnaXN0ZXJzKCkpIHsKKyAgICAgICAgYWxsb2NhdG9yLnJlc3Rv
cmVSZXVzZWRSZWdpc3RlcnNCeVBvcHBpbmcoc3R1YkppdCk7CiAgICAgICAgIHN1Y2Nlc3MgPSBz
dHViSml0Lmp1bXAoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIGxpbmsgZmFpbHVyZSBjYXNlcyBo
ZXJlLCBzbyB3ZSBjYW4gcG9wIHNjcmF0Y2hHUFIsIGFuZCB0aGVuIGp1bXAgYmFjay4KKwogICAg
ICAgICBmYWlsdXJlQ2FzZXMubGluaygmc3R1YkppdCk7Ci0gICAgICAgIAotICAgICAgICBzdHVi
Sml0LnBvcFRvUmVzdG9yZShzY3JhdGNoR1BSKTsKLSAgICAgICAgCisgICAgICAgIGFsbG9jYXRv
ci5yZXN0b3JlUmV1c2VkUmVnaXN0ZXJzQnlQb3BwaW5nKHN0dWJKaXQpOwogICAgICAgICBmYWls
ID0gc3R1YkppdC5qdW1wKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDIsMjIgKzE5
OCwxNSBAQCBzdGF0aWMgdm9pZCBlbWl0UmVzdG9yZVNjcmF0Y2goTWFjcm9Bc3NlCiAgICAgc3Vj
Y2VzcyA9IHN0dWJKaXQuanVtcCgpOwogfQogCi1zdGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0
Y2goTGlua0J1ZmZlciYgcGF0Y2hCdWZmZXIsIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHN1Y2Nlc3MsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhaWwsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXMsIENvZGVMb2NhdGlvbkxhYmVsIHN1
Y2Nlc3NMYWJlbCwgQ29kZUxvY2F0aW9uTGFiZWwgc2xvd0Nhc2VCZWdpbikKK3N0YXRpYyB2b2lk
IGxpbmtSZXN0b3JlUmV1c2VkUmVnaXN0ZXJzKExpbmtCdWZmZXImIHBhdGNoQnVmZmVyLCBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3ImIGFsbG9jYXRvciwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc3Vj
Y2VzcywgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFpbCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
IGZhaWx1cmVDYXNlcywgQ29kZUxvY2F0aW9uTGFiZWwgc3VjY2Vzc0xhYmVsLCBDb2RlTG9jYXRp
b25MYWJlbCBzbG93Q2FzZUxhYmVsKQogewogICAgIHBhdGNoQnVmZmVyLmxpbmsoc3VjY2Vzcywg
c3VjY2Vzc0xhYmVsKTsKLSAgICAgICAgCi0gICAgaWYgKG5lZWRUb1Jlc3RvcmVTY3JhdGNoKSB7
Ci0gICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZmFpbCwgc2xvd0Nhc2VCZWdpbik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gbGluayBmYWlsdXJlIGNhc2VzIGRpcmVjdGx5
IGJhY2sgdG8gbm9ybWFsIHBhdGgKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmVDYXNlcywg
c2xvd0Nhc2VCZWdpbik7CisgICAgcGF0Y2hCdWZmZXIubGluayhhbGxvY2F0b3IuZGlkUmV1c2VS
ZWdpc3RlcnMoKSA/IGZhaWwgOiBmYWlsdXJlQ2FzZXMsIHNsb3dDYXNlTGFiZWwpOwogfQogCi1z
dGF0aWMgdm9pZCBsaW5rUmVzdG9yZVNjcmF0Y2goTGlua0J1ZmZlciYgcGF0Y2hCdWZmZXIsIGJv
b2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgc3VjY2VzcywgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFpbCwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlcykKK3N0YXRpYyB2b2lkIGxpbmtSZXN0
b3JlUmV1c2VkUmVnaXN0ZXJzKExpbmtCdWZmZXImIHBhdGNoQnVmZmVyLCBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3ImIGFsbG9jYXRvciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWlsLCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzKQogewotICAgIGxpbmtSZXN0b3JlU2Ny
YXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZhaWwsIGZh
aWx1cmVDYXNlcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1
YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSkpOworICAg
IGxpbmtSZXN0b3JlUmV1c2VkUmVnaXN0ZXJzKHBhdGNoQnVmZmVyLCBhbGxvY2F0b3IsIHN1Y2Nl
c3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVs
QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lKSwgc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93
Q2FzZSkpOwogfQogCiBzdGF0aWMgdm9pZCBnZW5lcmF0ZUdldEJ5SWRTdHViKApAQCAtMjMyLDIx
ICsyMjEsMjggQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVHZXRCeUlkU3R1YigKICAgICBHUFJSZWcg
cmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC52YWx1ZVRh
Z0dQUik7CiAjZW5kaWYKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVn
PihzdHViSW5mby5wYXRjaC52YWx1ZUdQUik7Ci0gICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBUZW1w
UmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOwot
ICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBzY3JhdGNoR1BSID09IEludmFsaWRHUFJS
ZWc7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW5lZWRUb1Jlc3RvcmVTY3JhdGNoIHx8IHNsb3QuaXND
YWNoZWFibGVWYWx1ZSgpKTsKKworICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0
b3Ioc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICBhbGxvY2F0b3IubG9jayhyZXN1bHRUYWdHUFIpOworI2VuZGlmCisgICAgYWxsb2NhdG9y
LmxvY2socmVzdWx0R1BSKTsKICAgICAKICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdCgmZXhlYy0+
dm0oKSwgZXhlYy0+Y29kZUJsb2NrKCkpOwotICAgIGlmIChuZWVkVG9SZXN0b3JlU2NyYXRjaCkg
ewotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBl
cnM6OnNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQUiwgcmVzdWx0R1BSKTsKLSNlbHNlCi0gICAgICAg
IHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoYmFzZUdQUiwg
cmVzdWx0R1BSLCByZXN1bHRUYWdHUFIpOworCisgICAgaWYgKChiYXNlR1BSID09IHJlc3VsdEdQ
UikKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICB8fCAoYmFzZUdQUiA9PSByZXN1bHRU
YWdHUFIpCiAjZW5kaWYKLSAgICAgICAgc3R1YkppdC5wdXNoVG9TYXZlKHNjcmF0Y2hHUFIpOwot
ICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRjaCA9IHRydWU7CisgICAgICAgICkgeworICAgICAg
ICBHUFJSZWcgbmV3QmFzZUdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsKKyAg
ICAgICAgc3R1YkppdC5tb3ZlKGJhc2VHUFIsIG5ld0Jhc2VHUFIpOworICAgICAgICBiYXNlR1BS
ID0gbmV3QmFzZUdQUjsKICAgICB9Ci0gICAgCisgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7
CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoR1BSKCk7
CisgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKHN0dWJKaXQp
OworCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAKICAg
ICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShzdHViSml0LApAQCAtMzAxLDEz
ICsyOTcsOSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUdldEJ5SWRTdHViKAogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIHN0dWJKaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKG9mZnNldCkpLCBsb2FkZWRWYWx1ZUdQUik7
CiAjZWxzZQotICAgICAgICBHUFJSZWcgY29weU9mU3RvcmFnZUdQUiA9IHN0b3JhZ2VHUFI7Ci0g
ICAgICAgIGlmIChzdG9yYWdlR1BSID09IHJlc3VsdFRhZ0dQUikgewotICAgICAgICAgICAgY29w
eU9mU3RvcmFnZUdQUiA9IGxvYWRlZFZhbHVlR1BSOwotICAgICAgICAgICAgc3R1YkppdC5tb3Zl
KHN0b3JhZ2VHUFIsIGNvcHlPZlN0b3JhZ2VHUFIpOwotICAgICAgICB9CisgICAgICAgIEFTU0VS
VChzdG9yYWdlR1BSICE9IHJlc3VsdFRhZ0dQUik7CiAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKG9m
ZnNldCkgKyBUYWdPZmZzZXQpLCByZXN1bHRUYWdHUFIpOwotICAgICAgICBzdHViSml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjb3B5T2ZTdG9yYWdlR1BSLCBvZmZzZXRSZWxhdGl2
ZVRvQmFzZShvZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIGxvYWRlZFZhbHVlR1BSKTsKKyAgICAg
ICAgc3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgb2Zm
c2V0UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBsb2FkZWRWYWx1ZUdQ
Uik7CiAjZW5kaWYKICAgICB9CiAKQEAgLTM1MCwxMSArMzQyLDEwIEBAIHN0YXRpYyB2b2lkIGdl
bmVyYXRlR2V0QnlJZFN0dWIoCiAgICAgICAgIAogICAgICAgICBub0V4Y2VwdGlvbi5saW5rKCZz
dHViSml0KTsKICAgICB9Ci0gICAgZW1pdFJlc3RvcmVTY3JhdGNoKHN0dWJKaXQsIG5lZWRUb1Jl
c3RvcmVTY3JhdGNoLCBzY3JhdGNoR1BSLCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMpOwot
ICAgIAorICAgIGVtaXRSZXN0b3JlUmV1c2VkUmVnaXN0ZXJzKHN0dWJKaXQsIGFsbG9jYXRvciwg
c3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzKTsKKwogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOwotICAgIAotICAgIGxpbmtSZXN0
b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZh
aWwsIGZhaWx1cmVDYXNlcywgc3VjY2Vzc0xhYmVsLCBzbG93Q2FzZUxhYmVsKTsKKyAgICBsaW5r
UmVzdG9yZVJldXNlZFJlZ2lzdGVycyhwYXRjaEJ1ZmZlciwgYWxsb2NhdG9yLCBzdWNjZXNzLCBm
YWlsLCBmYWlsdXJlQ2FzZXMsIHN1Y2Nlc3NMYWJlbCwgc2xvd0Nhc2VMYWJlbCk7CiAgICAgaWYg
KGlzQWNjZXNzb3IpIHsKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhvcGVyYXRpb25DYWxsLCBv
cGVyYXRpb25GdW5jdGlvbik7CiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoaGFuZGxlckNhbGws
IGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpOwpAQCAtMzg0LDIxICszNzUsMTkgQEAgc3RhdGljIGJv
b2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICBNYWNyb0Fzc2VtYmxlciBz
dHViSml0OwogCiAgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgewotICAgICAgICAg
ICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBUZW1wUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2gudXNl
ZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOwotICAgICAgICAgICAgYm9vbCBuZWVkVG9SZXN0b3Jl
U2NyYXRjaCA9IGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlk
R1BSUmVnKSB7Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgICAgICBzY3JhdGNoR1BS
ID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHJlc3VsdEdQUik7
Ci0jZWxzZQotICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNl
bGVjdFNjcmF0Y2hHUFIoYmFzZUdQUiwgcmVzdWx0R1BSLCByZXN1bHRUYWdHUFIpOworICAgICAg
ICAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihzdHViSW5mby5wYXRjaC51
c2VkUmVnaXN0ZXJzKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgYWxsb2Nh
dG9yLmxvY2socmVzdWx0VGFnR1BSKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIHN0dWJKaXQu
cHVzaFRvU2F2ZShzY3JhdGNoR1BSKTsKLSAgICAgICAgICAgICAgICBuZWVkVG9SZXN0b3JlU2Ny
YXRjaCA9IHRydWU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBhbGxvY2F0b3IubG9jayhy
ZXN1bHRHUFIpOworICAgICAgICAgICAgYWxsb2NhdG9yLmxvY2soYmFzZUdQUik7CisKKyAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gYWxsb2NhdG9yLmFsbG9jYXRlU2NyYXRjaEdQUigp
OworICAgICAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5n
KHN0dWJKaXQpOwogCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVy
ZUNhc2VzOwogCisgICAgICAgICAgICBBU1NFUlQoYmFzZUdQUiAhPSBzY3JhdGNoR1BSKTsKICAg
ICAgICAgICAgIHN0dWJKaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAg
ZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJc0FycmF5KSkp
OwogICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihJbmRleGluZ1NoYXBlTWFzaykpKTsKQEAgLTQxNSwxMiArNDA0LDEwIEBAIHN0YXRpYyBi
b29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGUKICNlbmRpZgogCiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzLCBmYWlsOwotCi0gICAgICAgICAgICBlbWl0UmVz
dG9yZVNjcmF0Y2goc3R1YkppdCwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHNjcmF0Y2hHUFIsIHN1
Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcyk7CisgICAgICAgICAgICBlbWl0UmVzdG9yZVJldXNl
ZFJlZ2lzdGVycyhzdHViSml0LCBhbGxvY2F0b3IsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNl
cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZt
LCAmc3R1YkppdCwgY29kZUJsb2NrKTsKLQotICAgICAgICAgICAgbGlua1Jlc3RvcmVTY3JhdGNo
KHBhdGNoQnVmZmVyLCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc3R1YkluZm8sIHN1Y2Nlc3MsIGZh
aWwsIGZhaWx1cmVDYXNlcyk7CisgICAgICAgICAgICBsaW5rUmVzdG9yZVJldXNlZFJlZ2lzdGVy
cyhwYXRjaEJ1ZmZlciwgYWxsb2NhdG9yLCBzdHViSW5mbywgc3VjY2VzcywgZmFpbCwgZmFpbHVy
ZUNhc2VzKTsKIAogICAgICAgICAgICAgc3R1YkluZm8uc3R1YlJvdXRpbmUgPSBGSU5BTElaRV9D
T0RFX0ZPUl9TVFVCKAogICAgICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBwYXRjaEJ1
ZmZlciwKQEAgLTEyNTQsMTcgKzEyNDEsMTMgQEAgc3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAog
ICAgIHsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJ
bmZvLnBhdGNoLmJhc2VHUFIpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gc3RhdGljX2Nh
c3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC52YWx1ZUdQUik7Ci0gICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gVGVtcFJlZ2lzdGVyU2V0KHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMpLmdl
dEZyZWVHUFIoKTsKLSAgICAgICAgCisgICAgICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBh
bGxvY2F0b3Ioc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyk7CisgICAgICAgIGFsbG9jYXRv
ci5sb2NrKHJlc3VsdEdQUik7CisgICAgICAgIGFsbG9jYXRvci5sb2NrKGJhc2VHUFIpOworICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IGFsbG9jYXRvci5hbGxvY2F0ZVNjcmF0Y2hHUFIoKTsK
KwogICAgICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdCh2bSk7Ci0gICAgICAgIAotICAgICAgICBi
b29sIG5lZWRUb1Jlc3RvcmVTY3JhdGNoOwotICAgICAgICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZh
bGlkR1BSUmVnKSB7Ci0gICAgICAgICAgICBzY3JhdGNoR1BSID0gQXNzZW1ibHlIZWxwZXJzOjpz
ZWxlY3RTY3JhdGNoR1BSKGJhc2VHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBzdHViSml0
LnB1c2hUb1NhdmUoc2NyYXRjaEdQUik7Ci0gICAgICAgICAgICBuZWVkVG9SZXN0b3JlU2NyYXRj
aCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbmVlZFRvUmVzdG9yZVNjcmF0
Y2ggPSBmYWxzZTsKKyAgICAgICAgYWxsb2NhdG9yLnByZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQ
dXNoaW5nKHN0dWJKaXQpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IGZhaWx1cmVDYXNlczsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hTdHJ1
Y3R1cmUoc3R1YkppdCwKQEAgLTEyOTYsMTIgKzEyNzksMTAgQEAgc3RhdGljIGJvb2wgdHJ5UmVw
YXRjaEluKAogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBz
dWNjZXNzLCBmYWlsOwotICAgICAgICAKLSAgICAgICAgZW1pdFJlc3RvcmVTY3JhdGNoKHN0dWJK
aXQsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzY3JhdGNoR1BSLCBzdWNjZXNzLCBmYWlsLCBmYWls
dXJlQ2FzZXMpOworICAgICAgICBlbWl0UmVzdG9yZVJldXNlZFJlZ2lzdGVycyhzdHViSml0LCBh
bGxvY2F0b3IsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcyk7CiAgICAgICAgIAogICAgICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJnN0dWJKaXQsIGV4ZWMtPmNvZGVCbG9jaygp
KTsKLQotICAgICAgICBsaW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3Rv
cmVTY3JhdGNoLCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMsIHN1Y2Nlc3NMYWJlbCwgc2xv
d0Nhc2VMYWJlbCk7CisgICAgICAgIGxpbmtSZXN0b3JlUmV1c2VkUmVnaXN0ZXJzKHBhdGNoQnVm
ZmVyLCBhbGxvY2F0b3IsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3VjY2Vzc0xhYmVs
LCBzbG93Q2FzZUxhYmVsKTsKICAgICAgICAgCiAgICAgICAgIHN0dWJSb3V0aW5lID0gRklOQUxJ
WkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLCBwYXRjaEJ1
ZmZlciwK
</data>
<flag name="review"
          id="251444"
          type_id="1"
          status="-"
          setter="mhahnenberg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227210</attachid>
            <date>2014-03-19 12:38:09 -0700</date>
            <delta_ts>2014-03-19 13:24:20 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>9545</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1OTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE0LTAzLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UkVHUkVTU0lPTihyMTY1NDU5KTogSXQgYnJva2UgMTA5IGpzYyBzdHJlc3MgdGVzdCBvbiBBUk0g
VGh1bWIyIGFuZCBNYWMgMzIgYml0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzAxMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOiBDYW4ndCBkbyBzb21lIG9wdGltaXphdGlvbnMgaWYg
eW91IGRvbid0IGhhdmUgYSBsb3Qgb2YgcmVnaXN0ZXJzLgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZCk6IE1vdmUgc3R1ZmYgYXJvdW5kIGJlZm9yZSBnb2luZyBpbnRvIHRoZSBJ
QyBjb2RlIHRvIGVuc3VyZSB0aGF0IHdlIGdpdmUgdGhlIElDIGNvZGUgdGhlIGludmFyaWFudHMg
aXQgbmVlZHMuIFRoaXMgb25seSBoYXBwZW5zIGluIGNhc2Ugb2YgR2V0QnlJZEZsdXNoLCB3aGVy
ZSB3ZSBhcmUgZm9yY2VkIGludG8gdXNpbmcgd2VpcmQgY29tYmluYXRpb25zIG9mIHJlZ2lzdGVy
cyBiZWNhdXNlIHRoZSByZXN1bHRzIGhhdmUgdG8gYmUgaW4gdDAvdDEuCisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOiBGb3IgYSBub3JtYWwgR2V0QnlJZCwgdGhl
IHJlZ2lzdGVyIGFsbG9jYXRvciBzaG91bGQganVzdCBkbyB0aGUgcmlnaHQgdGhpbmcgc28gbm9i
b2R5IGhhcyB0byBtb3ZlIGFueXRoaW5nIGFyb3VuZC4KKyAgICAgICAgKiBqaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRHZXRCeUlkR2VuZXJhdG9yOjpK
SVRHZXRCeUlkR2VuZXJhdG9yKTogQXNzZXJ0IHRoZSB0aGluZ3Mgd2Ugd2FudC4KKyAgICAgICAg
KiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlR2V0QnlJZFN0dWIpOiBSZW1vdmUgYSBwcmV2aW91
cyBpbmNvbXBsZXRlIGhhY2sgdG8gdHJ5IHRvIHdvcmsgYXJvdW5kIHRoZSBERkcncyBwcm9ibGVt
LgorCiAyMDE0LTAzLTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgTm9ybWFsaXplIHNvbWUgb2YgdGhlIG9sZGVyIEpTQyBvcHRpb25zCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDE2NTkwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxOCw3ICs0MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1
bGF0ZVN0cmluZygpICYmIEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDcpIHsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkgJiYgbm9k
ZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpICYmIChHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyA+PSA3IHx8IGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSkgewogICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTQ0OCwxMSArNDQ4LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxOb3RTdHJpbmdWYXJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkgJiYgKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJz
ID49IDggfHwgaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpKSB7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxk
U3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS0+c2hv
dWxkU3BlY3VsYXRlU3RyaW5nKCkgJiYgKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDgg
fHwgaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRn
ZTxTdHJpbmdVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTY1OTA0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY5LDggKzE2OSwyNCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShF
ZGdlIGVkCiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNl
UGF5bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIs
IHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFy
Z2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxNb2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZCgKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlVGFn
R1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkR1BSLAorICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01vZGUgc3BpbGxN
b2RlKQogeworICAgIC8vIFRoaXMgaXMgYSBoYWNreSBmaXggZm9yIHdoZW4gdGhlIHJlZ2lzdGVy
IGFsbG9jYXRvciBkZWNpZGVzIHRvIGFsaWFzIHRoZSBiYXNlIHBheWxvYWQgd2l0aCB0aGUgcmVz
dWx0IHRhZy4gVGhpcyBvbmx5IGhhcHBlbnMKKyAgICAvLyBpbiB0aGUgY2FzZSBvZiBHZXRCeUlk
Rmx1c2gsIHdoaWNoIGhhcyBhIHJlbGF0aXZlbHkgZXhwZW5zaXZlIHJlZ2lzdGVyIGFsbG9jYXRp
b24gc3RvcnkgYWxyZWFkeSBzbyB3ZSBwcm9iYWJseSBkb24ndCBuZWVkIHRvCisgICAgLy8gdHJp
cCBvdmVyIG9uZSBtb3ZlIGluc3RydWN0aW9uLgorICAgIGlmIChiYXNlUGF5bG9hZEdQUiA9PSBy
ZXN1bHRUYWdHUFIpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVBheWxvYWRHUFIgIT0g
cmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIAorICAgICAgICBpZiAoYmFzZVRhZ0dQUk9yTm9u
ZSA9PSByZXN1bHRQYXlsb2FkR1BSKSB7CisgICAgICAgICAgICBtX2ppdC5zd2FwKGJhc2VQYXls
b2FkR1BSLCBiYXNlVGFnR1BST3JOb25lKTsKKyAgICAgICAgICAgIGJhc2VUYWdHUFJPck5vbmUg
PSByZXN1bHRUYWdHUFI7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9qaXQubW92ZShi
YXNlUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIGJhc2VQYXlsb2FkR1BS
ID0gcmVzdWx0UGF5bG9hZEdQUjsKKyAgICB9CisgICAgCiAgICAgSklUR2V0QnlJZEdlbmVyYXRv
ciBnZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCB1c2VkUmVnaXN0
ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2Fk
R1BSKSwKQEAgLTM2NTksOCArMzY3NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsK
ICAgICAgICAgY2FzZSBDZWxsVXNlOiB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHRUYWcodGhpcywgUmV1c2UsIGJhc2UpOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdFBheWxvYWQodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRo
aXMpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcywgUmV1c2Us
IGJhc2UpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigp
OwpAQCAtMzY3Niw4ICszNjkyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcywgUmV1c2UsIGJhc2UsIFRhZ1dvcmQpOwotICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CisgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdFBheWxvYWQodGhpcywgUmV1c2UsIGJhc2UsIFRhZ1dvcmQpOwogICAgICAgICAKICAgICAg
ICAgICAgIEdQUlJlZyBiYXNlVGFnR1BSID0gYmFzZS50YWdHUFIoKTsKICAgICAgICAgICAgIEdQ
UlJlZyBiYXNlUGF5bG9hZEdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwpAQCAtMzcxMywxMCArMzcy
OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKIAotICAgICAg
ICAgICAgR1BSUmVzdWx0IHJlc3VsdFRhZyh0aGlzKTsKLSAgICAgICAgICAgIEdQUlJlc3VsdDIg
cmVzdWx0UGF5bG9hZCh0aGlzKTsKLSAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBy
ZXN1bHRUYWcuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlz
KTsKKyAgICAgICAgICAgIEdQUlJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAgICAg
R1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAgICAg
ICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKIAogICAgICAgICAgICAg
YmFzZS51c2UoKTsKICAgICAgICAgICAgIApAQCAtMzczMywxMCArMzc0OSwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgYmFz
ZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWRH
UFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKIAotICAgICAgICAgICAgR1BSUmVzdWx0IHJlc3VsdFRh
Zyh0aGlzKTsKLSAgICAgICAgICAgIEdQUlJlc3VsdDIgcmVzdWx0UGF5bG9hZCh0aGlzKTsKLSAg
ICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAg
ICAgICBHUFJSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKKyAgICAgICAgICAgIEdQUlJlc3Vs
dDIgcmVzdWx0VGFnKHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIg
PSByZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9
IHJlc3VsdFRhZy5ncHIoKTsKIAogICAgICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTY1OTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2
ICsxMTAsMTQgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQwogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBidXR0ZXJmbHkpOwogfQogCitKSVRHZXRCeUlkR2VuZXJh
dG9yOjpKSVRHZXRCeUlkR2VuZXJhdG9yKAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAg
IEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBTcGlsbFJlZ2lzdGVyc01vZGUg
c3BpbGxNb2RlKQorICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCBzcGlsbE1vZGUpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQoYmFzZS5wYXlsb2FkR1BSKCkgIT0gdmFsdWUudGFnR1BSKCkpOworfQorCiB2b2lkIEpJ
VEdldEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkK
IHsKICAgICBnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKGppdCwgbV92YWx1ZS5wYXlsb2FkR1BSKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTY1OTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMSAr
OTUsOCBAQCBwdWJsaWM6CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9k
ZSkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCB1c2VkUmVn
aXN0ZXJzLCBiYXNlLCB2YWx1ZSwgc3BpbGxNb2RlKQotICAgIHsKLSAgICB9CisgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSwgU3BpbGxSZWdpc3RlcnNNb2RlIHNwaWxsTW9kZSk7CiAgICAgCiAgICAgdm9pZCBn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNjU5MDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsMTMgKzMwMSw4
IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlR2V0QnlJZFN0dWIoCiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgc3R1YkppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQ
Uiwgb2Zmc2V0UmVsYXRpdmVUb0Jhc2Uob2Zmc2V0KSksIGxvYWRlZFZhbHVlR1BSKTsKICNlbHNl
Ci0gICAgICAgIEdQUlJlZyBjb3B5T2ZTdG9yYWdlR1BSID0gc3RvcmFnZUdQUjsKLSAgICAgICAg
aWYgKHN0b3JhZ2VHUFIgPT0gcmVzdWx0VGFnR1BSKSB7Ci0gICAgICAgICAgICBjb3B5T2ZTdG9y
YWdlR1BSID0gbG9hZGVkVmFsdWVHUFI7Ci0gICAgICAgICAgICBzdHViSml0Lm1vdmUoc3RvcmFn
ZUdQUiwgY29weU9mU3RvcmFnZUdQUik7Ci0gICAgICAgIH0KICAgICAgICAgc3R1YkppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgb2Zmc2V0UmVsYXRpdmVUb0Jh
c2Uob2Zmc2V0KSArIFRhZ09mZnNldCksIHJlc3VsdFRhZ0dQUik7Ci0gICAgICAgIHN0dWJKaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNvcHlPZlN0b3JhZ2VHUFIsIG9mZnNldFJl
bGF0aXZlVG9CYXNlKG9mZnNldCkgKyBQYXlsb2FkT2Zmc2V0KSwgbG9hZGVkVmFsdWVHUFIpOwor
ICAgICAgICBzdHViSml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBvZmZzZXRSZWxhdGl2ZVRvQmFzZShvZmZzZXQpICsgUGF5bG9hZE9mZnNldCksIGxvYWRlZFZh
bHVlR1BSKTsKICNlbmRpZgogICAgIH0KIAo=
</data>
<flag name="review"
          id="251446"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>