<?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>71920</bug_id>
          
          <creation_ts>2011-11-09 08:13:43 -0800</creation_ts>
          <short_desc>[chromium] CCThreadProxy::finishAllRendering hangs if !visible</short_desc>
          <delta_ts>2011-11-11 17:52:49 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72102</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Iain Merrick">husky</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>husky</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>498977</commentid>
    <comment_count>0</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 08:13:43 -0800</bug_when>
    <thetext>[chromium] CCThreadProxy::finishAllRendering hangs if !visible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498979</commentid>
    <comment_count>1</comment_count>
      <attachid>114286</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 08:14:27 -0800</bug_when>
    <thetext>Created attachment 114286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498981</commentid>
    <comment_count>2</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 08:17:12 -0800</bug_when>
    <thetext>Still needs a unit test or layout test, so not ready for review.

Would still appreciate feedback on whether there&apos;s a cleaner fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499080</commentid>
    <comment_count>3</comment_count>
      <attachid>114286</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-09 09:41:44 -0800</bug_when>
    <thetext>Comment on attachment 114286
Patch

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

This means that there&apos;s a hang in compositeAndReadback as well. That&apos;s the harder one to fix... what about making the scheduler have a setRedrawRequired to fix both issues?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:315
&gt; +        if (!m_schedulerOnImplThread-&gt;redrawPending() || !m_schedulerOnImplThread-&gt;visible()) {

Why null-check the completion event here if you just assigned to it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499082</commentid>
    <comment_count>4</comment_count>
      <attachid>114286</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 09:47:25 -0800</bug_when>
    <thetext>Comment on attachment 114286
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:315
&gt;&gt; +        if (!m_schedulerOnImplThread-&gt;redrawPending() || !m_schedulerOnImplThread-&gt;visible()) {
&gt; 
&gt; Why null-check the completion event here if you just assigned to it?

Because setNeedsRedraw() will prod the state machine, and (I think) that can run the callback and clear out the completion event.

At first I thought the bug was just that lines 310 and 311 were in the wrong order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499086</commentid>
    <comment_count>5</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-09 09:51:21 -0800</bug_when>
    <thetext>&gt; Because setNeedsRedraw() will prod the state machine, and (I think) that can run the callback and clear out the completion event.

Great point. You migth want to check the other cases where I stash a completion event away for a similar mistake... compositeAndReadback does this too, I think.

Any thoughts on the overall switching approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499109</commentid>
    <comment_count>6</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 10:10:37 -0800</bug_when>
    <thetext>Summarising IM discussion: let&apos;s add a method to CCScheduler to force a redraw, even if the compositor isn&apos;t visible. Test that via the existing CCSchedulerStateMachineTest.

I like it, I&apos;ll update this patch along those lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499129</commentid>
    <comment_count>7</comment_count>
      <attachid>114311</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 10:42:07 -0800</bug_when>
    <thetext>Created attachment 114311
Added CCScheduler::forceRedraw()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499131</commentid>
    <comment_count>8</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 10:43:24 -0800</bug_when>
    <thetext>Cheekily copied existing test.

Now I&apos;m wondering whether we need to wait for vsync in this scenario. Could there be a case where we&apos;re hidden, and stop getting vsyncs, but still want to do a final draw?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499225</commentid>
    <comment_count>9</comment_count>
      <attachid>114311</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-09 12:04:05 -0800</bug_when>
    <thetext>Comment on attachment 114311
Added CCScheduler::forceRedraw()

For the readback case waiting for vsync doesn&apos;t seem to make much sense - we should just draw as soon as we get the request. I can&apos;t think of any other cases where we would want to draw when !visible, so I&apos;d say that you really should have forceRedraw ignore vsync completely.  Nat?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499351</commentid>
    <comment_count>10</comment_count>
      <attachid>114311</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-09 14:22:18 -0800</bug_when>
    <thetext>Comment on attachment 114311
Added CCScheduler::forceRedraw()

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

s/forceRedraw/setNeedsForcedRedraw/ to be in keeping with naming in the class, and also not imply that it will happen immediately.

I&apos;m fine waiting for vsync. As written, its cleaner this way and this is far from a fast path.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.h:67
&gt; +    // As setNeedsRedraw(), but ensures the draw will definitely happen even if we are not visible.

s/definitely //? :) Though, otoh, I like how emphatic it is! :)

&gt; Source/WebKit/chromium/tests/CCSchedulerStateMachineTest.cpp:169
&gt; +// As TestNextActionDrawsOnVSync, but with setVisible(false) and forceRedraw().

Fold this test into TestNextActionDrawsOnVsync but add an inner loop to each that considers both forced and non-forced draws? Less test-maintenance burden that way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499840</commentid>
    <comment_count>11</comment_count>
      <attachid>114481</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-10 06:10:06 -0800</bug_when>
    <thetext>Created attachment 114481
Renamed to setNeedsForcedRedraw, cleaned up test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500075</commentid>
    <comment_count>12</comment_count>
      <attachid>114481</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-10 11:34:14 -0800</bug_when>
    <thetext>Comment on attachment 114481
Renamed to setNeedsForcedRedraw, cleaned up test

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

I don&apos;t see any tests that verify that if visible = false and setNeedsForcedRedraw = true then we actually draw, which seems like the most valuable thing to test since that&apos;s the new functionality for this patch.  Other than the tests, though, this looks great.

&gt; Source/WebKit/chromium/tests/CCSchedulerStateMachineTest.cpp:129
&gt; +        // We should get exactly the same results in three scenarios:
&gt; +        //  0. visible=true, setNeedsRedraw=true
&gt; +        //  1. visible=true, setNeedsForcedRedraw=true
&gt; +        //  2. visible=false, setNeedsForcedRedraw=true
&gt; +        // The final case is covered by TestNoCommitStatesRedrawWhenInvisible.
&gt; +        for (size_t j = 0; j &lt; 3; ++j) {
&gt; +            state.setNeedsRedraw(true);
&gt; +            state.setNeedsForcedRedraw(j &gt;= 1);
&gt; +            state.setVisible(j &lt;= 1);

I like trying to hit all the states but this is pretty hard to read.  A better way might be to have an array of structs each of which has the desired value for visible/setNeedsRedraw/setNeedsForcedRedraw and then iterate through that array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500273</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-10 14:16:41 -0800</bug_when>
    <thetext>Actually no - the tests do cover that state.

I have a minor cleanup to the tests then I think this is good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500275</commentid>
    <comment_count>14</comment_count>
      <attachid>114571</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-10 14:18:04 -0800</bug_when>
    <thetext>Created attachment 114571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500353</commentid>
    <comment_count>15</comment_count>
      <attachid>114588</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-10 15:43:53 -0800</bug_when>
    <thetext>Created attachment 114588
makes layout tests not time out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500525</commentid>
    <comment_count>16</comment_count>
      <attachid>114588</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-10 22:13:16 -0800</bug_when>
    <thetext>Comment on attachment 114588
makes layout tests not time out

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:74
&gt; +    m_stateMachine.setInsideVSync(true);

Ew ew ew. We&apos;re blatantly NOT inside vsync. Can we keep this entirely inside the state machine? The scheduler is supposed to be largely a passthrough...

&gt; Source/WebKit/chromium/tests/CCSchedulerStateMachineTest.cpp:122
&gt; +

Hot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500962</commentid>
    <comment_count>17</comment_count>
      <attachid>114743</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-11 11:29:22 -0800</bug_when>
    <thetext>Created attachment 114743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500963</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-11 11:29:52 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 114588 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114588&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:74
&gt; &gt; +    m_stateMachine.setInsideVSync(true);
&gt; 
&gt; Ew ew ew. We&apos;re blatantly NOT inside vsync. Can we keep this entirely inside the state machine? The scheduler is supposed to be largely a passthrough...
&gt; 

Agree, I made forced redraw orthogonal to vsync and visibility and moved all the logic into the state machine in the most recent patch. PTAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501248</commentid>
    <comment_count>19</comment_count>
      <attachid>114743</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-11 17:15:30 -0800</bug_when>
    <thetext>Comment on attachment 114743
Patch

lgtm, nice factoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501274</commentid>
    <comment_count>20</comment_count>
      <attachid>114743</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 17:52:42 -0800</bug_when>
    <thetext>Comment on attachment 114743
Patch

Clearing flags on attachment: 114743

Committed r100054: &lt;http://trac.webkit.org/changeset/100054&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501275</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 17:52:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114286</attachid>
            <date>2011-11-09 08:14:27 -0800</date>
            <delta_ts>2011-11-09 10:41:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71920-20111109161425.patch</filename>
            <type>text/plain</type>
            <size>3227</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NzIxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTEtMDkgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVhZFBy
b3h5OjpmaW5pc2hBbGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnZpc2libGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dmlzaWJsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJl
YWQpOgorCiAyMDExLTExLTA5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lh
LmNvbT4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQsIGFkZGluZyBtaXNzaW5nIGZpbGVzIHRv
IHRoZSBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAkocmV2aXNpb24gOTk3MTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFN3YXBCdWZmZXJzQ29tcGxldGUoKTsKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzQWJvcnQoKTsK
IAorICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLnZpc2li
bGUoKTsgfQogICAgIGJvb2wgY29tbWl0UGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVN
YWNoaW5lLmNvbW1pdFBlbmRpbmcoKTsgfQogICAgIGJvb2wgcmVkcmF3UGVuZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLnJlZHJhd1BlbmRpbmcoKTsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgJKHJldmlzaW9uIDk5NzE4KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6
CiAgICAgICAgIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXLAogICAgIH07CiAK
KyAgICBib29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KKwogICAgIGJv
b2wgY29tbWl0UGVuZGluZygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9jb21taXRT
dGF0ZSAhPSBDT01NSVRfU1RBVEVfSURMRTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCShyZXZpc2lvbiA5OTcxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsOCAr
MzA3LDE3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT24KICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFk
IiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1f
ZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKLSAgICBtX3Nj
aGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNSZWRyYXcoKTsKICAgICBtX2ZpbmlzaEFsbFJl
bmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CisKKyAgICBt
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNSZWRyYXcoKTsKKworICAgIGlmIChtX2Zp
bmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCkgeworICAgICAgICBp
ZiAoIW1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5yZWRyYXdQZW5kaW5nKCkgfHwgIW1fc2NoZWR1
bGVyT25JbXBsVGhyZWFkLT52aXNpYmxlKCkpIHsKKyAgICAgICAgICAgIC8vIFdlJ3JlIG5vdCBn
b2luZyB0byBnZXQgYSByZWRyYXcsIHNvIHdlJ3JlIGVmZmVjdGl2ZWx5IGZpbmlzaGVkLgorICAg
ICAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQt
PnNpZ25hbCgpOworICAgICAgICAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZl
bnRPbkltcGxUaHJlYWQgPSAwOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIENDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114311</attachid>
            <date>2011-11-09 10:42:07 -0800</date>
            <delta_ts>2011-11-10 06:09:58 -0800</delta_ts>
            <desc>Added CCScheduler::forceRedraw()</desc>
            <filename>bug-71920-20111109184205.patch</filename>
            <type>text/plain</type>
            <size>11085</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NzM0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTEtMDkgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVhZFBy
b3h5OjpmaW5pc2hBbGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6
Zm9yY2VSZWRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Zm9yY2VSZWRyYXcpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5n
T25JbXBsVGhyZWFkKToKKwogMjAxMS0xMS0wOSAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgU2hyaW5rIEhUTUxDb2xsZWN0aW9uLgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmNwcAkocmV2aXNpb24gOTk3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDYgKzY4LDEyIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzUmVkcmF3KCkKICAgICBw
cm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjpmb3JjZVJl
ZHJhdygpCit7CisgICAgbV9zdGF0ZU1hY2hpbmUuZm9yY2VSZWRyYXcoKTsKKyAgICBwcm9jZXNz
U2NoZWR1bGVkQWN0aW9ucygpOworfQorCiB2b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29t
cGxldGUoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZUNvbXBs
ZXRlIiwgdGhpcywgMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgJKHJldmlzaW9uIDk5NzMz
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXROZWVkc0NvbW1pdCgpOwogICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIAorICAgIC8v
IEFzIHNldE5lZWRzUmVkcmF3KCksIGJ1dCBlbnN1cmVzIHRoZSBkcmF3IHdpbGwgZGVmaW5pdGVs
eSBoYXBwZW4gZXZlbiBpZiB3ZSBhcmUgbm90IHZpc2libGUuCisgICAgdm9pZCBmb3JjZVJlZHJh
dygpOworCiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGUoKTsKIAogICAgIHZvaWQgc2V0TWF4
RnJhbWVzUGVuZGluZyhpbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmNwcAkocmV2aXNpb24gOTk3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKCkKICAgICA6IG1fY29t
bWl0U3RhdGUoQ09NTUlUX1NUQVRFX0lETEUpCiAgICAgLCBtX25lZWRzUmVkcmF3KGZhbHNlKQor
ICAgICwgbV9mb3JjZVJlZHJhdyhmYWxzZSkKICAgICAsIG1fbmVlZHNDb21taXQoZmFsc2UpCiAg
ICAgLCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKQogICAgICwgbV9pbnNpZGVW
U3luYyhmYWxzZSkKQEAgLTQwLDE5ICs0MSwxOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QWN0aW9uIENDU2NoZWR1CiB7CiAgICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7CiAgICAgY2Fz
ZSBDT01NSVRfU1RBVEVfSURMRToKLSAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNp
ZGVWU3luYyAmJiBtX3Zpc2libGUpCisgICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIG1faW5z
aWRlVlN5bmMgJiYgKG1fdmlzaWJsZSB8fCBtX2ZvcmNlUmVkcmF3KSkKICAgICAgICAgICAgIHJl
dHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgaWYgKG1fbmVlZHNDb21taXQgJiYgbV92aXNpYmxl
KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAgcmV0dXJu
IEFDVElPTl9OT05FOwogCiAgICAgY2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M6
Ci0gICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgbV92aXNpYmxl
KQorICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIChtX3Zpc2li
bGUgfHwgbV9mb3JjZVJlZHJhdykpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAg
ICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUzoKLSAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3lu
YyAmJiBtX3Zpc2libGUpCisgICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5
bmMgJiYgKG1fdmlzaWJsZSB8fCBtX2ZvcmNlUmVkcmF3KSkKICAgICAgICAgICAgIHJldHVybiBB
Q1RJT05fRFJBVzsKICAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKQog
ICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM7CkBA
IC02Miw3ICs2Myw3IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHUK
ICAgICAgICAgcmV0dXJuIEFDVElPTl9DT01NSVQ7CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9X
QUlUSU5HX0ZPUl9GSVJTVF9EUkFXOgotICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAmJiBtX2lu
c2lkZVZTeW5jICYmIG1fdmlzaWJsZSkKKyAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9p
bnNpZGVWU3luYyAmJiAobV92aXNpYmxlIHx8IG1fZm9yY2VSZWRyYXcpKQogICAgICAgICAgICAg
cmV0dXJuIEFDVElPTl9EUkFXOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAgICAgfQpA
QCAtOTcsNiArOTgsNyBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0
CiAKICAgICBjYXNlIEFDVElPTl9EUkFXOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFsc2U7
CisgICAgICAgIG1fZm9yY2VSZWRyYXcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fY29tbWl0U3Rh
dGUgPT0gQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcpIHsKICAgICAgICAgICAg
IEFTU0VSVChtX25lZWRzQ29tbWl0KTsKICAgICAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01N
SVRfU1RBVEVfSURMRTsKQEAgLTEyMCw2ICsxMjIsMTIgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6c2V0TmVlZHNSZQogICAgIG1fbmVlZHNSZWRyYXcgPSB0cnVlOwogfQogCit2b2lk
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpmb3JjZVJlZHJhdygpCit7CisgICAgbV9uZWVkc1Jl
ZHJhdyA9IHRydWU7CisgICAgbV9mb3JjZVJlZHJhdyA9IHRydWU7Cit9CisKIHZvaWQgQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRzQ29tbWl0KCkKIHsKICAgICBtX25lZWRzQ29tbWl0
ID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
aAkocmV2aXNpb24gOTk3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw2ICs3OCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gb3IgdGhlIHNjcmVlbiBiZWluZyBkYW1hZ2Vk
IGFuZCBzaW1wbHkgbmVlZGluZyByZWRpc3BsYXkuCiAgICAgdm9pZCBzZXROZWVkc1JlZHJhdygp
OwogCisgICAgLy8gQXMgc2V0TmVlZHNSZWRyYXcoKSwgYnV0IGVuc3VyZXMgdGhlIGRyYXcgd2ls
bCBkZWZpbml0ZWx5IGhhcHBlbiBldmVuIGlmCisgICAgLy8gd2UgYXJlIG5vdCB2aXNpYmxlLgor
ICAgIHZvaWQgZm9yY2VSZWRyYXcoKTsKKwogICAgIC8vIEluZGljYXRlcyB0aGF0IGEgbmV3IGNv
bW1pdCBmbG93IG5lZWRzIHRvIGJlIHBlcmZvcm1lZCwgZWl0aGVyIHRvIHB1bGwKICAgICAvLyB1
cGRhdGVzIGZyb20gdGhlIG1haW4gdGhyZWFkIHRvIHRoZSBpbXBsLCBvciB0byBwdXNoIGRlbHRh
cyBmcm9tIHRoZSBpbXBsCiAgICAgLy8gdGhyZWFkIHRvIG1haW4uCkBAIC05Niw2ICsxMDAsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgQ29tbWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKIAogICAgIGJvb2wg
bV9uZWVkc1JlZHJhdzsKKyAgICBib29sIG1fZm9yY2VSZWRyYXc7CiAgICAgYm9vbCBtX25lZWRz
Q29tbWl0OwogICAgIGJvb2wgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsKICAgICBib29s
IG1faW5zaWRlVlN5bmM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAkocmV2aXNp
b24gOTk3MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFJlYWRiYWNrT25JbXAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCA9IHJlcXVlc3Q7Ci0gICAg
bV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzUmVkcmF3KCk7CisgICAgbV9zY2hlZHVs
ZXJPbkltcGxUaHJlYWQtPmZvcmNlUmVkcmF3KCk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEKiBD
Q1RocmVhZFByb3h5Ojpjb250ZXh0KCkKQEAgLTMwNyw4ICszMDcsOSBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uCiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VS
VChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBs
ZXRpb25FdmVudE9uSW1wbFRocmVhZCk7Ci0gICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNl
dE5lZWRzUmVkcmF3KCk7CiAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOworCisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmZvcmNlUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
QmVnaW5GcmFtZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTk3
MzQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDExLTExLTA5ICBJYWluIE1lcnJpY2sgIDxodXNreUBnb29nbGUu
Y29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVy
aW5nIGhhbmdzIGlmICF2aXNpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTkyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDExLTExLTA5ICBIZW5yaWsgR3J1bmVsbCAgPGdy
dW5lbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZGluZyBtaXNzaW5nIGltcGxlbWVudGF0
aW9uIG9mIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6bGFiZWwoKS4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdC5jcHAJKHJldmlzaW9uIDk5NzMzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjYsNiArMTY2LDc0IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
TmUKICAgICB9CiB9CiAKKy8vIEFzIFRlc3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jLCBidXQgd2l0
aCBzZXRWaXNpYmxlKGZhbHNlKSBhbmQgZm9yY2VSZWRyYXcoKS4KK1RFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0Rm9yY2VSZWRyYXdEcmF3c09uVnN5bmNXaGVuSW52aXNpYmxl
KQoreworICAgIC8vIFdoZW4gbm90IG9uIHZzeW5jLCBkb24ndCBkcmF3LgorICAgIHNpemVfdCBu
dW1Db21taXRTdGF0ZXMgPSBzaXplb2YoYWxsQ29tbWl0U3RhdGVzKSAvIHNpemVvZihDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q29tbWl0U3RhdGUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtQ29tbWl0U3RhdGVzOyArK2kpIHsKKyAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwor
ICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShhbGxDb21taXRTdGF0ZXNbaV0pOworICAgICAg
ICBzdGF0ZS5mb3JjZVJlZHJhdygpOworICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKGZhbHNlKTsK
KyAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworCisgICAgICAgIC8vIENhc2Ug
MTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCisg
ICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKKyAgICAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmc9dHJ1ZS4KKyAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAg
ICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgRVhQ
RUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFj
dGlvbigpKTsKKworICAgICAgICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCisgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRy
dWUpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7
CisgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgLy8gQ2FzZSA0OiBuZWVkc0NvbW1pdD10
cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCisgICAgICAgIHN0YXRlLnNldE5l
ZWRzQ29tbWl0KHRydWUpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZyh0cnVlKTsKKyAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICB9CisKKyAgICAvLyBXaGVuIG9u
IHZzeW5jLCB5b3Ugc2hvdWxkIGFsd2F5cyBkcmF3LiBFeHBlY3QgaWYgeW91J3JlIHJlYWR5IHRv
IGNvbW1pdCwgaW4gd2hpY2ggY2FzZSBjb21taXQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1Db21taXRTdGF0ZXM7ICsraSkgeworICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7Cisg
ICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENvbW1pdFN0YXRlc1tpXSk7CisgICAgICAg
IHN0YXRlLmZvcmNlUmVkcmF3KCk7CisgICAgICAgIHN0YXRlLnNldFZpc2libGUoZmFsc2UpOwor
ICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICAgICAgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFjdGlvbiBleHBlY3RlZEFjdGlvbjsKKyAgICAgICAgaWYgKGFsbENvbW1p
dFN0YXRlc1tpXSAhPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZ
X1RPX0NPTU1JVCkKKyAgICAgICAgICAgIGV4cGVjdGVkQWN0aW9uID0gQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXOworICAgICAgICBlbHNlCisgICAgICAgICAgICBleHBlY3Rl
ZEFjdGlvbiA9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUOworCisgICAg
ICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmc9ZmFsc2UuCisgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKKyAgICAgICAg
c3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgLy8g
Q2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVl
LgorICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CisgICAgICAgIHN0YXRlLnNl
dFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOworICAgICAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgLy8gQ2FzZSAzOiBu
ZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgorICAgICAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rp
b24sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgLy8gQ2FzZSA0OiBuZWVkc0NvbW1p
dD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCisgICAgICAgIHN0YXRlLnNl
dE5lZWRzQ29tbWl0KHRydWUpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyh0cnVlKTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIH0KK30KKwogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3ROb0NvbW1pdFN0YXRlc1JlZHJhd1doZW5JbnZpc2libGUpCiB7CiAgICAgLy8gSWYg
bm90IHZpc2libGUsIG5ldmVyIHJlZHJhdy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114481</attachid>
            <date>2011-11-10 06:10:06 -0800</date>
            <delta_ts>2011-11-10 14:17:59 -0800</delta_ts>
            <desc>Renamed to setNeedsForcedRedraw, cleaned up test</desc>
            <filename>bug-71920-20111110141004.patch</filename>
            <type>text/plain</type>
            <size>17348</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODMzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTEtMTAgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVhZFBy
b3h5OjpmaW5pc2hBbGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6
c2V0TmVlZHNGb3JjZWRSZWRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNGb3JjZWRSZWRyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZXF1ZXN0
UmVhZGJhY2tPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKToKKwogMjAxMS0xMS0xMCAgTmlrb2xhcyBa
aW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZW1vdmUgdmlydHVh
bCB0b1BhdGhEYXRhKCkgbWV0aG9kIGZyb20gYWxsIGdyYXBoaWNzIGVsZW1lbnRzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiA5OTg0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsMTIgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6c2V0TmVlZHNSZWRyYXco
KQogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXI6
OnNldE5lZWRzRm9yY2VkUmVkcmF3KCkKK3sKKyAgICBtX3N0YXRlTWFjaGluZS5zZXROZWVkc0Zv
cmNlZFJlZHJhdygpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQg
Q0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkND
U2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUiLCB0aGlzLCAwKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaAkocmV2aXNpb24gOTk4NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2
ICs2NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCk7CiAgICAgdm9pZCBz
ZXROZWVkc1JlZHJhdygpOwogCisgICAgLy8gQXMgc2V0TmVlZHNSZWRyYXcoKSwgYnV0IGVuc3Vy
ZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBldmVuIGlmIHdlIGFyZSBub3Qgdmlz
aWJsZS4KKyAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CisKICAgICB2b2lkIGJlZ2lu
RnJhbWVDb21wbGV0ZSgpOwogCiAgICAgdm9pZCBzZXRNYXhGcmFtZXNQZW5kaW5nKGludCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCShyZXZp
c2lvbiA5OTg0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgIDogbV9jb21taXRTdGF0ZShDT01NSVRfU1RBVEVf
SURMRSkKICAgICAsIG1fbmVlZHNSZWRyYXcoZmFsc2UpCisgICAgLCBtX25lZWRzRm9yY2VkUmVk
cmF3KGZhbHNlKQogICAgICwgbV9uZWVkc0NvbW1pdChmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNlKQpAQCAt
NDAsMTkgKzQxLDE5IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHUK
IHsKICAgICBzd2l0Y2ggKG1fY29tbWl0U3RhdGUpIHsKICAgICBjYXNlIENPTU1JVF9TVEFURV9J
RExFOgotICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIG1fdmlz
aWJsZSkKKyAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3luYyAmJiAobV92
aXNpYmxlIHx8IG1fbmVlZHNGb3JjZWRSZWRyYXcpKQogICAgICAgICAgICAgcmV0dXJuIEFDVElP
Tl9EUkFXOwogICAgICAgICBpZiAobV9uZWVkc0NvbW1pdCAmJiBtX3Zpc2libGUpCiAgICAgICAg
ICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05P
TkU7CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUzoKLSAgICAgICAg
aWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3luYyAmJiBtX3Zpc2libGUpCisgICAgICAg
IGlmIChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgKG1fdmlzaWJsZSB8fCBtX25l
ZWRzRm9yY2VkUmVkcmF3KSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAg
ICAgcmV0dXJuIEFDVElPTl9OT05FOwogCiAgICAgY2FzZSBDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTOgotICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYm
IG1fdmlzaWJsZSkKKyAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3luYyAm
JiAobV92aXNpYmxlIHx8IG1fbmVlZHNGb3JjZWRSZWRyYXcpKQogICAgICAgICAgICAgcmV0dXJu
IEFDVElPTl9EUkFXOwogICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcp
CiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsK
QEAgLTYyLDcgKzYzLDcgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVk
dQogICAgICAgICByZXR1cm4gQUNUSU9OX0NPTU1JVDsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRF
X1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVc6Ci0gICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIG1f
aW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlKQorICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAmJiBt
X2luc2lkZVZTeW5jICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZFJlZHJhdykpCiAgICAg
ICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsK
ICAgICB9CkBAIC05Nyw2ICs5OCw3IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVw
ZGF0ZVN0YXQKIAogICAgIGNhc2UgQUNUSU9OX0RSQVc6CiAgICAgICAgIG1fbmVlZHNSZWRyYXcg
PSBmYWxzZTsKKyAgICAgICAgbV9uZWVkc0ZvcmNlZFJlZHJhdyA9IGZhbHNlOwogICAgICAgICBp
ZiAobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVykg
ewogICAgICAgICAgICAgQVNTRVJUKG1fbmVlZHNDb21taXQpOwogICAgICAgICAgICAgbV9jb21t
aXRTdGF0ZSA9IENPTU1JVF9TVEFURV9JRExFOwpAQCAtMTIwLDYgKzEyMiwxMiBAQCB2b2lkIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc1JlCiAgICAgbV9uZWVkc1JlZHJhdyA9IHRy
dWU7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRzRm9yY2VkUmVk
cmF3KCkKK3sKKyAgICBtX25lZWRzUmVkcmF3ID0gdHJ1ZTsKKyAgICBtX25lZWRzRm9yY2VkUmVk
cmF3ID0gdHJ1ZTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHND
b21taXQoKQogewogICAgIG1fbmVlZHNDb21taXQgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCShyZXZpc2lvbiA5OTg0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDEwIEBAIHB1YmxpYzoKICAgICAv
LyBvciB0aGUgc2NyZWVuIGJlaW5nIGRhbWFnZWQgYW5kIHNpbXBseSBuZWVkaW5nIHJlZGlzcGxh
eS4KICAgICB2b2lkIHNldE5lZWRzUmVkcmF3KCk7CiAKKyAgICAvLyBBcyBzZXROZWVkc1JlZHJh
dygpLCBidXQgZW5zdXJlcyB0aGUgZHJhdyB3aWxsIGRlZmluaXRlbHkgaGFwcGVuIGV2ZW4gaWYK
KyAgICAvLyB3ZSBhcmUgbm90IHZpc2libGUuCisgICAgdm9pZCBzZXROZWVkc0ZvcmNlZFJlZHJh
dygpOworCiAgICAgLy8gSW5kaWNhdGVzIHRoYXQgYSBuZXcgY29tbWl0IGZsb3cgbmVlZHMgdG8g
YmUgcGVyZm9ybWVkLCBlaXRoZXIgdG8gcHVsbAogICAgIC8vIHVwZGF0ZXMgZnJvbSB0aGUgbWFp
biB0aHJlYWQgdG8gdGhlIGltcGwsIG9yIHRvIHB1c2ggZGVsdGFzIGZyb20gdGhlIGltcGwKICAg
ICAvLyB0aHJlYWQgdG8gbWFpbi4KQEAgLTg5LDEzICs5MywxNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGUoKTsKIAogICAgIC8vIENhbGwgdGhpcyBvbmx5IGluIHJlc3Bv
bnNlIHRvIHJlY2VpdmluZyBhbiBBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTCi0gICAgLy8g
ZnJvbSBuZXh0U3RhdGUuIEluZGljYXRlc3QgdGhhdCB0aGUgc3BlY2lmaWMgdXBkYXRlIHJlcXVl
c3QgY29tcGxldGVkLgorICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCB0aGUg
c3BlY2lmaWMgdXBkYXRlIHJlcXVlc3QgY29tcGxldGVkLgogICAgIHZvaWQgYmVnaW5VcGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZyk7CiAKIHByb3RlY3RlZDoKICAg
ICBDb21taXRTdGF0ZSBtX2NvbW1pdFN0YXRlOwogCiAgICAgYm9vbCBtX25lZWRzUmVkcmF3Owor
ICAgIGJvb2wgbV9uZWVkc0ZvcmNlZFJlZHJhdzsKICAgICBib29sIG1fbmVlZHNDb21taXQ7CiAg
ICAgYm9vbCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOwogICAgIGJvb2wgbV9pbnNpZGVW
U3luYzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCShyZXZpc2lvbiA5OTg0MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tPbkltcAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkID0gcmVxdWVzdDsKLSAgICBtX3NjaGVkdWxl
ck9uSW1wbFRocmVhZC0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRo
cmVhZC0+c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0QqIEND
VGhyZWFkUHJveHk6OmNvbnRleHQoKQpAQCAtMzA3LDggKzMwNyw5IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT24KICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKLSAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0
TmVlZHNSZWRyYXcoKTsKICAgICBtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZCA9IGNvbXBsZXRpb247CisKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+
c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVs
ZWRBY3Rpb25CZWdpbkZyYW1lKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZp
c2lvbiA5OTg0MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMTAgIElhaW4gTWVycmljayAgPGh1c2t5
QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVhZFByb3h5OjpmaW5pc2hB
bGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTEtMTEtMTAgIEpheSBDaXZlbGxp
ICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBwcm9ncmVzcyBsb2FkIHJl
cG9ydGluZyBmb3IgTUhUTUwgZG9jdW1lbnRzLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNw
cAkocmV2aXNpb24gOTk4NDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoYm9vbCBiKSB7IG1fbmVlZHNSZWRy
YXcgPSBiOyB9CiAgICAgYm9vbCBuZWVkc1JlZHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNS
ZWRyYXc7IH0KIAorICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRSZWRyYXcoYm9vbCBiKSB7IG1fbmVl
ZHNGb3JjZWRSZWRyYXcgPSBiOyB9CisgICAgYm9vbCBuZWVkc0ZvcmNlZFJlZHJhdygpIGNvbnN0
IHsgcmV0dXJuIG1fbmVlZHNGb3JjZWRSZWRyYXc7IH0KKwogICAgIGJvb2wgaW5zaWRlVlN5bmMo
KSBjb25zdCB7IHJldHVybiBtX2luc2lkZVZTeW5jOyB9CiAgICAgYm9vbCB2aXNpYmxlKCkgY29u
c3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAKQEAgLTk5LDYgKzEwMiwxMyBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5lCiAgICAgfQogfQogCitURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldEZvcmNlZFJlZHJhd0Fsc29TZXRzTm9ybWFsUmVk
cmF3KQoreworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNl
dE5lZWRzRm9yY2VkUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGlu
ZygpKTsKK30KKwogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0
aW9uRHJhd3NPblZTeW5jKQogewogICAgIC8vIFdoZW4gbm90IG9uIHZzeW5jLCBkb24ndCBkcmF3
LgpAQCAtMTA2LDM3ICsxMTYsNDQgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3ROZQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ29tbWl0U3RhdGVzOyArK2kp
IHsKICAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwogICAgICAgICBzdGF0ZS5zZXRDb21taXRT
dGF0ZShhbGxDb21taXRTdGF0ZXNbaV0pOwotICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0
cnVlKTsKLSAgICAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKICAgICAgICAgc3RhdGUuc2V0
SW5zaWRlVlN5bmMoZmFsc2UpOwogCi0gICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFs
c2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCi0gICAgICAgIHN0YXRlLnNldE5l
ZWRzQ29tbWl0KGZhbHNlKTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmcoZmFsc2UpOwotICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0gICAgICAgIC8vIENhc2UgMjog
bmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KLSAgICAg
ICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKLQotICAgICAg
ICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9
ZmFsc2UuCi0gICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICBzdGF0
ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9O
RShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24o
KSk7Ci0KLSAgICAgICAgLy8gQ2FzZSA0OiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nPXRydWUuCi0gICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwot
ICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAg
ICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGdldCBleGFjdGx5IHRoZSBzYW1l
IHJlc3VsdHMgaW4gdGhyZWUgc2NlbmFyaW9zOgorICAgICAgICAvLyAgMC4gdmlzaWJsZT10cnVl
LCBzZXROZWVkc1JlZHJhdz10cnVlCisgICAgICAgIC8vICAxLiB2aXNpYmxlPXRydWUsIHNldE5l
ZWRzRm9yY2VkUmVkcmF3PXRydWUKKyAgICAgICAgLy8gIDIuIHZpc2libGU9ZmFsc2UsIHNldE5l
ZWRzRm9yY2VkUmVkcmF3PXRydWUKKyAgICAgICAgLy8gVGhlIGZpbmFsIGNhc2UgaXMgY292ZXJl
ZCBieSBUZXN0Tm9Db21taXRTdGF0ZXNSZWRyYXdXaGVuSW52aXNpYmxlLgorICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IDM7ICsraikgeworICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNS
ZWRyYXcodHJ1ZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdyhqID49
IDEpOworICAgICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZShqIDw9IDEpOworCisgICAgICAgICAg
ICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
PWZhbHNlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAg
ICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAg
ICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKworICAgICAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1m
YWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcodHJ1ZSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgICAg
ICAgICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmc9ZmFsc2UuCisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICAg
ICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9
dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICAvLyBXaGVuIG9uIHZzeW5jLCB5b3Ugc2hvdWxkIGFsd2F5cyBkcmF3LiBF
eHBlY3QgaWYgeW91J3JlIHJlYWR5IHRvIGNvbW1pdCwgaW4gd2hpY2ggY2FzZSBjb21taXQuCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Db21taXRTdGF0ZXM7ICsraSkgewogICAgICAg
ICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENv
bW1pdFN0YXRlc1tpXSk7Ci0gICAgICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwotICAg
ICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3lu
Yyh0cnVlKTsKICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBleHBlY3Rl
ZEFjdGlvbjsKICAgICAgICAgaWYgKGFsbENvbW1pdFN0YXRlc1tpXSAhPSBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCkKQEAgLTE0NCw1OCArMTYx
LDY5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmUKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgZXhwZWN0ZWRBY3Rpb24gPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0NPTU1JVDsKIAotICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNl
IHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgotICAgICAgICBzdGF0ZS5zZXROZWVk
c0NvbW1pdChmYWxzZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwotCi0gICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQo
ZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVl
KTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwotCi0gICAgICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZz1mYWxzZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0g
ICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0gICAg
ICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
Zz10cnVlLgotICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKLSAgICAgICAgc3Rh
dGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7Ci0gICAgICAgIEVYUEVDVF9F
UShleHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgLy8gV2Ugc2hv
dWxkIGdldCB0aGUgc2FtZSByZXN1bHRzIGluIGFsbCB0aHJlZSBzY2VuYXJpb3MsIGFzIGFib3Zl
LgorICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDM7ICsraikgeworICAgICAgICAgICAg
c3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0Zv
cmNlZFJlZHJhdyhqID49IDEpOworICAgICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZShqIDw9IDEp
OworCisgICAgICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQo
ZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmco
ZmFsc2UpOworICAgICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOworCisgICAgICAgICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0PWZhbHNlIHVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCisgICAgICAgICAgICBzdGF0ZS5zZXROZWVk
c0NvbW1pdChmYWxzZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyh0cnVlKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZEFjdGlvbiwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKworICAgICAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10
cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgorICAgICAgICAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyhmYWxzZSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rp
b24sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgICAgIC8vIENhc2UgNDogbmVlZHND
b21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAg
c3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAogVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb0NvbW1pdFN0YXRlc1JlZHJhd1do
ZW5JbnZpc2libGUpCiB7Ci0gICAgLy8gSWYgbm90IHZpc2libGUsIG5ldmVyIHJlZHJhdy4KICAg
ICBzaXplX3QgbnVtQ29tbWl0U3RhdGVzID0gc2l6ZW9mKGFsbENvbW1pdFN0YXRlcykgLyBzaXpl
b2YoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNvbW1pdFN0YXRlKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bUNvbW1pdFN0YXRlczsgKytpKSB7CiAgICAgICAgIFN0YXRlTWFjaGlu
ZSBzdGF0ZTsKICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ld
KTsKLSAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7Ci0gICAgICAgIHN0YXRlLnNl
dEluc2lkZVZTeW5jKGZhbHNlKTsKICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZShmYWxzZSk7Cisg
ICAgICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworICAgICAgICBzdGF0ZS5zZXROZWVk
c0ZvcmNlZFJlZHJhdyhmYWxzZSk7CiAKLSAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1m
YWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KLSAgICAgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQoZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyhmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0KLSAgICAgICAgLy8gQ2FzZSAy
OiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgotICAg
ICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0gICAg
ICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
Zz1mYWxzZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgICAgIHN0
YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNU
X05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlv
bigpKTsKLQotICAgICAgICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmc9dHJ1ZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7
Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAg
ICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICAvLyBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IGRyYXdp
bmcgcmVnYXJkbGVzcyBvZiB2c3luYy4KKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCAy
OyArK2opIHsKKyAgICAgICAgICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGogPT0gMSk7CisKKyAg
ICAgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmc9ZmFsc2UuCisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7
CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7
CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgICAgICAgICAvLyBDYXNlIDI6IG5lZWRz
Q29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCisgICAgICAgICAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisK
KyAgICAgICAgICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZz1mYWxzZS4KKyAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUp
OworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2Up
OworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgICAgICAgICAgLy8gQ2FzZSA0OiBuZWVk
c0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCisgICAgICAgICAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAg
ICAgICAgfQogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114571</attachid>
            <date>2011-11-10 14:18:04 -0800</date>
            <delta_ts>2011-11-10 15:43:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71920-20111110141803.patch</filename>
            <type>text/plain</type>
            <size>18348</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjE5NjUzNTM0MzMwOTBk
ZGJhZWU2MTkyNDkwOWQ5NWY1ZmZhMjdlLi41MGY3MmI5YmRhOWMxZWVmMjUzZWNkMmU3ZWUzMDIy
NzYyYjg3Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTEtMTAgIElhaW4g
TWVycmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVh
ZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
cjo6c2V0TmVlZHNGb3JjZWRSZWRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNGb3JjZWRSZWRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZXF1
ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKToKKwogMjAxMS0xMS0xMCAgWGlhb21l
aSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgLS13ZWJraXQtdmlzdWFsLXdvcmQg
Y3Jhc2ggd2hlbiBjcmVhdGUgbGVnYWN5IHBvc2l0aW9uIGZvciBzaGFkb3dSb290CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxZThlZDk1ZGJmZTU0YzNhYWZlZjJmODY1MjUyZDM0NWIz
NTI5MWEuLjgwYmIxODQwMTUxY2Q2NmFlYTdmYTVmMThjZjU3NTgyMTE0OTQ5YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMTAgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVhZFBy
b3h5OjpmaW5pc2hBbGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTEtMTEtMTAg
IFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDNkNjEyOTY2
OTM2OTYwYjUxNWRlZDdhZDFlZDFhNzEyODQ5NjA1ZGIuLmJjMGVlNzhiYzhhODRjZTg5MDAxNzJi
NDdlN2JlNGE2MTM3NDRkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTY4LDYgKzY4
LDEyIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzUmVkcmF3KCkKICAgICBwcm9jZXNzU2No
ZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZFJl
ZHJhdygpCit7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKyAg
ICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQorCiB2b2lkIENDU2NoZWR1bGVyOjpiZWdp
bkZyYW1lQ29tcGxldGUoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6YmVnaW5G
cmFtZUNvbXBsZXRlIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRleCAwNjcxNzVi
MGQ2Y2RlZmRjMzRkZTAzNTU5MTQwNGMwMzkzYWY0NDM0Li4wYmUzNzE3NjE4MDFkNzhiMmM5NmEz
NDRlYzM0NGM4YTEyN2YyODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTY0LDYgKzY0LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKICAgICB2b2lkIHNldE5lZWRz
UmVkcmF3KCk7CiAKKyAgICAvLyBBcyBzZXROZWVkc1JlZHJhdygpLCBidXQgZW5zdXJlcyB0aGUg
ZHJhdyB3aWxsIGRlZmluaXRlbHkgaGFwcGVuIGV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxlLgor
ICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKwogICAgIHZvaWQgYmVnaW5GcmFtZUNv
bXBsZXRlKCk7CiAKICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmcoaW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCA0OTAxYjY0NWFjMTk1
MTU3OGU3ZmQ5NWQzMTc5OTU4YWJhNzVlZWYzLi40OWVkNmFiZTNhOTJiZmE2ZTdmMTMyZDBhNjA2
N2IwMzQyNGUxOTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuY3BwCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAgICAgOiBtX2NvbW1pdFN0
YXRlKENPTU1JVF9TVEFURV9JRExFKQogICAgICwgbV9uZWVkc1JlZHJhdyhmYWxzZSkKKyAgICAs
IG1fbmVlZHNGb3JjZWRSZWRyYXcoZmFsc2UpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNlKQog
ICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1faW5zaWRl
VlN5bmMoZmFsc2UpCkBAIC00MCwxOSArNDEsMTkgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChtX2NvbW1pdFN0YXRlKSB7CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURMRToK
LSAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3luYyAmJiBtX3Zpc2libGUp
CisgICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgKG1fdmlzaWJs
ZSB8fCBtX25lZWRzRm9yY2VkUmVkcmF3KSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJB
VzsKICAgICAgICAgaWYgKG1fbmVlZHNDb21taXQgJiYgbV92aXNpYmxlKQogICAgICAgICAgICAg
cmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwog
CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M6Ci0gICAgICAgIGlmICht
X25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlKQorICAgICAgICBpZiAo
bV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0Zv
cmNlZFJlZHJhdykpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIHJl
dHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUzoKLSAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3luYyAmJiBtX3Zp
c2libGUpCisgICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgKG1f
dmlzaWJsZSB8fCBtX25lZWRzRm9yY2VkUmVkcmF3KSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJ
T05fRFJBVzsKICAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKQogICAg
ICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM7CkBAIC02
Miw3ICs2Myw3IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgICAgICByZXR1cm4gQUNUSU9OX0NP
TU1JVDsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVc6Ci0g
ICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlKQor
ICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIChtX3Zpc2libGUg
fHwgbV9uZWVkc0ZvcmNlZFJlZHJhdykpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7
CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKICAgICB9CkBAIC05Nyw2ICs5OCw3IEBAIHZv
aWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAK
ICAgICBjYXNlIEFDVElPTl9EUkFXOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFsc2U7Cisg
ICAgICAgIG1fbmVlZHNGb3JjZWRSZWRyYXcgPSBmYWxzZTsKICAgICAgICAgaWYgKG1fY29tbWl0
U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcpIHsKICAgICAgICAg
ICAgIEFTU0VSVChtX25lZWRzQ29tbWl0KTsKICAgICAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBD
T01NSVRfU1RBVEVfSURMRTsKQEAgLTEyMCw2ICsxMjIsMTIgQEAgdm9pZCBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6c2V0TmVlZHNSZWRyYXcoKQogICAgIG1fbmVlZHNSZWRyYXcgPSB0cnVlOwog
fQogCit2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0ZvcmNlZFJlZHJhdygp
Cit7CisgICAgbV9uZWVkc1JlZHJhdyA9IHRydWU7CisgICAgbV9uZWVkc0ZvcmNlZFJlZHJhdyA9
IHRydWU7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRzQ29tbWl0
KCkKIHsKICAgICBtX25lZWRzQ29tbWl0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDQ1NzBlNTk5NWMyNmIzOWIwZDQ5MmNkODJkMTA4NTNk
MDEzOTA1MDkuLjE5ZWQyMWRiMzI3N2JlMjE1NjI5M2UwNmU3Yjg5ZjMzNzE4ZTJiY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtNzgsNiArNzgsMTAg
QEAgcHVibGljOgogICAgIC8vIG9yIHRoZSBzY3JlZW4gYmVpbmcgZGFtYWdlZCBhbmQgc2ltcGx5
IG5lZWRpbmcgcmVkaXNwbGF5LgogICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoKTsKIAorICAgIC8v
IEFzIHNldE5lZWRzUmVkcmF3KCksIGJ1dCBlbnN1cmVzIHRoZSBkcmF3IHdpbGwgZGVmaW5pdGVs
eSBoYXBwZW4gZXZlbiBpZgorICAgIC8vIHdlIGFyZSBub3QgdmlzaWJsZS4KKyAgICB2b2lkIHNl
dE5lZWRzRm9yY2VkUmVkcmF3KCk7CisKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCBhIG5ldyBjb21t
aXQgZmxvdyBuZWVkcyB0byBiZSBwZXJmb3JtZWQsIGVpdGhlciB0byBwdWxsCiAgICAgLy8gdXBk
YXRlcyBmcm9tIHRoZSBtYWluIHRocmVhZCB0byB0aGUgaW1wbCwgb3IgdG8gcHVzaCBkZWx0YXMg
ZnJvbSB0aGUgaW1wbAogICAgIC8vIHRocmVhZCB0byBtYWluLgpAQCAtODksMTMgKzkzLDE0IEBA
IHB1YmxpYzoKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwogCiAgICAgLy8gQ2FsbCB0
aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMKLSAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzdCB0aGF0IHRoZSBzcGVj
aWZpYyB1cGRhdGUgcmVxdWVzdCBjb21wbGV0ZWQuCisgICAgLy8gZnJvbSBuZXh0U3RhdGUuIElu
ZGljYXRlcyB0aGF0IHRoZSBzcGVjaWZpYyB1cGRhdGUgcmVxdWVzdCBjb21wbGV0ZWQuCiAgICAg
dm9pZCBiZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKTsK
IAogcHJvdGVjdGVkOgogICAgIENvbW1pdFN0YXRlIG1fY29tbWl0U3RhdGU7CiAKICAgICBib29s
IG1fbmVlZHNSZWRyYXc7CisgICAgYm9vbCBtX25lZWRzRm9yY2VkUmVkcmF3OwogICAgIGJvb2wg
bV9uZWVkc0NvbW1pdDsKICAgICBib29sIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc7CiAg
ICAgYm9vbCBtX2luc2lkZVZTeW5jOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCAw
NjNkMGFlYWQxMWYxZWQzMDM2MDRlMDM0OTIwYTgxNTA2Zjk3ZmJhLi44MmQxMjQyMWM0YjFjYjU4
MDM5OWZhZDJjMTdiNDViMzhhYjlhM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApA
QCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVxdWVzdFJlYWRiYWNrT25J
bXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBtX3JlYWRiYWNrUmVxdWVzdE9uSW1wbFRocmVhZCA9IHJlcXVlc3Q7Ci0gICAgbV9z
Y2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzUmVkcmF3KCk7CisgICAgbV9zY2hlZHVsZXJP
bkltcGxUaHJlYWQtPnNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CiB9CiAKIEdyYXBoaWNzQ29udGV4
dDNEKiBDQ1RocmVhZFByb3h5Ojpjb250ZXh0KCkKQEAgLTMwOCw4ICszMDgsOSBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCogY29tcGxldGlvbgogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hB
bGxSZW5kZXJpbmdPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoaXNJbXBsVGhy
ZWFkKCkpOwogICAgIEFTU0VSVCghbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQpOwotICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc1JlZHJh
dygpOwogICAgIG1fZmluaXNoQWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFk
ID0gY29tcGxldGlvbjsKKworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0Zv
cmNlZFJlZHJhdygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmluZGV4IDdmMDhjYzdmMWNlMGQ5ZjI5
NDcyMjE5N2RiOThmZWY2NTE5MDM3OTYuLjg5ZDlhNzgzNWUxOWFiMjE5YjM5NWQ1NDllNTY2ZDcy
NDRjNTM4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKQEAgLTU1LDYgKzU1LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TmVlZHNSZWRyYXcoYm9vbCBiKSB7IG1fbmVlZHNSZWRyYXcgPSBi
OyB9CiAgICAgYm9vbCBuZWVkc1JlZHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNSZWRyYXc7
IH0KIAorICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRSZWRyYXcoYm9vbCBiKSB7IG1fbmVlZHNGb3Jj
ZWRSZWRyYXcgPSBiOyB9CisgICAgYm9vbCBuZWVkc0ZvcmNlZFJlZHJhdygpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNGb3JjZWRSZWRyYXc7IH0KKwogICAgIGJvb2wgaW5zaWRlVlN5bmMoKSBjb25z
dCB7IHJldHVybiBtX2luc2lkZVZTeW5jOyB9CiAgICAgYm9vbCB2aXNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV92aXNpYmxlOyB9CiAKQEAgLTk5LDQ0ICsxMDIsNjIgQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKICAg
ICB9CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0Rm9yY2Vk
UmVkcmF3QWxzb1NldHNOb3JtYWxSZWRyYXcpCit7CisgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUgc3RhdGU7CisgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKyAgICBFWFBFQ1Rf
VFJVRShzdGF0ZS5yZWRyYXdQZW5kaW5nKCkpOworfQorCiBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25EcmF3c09uVlN5bmMpCiB7CisgICAgLy8gV2Ugc2hv
dWxkIGdldCBleGFjdGx5IHRoZSBzYW1lIHJlc3VsdHMgaW4gdGhyZWUgc2NlbmFyaW9zOgorICAg
IC8vICAwLiB2aXNpYmxlPXRydWUsIHNldE5lZWRzUmVkcmF3PXRydWUKKyAgICAvLyAgMS4gdmlz
aWJsZT10cnVlLCBzZXROZWVkc0ZvcmNlZFJlZHJhdz10cnVlCisgICAgLy8gIDIuIHZpc2libGU9
ZmFsc2UsIHNldE5lZWRzRm9yY2VkUmVkcmF3PXRydWUKKyAgICAvLyBUaGUgZmluYWwgY2FzZSBp
cyBjb3ZlcmVkIGJ5IFRlc3ROb0NvbW1pdFN0YXRlc1JlZHJhd1doZW5JbnZpc2libGUuCisgICAg
c3RhdGljIGNvbnN0IGJvb2wgdmlzaWJsZVN0YXRlc1tdID0gICAgICAgICAgIHsgIHRydWUsIGZh
bHNlLCBmYWxzZSB9OworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzUmVkcmF3U3RhdGVzW10g
PSAgICAgICB7ICB0cnVlLCAgdHJ1ZSwgIHRydWUgfTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0ZvcmNlZFJlZHJhd1N0YXRlc1tdID0geyBmYWxzZSwgIHRydWUsICB0cnVlIH07CisKICAg
ICAvLyBXaGVuIG5vdCBvbiB2c3luYywgZG9uJ3QgZHJhdy4KICAgICBzaXplX3QgbnVtQ29tbWl0
U3RhdGVzID0gc2l6ZW9mKGFsbENvbW1pdFN0YXRlcykgLyBzaXplb2YoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNvbW1pdFN0YXRlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNv
bW1pdFN0YXRlczsgKytpKSB7CiAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAgICAg
c3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKLSAgICAgICAgc3RhdGUu
c2V0TmVlZHNSZWRyYXcodHJ1ZSk7Ci0gICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAg
ICAgICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKIAotICAgICAgICAvLyBDYXNlIDE6
IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgotICAg
ICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKLQotICAg
ICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nPXRydWUuCi0gICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKLSAgICAgICAg
c3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7Ci0gICAgICAgIEVYUEVD
VF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rp
b24oKSk7Ci0KLSAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgotICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVl
KTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwot
ICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0gICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1
ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgotICAgICAgICBzdGF0ZS5zZXROZWVk
c0NvbW1pdCh0cnVlKTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcodHJ1ZSk7Ci0gICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IDA7IGogPCAzOyArK2opIHsKKyAgICAgICAgICAgIHN0YXRlLnNldFZpc2libGUodmlzaWJsZVN0
YXRlc1tqXSk7CisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhuZWVkc1JlZHJhd1N0
YXRlc1tqXSk7CisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0ZvcmNlZFJlZHJhdyhuZWVkc0Zv
cmNlZFJlZHJhd1N0YXRlc1tqXSk7CisKKyAgICAgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21t
aXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCisgICAgICAgICAgICBz
dGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgICAgICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nPXRydWUuCisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7
CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsK
KyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgICAgIC8vIENhc2UgMzogbmVlZHND
b21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KKyAgICAgICAgICAg
IHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKwor
ICAgICAgICAgICAgLy8gQ2FzZSA0OiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nPXRydWUuCisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsK
KyAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwor
ICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
Vywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFdoZW4g
b24gdnN5bmMsIHlvdSBzaG91bGQgYWx3YXlzIGRyYXcuIEV4cGVjdCBpZiB5b3UncmUgcmVhZHkg
dG8gY29tbWl0LCBpbiB3aGljaCBjYXNlIGNvbW1pdC4KICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bUNvbW1pdFN0YXRlczsgKytpKSB7CiAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsK
ICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKLSAgICAg
ICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7Ci0gICAgICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CiAgICAgICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOwogICAgICAgICBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIGV4cGVjdGVkQWN0aW9uOwogICAgICAgICBpZiAo
YWxsQ29tbWl0U3RhdGVzW2ldICE9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfUkVBRFlfVE9fQ09NTUlUKQpAQCAtMTQ0LDU4ICsxNjUsNjggQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uRHJhd3NPblZTeW5jKQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBleHBlY3RlZEFjdGlvbiA9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQ09NTUlUOwogCi0gICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2Ug
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCi0gICAgICAgIHN0YXRlLnNldE5lZWRz
Q29tbWl0KGZhbHNlKTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcoZmFsc2UpOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRB
Y3Rpb24oKSk7Ci0KLSAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgotICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChm
YWxzZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUp
OwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7
Ci0KLSAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nPWZhbHNlLgotICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKLSAg
ICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0KLSAgICAg
ICAgLy8gQ2FzZSA0OiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
PXRydWUuCi0gICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICBzdGF0
ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgMzsgKytqKSB7CisgICAgICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKHZp
c2libGVTdGF0ZXNbal0pOworICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcobmVlZHNS
ZWRyYXdTdGF0ZXNbal0pOworICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXco
bmVlZHNGb3JjZWRSZWRyYXdTdGF0ZXNbal0pOworCisgICAgICAgICAgICAvLyBDYXNlIDE6IG5l
ZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgorICAgICAg
ICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0
VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgICAgICAgICAvLyBD
YXNlIDI6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUu
CisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CisgICAgICAgICAgICBz
dGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShleHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgICAgICAg
ICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
PWZhbHNlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgICAg
ICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAg
ICAgICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZz10cnVlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Cisg
ICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICAgICAgfQogICAgIH0KIH0KIAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3ROb0NvbW1pdFN0YXRlc1JlZHJhd1doZW5JbnZpc2libGUpCiB7Ci0gICAgLy8gSWYgbm90
IHZpc2libGUsIG5ldmVyIHJlZHJhdy4KICAgICBzaXplX3QgbnVtQ29tbWl0U3RhdGVzID0gc2l6
ZW9mKGFsbENvbW1pdFN0YXRlcykgLyBzaXplb2YoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNv
bW1pdFN0YXRlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNvbW1pdFN0YXRlczsg
KytpKSB7CiAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAgICAgc3RhdGUuc2V0Q29t
bWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKLSAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRy
YXcodHJ1ZSk7Ci0gICAgICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKICAgICAgICAg
c3RhdGUuc2V0VmlzaWJsZShmYWxzZSk7Ci0KLSAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1p
dD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KLSAgICAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQoZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyhmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0KLSAgICAgICAgLy8gQ2Fz
ZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgot
ICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7Ci0gICAgICAgIHN0YXRlLnNldFVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0g
ICAgICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZz1mYWxzZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgICAg
IHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgRVhQ
RUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFj
dGlvbigpKTsKLQotICAgICAgICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1
ZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwot
ICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsK
KyAgICAgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcoZmFsc2UpOworCisgICAgICAgIC8v
IFRoZXJlIHNob3VsZG4ndCBiZSBhbnkgZHJhd2luZyByZWdhcmRsZXNzIG9mIHZzeW5jLgorICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgMjsgKytqKSB7CisgICAgICAgICAgICBzdGF0
ZS5zZXRJbnNpZGVWU3luYyhqID09IDEpOworCisgICAgICAgICAgICAvLyBDYXNlIDE6IG5lZWRz
Q29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgorICAgICAgICAg
ICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICAgICAgRVhQRUNUX05FKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsK
KworICAgICAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFs
c2UpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcodHJ1
ZSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgICAgICAgICAvLyBDYXNlIDM6IG5l
ZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCisgICAgICAg
ICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICAgICAgICAgIHN0YXRlLnNldFVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CisKKyAgICAgICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1
ZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVl
KTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114588</attachid>
            <date>2011-11-10 15:43:53 -0800</date>
            <delta_ts>2011-11-11 11:29:19 -0800</delta_ts>
            <desc>makes layout tests not time out</desc>
            <filename>bug-71920-20111110154352.patch</filename>
            <type>text/plain</type>
            <size>18433</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjE5NjUzNTM0MzMwOTBk
ZGJhZWU2MTkyNDkwOWQ5NWY1ZmZhMjdlLi41MGY3MmI5YmRhOWMxZWVmMjUzZWNkMmU3ZWUzMDIy
NzYyYjg3Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTEtMTAgIElhaW4g
TWVycmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVh
ZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
cjo6c2V0TmVlZHNGb3JjZWRSZWRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNGb3JjZWRSZWRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZXF1
ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKToKKwogMjAxMS0xMS0xMCAgWGlhb21l
aSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgLS13ZWJraXQtdmlzdWFsLXdvcmQg
Y3Jhc2ggd2hlbiBjcmVhdGUgbGVnYWN5IHBvc2l0aW9uIGZvciBzaGFkb3dSb290CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxZThlZDk1ZGJmZTU0YzNhYWZlZjJmODY1MjUyZDM0NWIz
NTI5MWEuLjgwYmIxODQwMTUxY2Q2NmFlYTdmYTVmMThjZjU3NTgyMTE0OTQ5YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMTAgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVhZFBy
b3h5OjpmaW5pc2hBbGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTEtMTEtMTAg
IFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDNkNjEyOTY2
OTM2OTYwYjUxNWRlZDdhZDFlZDFhNzEyODQ5NjA1ZGIuLjZkMWUxZGNjYzJmMTBlY2YyZTIzNGJm
OTdmZDYzMzlmNmMwY2FiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTY4LDYgKzY4
LDE0IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzUmVkcmF3KCkKICAgICBwcm9jZXNzU2No
ZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZFJl
ZHJhdygpCit7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKyAg
ICBtX3N0YXRlTWFjaGluZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBwcm9jZXNzU2NoZWR1
bGVkQWN0aW9ucygpOworICAgIG1fc3RhdGVNYWNoaW5lLnNldEluc2lkZVZTeW5jKGZhbHNlKTsK
K30KKwogdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZUNvbXBsZXRlKCkKIHsKICAgICBUUkFD
RV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSIsIHRoaXMsIDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmgKaW5kZXggMDY3MTc1YjBkNmNkZWZkYzM0ZGUwMzU1OTE0MDRjMDM5M2Fm
NDQzNC4uMGJlMzcxNzYxODAxZDc4YjJjOTZhMzQ0ZWMzNDRjOGExMjdmMjg2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlci5oCkBAIC02NCw2ICs2NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRz
Q29tbWl0KCk7CiAgICAgdm9pZCBzZXROZWVkc1JlZHJhdygpOwogCisgICAgLy8gQXMgc2V0TmVl
ZHNSZWRyYXcoKSwgYnV0IGVuc3VyZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5IGhhcHBlbiBl
dmVuIGlmIHdlIGFyZSBub3QgdmlzaWJsZS4KKyAgICB2b2lkIHNldE5lZWRzRm9yY2VkUmVkcmF3
KCk7CisKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwogCiAgICAgdm9pZCBzZXRNYXhG
cmFtZXNQZW5kaW5nKGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZS5jcHAKaW5kZXggNDkwMWI2NDVhYzE5NTE1NzhlN2ZkOTVkMzE3OTk1OGFiYTc1ZWVmMy4u
NDllZDZhYmUzYTkyYmZhNmU3ZjEzMmQwYTYwNjdiMDM0MjRlMTk1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApAQCAtMzEsNiArMzEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUoKQogICAgIDogbV9jb21taXRTdGF0ZShDT01NSVRfU1RBVEVfSURMRSkKICAgICAs
IG1fbmVlZHNSZWRyYXcoZmFsc2UpCisgICAgLCBtX25lZWRzRm9yY2VkUmVkcmF3KGZhbHNlKQog
ICAgICwgbV9uZWVkc0NvbW1pdChmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmcoZmFsc2UpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNlKQpAQCAtNDAsMTkgKzQxLDE5
IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6Om5leHRBY3Rpb24oKSBjb25zdAogewogICAgIHN3aXRjaCAobV9jb21taXRTdGF0ZSkgewog
ICAgIGNhc2UgQ09NTUlUX1NUQVRFX0lETEU6Ci0gICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYm
IG1faW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlKQorICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAm
JiBtX2luc2lkZVZTeW5jICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZFJlZHJhdykpCiAg
ICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIGlmIChtX25lZWRzQ29tbWl0
ICYmIG1fdmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fRlJBTUU7CiAg
ICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX0ZSQU1F
X0lOX1BST0dSRVNTOgotICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5j
ICYmIG1fdmlzaWJsZSkKKyAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3lu
YyAmJiAobV92aXNpYmxlIHx8IG1fbmVlZHNGb3JjZWRSZWRyYXcpKQogICAgICAgICAgICAgcmV0
dXJuIEFDVElPTl9EUkFXOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKICAgICBjYXNl
IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM6Ci0gICAgICAgIGlmIChtX25lZWRzUmVk
cmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlKQorICAgICAgICBpZiAobV9uZWVkc1Jl
ZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIChtX3Zpc2libGUgfHwgbV9uZWVkc0ZvcmNlZFJlZHJh
dykpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIGlmICghbV91cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTOwpAQCAtNjIsNyArNjMsNyBAQCBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QWN0aW9uIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIEFDVElPTl9DT01NSVQ7CiAKICAgICBjYXNlIENPTU1JVF9TVEFU
RV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXOgotICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAmJiBt
X2luc2lkZVZTeW5jICYmIG1fdmlzaWJsZSkKKyAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYg
bV9pbnNpZGVWU3luYyAmJiAobV92aXNpYmxlIHx8IG1fbmVlZHNGb3JjZWRSZWRyYXcpKQogICAg
ICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7
CiAgICAgfQpAQCAtOTcsNiArOTgsNyBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1
cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQogCiAgICAgY2FzZSBBQ1RJT05fRFJBVzoKICAgICAg
ICAgbV9uZWVkc1JlZHJhdyA9IGZhbHNlOworICAgICAgICBtX25lZWRzRm9yY2VkUmVkcmF3ID0g
ZmFsc2U7CiAgICAgICAgIGlmIChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9XQUlUSU5H
X0ZPUl9GSVJTVF9EUkFXKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9uZWVkc0NvbW1pdCk7CiAg
ICAgICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7CkBAIC0xMjAsNiAr
MTIyLDEyIEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRzUmVkcmF3KCkK
ICAgICBtX25lZWRzUmVkcmF3ID0gdHJ1ZTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6c2V0TmVlZHNGb3JjZWRSZWRyYXcoKQoreworICAgIG1fbmVlZHNSZWRyYXcgPSB0cnVl
OworICAgIG1fbmVlZHNGb3JjZWRSZWRyYXcgPSB0cnVlOworfQorCiB2b2lkIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiB7CiAgICAgbV9uZWVkc0NvbW1pdCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAppbmRleCA0NTcw
ZTU5OTVjMjZiMzliMGQ0OTJjZDgyZDEwODUzZDAxMzkwNTA5Li4xOWVkMjFkYjMyNzdiZTIxNTYy
OTNlMDZlN2I4OWYzMzcxOGUyYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmgKQEAgLTc4LDYgKzc4LDEwIEBAIHB1YmxpYzoKICAgICAvLyBvciB0aGUgc2Ny
ZWVuIGJlaW5nIGRhbWFnZWQgYW5kIHNpbXBseSBuZWVkaW5nIHJlZGlzcGxheS4KICAgICB2b2lk
IHNldE5lZWRzUmVkcmF3KCk7CiAKKyAgICAvLyBBcyBzZXROZWVkc1JlZHJhdygpLCBidXQgZW5z
dXJlcyB0aGUgZHJhdyB3aWxsIGRlZmluaXRlbHkgaGFwcGVuIGV2ZW4gaWYKKyAgICAvLyB3ZSBh
cmUgbm90IHZpc2libGUuCisgICAgdm9pZCBzZXROZWVkc0ZvcmNlZFJlZHJhdygpOworCiAgICAg
Ly8gSW5kaWNhdGVzIHRoYXQgYSBuZXcgY29tbWl0IGZsb3cgbmVlZHMgdG8gYmUgcGVyZm9ybWVk
LCBlaXRoZXIgdG8gcHVsbAogICAgIC8vIHVwZGF0ZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQgdG8g
dGhlIGltcGwsIG9yIHRvIHB1c2ggZGVsdGFzIGZyb20gdGhlIGltcGwKICAgICAvLyB0aHJlYWQg
dG8gbWFpbi4KQEAgLTg5LDEzICs5MywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpbkZyYW1l
Q29tcGxldGUoKTsKIAogICAgIC8vIENhbGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2Vp
dmluZyBhbiBBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTCi0gICAgLy8gZnJvbSBuZXh0U3Rh
dGUuIEluZGljYXRlc3QgdGhhdCB0aGUgc3BlY2lmaWMgdXBkYXRlIHJlcXVlc3QgY29tcGxldGVk
LgorICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCB0aGUgc3BlY2lmaWMgdXBk
YXRlIHJlcXVlc3QgY29tcGxldGVkLgogICAgIHZvaWQgYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2Vz
Q29tcGxldGUoYm9vbCBtb3JlUGVuZGluZyk7CiAKIHByb3RlY3RlZDoKICAgICBDb21taXRTdGF0
ZSBtX2NvbW1pdFN0YXRlOwogCiAgICAgYm9vbCBtX25lZWRzUmVkcmF3OworICAgIGJvb2wgbV9u
ZWVkc0ZvcmNlZFJlZHJhdzsKICAgICBib29sIG1fbmVlZHNDb21taXQ7CiAgICAgYm9vbCBtX3Vw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOwogICAgIGJvb2wgbV9pbnNpZGVWU3luYzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggMDYzZDBhZWFkMTFmMWVkMzAzNjA0ZTAzNDkyMGE4
MTUwNmY5N2ZiYS4uODJkMTI0MjFjNGIxY2I1ODAzOTlmYWQyYzE3YjQ1YjM4YWI5YTNjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqIHJl
cXVlc3QpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9yZWFkYmFja1JlcXVlc3RPbklt
cGxUaHJlYWQgPSByZXF1ZXN0OwotICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVk
c1JlZHJhdygpOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVkc0ZvcmNlZFJl
ZHJhdygpOwogfQogCiBHcmFwaGljc0NvbnRleHQzRCogQ0NUaHJlYWRQcm94eTo6Y29udGV4dCgp
CkBAIC0zMDgsOCArMzA4LDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJp
bmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KICAgICBUUkFDRV9F
VkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhp
cywgMCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1fZmluaXNo
QWxsUmVuZGVyaW5nQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKLSAgICBtX3NjaGVkdWxl
ck9uSW1wbFRocmVhZC0+c2V0TmVlZHNSZWRyYXcoKTsKICAgICBtX2ZpbmlzaEFsbFJlbmRlcmlu
Z0NvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CisKKyAgICBtX3NjaGVk
dWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIH0KIAogdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LmNwcAppbmRleCA3ZjA4Y2M3ZjFjZTBkOWYyOTQ3MjIxOTdkYjk4ZmVmNjUxOTAzNzk2Li44OWQ5
YTc4MzVlMTlhYjIxOWIzOTVkNTQ5ZTU2NmQ3MjQ0YzUzODdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QuY3BwCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzUmVkcmF3
KGJvb2wgYikgeyBtX25lZWRzUmVkcmF3ID0gYjsgfQogICAgIGJvb2wgbmVlZHNSZWRyYXcoKSBj
b25zdCB7IHJldHVybiBtX25lZWRzUmVkcmF3OyB9CiAKKyAgICB2b2lkIHNldE5lZWRzRm9yY2Vk
UmVkcmF3KGJvb2wgYikgeyBtX25lZWRzRm9yY2VkUmVkcmF3ID0gYjsgfQorICAgIGJvb2wgbmVl
ZHNGb3JjZWRSZWRyYXcoKSBjb25zdCB7IHJldHVybiBtX25lZWRzRm9yY2VkUmVkcmF3OyB9CisK
ICAgICBib29sIGluc2lkZVZTeW5jKCkgY29uc3QgeyByZXR1cm4gbV9pbnNpZGVWU3luYzsgfQog
ICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQogCkBAIC05OSw0
NCArMTAyLDYyIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFj
dGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQpCiAgICAgfQogfQogCitURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdFNldEZvcmNlZFJlZHJhd0Fsc29TZXRzTm9ybWFsUmVkcmF3KQor
eworICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldE5lZWRz
Rm9yY2VkUmVkcmF3KCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUucmVkcmF3UGVuZGluZygpKTsK
K30KKwogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uRHJh
d3NPblZTeW5jKQogeworICAgIC8vIFdlIHNob3VsZCBnZXQgZXhhY3RseSB0aGUgc2FtZSByZXN1
bHRzIGluIHRocmVlIHNjZW5hcmlvczoKKyAgICAvLyAgMC4gdmlzaWJsZT10cnVlLCBzZXROZWVk
c1JlZHJhdz10cnVlCisgICAgLy8gIDEuIHZpc2libGU9dHJ1ZSwgc2V0TmVlZHNGb3JjZWRSZWRy
YXc9dHJ1ZQorICAgIC8vICAyLiB2aXNpYmxlPWZhbHNlLCBzZXROZWVkc0ZvcmNlZFJlZHJhdz10
cnVlCisgICAgLy8gVGhlIGZpbmFsIGNhc2UgaXMgY292ZXJlZCBieSBUZXN0Tm9Db21taXRTdGF0
ZXNSZWRyYXdXaGVuSW52aXNpYmxlLgorICAgIHN0YXRpYyBjb25zdCBib29sIHZpc2libGVTdGF0
ZXNbXSA9ICAgICAgICAgICB7ICB0cnVlLCBmYWxzZSwgZmFsc2UgfTsKKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBuZWVkc1JlZHJhd1N0YXRlc1tdID0gICAgICAgeyAgdHJ1ZSwgIHRydWUsICB0cnVl
IH07CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNGb3JjZWRSZWRyYXdTdGF0ZXNbXSA9IHsg
ZmFsc2UsICB0cnVlLCAgdHJ1ZSB9OworCiAgICAgLy8gV2hlbiBub3Qgb24gdnN5bmMsIGRvbid0
IGRyYXcuCiAgICAgc2l6ZV90IG51bUNvbW1pdFN0YXRlcyA9IHNpemVvZihhbGxDb21taXRTdGF0
ZXMpIC8gc2l6ZW9mKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDb21taXRTdGF0ZSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Db21taXRTdGF0ZXM7ICsraSkgewogICAgICAgICBT
dGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENvbW1p
dFN0YXRlc1tpXSk7Ci0gICAgICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwotICAgICAg
ICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhm
YWxzZSk7CiAKLSAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFs
c2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7
Ci0gICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcs
IHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0KLSAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1m
YWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgotICAgICAgICBzdGF0ZS5zZXRO
ZWVkc0NvbW1pdChmYWxzZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nKHRydWUpOwotICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0gICAgICAgIC8vIENhc2UgMzog
bmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KLSAgICAg
ICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKLQotICAgICAg
ICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9
dHJ1ZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgICAgIHN0YXRl
LnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICBFWFBFQ1RfTkUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgMzsgKytqKSB7CisgICAgICAgICAg
ICBzdGF0ZS5zZXRWaXNpYmxlKHZpc2libGVTdGF0ZXNbal0pOworICAgICAgICAgICAgc3RhdGUu
c2V0TmVlZHNSZWRyYXcobmVlZHNSZWRyYXdTdGF0ZXNbal0pOworICAgICAgICAgICAgc3RhdGUu
c2V0TmVlZHNGb3JjZWRSZWRyYXcobmVlZHNGb3JjZWRSZWRyYXdTdGF0ZXNbal0pOworCisgICAg
ICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nPWZhbHNlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwor
ICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwor
ICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
Vywgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgICAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0Nv
bW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAg
c3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgICAgICAgICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmc9ZmFsc2UuCisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsK
KyAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsK
KyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgICAgIC8vIENhc2UgNDogbmVlZHND
b21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAg
c3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICAvLyBXaGVuIG9uIHZzeW5jLCB5b3Ugc2hvdWxkIGFsd2F5cyBk
cmF3LiBFeHBlY3QgaWYgeW91J3JlIHJlYWR5IHRvIGNvbW1pdCwgaW4gd2hpY2ggY2FzZSBjb21t
aXQuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Db21taXRTdGF0ZXM7ICsraSkgewog
ICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRl
KGFsbENvbW1pdFN0YXRlc1tpXSk7Ci0gICAgICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUp
OwotICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRJbnNp
ZGVWU3luYyh0cnVlKTsKICAgICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBl
eHBlY3RlZEFjdGlvbjsKICAgICAgICAgaWYgKGFsbENvbW1pdFN0YXRlc1tpXSAhPSBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCkKQEAgLTE0NCw1
OCArMTY1LDY4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFj
dGlvbkRyYXdzT25WU3luYykKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZXhwZWN0ZWRBY3Rp
b24gPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVDsKIAotICAgICAgICAv
LyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZh
bHNlLgotICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7Ci0gICAgICAgIHN0YXRl
LnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0gICAgICAgIC8vIENhc2Ug
MjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KLSAg
ICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
QWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0gICAgICAgIC8vIENhc2UgMzogbmVlZHND
b21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KLSAgICAgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0gICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1
ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgotICAgICAgICBzdGF0ZS5zZXROZWVk
c0NvbW1pdCh0cnVlKTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcodHJ1ZSk7Ci0gICAgICAgIEVYUEVDVF9FUShleHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFj
dGlvbigpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IDM7ICsraikgeworICAg
ICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZSh2aXNpYmxlU3RhdGVzW2pdKTsKKyAgICAgICAgICAg
IHN0YXRlLnNldE5lZWRzUmVkcmF3KG5lZWRzUmVkcmF3U3RhdGVzW2pdKTsKKyAgICAgICAgICAg
IHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KG5lZWRzRm9yY2VkUmVkcmF3U3RhdGVzW2pdKTsK
KworICAgICAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZz1mYWxzZS4KKyAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZh
bHNlKTsKKyAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZh
bHNlKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFj
dGlvbigpKTsKKworICAgICAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHND
b21taXQoZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmcodHJ1ZSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1
ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KKyAgICAgICAgICAgIHN0YXRlLnNl
dE5lZWRzQ29tbWl0KHRydWUpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9u
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgICAgICAgICAvLyBDYXNlIDQ6IG5lZWRzQ29t
bWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KKyAgICAgICAgICAgIHN0
YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRB
Y3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKIFRFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9Db21taXRTdGF0ZXNSZWRyYXdXaGVu
SW52aXNpYmxlKQogewotICAgIC8vIElmIG5vdCB2aXNpYmxlLCBuZXZlciByZWRyYXcuCiAgICAg
c2l6ZV90IG51bUNvbW1pdFN0YXRlcyA9IHNpemVvZihhbGxDb21taXRTdGF0ZXMpIC8gc2l6ZW9m
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDb21taXRTdGF0ZSk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBudW1Db21taXRTdGF0ZXM7ICsraSkgewogICAgICAgICBTdGF0ZU1hY2hpbmUg
c3RhdGU7CiAgICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENvbW1pdFN0YXRlc1tpXSk7
Ci0gICAgICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRJ
bnNpZGVWU3luYyhmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldFZpc2libGUoZmFsc2UpOwotCi0g
ICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmc9ZmFsc2UuCi0gICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKLSAgICAg
ICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICBF
WFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwotCi0gICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQo
ZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVl
KTsKLSAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
Vywgc3RhdGUubmV4dEFjdGlvbigpKTsKLQotICAgICAgICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0
PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCi0gICAgICAgIHN0YXRlLnNl
dE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyhmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0KLSAgICAgICAgLy8gQ2FzZSA0
OiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCi0gICAg
ICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAg
c3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CisgICAgICAgIHN0YXRlLnNldE5lZWRzRm9yY2Vk
UmVkcmF3KGZhbHNlKTsKKworICAgICAgICAvLyBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IGRyYXdp
bmcgcmVnYXJkbGVzcyBvZiB2c3luYy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IDI7ICsraikgeworICAgICAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoaiA9PSAxKTsKKwor
ICAgICAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZz1mYWxzZS4KKyAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNl
KTsKKyAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNl
KTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgICAgIC8vIENhc2UgMjogbmVl
ZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KKyAgICAgICAg
ICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKKyAgICAgICAgICAgIHN0YXRlLnNldFVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOworICAgICAgICAgICAgRVhQRUNUX05FKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsK
KworICAgICAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nPWZhbHNlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1
ZSk7CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxz
ZSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgICAgICAgICAvLyBDYXNlIDQ6IG5l
ZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KKyAgICAgICAg
ICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgICAgICB9CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114743</attachid>
            <date>2011-11-11 11:29:22 -0800</date>
            <delta_ts>2011-11-11 17:52:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71920-20111111112921.patch</filename>
            <type>text/plain</type>
            <size>18941</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjE5NjUzNTM0MzMwOTBk
ZGJhZWU2MTkyNDkwOWQ5NWY1ZmZhMjdlLi41MGY3MmI5YmRhOWMxZWVmMjUzZWNkMmU3ZWUzMDIy
NzYyYjg3Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTEtMTAgIElhaW4g
TWVycmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVh
ZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxl
cjo6c2V0TmVlZHNGb3JjZWRSZWRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNGb3JjZWRSZWRy
YXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpyZXF1
ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKToKKwogMjAxMS0xMS0xMCAgWGlhb21l
aSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgLS13ZWJraXQtdmlzdWFsLXdvcmQg
Y3Jhc2ggd2hlbiBjcmVhdGUgbGVnYWN5IHBvc2l0aW9uIGZvciBzaGFkb3dSb290CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGQxZThlZDk1ZGJmZTU0YzNhYWZlZjJmODY1MjUyZDM0NWIz
NTI5MWEuLjgwYmIxODQwMTUxY2Q2NmFlYTdmYTVmMThjZjU3NTgyMTE0OTQ5YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMTAgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBDQ1RocmVhZFBy
b3h5OjpmaW5pc2hBbGxSZW5kZXJpbmcgaGFuZ3MgaWYgIXZpc2libGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTEtMTEtMTAg
IFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDNkNjEyOTY2
OTM2OTYwYjUxNWRlZDdhZDFlZDFhNzEyODQ5NjA1ZGIuLmJjMGVlNzhiYzhhODRjZTg5MDAxNzJi
NDdlN2JlNGE2MTM3NDRkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTY4LDYgKzY4
LDEyIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzUmVkcmF3KCkKICAgICBwcm9jZXNzU2No
ZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZFJl
ZHJhdygpCit7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKyAg
ICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOworfQorCiB2b2lkIENDU2NoZWR1bGVyOjpiZWdp
bkZyYW1lQ29tcGxldGUoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6YmVnaW5G
cmFtZUNvbXBsZXRlIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRleCAwNjcxNzVi
MGQ2Y2RlZmRjMzRkZTAzNTU5MTQwNGMwMzkzYWY0NDM0Li4wYmUzNzE3NjE4MDFkNzhiMmM5NmEz
NDRlYzM0NGM4YTEyN2YyODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTY0LDYgKzY0LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKICAgICB2b2lkIHNldE5lZWRz
UmVkcmF3KCk7CiAKKyAgICAvLyBBcyBzZXROZWVkc1JlZHJhdygpLCBidXQgZW5zdXJlcyB0aGUg
ZHJhdyB3aWxsIGRlZmluaXRlbHkgaGFwcGVuIGV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxlLgor
ICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKwogICAgIHZvaWQgYmVnaW5GcmFtZUNv
bXBsZXRlKCk7CiAKICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmcoaW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCA0OTAxYjY0NWFjMTk1
MTU3OGU3ZmQ5NWQzMTc5OTU4YWJhNzVlZWYzLi42ZjNkOGI3MzYyMGVlZDg0ZGVhMTM2ZmIzYWMy
MjMzMDFhZjk3N2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuY3BwCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAgICAgOiBtX2NvbW1pdFN0
YXRlKENPTU1JVF9TVEFURV9JRExFKQogICAgICwgbV9uZWVkc1JlZHJhdyhmYWxzZSkKKyAgICAs
IG1fbmVlZHNGb3JjZWRSZWRyYXcoZmFsc2UpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNlKQog
ICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1faW5zaWRl
VlN5bmMoZmFsc2UpCkBAIC0zOCwyMSArMzksMjIgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKCkKIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFj
dGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7CisgICAg
Ym9vbCBzaG91bGREcmF3ID0gKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3luYyAmJiBtX3Zp
c2libGUpIHx8IG1fbmVlZHNGb3JjZWRSZWRyYXc7CiAgICAgc3dpdGNoIChtX2NvbW1pdFN0YXRl
KSB7CiAgICAgY2FzZSBDT01NSVRfU1RBVEVfSURMRToKLSAgICAgICAgaWYgKG1fbmVlZHNSZWRy
YXcgJiYgbV9pbnNpZGVWU3luYyAmJiBtX3Zpc2libGUpCisgICAgICAgIGlmIChzaG91bGREcmF3
KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwogICAgICAgICBpZiAobV9uZWVkc0Nv
bW1pdCAmJiBtX3Zpc2libGUpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1F
OwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9G
UkFNRV9JTl9QUk9HUkVTUzoKLSAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVW
U3luYyAmJiBtX3Zpc2libGUpCisgICAgICAgIGlmIChzaG91bGREcmF3KQogICAgICAgICAgICAg
cmV0dXJuIEFDVElPTl9EUkFXOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKICAgICBj
YXNlIENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM6Ci0gICAgICAgIGlmIChtX25lZWRz
UmVkcmF3ICYmIG1faW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlKQorICAgICAgICBpZiAoc2hvdWxk
RHJhdykKICAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgaWYgKCFtX3Vw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVM7CkBAIC02Miw3ICs2NCw3IEBAIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBj
b25zdAogICAgICAgICByZXR1cm4gQUNUSU9OX0NPTU1JVDsKIAogICAgIGNhc2UgQ09NTUlUX1NU
QVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVc6Ci0gICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYm
IG1faW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlKQorICAgICAgICBpZiAoc2hvdWxkRHJhdykKICAg
ICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05F
OwogICAgIH0KQEAgLTk3LDYgKzk5LDcgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKIAogICAgIGNhc2UgQUNUSU9OX0RSQVc6CiAgICAg
ICAgIG1fbmVlZHNSZWRyYXcgPSBmYWxzZTsKKyAgICAgICAgbV9uZWVkc0ZvcmNlZFJlZHJhdyA9
IGZhbHNlOwogICAgICAgICBpZiAobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfV0FJVElO
R19GT1JfRklSU1RfRFJBVykgewogICAgICAgICAgICAgQVNTRVJUKG1fbmVlZHNDb21taXQpOwog
ICAgICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9JRExFOwpAQCAtMTIwLDYg
KzEyMywxMSBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc1JlZHJhdygp
CiAgICAgbV9uZWVkc1JlZHJhdyA9IHRydWU7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OnNldE5lZWRzRm9yY2VkUmVkcmF3KCkKK3sKKyAgICBtX25lZWRzRm9yY2VkUmVkcmF3
ID0gdHJ1ZTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNDb21t
aXQoKQogewogICAgIG1fbmVlZHNDb21taXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggNDU3MGU1OTk1YzI2YjM5YjBkNDkyY2Q4MmQxMDg1
M2QwMTM5MDUwOS4uMTllZDIxZGIzMjc3YmUyMTU2MjkzZTA2ZTdiODlmMzM3MThlMmJjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC03OCw2ICs3OCwx
MCBAQCBwdWJsaWM6CiAgICAgLy8gb3IgdGhlIHNjcmVlbiBiZWluZyBkYW1hZ2VkIGFuZCBzaW1w
bHkgbmVlZGluZyByZWRpc3BsYXkuCiAgICAgdm9pZCBzZXROZWVkc1JlZHJhdygpOwogCisgICAg
Ly8gQXMgc2V0TmVlZHNSZWRyYXcoKSwgYnV0IGVuc3VyZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0
ZWx5IGhhcHBlbiBldmVuIGlmCisgICAgLy8gd2UgYXJlIG5vdCB2aXNpYmxlLgorICAgIHZvaWQg
c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKKwogICAgIC8vIEluZGljYXRlcyB0aGF0IGEgbmV3IGNv
bW1pdCBmbG93IG5lZWRzIHRvIGJlIHBlcmZvcm1lZCwgZWl0aGVyIHRvIHB1bGwKICAgICAvLyB1
cGRhdGVzIGZyb20gdGhlIG1haW4gdGhyZWFkIHRvIHRoZSBpbXBsLCBvciB0byBwdXNoIGRlbHRh
cyBmcm9tIHRoZSBpbXBsCiAgICAgLy8gdGhyZWFkIHRvIG1haW4uCkBAIC04OSwxMyArOTMsMTQg
QEAgcHVibGljOgogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAKICAgICAvLyBDYWxs
IHRoaXMgb25seSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX1VQREFURV9NT1JF
X1JFU09VUkNFUwotICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXN0IHRoYXQgdGhlIHNw
ZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4KKyAgICAvLyBmcm9tIG5leHRTdGF0ZS4g
SW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4KICAg
ICB2b2lkIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29tbWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKIAogICAgIGJv
b2wgbV9uZWVkc1JlZHJhdzsKKyAgICBib29sIG1fbmVlZHNGb3JjZWRSZWRyYXc7CiAgICAgYm9v
bCBtX25lZWRzQ29tbWl0OwogICAgIGJvb2wgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsK
ICAgICBib29sIG1faW5zaWRlVlN5bmM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4
IDA2M2QwYWVhZDExZjFlZDMwMzYwNGUwMzQ5MjBhODE1MDZmOTdmYmEuLjgyZDEyNDIxYzRiMWNi
NTgwMzk5ZmFkMmMxN2I0NWIzOGFiOWEzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpyZXF1ZXN0UmVhZGJhY2tP
bkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIG1fcmVhZGJhY2tSZXF1ZXN0T25JbXBsVGhyZWFkID0gcmVxdWVzdDsKLSAgICBt
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBtX3NjaGVkdWxl
ck9uSW1wbFRocmVhZC0+c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIH0KIAogR3JhcGhpY3NDb250
ZXh0M0QqIENDVGhyZWFkUHJveHk6OmNvbnRleHQoKQpAQCAtMzA4LDggKzMwOCw5IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50KiBjb21wbGV0aW9uCiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlz
aEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVChpc0ltcGxU
aHJlYWQoKSk7CiAgICAgQVNTRVJUKCFtX2ZpbmlzaEFsbFJlbmRlcmluZ0NvbXBsZXRpb25FdmVu
dE9uSW1wbFRocmVhZCk7Ci0gICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRzUmVk
cmF3KCk7CiAgICAgbV9maW5pc2hBbGxSZW5kZXJpbmdDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJl
YWQgPSBjb21wbGV0aW9uOworCisgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldE5lZWRz
Rm9yY2VkUmVkcmF3KCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
QmVnaW5GcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKaW5kZXggN2YwOGNjN2YxY2UwZDlm
Mjk0NzIyMTk3ZGI5OGZlZjY1MTkwMzc5Ni4uNjI2YWE0NTc2OTE2NzkyMWY5MmMwZWVjZjU1NzFk
ZWJhOTRkNmExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApAQCAtNTUsNiArNTUsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXROZWVkc1JlZHJhdyhib29sIGIpIHsgbV9uZWVkc1JlZHJhdyA9
IGI7IH0KICAgICBib29sIG5lZWRzUmVkcmF3KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1JlZHJh
dzsgfQogCisgICAgdm9pZCBzZXROZWVkc0ZvcmNlZFJlZHJhdyhib29sIGIpIHsgbV9uZWVkc0Zv
cmNlZFJlZHJhdyA9IGI7IH0KKyAgICBib29sIG5lZWRzRm9yY2VkUmVkcmF3KCkgY29uc3QgeyBy
ZXR1cm4gbV9uZWVkc0ZvcmNlZFJlZHJhdzsgfQorCiAgICAgYm9vbCBpbnNpZGVWU3luYygpIGNv
bnN0IHsgcmV0dXJuIG1faW5zaWRlVlN5bmM7IH0KICAgICBib29sIHZpc2libGUoKSBjb25zdCB7
IHJldHVybiBtX3Zpc2libGU7IH0KIApAQCAtOTksMTAzICsxMDIsMTI0IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQp
CiAgICAgfQogfQogCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldEZv
cmNlZFJlZHJhd0RvZXNOb3RTZXRzTm9ybWFsUmVkcmF3KQoreworICAgIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KCk7CisgICAg
RVhQRUNUX0ZBTFNFKHN0YXRlLnJlZHJhd1BlbmRpbmcoKSk7Cit9CisKIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKIHsKLSAgICAv
LyBXaGVuIG5vdCBvbiB2c3luYywgZG9uJ3QgZHJhdy4KKyAgICAvLyBXaGVuIG5vdCBvbiB2c3lu
Yywgb3Igb24gdnN5bmMgYnV0IG5vdCB2aXNpYmxlLCBkb24ndCBkcmF3LgogICAgIHNpemVfdCBu
dW1Db21taXRTdGF0ZXMgPSBzaXplb2YoYWxsQ29tbWl0U3RhdGVzKSAvIHNpemVvZihDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q29tbWl0U3RhdGUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtQ29tbWl0U3RhdGVzOyArK2kpIHsKLSAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRlOwot
ICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShhbGxDb21taXRTdGF0ZXNbaV0pOwotICAgICAg
ICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKLSAgICAgICAgc3RhdGUuc2V0VmlzaWJsZSh0
cnVlKTsKLSAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOwotCi0gICAgICAgIC8v
IENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFs
c2UuCi0gICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKLSAgICAgICAgc3RhdGUu
c2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICBFWFBFQ1RfTkUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwotCi0gICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmc9dHJ1ZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwot
ICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAg
ICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKLQotICAgICAgICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCi0gICAgICAgIHN0YXRlLnNldE5lZWRzQ29t
bWl0KHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhm
YWxzZSk7Ci0gICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0KLSAgICAgICAgLy8gQ2FzZSA0OiBuZWVkc0Nv
bW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCi0gICAgICAgIHN0YXRl
LnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMDsgaiA8IDI7ICsraikgeworICAgICAgICAgICAgU3RhdGVNYWNoaW5lIHN0YXRl
OworICAgICAgICAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsK
KyAgICAgICAgICAgIGlmICghaikgeworICAgICAgICAgICAgICAgIHN0YXRlLnNldEluc2lkZVZT
eW5jKHRydWUpOworICAgICAgICAgICAgICAgIHN0YXRlLnNldFZpc2libGUoZmFsc2UpOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFs
c2UpOworCisgICAgICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1v
cmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21t
aXQoZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcoZmFsc2UpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgICAgICAgICAgLy8gQ2Fz
ZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgor
ICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAgICAgICAgc3Rh
dGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7CisgICAgICAgICAgICBFWFBF
Q1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworCisgICAgICAgICAgICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCisgICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0Nv
bW1pdCh0cnVlKTsKKyAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nKGZhbHNlKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgICAgIC8vIENh
c2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgor
ICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgICAgICAgICBzdGF0
ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgICAgIEVYUEVD
VF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBXaGVuIG9uIHZzeW5jLCB5b3Ugc2hv
dWxkIGFsd2F5cyBkcmF3LiBFeHBlY3QgaWYgeW91J3JlIHJlYWR5IHRvIGNvbW1pdCwgaW4gd2hp
Y2ggY2FzZSBjb21taXQuCisgICAgLy8gV2hlbiBvbiB2c3luYywgb3Igbm90IG9uIHZzeW5jIGJ1
dCBuZWVkc0ZvcmNlZFJlZHJhdyBzZXQsIHNob3VsZCBhbHdheXMgZHJhdyBleHBlY3QgaWYgeW91
J3JlIHJlYWR5IHRvIGNvbW1pdCwgaW4gd2hpY2ggY2FzZSBjb21taXQuCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1Db21taXRTdGF0ZXM7ICsraSkgewotICAgICAgICBTdGF0ZU1hY2hp
bmUgc3RhdGU7Ci0gICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENvbW1pdFN0YXRlc1tp
XSk7Ci0gICAgICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwotICAgICAgICBzdGF0ZS5z
ZXRWaXNpYmxlKHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKLSAg
ICAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBleHBlY3RlZEFjdGlvbjsKLSAg
ICAgICAgaWYgKGFsbENvbW1pdFN0YXRlc1tpXSAhPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCkKLSAgICAgICAgICAgIGV4cGVjdGVkQWN0aW9u
ID0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBleHBlY3RlZEFjdGlvbiA9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQ09NTUlUOwotCi0gICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCi0gICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0
KGZhbHNlKTsKLSAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFs
c2UpOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24o
KSk7Ci0KLSAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZz10cnVlLgotICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7
Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0KLSAg
ICAgICAgLy8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nPWZhbHNlLgotICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKLSAgICAgICAg
c3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0KLSAgICAgICAgLy8g
Q2FzZSA0OiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUu
Ci0gICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgICAgICBzdGF0ZS5zZXRV
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgMjsgKytqKSB7CisgICAgICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAg
ICAgICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShhbGxDb21taXRTdGF0ZXNbaV0pOworICAgICAg
ICAgICAgaWYgKCFqKSB7CisgICAgICAgICAgICAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1
ZSk7CisgICAgICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CisgICAgICAg
ICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIHN0YXRlLnNldE5lZWRzRm9yY2VkUmVkcmF3KHRydWUpOworCisgICAgICAg
ICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIGV4cGVjdGVkQWN0aW9uOworICAg
ICAgICAgICAgaWYgKGFsbENvbW1pdFN0YXRlc1tpXSAhPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCkKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZEFjdGlvbiA9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVzsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBleHBlY3RlZEFjdGlvbiA9IENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlUOworCisgICAgICAgICAgICAvLyBDYXNlIDE6IG5lZWRz
Q29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgorICAgICAgICAg
ICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICAgICAgRVhQRUNUX0VRKGV4
cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgICAgICAgICAvLyBDYXNl
IDI6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCisg
ICAgICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CisgICAgICAgICAgICBzdGF0
ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShleHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgICAgICAgICAg
Ly8gQ2FzZSAzOiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZh
bHNlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgICAgICAg
ICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAg
ICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZz10cnVlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAg
ICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAg
ICAgICAgfQogICAgIH0KIH0KIAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3ROb0NvbW1pdFN0YXRlc1JlZHJhd1doZW5JbnZpc2libGUpCiB7Ci0gICAgLy8gSWYgbm90IHZp
c2libGUsIG5ldmVyIHJlZHJhdy4KICAgICBzaXplX3QgbnVtQ29tbWl0U3RhdGVzID0gc2l6ZW9m
KGFsbENvbW1pdFN0YXRlcykgLyBzaXplb2YoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNvbW1p
dFN0YXRlKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNvbW1pdFN0YXRlczsgKytp
KSB7CiAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAgICAgc3RhdGUuc2V0Q29tbWl0
U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKLSAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXco
dHJ1ZSk7Ci0gICAgICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKICAgICAgICAgc3Rh
dGUuc2V0VmlzaWJsZShmYWxzZSk7Ci0KLSAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1m
YWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4KLSAgICAgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQoZmFsc2UpOwotICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyhmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0KLSAgICAgICAgLy8gQ2FzZSAy
OiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgotICAg
ICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotCi0gICAg
ICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
Zz1mYWxzZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7Ci0gICAgICAgIHN0
YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNU
X05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlv
bigpKTsKLQotICAgICAgICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmc9dHJ1ZS4KLSAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7
Ci0gICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAg
ICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKKyAg
ICAgICAgc3RhdGUuc2V0TmVlZHNGb3JjZWRSZWRyYXcoZmFsc2UpOworCisgICAgICAgIC8vIFRo
ZXJlIHNob3VsZG4ndCBiZSBhbnkgZHJhd2luZyByZWdhcmRsZXNzIG9mIHZzeW5jLgorICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgMjsgKytqKSB7CisgICAgICAgICAgICBzdGF0ZS5z
ZXRJbnNpZGVWU3luYyhqID09IDEpOworCisgICAgICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29t
bWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgorICAgICAgICAgICAg
c3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICAgICAgRVhQRUNUX05FKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKwor
ICAgICAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2Up
OworICAgICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7
CisgICAgICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9E
UkFXLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgICAgICAgICAvLyBDYXNlIDM6IG5lZWRz
Q29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCisgICAgICAgICAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICAgICAgICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKKyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisK
KyAgICAgICAgICAgIC8vIENhc2UgNDogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZz10cnVlLgorICAgICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7
CisgICAgICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsK
KyAgICAgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTIxNiw3
ICsyNDAsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNf
Tm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgLy8gQmVnaW4gYW4gdXBkYXRlLgogICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKIAotICAgIC8vIFZlcmlpZnkgd2UgZG9uJ3QgZG8gYW55
dGhpbmcsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCisgICAgLy8gVmVyaWZ5IHdlIGRv
bid0IGRvIGFueXRoaW5nLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAgIHN0YXRl
LnNldEluc2lkZVZTeW5jKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnNldElu
c2lkZVZTeW5jKHRydWUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>