<?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>44129</bug_id>
          
          <creation_ts>2010-08-17 14:00:16 -0700</creation_ts>
          <short_desc>Crash in WebCore::Node::createRendererIfNeeded()</short_desc>
          <delta_ts>2010-08-24 13:24:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>44170</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Tony Gentilcore">tonyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>inferno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>265757</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-17 14:00:16 -0700</bug_when>
    <thetext>This was discovered in Chromium 6.0.472.1. Most likely introduced in r64970-65072 (perhaps r65006?).

Reproduces on http://fifax.net/ with AdBlock extension installed. I&apos;m trying to reduce a test case that will demonstrate this without AdBlock.

http://code.google.com/p/chromium/issues/detail?id=52377

Thread 0 *CRASHED* ( EXCEPTION_ACCESS_VIOLATION_READ @ 0x00000020 )
0x565e17e2 	[chrome.dll 	- node.cpp:1399] 	WebCore::Node::createRendererIfNeeded()
0x565f8d21 	[chrome.dll 	- element.cpp:815] 	WebCore::Element::attach()
0x566fe2cf 	[chrome.dll 	- htmlframeelementbase.cpp:212] 	WebCore::HTMLFrameElementBase::attach()
0x567f893c 	[chrome.dll 	- htmlconstructionsite.cpp:129] 	WebCore::HTMLConstructionSite::attachAtSite(WebCore::HTMLConstructionSite::AttachmentSite const &amp;,WTF::PassRefPtr&lt;WebCore::Node&gt;)
0x567f9192 	[chrome.dll 	- htmlconstructionsite.cpp:445] 	WebCore::HTMLConstructionSite::fosterParent(WebCore::Node *)
0x567f91bd 	[chrome.dll 	- htmlconstructionsite.cpp:95] 	WebCore::HTMLConstructionSite::attach&lt;WebCore::Comment&gt;(WebCore::Node *,WTF::PassRefPtr&lt;WebCore::Comment&gt;)
0x567f8b9d 	[chrome.dll 	- htmlconstructionsite.cpp:219] 	WebCore::HTMLConstructionSite::attachToCurrent(WTF::PassRefPtr&lt;WebCore::Element&gt;)
0x567f8c81 	[chrome.dll 	- htmlconstructionsite.cpp:252] 	WebCore::HTMLConstructionSite::insertHTMLElement(WebCore::AtomicHTMLToken &amp;)
0x567c4fe2 	[chrome.dll 	- htmltreebuilder.cpp:2811] 	WebCore::HTMLTreeBuilder::processGenericRawTextStartTag(WebCore::AtomicHTMLToken &amp;)
0x567c24b6 	[chrome.dll 	- htmltreebuilder.cpp:987] 	WebCore::HTMLTreeBuilder::processStartTagForInBody(WebCore::AtomicHTMLToken &amp;)
0x567c2960 	[chrome.dll 	- htmltreebuilder.cpp:1168] 	WebCore::HTMLTreeBuilder::processStartTagForInTable(WebCore::AtomicHTMLToken &amp;)
0x567c3126 	[chrome.dll 	- htmltreebuilder.cpp:1276] 	WebCore::HTMLTreeBuilder::processStartTag(WebCore::AtomicHTMLToken &amp;)
0x567c18ba 	[chrome.dll 	- htmltreebuilder.cpp:529] 	WebCore::HTMLTreeBuilder::processToken(WebCore::AtomicHTMLToken &amp;)
0x56750bb6 	[chrome.dll 	- htmldocumentparser.cpp:172] 	WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode)
0x56750aca 	[chrome.dll 	- htmldocumentparser.cpp:127] 	WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode)
0x56750ed9 	[chrome.dll 	- htmldocumentparser.cpp:351] 	WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution()
0x56750f62 	[chrome.dll 	- htmldocumentparser.cpp:387] 	WebCore::HTMLDocumentParser::notifyFinished(WebCore::CachedResource *)
0x5675898b 	[chrome.dll 	- cachedscript.cpp:99] 	WebCore::CachedScript::checkNotify()
0x56758955 	[chrome.dll 	- cachedscript.cpp:89] 	WebCore::CachedScript::data(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;,bool)
0x5665f028 	[chrome.dll 	- loader.cpp:415] 	WebCore::Loader::Host::didFinishLoading(WebCore::SubresourceLoader *)
0x567563c5 	[chrome.dll 	- subresourceloader.cpp:183] 	WebCore::SubresourceLoader::didFinishLoading()
0x56756ed1 	[chrome.dll 	- resourceloader.cpp:443] 	WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle *)
0x568135d7 	[chrome.dll 	- resourcehandle.cpp:191]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265779</commentid>
    <comment_count>1</comment_count>
      <attachid>64636</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-17 14:43:59 -0700</bug_when>
    <thetext>Created attachment 64636
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265921</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-17 20:26:11 -0700</bug_when>
    <thetext>DOM mutation events are sad face.  We need to make sure the parser never fires them.  There are a bunch of FIXMEs about where we&apos;re firing them today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266165</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 09:37:47 -0700</bug_when>
    <thetext>I think it is sufficient to check if the child still has a parent and simply not attach it if it has been removed. My patch is a 2-liner, I&apos;ll post it shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266203</commentid>
    <comment_count>4</comment_count>
      <attachid>64729</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 10:20:17 -0700</bug_when>
    <thetext>Created attachment 64729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266207</commentid>
    <comment_count>5</comment_count>
      <attachid>64730</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 10:27:22 -0700</bug_when>
    <thetext>Created attachment 64730
Fix line break in test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266208</commentid>
    <comment_count>6</comment_count>
      <attachid>64729</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-18 10:27:36 -0700</bug_when>
    <thetext>Comment on attachment 64729
Patch

What about if the beforeload handler removes the target element&apos;s parent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266216</commentid>
    <comment_count>7</comment_count>
      <attachid>64732</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 10:38:14 -0700</bug_when>
    <thetext>Created attachment 64732
Add test case which removes element&apos;s parent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266218</commentid>
    <comment_count>8</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 10:39:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 64729 [details])
&gt; What about if the beforeload handler removes the target element&apos;s parent?

Good catch. I added another test (explained in the ChangeLog). Please let me know if you had something else in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266219</commentid>
    <comment_count>9</comment_count>
      <attachid>64732</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 10:39:27 -0700</bug_when>
    <thetext>Comment on attachment 64732
Add test case which removes element&apos;s parent

Oh, script tests have to be separate iirc.  I&apos;m not 100% certain of that, but I believe that html5lib doesn&apos;t handle tests which run scripts.  Maybe adoption02 is already script-only tests?

This change makes total sense:

+        ASSERT(child-&gt;attached() || !child-&gt;parent() || !child-&gt;parent()-&gt;attached());


But this one?

-        if (site.parent-&gt;attached() &amp;&amp; !child-&gt;attached())
+        if (child-&gt;parent() &amp;&amp; site.parent-&gt;attached() &amp;&amp; !child-&gt;attached())
             child-&gt;attach();

we just used site.parent on the previous line.  The only way site.parent could be missing is if it got removed in insiertBefore().  The right fix for that is to add a parserInsertBefore() which doesn&apos;t send events.

So I&apos;m confused how this is the right fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266221</commentid>
    <comment_count>10</comment_count>
      <attachid>64732</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-18 10:41:20 -0700</bug_when>
    <thetext>Comment on attachment 64732
Add test case which removes element&apos;s parent

Sorry, I missed Eric&apos;s comments. Setting to review- based on those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266227</commentid>
    <comment_count>11</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 10:44:04 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 64732 [details])
&gt; Oh, script tests have to be separate iirc.  I&apos;m not 100% certain of that, but I believe that html5lib doesn&apos;t handle tests which run scripts.  Maybe adoption02 is already script-only tests?

I&apos;m happy to move them if necessary, but they appear to work and there is a &lt;script&gt; block in an existing test in that file. Am I missing something?

&gt; 
&gt; This change makes total sense:
&gt; 
&gt; +        ASSERT(child-&gt;attached() || !child-&gt;parent() || !child-&gt;parent()-&gt;attached());
&gt; 
&gt; 
&gt; But this one?
&gt; 
&gt; -        if (site.parent-&gt;attached() &amp;&amp; !child-&gt;attached())
&gt; +        if (child-&gt;parent() &amp;&amp; site.parent-&gt;attached() &amp;&amp; !child-&gt;attached())
&gt;              child-&gt;attach();
&gt; 
&gt; we just used site.parent on the previous line.  The only way site.parent could be missing is if it got removed in insiertBefore().  The right fix for that is to add a parserInsertBefore() which doesn&apos;t send events.

I tried that initially by hacking in a quick insertBefore variant with the events commented out. That fixed the crash but then the iframe wasn&apos;t actually removed by the beforeload handler. I believe we want to support beforeload removing an element, right? Extensions like AdBlock rely on it.

&gt; 
&gt; So I&apos;m confused how this is the right fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266228</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 10:45:50 -0700</bug_when>
    <thetext>beforeload should have nothing to do with what method we use to insert the element.  the beforeload will be sent by whatever starts the load, which I presume is the parseMappedAttribute function for the iframe element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266229</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 10:46:34 -0700</bug_when>
    <thetext>the adblock is presumably using the DOMInserted event.  Which we do want to prevent.  The parser should not be sending any mutation events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266232</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 10:47:49 -0700</bug_when>
    <thetext>Yeah, I think this is the wrong fix.  We shouldn&apos;t just be guarding against the events.  We should not be sending them at all.  Unless we replace insertBefore with a parserInsertBefore, there will just be other variants of this bug reported tomrorow. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266295</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 12:06:56 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Yeah, I think this is the wrong fix.  We shouldn&apos;t just be guarding against the events.  We should not be sending them at all.  Unless we replace insertBefore with a parserInsertBefore, there will just be other variants of this bug reported tomrorow. :)

Here&apos;s what&apos;s happening.

ContainerNode::insertBefore() calls ContainerNode::notifyChildInserted() which calls the Node&apos;s insertedIntoDocument() which synchronously runs the beforeload handler (because there is no src on the iframe).

Creating a parserInsertBefore() which doesn&apos;t trigger insertedIntoDocument() breaks functionality.

Guarding against it in this case seems perfectly reasonable to me, but you have much more experience with this so I&apos;ll defer to your recommendation. Another option might be to look into making beforeload async, but I thought that some folks recently ensured it was synchronous precisely for cases like this (blocking resource load in beforeload).

BTW - AdBlock uses a combination of beforeload and DOMNodeInserted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266305</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-18 12:16:34 -0700</bug_when>
    <thetext>Adam, Eric: I know you don&apos;t want DOM mutation events to exist at all because you are concerned we can’t implement them as currently designed, and you are pushing to turn them off entirely during initial parsing, but removing does cause compatibility differences, especially for browser extensions.

I’m not sure what the right order to stage this is. I’m worried about just removing DOM mutation events and leaving re-adding them as a task for later rather than moving to a new design. You have made assertions that nobody will be shipping any time soon, but how long will WebKit be in an “unshippable” state?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266318</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-18 12:33:47 -0700</bug_when>
    <thetext>More detailed response later, but trunk is shippable.  If we&apos;re not ready to ship, we should go back behind the setting.  Parser shouldn&apos;t fire mutation event, both according to the spec and to the intent of the old parser.  Mutation events are fine for mutations to the document via DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266323</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 12:48:09 -0700</bug_when>
    <thetext>Is beforeload considered a DOM mutation event?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266337</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-18 13:26:08 -0700</bug_when>
    <thetext>&gt; Is beforeload considered a DOM mutation event?

No.  beforeload is a non-standard WebKit feature added recently to support extensions.  Sadly, it also introduces synchronous JavaScript execution at new times.  I&apos;m sad that the folks who implemented beforeload didn&apos;t ask for feedback before introducing a feature that&apos;s quite likely to introduce exploitable security vulnerabilities, but that&apos;s a discussion for another day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266339</commentid>
    <comment_count>20</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 13:32:04 -0700</bug_when>
    <thetext>Sounds like there is a much larger issue at play here.

But this is one of the most popular crashers on the Chrome dev channel (due to the popularity of the AdBlock extension). My question is whether it is reasonable to protect against removal in this case (perhaps along with a FIXME: explaining the desire to prevent arbitrary code execution during parsing), or if the current situation is so bad that I should give up on this patch in favor of a more general resolution to this dilemma.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266345</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-18 13:37:48 -0700</bug_when>
    <thetext>If you want to fix this crash, here&apos;s the flowchart:

1) Determine if it&apos;s caused by a DOM mutation event or beforeload.
2) If it&apos;s DOM mutation, kill the source of the event.  -&gt; Crash fixed.
3) If it&apos;s beforeload, figure out how we&apos;re going to recover from arbitrary script at that call site.  -&gt; Crash fixed.

If you want to fix all the bugs, here&apos;s the flowchart:

1) Remove all generation of DOM mutation events from the parser.
2) Isolate the generation of all beforeload events to as few program points as possible.
3) Make those program points resilient to arbitrary script execution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266469</commentid>
    <comment_count>22</comment_count>
      <attachid>64791</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 17:19:18 -0700</bug_when>
    <thetext>Created attachment 64791
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266472</commentid>
    <comment_count>23</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 17:25:28 -0700</bug_when>
    <thetext>I uploaded a work in progress that splits out a parserInsertBefore() just like parserAddChild(). That doesn&apos;t fix the beforeload case, but at least it suppresses the DOM mutations events which gets us closer to being able to isolate the beforeload points.

However, since these parser*() methods don&apos;t handle re-parenting, this approach makes https://bugs.webkit.org/show_bug.cgi?id=44170 more prominent.

I&apos;m thinking about how this should be handled. There is a pretty suspicious FIXME in attach(). Is there any more background behind this?

    // FIXME: It&apos;s confusing that HTMLConstructionSite::attach does the magic
    // redirection to the foster parent but HTMLConstructionSite::attachAtSite
    // doesn&apos;t.  It feels like we&apos;re missing a concept somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266474</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-18 17:28:39 -0700</bug_when>
    <thetext>&gt; However, since these parser*() methods don&apos;t handle re-parenting, this approach makes https://bugs.webkit.org/show_bug.cgi?id=44170 more prominent.

What do you mean by re-parenting?  The parser decides where to insert elements.  Anything that changes that decision in the rest of WebCore is cruft from the old parser that we want to remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266485</commentid>
    <comment_count>25</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 17:46:18 -0700</bug_when>
    <thetext>&gt; What do you mean by re-parenting?

In certain adoption cases, the node being inserted may already have a parent. The test case in 44170 triggers the existing ASSERT() in parserAddChild() that verifies the node being inserted doesn&apos;t have a parent. In the WIP patch I posted, the new no-parent ASSERTs in attachAtSite() and parserInsertBefore() are triggered by existing tests in the html5lib suite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266486</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-18 17:50:36 -0700</bug_when>
    <thetext>I see.  Yes, the parser* methods need to understand re-parenting in that sense.  In fact, that&apos;s the main reason we end up falling back to the regular mutation-event-firing DOM APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266489</commentid>
    <comment_count>27</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 17:53:45 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; I see.  Yes, the parser* methods need to understand re-parenting in that sense.  In fact, that&apos;s the main reason we end up falling back to the regular mutation-event-firing DOM APIs.

Thanks. I&apos;ll run that down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266498</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 18:41:18 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; I see.  Yes, the parser* methods need to understand re-parenting in that sense.  In fact, that&apos;s the main reason we end up falling back to the regular mutation-event-firing DOM APIs.
&gt; 
&gt; Thanks. I&apos;ll run that down.

Do they?  The HTML5 spec is explicit about when to remove the parent if it already exists.  We could keep that as a separate step in the AAA.  It&apos;s possible there is just missing code in HTMLConstructionSite or the AAA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266500</commentid>
    <comment_count>29</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 18:41:57 -0700</bug_when>
    <thetext>My point above, is that it would be a spec bug if we need to &quot;reparent&quot; and the spec doesn&apos;t tell us to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266528</commentid>
    <comment_count>30</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-18 20:41:04 -0700</bug_when>
    <thetext>You guys are right. From the AAA, step 7:

&quot;Otherwise, append whatever last node ended up being in the previous step to the common ancestor node, first removing it from its previous parent node if any.&quot;

So I believe the solution to this and 44170 is to make sure the methods used by attachAtSite for addChild and insertBefore both don&apos;t dispatch DOM mutation events and handle re-parenting.

That means making addChild handle re-parenting and making insertBefore not dispatch mutations.

Then we have to deal with onbeforeload separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266542</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-18 22:10:00 -0700</bug_when>
    <thetext>I think the 99% case does not want the reparenting branch. I think we should assert !parent() and make the AAA reparent explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266920</commentid>
    <comment_count>32</comment_count>
      <attachid>64893</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-19 13:18:20 -0700</bug_when>
    <thetext>Created attachment 64893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266924</commentid>
    <comment_count>33</comment_count>
      <attachid>64893</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-19 13:28:27 -0700</bug_when>
    <thetext>Comment on attachment 64893
Patch

LayoutTests/ChangeLog:8
 +          * html5lib/resources/adoption02.dat: Add 3 new cases. (1) Misnest a node in a table and remove it during its beforeload handler. The node should not be in the tree. (2) Misnest a node in a table and remove its parent during its beforeload handler. The adoption agency should have already changed its parent to the one before the table and it and its parent should be removed. (3) A crazy DOM from https://bugs.webkig.org/show_bug.cgi?id=44170 which previously crashed. I&apos;m not sure the tree is right, but this case is so crazy, it isn&apos;t clear to me what would be right.
Might want to manually wrap this. :)

WebCore/dom/ContainerNode.cpp:137
 +          insertBetween(refChildPreviousSibling.get(), next.get(), child);
This is a great change!

WebCore/dom/ContainerNode.cpp:594
 +      ASSERT(!newChild-&gt;parent()); // Does not handle reparenting.
I think the old comment was more useful. :)

WebCore/html/HTMLTreeBuilder.cpp:581
 +                      m_lastScriptElement-&gt;removeChildren(); // FIXME: DOM mutation events.
I think removeAllChildren() might not send events, not sure.

WebCore/html/HTMLTreeBuilder.cpp:1749
 +          newParent-&gt;appendChild(child, ec); // FIXME: DOM mutation events.
This is easy to fix... :)

WebCore/html/HTMLTreeBuilder.cpp:1821
 +              // Use appendChild instead of parserAddChild to handle possible reparenting.
This comment seems wrong.  We should use explicit parent removal here and then parserAddChild.
Maybe the idea is that appendChild does some sort of fancy move by which the child can stay attached?  Not sure.

WebCore/html/HTMLTreeBuilder.cpp:1840
 +              commonAncestor-&gt;appendChild(lastNode-&gt;element(), ec, true); // FIXME: DOM mutation events.
Why here?  Should this have just had an uncontidional parserRemoveChild outside of the if/else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266926</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-19 13:29:17 -0700</bug_when>
    <thetext>In general I think this looks great!  Mostly I need some clarifying remarks from you about which ones you chose to replace or not and why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266929</commentid>
    <comment_count>35</comment_count>
      <attachid>64893</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-19 13:36:41 -0700</bug_when>
    <thetext>Comment on attachment 64893
Patch

This looks pretty good.  I gave Tony some notes about the tests in IRC.  The &lt;a&gt;&lt;svg&gt;&lt;tr&gt;&lt;input&gt;&lt;/a&gt; results don&apos;t seem right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267015</commentid>
    <comment_count>36</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-19 15:56:55 -0700</bug_when>
    <thetext>&gt; The &lt;a&gt;&lt;svg&gt;&lt;tr&gt;&lt;input&gt;&lt;/a&gt; results don&apos;t seem right.
The FF4 beta produces the same wonky dom. I&apos;ll leave it as-is and open a spec bug after checking this in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267017</commentid>
    <comment_count>37</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-19 15:57:34 -0700</bug_when>
    <thetext>Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267018</commentid>
    <comment_count>38</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-19 15:57:52 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; In general I think this looks great!  Mostly I need some clarifying remarks from you about which ones you chose to replace or not and why.

Well I just updated the case that I needed and marked the others as FIXMEs to keep the patch simpler. If you prefer, I can go ahead and update all of those in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267137</commentid>
    <comment_count>39</comment_count>
      <attachid>64926</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-19 22:50:23 -0700</bug_when>
    <thetext>Created attachment 64926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267138</commentid>
    <comment_count>40</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-19 22:50:45 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 64893 [details])
&gt; LayoutTests/ChangeLog:8
&gt;  +          * html5lib/resources/adoption02.dat: Add 3 new cases. (1) Misnest a node in a table and remove it during its beforeload handler. The node should not be in the tree. (2) Misnest a node in a table and remove its parent during its beforeload handler. The adoption agency should have already changed its parent to the one before the table and it and its parent should be removed. (3) A crazy DOM from https://bugs.webkig.org/show_bug.cgi?id=44170 which previously crashed. I&apos;m not sure the tree is right, but this case is so crazy, it isn&apos;t clear to me what would be right.
&gt; Might want to manually wrap this. :)

Moot now that the tests are split up. But I&apos;ll keep that in mind.

&gt; WebCore/dom/ContainerNode.cpp:594
&gt;  +      ASSERT(!newChild-&gt;parent()); // Does not handle reparenting.
&gt; I think the old comment was more useful. :)

OK. I switched back to the old and added the note &quot;... (and want DOM mutation events)&quot;.

&gt; WebCore/html/HTMLTreeBuilder.cpp:581
&gt;  +                      m_lastScriptElement-&gt;removeChildren(); // FIXME: DOM mutation events.
&gt; I think removeAllChildren() might not send events, not sure.

Oops, you are right. Comment removed.
 
&gt; WebCore/html/HTMLTreeBuilder.cpp:1749
&gt;  +          newParent-&gt;appendChild(child, ec); // FIXME: DOM mutation events.
&gt; This is easy to fix... :)

I initially wasn&apos;t going to fix everything in this patch. But I went ahead and did everything.

&gt; WebCore/html/HTMLTreeBuilder.cpp:1821
&gt;  +              // Use appendChild instead of parserAddChild to handle possible reparenting.
&gt; This comment seems wrong.  We should use explicit parent removal here and then parserAddChild.
&gt; Maybe the idea is that appendChild does some sort of fancy move by which the child can stay attached?  Not sure.

Done. I don&apos;t see any fancy moves in appendChild.

&gt; WebCore/html/HTMLTreeBuilder.cpp:1840
&gt;  +              commonAncestor-&gt;appendChild(lastNode-&gt;element(), ec, true); // FIXME: DOM mutation events.
&gt; Why here?  Should this have just had an uncontidional parserRemoveChild outside of the if/else?

Yep. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267140</commentid>
    <comment_count>41</comment_count>
      <attachid>64926</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-19 23:00:39 -0700</bug_when>
    <thetext>Comment on attachment 64926
Patch

Very nice.  Thanks for writing this patch.  It pays off a debt we incurred.

WebCore/html/HTMLTreeBuilder.cpp:1825
 +              if (lastNode-&gt;element()-&gt;parentElement()-&gt;attached() &amp;&amp; !lastNode-&gt;element()-&gt;attached())
I would have temporaries for these, but ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267240</commentid>
    <comment_count>42</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-20 07:04:08 -0700</bug_when>
    <thetext>Yup, fantastic as always, thanks Tony!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267258</commentid>
    <comment_count>43</comment_count>
      <attachid>64958</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-20 08:33:13 -0700</bug_when>
    <thetext>Created attachment 64958
Revert stray permission change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267291</commentid>
    <comment_count>44</comment_count>
      <attachid>64963</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-20 10:30:35 -0700</bug_when>
    <thetext>Created attachment 64963
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267357</commentid>
    <comment_count>45</comment_count>
      <attachid>64963</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-20 12:53:20 -0700</bug_when>
    <thetext>Comment on attachment 64963
Patch for landing

Rejecting patch 64963 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--wait-for-httpd&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 20888 test cases.
media/video-preload.html -&gt; crashed

Exiting early after 1 failures. 17251 tests run.
1000.35s total testing time

17250 test cases (99%) succeeded
1 test case (&lt;1%) crashed
36 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/3803043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267359</commentid>
    <comment_count>46</comment_count>
      <attachid>64963</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-20 12:58:59 -0700</bug_when>
    <thetext>Comment on attachment 64963
Patch for landing

Stupid leopard CoreVideo bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267495</commentid>
    <comment_count>47</comment_count>
      <attachid>64963</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-20 17:26:17 -0700</bug_when>
    <thetext>Comment on attachment 64963
Patch for landing

Clearing flags on attachment: 64963

Committed r65769: &lt;http://trac.webkit.org/changeset/65769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267496</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-20 17:26:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268018</commentid>
    <comment_count>49</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-23 11:28:42 -0700</bug_when>
    <thetext>parserAddChild and parserRemoveChild should be non-virtual functions in Element rather than virtual functions in Node. There&apos;s no caller that needs to call it on a Node*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268021</commentid>
    <comment_count>50</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-23 11:32:01 -0700</bug_when>
    <thetext>Darin is right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268747</commentid>
    <comment_count>51</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-08-24 13:24:40 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; Darin is right.

Good catch. I&apos;ll fix that up: https://bugs.webkit.org/show_bug.cgi?id=44547</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>64636</attachid>
            <date>2010-08-17 14:43:59 -0700</date>
            <delta_ts>2010-08-17 14:43:59 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>remove-iframe-from-table-onbeforeload.html</filename>
            <type>text/html</type>
            <size>207</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlbG9hZCIsIGZ1bmN0aW9u
KGUpIHsKICBlLnRhcmdldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUudGFyZ2V0KTsKfSwgdHJ1
ZSk7Cjwvc2NyaXB0PgoKPHRhYmxlPgoKPHNjcmlwdD4gCmRvY3VtZW50LndyaXRlKCc8aWZyYW1l
PjwvaWZyYW1lPicpOwo8L3NjcmlwdD4gCiAKPC90YWJsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64729</attachid>
            <date>2010-08-18 10:20:17 -0700</date>
            <delta_ts>2010-08-18 10:38:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44129-20100818102015.patch</filename>
            <type>text/plain</type>
            <size>3169</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZWYwMjRmZGI2NmFlNTc4MmViMWI4NTUwZWNhMGVjYzI0YWI0ZmFiLi4wODViYzdk
MGY2MmJiYWUxNTNmYTQ5ZThlYWE5YmExNGM0MGMwN2NkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDgtMTggIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBXZWJD
b3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI5CisKKyAgICAgICAgKiBodG1sNWxpYi9y
ZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQ6IE1pc25lc3RzIGFuIGlmcmFtZSBpbiBhIHRhYmxlIGFu
ZCByZW1vdmVzIGl0IGR1cmluZyBpdHMgYmVmb3JlbG9hZCBldmVudC4KKwogMjAxMC0wOC0xNyAg
Sm9obiBHcmVnZyAgPGpvaG5ueWdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB0
ZXN0IGV4cGVjdGF0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3Vy
Y2VzL2Fkb3B0aW9uMDIuZGF0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL2Fkb3B0
aW9uMDIuZGF0CmluZGV4IGU2ZTY4MjY3MTNiMjUyMDliNTI3NWJjNTE4NGM5NjkyYjFkMTBkZmMu
LjcwM2RiNjdjZTU1MmVhMmMxZWY5MDEyNTA5ZGU3NGExNDZmNmJlMzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9hZG9wdGlvbjAyLmRhdAorKysgYi9MYXlvdXRU
ZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQKQEAgLTUyLDMgKzUyLDE3IEBA
CiB8ICAgICAgIDxhZGRyZXNzPgogfCAgICAgICAgIDxhPgogfCAgICAgICAgIDxhPgorCisjZGF0
YQorPHRhYmxlPgorPGlmcmFtZSBvbmJlZm9yZWxvYWQ9ImV2ZW50LnRhcmdldC5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKGV2ZW50LnRhcmdldCkiPjwvaWZyYQorbWU+Cis8L3RhYmxlPgorI2Vycm9y
cworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgPHRh
YmxlPgorfCAgICAgICAiCisiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGFkM2VhOTBmYTk3YzcwNmVkNGNlMGVhMzg1ZDJjOTM5OThkOTI1
Y2MuLjhlNDc5ZjY4NDMwNzQ5MDcwNDQ5NmEyNjYxY2E3OTQwYTY5ODNmZTEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTAtMDgtMTggIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBX
ZWJDb3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI5CisKKyAgICAgICAgQSBiZWZvcmVs
b2FkIGhhbmRsZXIgbWF5IHJlbW92ZSB0aGUgdGFyZ2V0IGVsZW1lbnQuIFRoaXMgY2F1c2VzIGl0
IG5vdAorICAgICAgICB0byBoYXZlIGEgcGFyZW50LiBUaGlzIHBhdGNoIHNpbXBseSBkb2Vzbid0
IGF0dGFjaCB0aGUgZWxlbWVudCBpZiBpdAorICAgICAgICBoYXMgbm8gcGFyZW50LgorCisgICAg
ICAgICogaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjphdHRhY2hBdFNpdGUpOgorCiAyMDEwLTA4LTE3ICBEYXJpbiBGaXNoZXIg
IDxkYXJpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvV2Vi
Q29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCBhMjVjN2Q5Mzg4ZTY1MzZi
ZTliOTExYzU4ZWVmMjFlOTU1YmMyYzQ0Li5kMzczZjhiYmYyMDEwOGE0YmMxNmI0ZTdlYTU2MjY2
MDE2YzRiOGY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgUGFzc1JlZlB0cjxDaGlsZFR5cGU+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjphdHRh
Y2goTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPENoaWwKICAgICAvLyBkb2Vzbid0LiAgSXQgZmVl
bHMgbGlrZSB3ZSdyZSBtaXNzaW5nIGEgY29uY2VwdCBzb21laG93LgogICAgIGlmIChzaG91bGRG
b3N0ZXJQYXJlbnQoKSkgewogICAgICAgICBmb3N0ZXJQYXJlbnQoY2hpbGQuZ2V0KCkpOwotICAg
ICAgICBBU1NFUlQoY2hpbGQtPmF0dGFjaGVkKCkgfHwgIWNoaWxkLT5wYXJlbnQoKS0+YXR0YWNo
ZWQoKSk7CisgICAgICAgIEFTU0VSVChjaGlsZC0+YXR0YWNoZWQoKSB8fCAhY2hpbGQtPnBhcmVu
dCgpIHx8ICFjaGlsZC0+cGFyZW50KCktPmF0dGFjaGVkKCkpOwogICAgICAgICByZXR1cm4gY2hp
bGQucmVsZWFzZSgpOwogICAgIH0KIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6OmF0dGFjaEF0U2l0ZShjb25zdCBBdHRhY2htZW50U2l0ZSYgc2l0ZSwgUGFz
c1JlZlB0cjxOCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBzaXRlLnBh
cmVudC0+aW5zZXJ0QmVmb3JlKGNoaWxkLCBzaXRlLm5leHRDaGlsZCwgZWMpOwogICAgICAgICBB
U1NFUlQoIWVjKTsKLSAgICAgICAgaWYgKHNpdGUucGFyZW50LT5hdHRhY2hlZCgpICYmICFjaGls
ZC0+YXR0YWNoZWQoKSkKKyAgICAgICAgaWYgKGNoaWxkLT5wYXJlbnQoKSAmJiBzaXRlLnBhcmVu
dC0+YXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICBjaGlsZC0+
YXR0YWNoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64730</attachid>
            <date>2010-08-18 10:27:22 -0700</date>
            <delta_ts>2010-08-18 10:38:09 -0700</delta_ts>
            <desc>Fix line break in test</desc>
            <filename>bug-44129-20100818102721.patch</filename>
            <type>text/plain</type>
            <size>3169</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZWYwMjRmZGI2NmFlNTc4MmViMWI4NTUwZWNhMGVjYzI0YWI0ZmFiLi4wODViYzdk
MGY2MmJiYWUxNTNmYTQ5ZThlYWE5YmExNGM0MGMwN2NkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDgtMTggIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBXZWJD
b3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI5CisKKyAgICAgICAgKiBodG1sNWxpYi9y
ZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQ6IE1pc25lc3RzIGFuIGlmcmFtZSBpbiBhIHRhYmxlIGFu
ZCByZW1vdmVzIGl0IGR1cmluZyBpdHMgYmVmb3JlbG9hZCBldmVudC4KKwogMjAxMC0wOC0xNyAg
Sm9obiBHcmVnZyAgPGpvaG5ueWdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB0
ZXN0IGV4cGVjdGF0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3Vy
Y2VzL2Fkb3B0aW9uMDIuZGF0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL2Fkb3B0
aW9uMDIuZGF0CmluZGV4IGU2ZTY4MjY3MTNiMjUyMDliNTI3NWJjNTE4NGM5NjkyYjFkMTBkZmMu
LjY1ZmQyNTAxM2E1ZjQzNjQzNGM2OWQ1NWI4ODc2ZDE2ZDE3MWZiMDggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9hZG9wdGlvbjAyLmRhdAorKysgYi9MYXlvdXRU
ZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQKQEAgLTUyLDMgKzUyLDE3IEBA
CiB8ICAgICAgIDxhZGRyZXNzPgogfCAgICAgICAgIDxhPgogfCAgICAgICAgIDxhPgorCisjZGF0
YQorPHRhYmxlPgorPGlmcmFtZSBvbmJlZm9yZWxvYWQ9ImV2ZW50LnRhcmdldC5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKGV2ZW50LnRhcmdldCkiPjwvaWZyYW1lPgorPC90YWJsZT4KKyNlcnJvcnMK
KyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDx0YWJs
ZT4KK3wgICAgICAgIgorCisiCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGFkM2VhOTBmYTk3YzcwNmVkNGNlMGVhMzg1ZDJjOTM5OThkOTI1
Y2MuLjhlNDc5ZjY4NDMwNzQ5MDcwNDQ5NmEyNjYxY2E3OTQwYTY5ODNmZTEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTAtMDgtMTggIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBX
ZWJDb3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI5CisKKyAgICAgICAgQSBiZWZvcmVs
b2FkIGhhbmRsZXIgbWF5IHJlbW92ZSB0aGUgdGFyZ2V0IGVsZW1lbnQuIFRoaXMgY2F1c2VzIGl0
IG5vdAorICAgICAgICB0byBoYXZlIGEgcGFyZW50LiBUaGlzIHBhdGNoIHNpbXBseSBkb2Vzbid0
IGF0dGFjaCB0aGUgZWxlbWVudCBpZiBpdAorICAgICAgICBoYXMgbm8gcGFyZW50LgorCisgICAg
ICAgICogaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjphdHRhY2hBdFNpdGUpOgorCiAyMDEwLTA4LTE3ICBEYXJpbiBGaXNoZXIg
IDxkYXJpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvV2Vi
Q29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCBhMjVjN2Q5Mzg4ZTY1MzZi
ZTliOTExYzU4ZWVmMjFlOTU1YmMyYzQ0Li5kMzczZjhiYmYyMDEwOGE0YmMxNmI0ZTdlYTU2MjY2
MDE2YzRiOGY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgUGFzc1JlZlB0cjxDaGlsZFR5cGU+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjphdHRh
Y2goTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPENoaWwKICAgICAvLyBkb2Vzbid0LiAgSXQgZmVl
bHMgbGlrZSB3ZSdyZSBtaXNzaW5nIGEgY29uY2VwdCBzb21laG93LgogICAgIGlmIChzaG91bGRG
b3N0ZXJQYXJlbnQoKSkgewogICAgICAgICBmb3N0ZXJQYXJlbnQoY2hpbGQuZ2V0KCkpOwotICAg
ICAgICBBU1NFUlQoY2hpbGQtPmF0dGFjaGVkKCkgfHwgIWNoaWxkLT5wYXJlbnQoKS0+YXR0YWNo
ZWQoKSk7CisgICAgICAgIEFTU0VSVChjaGlsZC0+YXR0YWNoZWQoKSB8fCAhY2hpbGQtPnBhcmVu
dCgpIHx8ICFjaGlsZC0+cGFyZW50KCktPmF0dGFjaGVkKCkpOwogICAgICAgICByZXR1cm4gY2hp
bGQucmVsZWFzZSgpOwogICAgIH0KIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6OmF0dGFjaEF0U2l0ZShjb25zdCBBdHRhY2htZW50U2l0ZSYgc2l0ZSwgUGFz
c1JlZlB0cjxOCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBzaXRlLnBh
cmVudC0+aW5zZXJ0QmVmb3JlKGNoaWxkLCBzaXRlLm5leHRDaGlsZCwgZWMpOwogICAgICAgICBB
U1NFUlQoIWVjKTsKLSAgICAgICAgaWYgKHNpdGUucGFyZW50LT5hdHRhY2hlZCgpICYmICFjaGls
ZC0+YXR0YWNoZWQoKSkKKyAgICAgICAgaWYgKGNoaWxkLT5wYXJlbnQoKSAmJiBzaXRlLnBhcmVu
dC0+YXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICBjaGlsZC0+
YXR0YWNoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64732</attachid>
            <date>2010-08-18 10:38:14 -0700</date>
            <delta_ts>2010-08-18 17:19:14 -0700</delta_ts>
            <desc>Add test case which removes element&apos;s parent</desc>
            <filename>bug-44129-20100818103812.patch</filename>
            <type>text/plain</type>
            <size>3625</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZWYwMjRmZGI2NmFlNTc4MmViMWI4NTUwZWNhMGVjYzI0YWI0ZmFiLi44N2MzMjYy
NWY1OGQzMWMyYTk4MTczNjExNmMxNzMwODRhMzVmNDdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDgtMTggIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBXZWJD
b3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI5CisKKyAgICAgICAgKiBodG1sNWxpYi9y
ZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQ6IEFkZGVkIDIgdGVzdHMuICgxKSBNaXNuZXN0cyBhbiBp
ZnJhbWUgaW4gYSB0YWJsZSBhbmQgcmVtb3ZlcyBpdCBkdXJpbmcgaXRzIGJlZm9yZWxvYWQgZXZl
bnQuIEluIHRoaXMgY2FzZSB0aGUgaWZyYW1lIGlzIHJlbW92ZWQuICgyKSBNaXNuZXN0cyBhbiBp
ZnJhbWUgaW4gYSB0YWJsZSBhbmQgcmVtb3ZlcyBpdHMgcGFyZW50IGVsZW1lbnQgKHdoaWNoIGlz
IG5vdyB0aGUgZGl2IGluc3RlYWQgb2YgdGhlIHRhYmxlIGR1ZSB0byBhZG9wdGlvbikuIEluIHRo
aXMgY2FzZSB0aGUgcGFyZW50IGRpdiBhbmQgaXRzIGNoaWxkIHRhYmxlIGFuZCBpZnJhbWUgYXJl
IHJlbW92ZWQuCisKIDIwMTAtMDgtMTcgIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdGVzdCBleHBlY3RhdGlvbi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9hZG9wdGlvbjAyLmRhdCBiL0xheW91dFRlc3Rz
L2h0bWw1bGliL3Jlc291cmNlcy9hZG9wdGlvbjAyLmRhdAppbmRleCBlNmU2ODI2NzEzYjI1MjA5
YjUyNzViYzUxODRjOTY5MmIxZDEwZGZjLi43ZmI3YTM5MWM0MDNjZTBlYTE5YzgxZGE3MjY1ZDBh
YzU0Yjg3OWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvYWRv
cHRpb24wMi5kYXQKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL2Fkb3B0aW9u
MDIuZGF0CkBAIC01MiwzICs1MiwyOSBAQAogfCAgICAgICA8YWRkcmVzcz4KIHwgICAgICAgICA8
YT4KIHwgICAgICAgICA8YT4KKworI2RhdGEKKzx0YWJsZT4KKzxpZnJhbWUgb25iZWZvcmVsb2Fk
PSJldmVudC50YXJnZXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChldmVudC50YXJnZXQpIj48L2lm
cmFtZT4KKzwvdGFibGU+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+
Cit8ICAgPGJvZHk+Cit8ICAgICA8dGFibGU+Cit8ICAgICAgICIKKworIgorCisjZGF0YQorPGRp
dj4KKzx0YWJsZT4KKzxpZnJhbWUgb25iZWZvcmVsb2FkPSJldmVudC50YXJnZXQucGFyZW50Tm9k
ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGV2ZW50LnRhcmdldC5wYXJlbnROb2RlKSI+PC9pZnJh
bWU+Cis8L3RhYmxlPgorPC9kaXY+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAg
PGhlYWQ+Cit8ICAgPGJvZHk+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGFkM2VhOTBmYTk3YzcwNmVkNGNlMGVhMzg1ZDJjOTM5OThkOTI1
Y2MuLjhlNDc5ZjY4NDMwNzQ5MDcwNDQ5NmEyNjYxY2E3OTQwYTY5ODNmZTEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTAtMDgtMTggIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBX
ZWJDb3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI5CisKKyAgICAgICAgQSBiZWZvcmVs
b2FkIGhhbmRsZXIgbWF5IHJlbW92ZSB0aGUgdGFyZ2V0IGVsZW1lbnQuIFRoaXMgY2F1c2VzIGl0
IG5vdAorICAgICAgICB0byBoYXZlIGEgcGFyZW50LiBUaGlzIHBhdGNoIHNpbXBseSBkb2Vzbid0
IGF0dGFjaCB0aGUgZWxlbWVudCBpZiBpdAorICAgICAgICBoYXMgbm8gcGFyZW50LgorCisgICAg
ICAgICogaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjphdHRhY2hBdFNpdGUpOgorCiAyMDEwLTA4LTE3ICBEYXJpbiBGaXNoZXIg
IDxkYXJpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvV2Vi
Q29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAppbmRleCBhMjVjN2Q5Mzg4ZTY1MzZi
ZTliOTExYzU4ZWVmMjFlOTU1YmMyYzQ0Li5kMzczZjhiYmYyMDEwOGE0YmMxNmI0ZTdlYTU2MjY2
MDE2YzRiOGY2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgUGFzc1JlZlB0cjxDaGlsZFR5cGU+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjphdHRh
Y2goTm9kZSogcGFyZW50LCBQYXNzUmVmUHRyPENoaWwKICAgICAvLyBkb2Vzbid0LiAgSXQgZmVl
bHMgbGlrZSB3ZSdyZSBtaXNzaW5nIGEgY29uY2VwdCBzb21laG93LgogICAgIGlmIChzaG91bGRG
b3N0ZXJQYXJlbnQoKSkgewogICAgICAgICBmb3N0ZXJQYXJlbnQoY2hpbGQuZ2V0KCkpOwotICAg
ICAgICBBU1NFUlQoY2hpbGQtPmF0dGFjaGVkKCkgfHwgIWNoaWxkLT5wYXJlbnQoKS0+YXR0YWNo
ZWQoKSk7CisgICAgICAgIEFTU0VSVChjaGlsZC0+YXR0YWNoZWQoKSB8fCAhY2hpbGQtPnBhcmVu
dCgpIHx8ICFjaGlsZC0+cGFyZW50KCktPmF0dGFjaGVkKCkpOwogICAgICAgICByZXR1cm4gY2hp
bGQucmVsZWFzZSgpOwogICAgIH0KIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSFRNTENvbnN0
cnVjdGlvblNpdGU6OmF0dGFjaEF0U2l0ZShjb25zdCBBdHRhY2htZW50U2l0ZSYgc2l0ZSwgUGFz
c1JlZlB0cjxOCiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBzaXRlLnBh
cmVudC0+aW5zZXJ0QmVmb3JlKGNoaWxkLCBzaXRlLm5leHRDaGlsZCwgZWMpOwogICAgICAgICBB
U1NFUlQoIWVjKTsKLSAgICAgICAgaWYgKHNpdGUucGFyZW50LT5hdHRhY2hlZCgpICYmICFjaGls
ZC0+YXR0YWNoZWQoKSkKKyAgICAgICAgaWYgKGNoaWxkLT5wYXJlbnQoKSAmJiBzaXRlLnBhcmVu
dC0+YXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVkKCkpCiAgICAgICAgICAgICBjaGlsZC0+
YXR0YWNoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64791</attachid>
            <date>2010-08-18 17:19:18 -0700</date>
            <delta_ts>2010-08-19 13:18:16 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-44129-20100818171917.patch</filename>
            <type>text/plain</type>
            <size>9860</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZDlhY2I4MzQ1MWYyYTI3NzAyMmE4ZmY1YjFkYTQwNWFmN2FjYWU4Li5jMDhiMWNh
ZGUxZDYzYjRjYzMyZjI1YTZjZDA5MzIzZjc0YWE1ZDZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDgtMTggIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBXZWJD
b3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI5CisKKyAgICAgICAgKiBodG1sNWxpYi9y
ZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQ6IEFkZGVkIDIgdGVzdHMuICgxKSBNaXNuZXN0cyBhbiBp
ZnJhbWUgaW4gYSB0YWJsZSBhbmQgcmVtb3ZlcyBpdCBkdXJpbmcgaXRzIGJlZm9yZWxvYWQgZXZl
bnQuIEluIHRoaXMgY2FzZSB0aGUgaWZyYW1lIGlzIHJlbW92ZWQuICgyKSBNaXNuZXN0cyBhbiBp
ZnJhbWUgaW4gYSB0YWJsZSBhbmQgcmVtb3ZlcyBpdHMgcGFyZW50IGVsZW1lbnQgKHdoaWNoIGlz
IG5vdyB0aGUgZGl2IGluc3RlYWQgb2YgdGhlIHRhYmxlIGR1ZSB0byBhZG9wdGlvbikuIEluIHRo
aXMgY2FzZSB0aGUgcGFyZW50IGRpdiBhbmQgaXRzIGNoaWxkIHRhYmxlIGFuZCBpZnJhbWUgYXJl
IHJlbW92ZWQuCisKIDIwMTAtMDgtMTggIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcmVzb3VyY2VzL2Fkb3B0aW9uMDIuZGF0IGIvTGF5b3V0VGVzdHMvaHRtbDVs
aWIvcmVzb3VyY2VzL2Fkb3B0aW9uMDIuZGF0CmluZGV4IGU2ZTY4MjY3MTNiMjUyMDliNTI3NWJj
NTE4NGM5NjkyYjFkMTBkZmMuLjdmYjdhMzkxYzQwM2NlMGVhMTljODFkYTcyNjVkMGFjNTRiODc5
ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9hZG9wdGlvbjAy
LmRhdAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQK
QEAgLTUyLDMgKzUyLDI5IEBACiB8ICAgICAgIDxhZGRyZXNzPgogfCAgICAgICAgIDxhPgogfCAg
ICAgICAgIDxhPgorCisjZGF0YQorPHRhYmxlPgorPGlmcmFtZSBvbmJlZm9yZWxvYWQ9ImV2ZW50
LnRhcmdldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGV2ZW50LnRhcmdldCkiPjwvaWZyYW1lPgor
PC90YWJsZT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8
Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgIgorCisiCisKKyNkYXRhCis8ZGl2PgorPHRh
YmxlPgorPGlmcmFtZSBvbmJlZm9yZWxvYWQ9ImV2ZW50LnRhcmdldC5wYXJlbnROb2RlLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUpIj48L2lmcmFtZT4KKzwv
dGFibGU+Cis8L2Rpdj4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4K
K3wgICA8Ym9keT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggN2YwZTNmOGFjOWZhNDgxZTY0YmYzNTVlZDlhYjllOTJlNThkYmVmNS4uYWMy
ZjA3ZjlkM2Q2ODA2OWZkNWIwYzM4OTQ1YmJkMDEzZGIwY2Q0OSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
MC0wOC0xOCAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyYXNoIGluIFdlYkNvcmU6
Ok5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMjkKKworICAgICAgICBBIGJlZm9yZWxvYWQgaGFu
ZGxlciBtYXkgcmVtb3ZlIHRoZSB0YXJnZXQgZWxlbWVudC4gVGhpcyBjYXVzZXMgaXQgbm90Cisg
ICAgICAgIHRvIGhhdmUgYSBwYXJlbnQuIFRoaXMgcGF0Y2ggc2ltcGx5IGRvZXNuJ3QgYXR0YWNo
IHRoZSBlbGVtZW50IGlmIGl0CisgICAgICAgIGhhcyBubyBwYXJlbnQuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlv
blNpdGU6OmF0dGFjaEF0U2l0ZSk6CisKIDIwMTAtMDgtMTggIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKaW5kZXggZTU1OWJhN2Y2ZTJmZmZlZTBhMzcwZGM4MjMzMGNkN2NiYTY1MWZmMy4u
NjljM2I2ODRmNDVkMjU4ZGYxMzc3Njg2YTk0NjhiOWNkYmNkNjQyYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKQEAgLTEzNCwzMSArMTM0LDggQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZv
cmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICAg
ICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBBU1NFUlQoIWNoaWxkLT5uZXh0U2libGluZygpKTsKLSAgICAgICAgQVNTRVJUKCFjaGlsZC0+
cHJldmlvdXNTaWJsaW5nKCkpOwotCi0gICAgICAgIC8vIEFkZCBjaGlsZCBiZWZvcmUgIm5leHQi
LgotICAgICAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7Ci0gICAgICAgIE5vZGUqIHByZXYgPSBu
ZXh0LT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgQVNTRVJUKG1fbGFzdENoaWxkICE9IHBy
ZXYpOwotICAgICAgICBuZXh0LT5zZXRQcmV2aW91c1NpYmxpbmcoY2hpbGQpOwotICAgICAgICBp
ZiAocHJldikgewotICAgICAgICAgICAgQVNTRVJUKG1fZmlyc3RDaGlsZCAhPSBuZXh0KTsKLSAg
ICAgICAgICAgIEFTU0VSVChwcmV2LT5uZXh0U2libGluZygpID09IG5leHQpOwotICAgICAgICAg
ICAgcHJldi0+c2V0TmV4dFNpYmxpbmcoY2hpbGQpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgQVNTRVJUKG1fZmlyc3RDaGlsZCA9PSBuZXh0KTsKLSAgICAgICAgICAgIG1fZmlyc3RD
aGlsZCA9IGNoaWxkOwotICAgICAgICB9Ci0gICAgICAgIGNoaWxkLT5zZXRQYXJlbnQodGhpcyk7
Ci0gICAgICAgIGNoaWxkLT5zZXRQcmV2aW91c1NpYmxpbmcocHJldik7Ci0gICAgICAgIGNoaWxk
LT5zZXROZXh0U2libGluZyhuZXh0LmdldCgpKTsKLSAgICAgICAgYWxsb3dFdmVudERpc3BhdGNo
KCk7CisgICAgICAgIGluc2VydEJldHdlZW4ocmVmQ2hpbGRQcmV2aW91c1NpYmxpbmcuZ2V0KCks
IG5leHQuZ2V0KCksIGNoaWxkKTsKIAotICAgICAgICAvLyBTZW5kIG5vdGlmaWNhdGlvbiBhYm91
dCB0aGUgY2hpbGRyZW4gY2hhbmdlLgotICAgICAgICBjaGlsZHJlbkNoYW5nZWQoZmFsc2UsIHJl
ZkNoaWxkUHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0LmdldCgpLCAxKTsKLSAgICAgICAgbm90
aWZ5Q2hpbGRJbnNlcnRlZChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgIC8vIEFk
ZCBjaGlsZCB0byB0aGUgcmVuZGVyaW5nIHRyZWUuCiAgICAgICAgIGlmIChhdHRhY2hlZCgpICYm
ICFjaGlsZC0+YXR0YWNoZWQoKSAmJiBjaGlsZC0+cGFyZW50KCkgPT0gdGhpcykgewogICAgICAg
ICAgICAgaWYgKHNob3VsZExhenlBdHRhY2gpCkBAIC01NDMsNiArNTIwLDcgQEAgdm9pZCBDb250
YWluZXJOb2RlOjphZGRDaGlsZENvbW1vbihOb2RlKiBuZXdDaGlsZCkKICAgICBhcHBlbmRDaGls
ZFRvQ29udGFpbmVyPE5vZGUsIENvbnRhaW5lck5vZGU+KG5ld0NoaWxkLCB0aGlzKTsKICAgICBh
bGxvd0V2ZW50RGlzcGF0Y2goKTsKIAorICAgIC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIGNh
bGwgbm90aWZ5Q2hpbGRJbnNlcnRlZChuZXdDaGlsZCk/CiAgICAgZG9jdW1lbnQoKS0+aW5jRE9N
VHJlZVZlcnNpb24oKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBuZXdDaGlsZC0+
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKQEAgLTU3NSw2ICs1NTMsNjIgQEAgQ29udGFpbmVyTm9k
ZSogQ29udGFpbmVyTm9kZTo6bGVnYWN5UGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBu
ZXdDaGlsZCkKICAgICByZXR1cm4gdGhpczsKIH0KIAordm9pZCBDb250YWluZXJOb2RlOjppbnNl
cnRCZXR3ZWVuKE5vZGUqIHByZXZpb3VzQ2hpbGQsIE5vZGUqIG5leHRDaGlsZCwgTm9kZSogbmV3
Q2hpbGQpCit7CisgICAgQVNTRVJUKCFuZXdDaGlsZC0+bmV4dFNpYmxpbmcoKSk7CisgICAgQVNT
RVJUKCFuZXdDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpOworCisgICAgZm9yYmlkRXZlbnREaXNw
YXRjaCgpOworICAgIE5vZGUqIHByZXYgPSBuZXh0Q2hpbGQtPnByZXZpb3VzU2libGluZygpOwor
ICAgIEFTU0VSVChtX2xhc3RDaGlsZCAhPSBwcmV2KTsKKyAgICBuZXh0Q2hpbGQtPnNldFByZXZp
b3VzU2libGluZyhuZXdDaGlsZCk7CisgICAgaWYgKHByZXYpIHsKKyAgICAgICAgQVNTRVJUKG1f
Zmlyc3RDaGlsZCAhPSBuZXh0Q2hpbGQpOworICAgICAgICBBU1NFUlQocHJldi0+bmV4dFNpYmxp
bmcoKSA9PSBuZXh0Q2hpbGQpOworICAgICAgICBwcmV2LT5zZXROZXh0U2libGluZyhuZXdDaGls
ZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fZmlyc3RDaGlsZCA9PSBuZXh0Q2hp
bGQpOworICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXdDaGlsZDsKKyAgICB9CisgICAgbmV3Q2hp
bGQtPnNldFBhcmVudCh0aGlzKTsKKyAgICBuZXdDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKHBy
ZXYpOworICAgIG5ld0NoaWxkLT5zZXROZXh0U2libGluZyhuZXh0Q2hpbGQpOworICAgIGFsbG93
RXZlbnREaXNwYXRjaCgpOworCisgICAgLy8gRklYTUU6IGFkZENoaWxkQ29tbW9uKCkgZG9lcyB0
aGlzIGluIHRoZSBvcHBvc2l0ZSBvcmRlci4gRG9lcyBpdCBtYXR0ZXI/CisgICAgY2hpbGRyZW5D
aGFuZ2VkKGZhbHNlLCBwcmV2aW91c0NoaWxkLCBuZXh0Q2hpbGQsIDEpOworICAgIC8vIEZJWE1F
OiBNYXkgcnVuIGFyYml0cmFyeSBjb2RlIGluIHRoZSBiZWZvcmVsb2FkIGhhbmRsZXIuCisgICAg
bm90aWZ5Q2hpbGRJbnNlcnRlZChuZXdDaGlsZCk7Cit9CisKK3ZvaWQgQ29udGFpbmVyTm9kZTo6
cGFyc2VySW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG5leHRD
aGlsZCkKK3sKKyAgICBBU1NFUlQobmV3Q2hpbGQpOworICAgIEFTU0VSVCghbmV3Q2hpbGQtPnBh
cmVudCgpKTsgLy8gVXNlIGluc2VydEJlZm9yZSBpZiB5b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJl
bnRpbmcuCisKKyAgICAvLyBpbnNlcnRCZWZvcmUobm9kZSwgMCkgaXMgZXF1aXZhbGVudCB0byBw
YXJzZXJBZGRDaGlsZChub2RlKQorICAgIGlmICghbmV4dENoaWxkKSB7CisgICAgICAgIHBhcnNl
ckFkZENoaWxkKG5ld0NoaWxkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VS
VChuZXh0Q2hpbGQtPnBhcmVudE5vZGUoKSA9PSB0aGlzKTsKKworICAgIE5vZGVWZWN0b3IgdGFy
Z2V0czsKKyAgICBjb2xsZWN0VGFyZ2V0Tm9kZXMobmV3Q2hpbGQuZ2V0KCksIHRhcmdldHMpOwor
ICAgIGlmICh0YXJnZXRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTm93
IGFjdHVhbGx5IGFkZCB0aGUgY2hpbGQocmVuKQorICAgIGlmIChuZXh0Q2hpbGQtPnByZXZpb3Vz
U2libGluZygpID09IG5ld0NoaWxkIHx8IG5leHRDaGlsZCA9PSBuZXdDaGlsZCkgLy8gbm90aGlu
ZyB0byBkbworICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IG5leHRD
aGlsZDsKKyAgICBSZWZQdHI8Tm9kZT4gbmV4dENoaWxkUHJldmlvdXNTaWJsaW5nID0gbmV4dENo
aWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gdGFyZ2V0cy5iZWdpbigpOyBpdCAhPSB0YXJnZXRzLmVuZCgpOyArK2l0KQorICAg
ICAgICBpbnNlcnRCZXR3ZWVuKG5leHRDaGlsZFByZXZpb3VzU2libGluZy5nZXQoKSwgbmV4dC5n
ZXQoKSwgaXQtPmdldCgpKTsKK30KKwogdm9pZCBDb250YWluZXJOb2RlOjpzdXNwZW5kUG9zdEF0
dGFjaENhbGxiYWNrcygpCiB7CiAgICAgaWYgKCFzX2F0dGFjaERlcHRoKSB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmgKaW5kZXggYTI3ZDk1YmVmZjJjNDZmNzNiNTJlOGE3M2Y2Y2E4MTdlMjQwNjgzZC4uYTUzNDk1
MzUxNGRkMjEzMzNmYjViZDg3MDVhYmU4Mzg4MTdmMGMzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAt
NTAsNiArNTAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGxlZ2Fj
eVBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pOwogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VySW5z
ZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKTsKIAog
ICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKQEAgLTk3LDYgKzk4LDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBhIFBhc3NSZWZQdHIuCiAg
ICAgdm9pZCBhZGRDaGlsZENvbW1vbihOb2RlKik7CisgICAgdm9pZCBpbnNlcnRCZXR3ZWVuKE5v
ZGUqIHByZXZpb3VzQ2hpbGQsIE5vZGUqIG5leHRDaGlsZCwgTm9kZSogbmV3Q2hpbGQpOwogCiAg
ICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMGJj
OGQ5ZTlhZTUyM2UxMWViNDhjODcyZDUzZDViNDYyODA2MmI3Zi4uNDI4ZTlkYjYzNTFjN2NhOWUw
ZjcyZjUwYzJiYzIwZDI1NWQ1ZmE0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTY1MSw2ICs2NTEsMTEgQEAgdm9pZCBOb2Rl
OjpwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCit2b2lkIE5vZGU6OnBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+
LCBOb2RlKikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogYm9vbCBOb2RlOjpp
c0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBhcmVudCgpICYmIHBhcmVu
dCgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5o
IGIvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGVjMTZmMDU5Y2YzMjUzNjI4OWIwYzQxY2I1YTdl
NWMzMDRlZDEzZWIuLjg5MDUwOTQ3MjUwZjdhZWY1YTY2ZjVjNzE5NDE1NGU3ZDc1ODgzNmUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTI2Nyw2ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gYWRkQ2hpbGQgaXMgdGllZCBpbnRvIHRo
ZSBsb2dpYyBvZiB0aGUgTGVnYWN5SFRNTFRyZWVCdWlsZGVyLiAgV2UgbmVlZAogICAgIC8vIGEg
ImNsZWFuIiB2ZXJzaW9uIHRvIHVzZSBmb3IgdGhlIEhUTUw1IHZlcnNpb24gb2YgdGhlIEhUTUxU
cmVlQnVpbGRlci4KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxO
b2RlPik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5v
ZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hpbGQpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBw
YXJzZXIgd2hlbiB0aGlzIGVsZW1lbnQncyBjbG9zZSB0YWcgaXMgcmVhY2hlZCwKICAgICAvLyBz
aWduYWxpbmcgdGhhdCBhbGwgY2hpbGQgdGFncyBoYXZlIGJlZW4gcGFyc2VkIGFuZCBhZGRlZC4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9XZWJD
b3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IGEyNWM3ZDkzODhlNjUzNmJl
OWI5MTFjNThlZWYyMWU5NTViYzJjNDQuLjFiODJjYzIyZDEzZTk2M2M1ZTExMWY0ZjRkNTk4MzQ4
ZGYzY2RkMzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtOTIsNyAr
OTIsNyBAQCBQYXNzUmVmUHRyPENoaWxkVHlwZT4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmF0dGFj
aChOb2RlKiBwYXJlbnQsIFBhc3NSZWZQdHI8Q2hpbAogICAgIC8vIGRvZXNuJ3QuICBJdCBmZWVs
cyBsaWtlIHdlJ3JlIG1pc3NpbmcgYSBjb25jZXB0IHNvbWVob3cuCiAgICAgaWYgKHNob3VsZEZv
c3RlclBhcmVudCgpKSB7CiAgICAgICAgIGZvc3RlclBhcmVudChjaGlsZC5nZXQoKSk7Ci0gICAg
ICAgIEFTU0VSVChjaGlsZC0+YXR0YWNoZWQoKSB8fCAhY2hpbGQtPnBhcmVudCgpLT5hdHRhY2hl
ZCgpKTsKKyAgICAgICAgQVNTRVJUKGNoaWxkLT5hdHRhY2hlZCgpIHx8ICFjaGlsZC0+cGFyZW50
KCkgfHwgIWNoaWxkLT5wYXJlbnQoKS0+YXR0YWNoZWQoKSk7CiAgICAgICAgIHJldHVybiBjaGls
ZC5yZWxlYXNlKCk7CiAgICAgfQogCkBAIC0xMTcsMTEgKzExNywxNCBAQCB2b2lkIEhUTUxDb25z
dHJ1Y3Rpb25TaXRlOjphdHRhY2hBdFNpdGUoY29uc3QgQXR0YWNobWVudFNpdGUmIHNpdGUsIFBh
c3NSZWZQdHI8TgogewogICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IHBycENoaWxkOwogCisgICAg
Ly8gRklYTUU6IEFTU0VSVCghY2hpbGQtPnBhcmVudCgpKTsKKwogICAgIGlmIChzaXRlLm5leHRD
aGlsZCkgewotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCBhbiBpbnNlcnRFbGVtZW50IHdoaWNo
IGRvZXMgbm90IHNlbmQgbXV0YXRpb24gZXZlbnRzLgotICAgICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICAgICAgc2l0ZS5wYXJlbnQtPmluc2VydEJlZm9yZShjaGlsZCwgc2l0ZS5uZXh0
Q2hpbGQsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHNpdGUucGFyZW50LT5w
YXJzZXJJbnNlcnRCZWZvcmUoY2hpbGQsIHNpdGUubmV4dENoaWxkKTsKKworICAgICAgICAvLyBG
SVhNRTogcGFyc2VySW5zZXJ0QmVmb3JlIGludm9rZXMgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQgd2hp
Y2ggbWF5IHJ1biBhcmJpdHJhcnkgY29kZS4KKyAgICAgICAgQVNTRVJUKGNoaWxkLT5wYXJlbnQo
KSk7CisKICAgICAgICAgaWYgKHNpdGUucGFyZW50LT5hdHRhY2hlZCgpICYmICFjaGlsZC0+YXR0
YWNoZWQoKSkKICAgICAgICAgICAgIGNoaWxkLT5hdHRhY2goKTsKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64893</attachid>
            <date>2010-08-19 13:18:20 -0700</date>
            <delta_ts>2010-08-19 22:50:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44129-20100819131818.patch</filename>
            <type>text/plain</type>
            <size>17926</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlY2NmMmFmOWY4NGUyMTlmOTQ2MmQ4YThjNDFjZTIzYjY0M2Y1MDY0Li45NzlkOWFm
OWZhNDY4YWExNjEwZTc1ZjVkYjg1M2MxNmQ5OGU4MGUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDgtMTkgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBXZWJD
b3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI5CisKKyAgICAgICAgKiBodG1sNWxpYi9y
ZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQ6IEFkZCAzIG5ldyBjYXNlcy4gKDEpIE1pc25lc3QgYSBu
b2RlIGluIGEgdGFibGUgYW5kIHJlbW92ZSBpdCBkdXJpbmcgaXRzIGJlZm9yZWxvYWQgaGFuZGxl
ci4gVGhlIG5vZGUgc2hvdWxkIG5vdCBiZSBpbiB0aGUgdHJlZS4gKDIpIE1pc25lc3QgYSBub2Rl
IGluIGEgdGFibGUgYW5kIHJlbW92ZSBpdHMgcGFyZW50IGR1cmluZyBpdHMgYmVmb3JlbG9hZCBo
YW5kbGVyLiBUaGUgYWRvcHRpb24gYWdlbmN5IHNob3VsZCBoYXZlIGFscmVhZHkgY2hhbmdlZCBp
dHMgcGFyZW50IHRvIHRoZSBvbmUgYmVmb3JlIHRoZSB0YWJsZSBhbmQgaXQgYW5kIGl0cyBwYXJl
bnQgc2hvdWxkIGJlIHJlbW92ZWQuICgzKSBBIGNyYXp5IERPTSBmcm9tIGh0dHBzOi8vYnVncy53
ZWJraWcub3JnL3Nob3dfYnVnLmNnaT9pZD00NDE3MCB3aGljaCBwcmV2aW91c2x5IGNyYXNoZWQu
IEknbSBub3Qgc3VyZSB0aGUgdHJlZSBpcyByaWdodCwgYnV0IHRoaXMgY2FzZSBpcyBzbyBjcmF6
eSwgaXQgaXNuJ3QgY2xlYXIgdG8gbWUgd2hhdCB3b3VsZCBiZSByaWdodC4KKwogMjAxMC0wOC0x
OSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9y
ZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMv
YWRvcHRpb24wMi5kYXQKaW5kZXggZTZlNjgyNjcxM2IyNTIwOWI1Mjc1YmM1MTg0Yzk2OTJiMWQx
MGRmYy4uMWE0ZmFhNjRkMmU3OGI0YWIxZmJmOWE3ZmVmN2VkZmI3MjExZDJkYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL2Fkb3B0aW9uMDIuZGF0CisrKyBiL0xh
eW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9hZG9wdGlvbjAyLmRhdApAQCAtNTIsMyArNTIs
NDMgQEAKIHwgICAgICAgPGFkZHJlc3M+CiB8ICAgICAgICAgPGE+CiB8ICAgICAgICAgPGE+CisK
KyNkYXRhCis8dGFibGU+Cis8aWZyYW1lIG9uYmVmb3JlbG9hZD0iZXZlbnQudGFyZ2V0LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoZXZlbnQudGFyZ2V0KSI+PC9pZnJhbWU+Cis8L3RhYmxlPgorI2Vy
cm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAg
PHRhYmxlPgorfCAgICAgICAiCisKKyIKKworI2RhdGEKKzxkaXY+Cis8dGFibGU+Cis8aWZyYW1l
IG9uYmVmb3JlbG9hZD0iZXZlbnQudGFyZ2V0LnBhcmVudE5vZGUucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChldmVudC50YXJnZXQucGFyZW50Tm9kZSkiPjwvaWZyYW1lPgorPC90YWJsZT4KKzwvZGl2
PgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5Pgor
CisjZGF0YQorPGE+PHN2Zz48dHI+PGlucHV0PjwvYT4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8
aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxhPgorfCAgICAgICA8c3ZnIHN2
Zz4KK3wgICAgIDxzdmcgdHI+Cit8ICAgICAgIDxhPgorfCAgIDxzdmcgaW5wdXQ+Cit8ICAgICA8
YT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNTM4ZDk4ZjRkMGFmNzYwY2Y1Njg1Y2E0NWZlNmY2NGVjNjQyMWJjMS4uZDViMDU4MGRmMzJl
ODJiMTVjNWRmNDZjMTNiOTgxODdjNjM2MTMxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wOC0xOSAg
VG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyYXNoIGluIFdlYkNvcmU6Ok5vZGU6OmNy
ZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDQxMjkKKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZSk6IEZhY3RvciBv
dXQgY29yZSBiaXQgdG8gaW5zZXJ0QmV0d2Vlbi4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6Omluc2VydEJldHdlZW4pOiBGYWN0b3JlZCBvdXQgb2YgaW5zZXJ0QmVmb3JlLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKTogU2ltaWxh
ciB0byBpbnNlcnRCZWZvcmUsIGJ1dCBkb2Vzbid0IGhhbmRsZSByZXBhcmVudGluZyBvciBkaXNw
YXRjaCBET00gbXV0YXRpb24gZXZlbnRzLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cmVtb3ZlQ2hpbGQpOiBGYWN0b3Igb3V0IGNvcmUgYml0IHRvIHJlbW92ZUJldHdlZW4uCisg
ICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKTogRmFjb3RyZWQg
b3V0IG9mIHJlbW92ZUNoaWxkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFy
c2VyUmVtb3ZlQ2hpbGQpOiBTaW1pbGFyIHRvIHJlbW92ZUNoaWxkLCBidXQgZG9lc24ndCBoYW5k
bGUgcmVwYXJlbnRpbmcgb3IgZGlzcGF0Y2ggRE9NIG11dGF0aW9uIGV2ZW50cy4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFkZENoaWxkQ29tbW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlckFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OmxlZ2FjeVBhcnNlckFkZENoaWxkKToKKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnBhcnNlclJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcnNlcklu
c2VydEJlZm9yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OmF0
dGFjaEF0U2l0ZSk6IFVzZSBuZXcgcGFyc2VySW5zZXJ0QmVmb3JlLgorICAgICAgICAqIGh0bWwv
SFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
cGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWls
ZGVyOjpyZXBhcmVudENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6Y2FsbFRoZUFkb3B0aW9uQWdlbmN5KTogV2FzIG1pc3NpbmcgYSBrZXkgYml0IGZyb20gdGhl
IHNwZWMgYWJvdXQgcmVtb3ZpbmcgdGhlIG9sZCBwYXJlbnQgaWYgaXQgZXhpc3RzLgorCiAyMDEw
LTA4LTE5ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENo
cm9taXVtIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZTU1OWJhN2Y2ZTJmZmZl
ZTBhMzcwZGM4MjMzMGNkN2NiYTY1MWZmMy4uMGIyNTlkNzdmYzk2OTJmNWNiNzAwYmRmNDViNDEx
MDgxYmQ3MDc3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysr
IGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEzNCwzMSArMTM0LDEyIEBAIGJv
b2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQs
IE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQog
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmV4dFNpYmxpbmco
KSk7Ci0gICAgICAgIEFTU0VSVCghY2hpbGQtPnByZXZpb3VzU2libGluZygpKTsKLQotICAgICAg
ICAvLyBBZGQgY2hpbGQgYmVmb3JlICJuZXh0Ii4KLSAgICAgICAgZm9yYmlkRXZlbnREaXNwYXRj
aCgpOwotICAgICAgICBOb2RlKiBwcmV2ID0gbmV4dC0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAg
ICAgIEFTU0VSVChtX2xhc3RDaGlsZCAhPSBwcmV2KTsKLSAgICAgICAgbmV4dC0+c2V0UHJldmlv
dXNTaWJsaW5nKGNoaWxkKTsKLSAgICAgICAgaWYgKHByZXYpIHsKLSAgICAgICAgICAgIEFTU0VS
VChtX2ZpcnN0Q2hpbGQgIT0gbmV4dCk7Ci0gICAgICAgICAgICBBU1NFUlQocHJldi0+bmV4dFNp
YmxpbmcoKSA9PSBuZXh0KTsKLSAgICAgICAgICAgIHByZXYtPnNldE5leHRTaWJsaW5nKGNoaWxk
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2ZpcnN0Q2hpbGQgPT0g
bmV4dCk7Ci0gICAgICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsKLSAgICAgICAgfQotICAg
ICAgICBjaGlsZC0+c2V0UGFyZW50KHRoaXMpOwotICAgICAgICBjaGlsZC0+c2V0UHJldmlvdXNT
aWJsaW5nKHByZXYpOwotICAgICAgICBjaGlsZC0+c2V0TmV4dFNpYmxpbmcobmV4dC5nZXQoKSk7
Ci0gICAgICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOworICAgICAgICBpbnNlcnRCZXR3ZWVuKHJl
ZkNoaWxkUHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0LmdldCgpLCBjaGlsZCk7CiAKICAgICAg
ICAgLy8gU2VuZCBub3RpZmljYXRpb24gYWJvdXQgdGhlIGNoaWxkcmVuIGNoYW5nZS4KICAgICAg
ICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCByZWZDaGlsZFByZXZpb3VzU2libGluZy5nZXQoKSwg
bmV4dC5nZXQoKSwgMSk7CiAgICAgICAgIG5vdGlmeUNoaWxkSW5zZXJ0ZWQoY2hpbGQpOwotICAg
ICAgICAgICAgICAgIAorCiAgICAgICAgIC8vIEFkZCBjaGlsZCB0byB0aGUgcmVuZGVyaW5nIHRy
ZWUuCiAgICAgICAgIGlmIChhdHRhY2hlZCgpICYmICFjaGlsZC0+YXR0YWNoZWQoKSAmJiBjaGls
ZC0+cGFyZW50KCkgPT0gdGhpcykgewogICAgICAgICAgICAgaWYgKHNob3VsZExhenlBdHRhY2gp
CkBAIC0xNzYsNiArMTU3LDU3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBh
c3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmV0d2VlbihOb2RlKiBwcmV2
aW91c0NoaWxkLCBOb2RlKiBuZXh0Q2hpbGQsIE5vZGUqIG5ld0NoaWxkKQoreworICAgIEFTU0VS
VChuZXdDaGlsZCk7CisgICAgQVNTRVJUKCFuZXdDaGlsZC0+cGFyZW50KCkpOyAvLyBEb2VzIG5v
dCBoYW5kbGUgcmVwYXJlbnRpbmcuCisgICAgQVNTRVJUKCFuZXdDaGlsZC0+bmV4dFNpYmxpbmco
KSk7CisgICAgQVNTRVJUKCFuZXdDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpOworCisgICAgZm9y
YmlkRXZlbnREaXNwYXRjaCgpOworICAgIE5vZGUqIHByZXYgPSBuZXh0Q2hpbGQtPnByZXZpb3Vz
U2libGluZygpOworICAgIEFTU0VSVChtX2xhc3RDaGlsZCAhPSBwcmV2KTsKKyAgICBuZXh0Q2hp
bGQtPnNldFByZXZpb3VzU2libGluZyhuZXdDaGlsZCk7CisgICAgaWYgKHByZXYpIHsKKyAgICAg
ICAgQVNTRVJUKG1fZmlyc3RDaGlsZCAhPSBuZXh0Q2hpbGQpOworICAgICAgICBBU1NFUlQocHJl
di0+bmV4dFNpYmxpbmcoKSA9PSBuZXh0Q2hpbGQpOworICAgICAgICBwcmV2LT5zZXROZXh0U2li
bGluZyhuZXdDaGlsZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fZmlyc3RDaGls
ZCA9PSBuZXh0Q2hpbGQpOworICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXdDaGlsZDsKKyAgICB9
CisgICAgbmV3Q2hpbGQtPnNldFBhcmVudCh0aGlzKTsKKyAgICBuZXdDaGlsZC0+c2V0UHJldmlv
dXNTaWJsaW5nKHByZXYpOworICAgIG5ld0NoaWxkLT5zZXROZXh0U2libGluZyhuZXh0Q2hpbGQp
OworICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOworfQorCit2b2lkIENvbnRhaW5lck5vZGU6OnBh
cnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hp
bGQpCit7CisgICAgQVNTRVJUKG5ld0NoaWxkKTsKKyAgICBBU1NFUlQobmV4dENoaWxkKTsKKyAg
ICBBU1NFUlQobmV4dENoaWxkLT5wYXJlbnROb2RlKCkgPT0gdGhpcyk7CisKKyAgICBOb2RlVmVj
dG9yIHRhcmdldHM7CisgICAgY29sbGVjdFRhcmdldE5vZGVzKG5ld0NoaWxkLmdldCgpLCB0YXJn
ZXRzKTsKKyAgICBpZiAodGFyZ2V0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChuZXh0Q2hpbGQtPnByZXZpb3VzU2libGluZygpID09IG5ld0NoaWxkIHx8IG5leHRDaGls
ZCA9PSBuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbworICAgICAgICByZXR1cm47CisKKyAgICBS
ZWZQdHI8Tm9kZT4gbmV4dCA9IG5leHRDaGlsZDsKKyAgICBSZWZQdHI8Tm9kZT4gbmV4dENoaWxk
UHJldmlvdXNTaWJsaW5nID0gbmV4dENoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICBmb3Ig
KE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFyZ2V0cy5iZWdpbigpOyBpdCAhPSB0
YXJnZXRzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIE5vZGUqIGNoaWxkID0gaXQtPmdldCgpOwor
CisgICAgICAgIGluc2VydEJldHdlZW4obmV4dENoaWxkUHJldmlvdXNTaWJsaW5nLmdldCgpLCBu
ZXh0LmdldCgpLCBjaGlsZCk7CisKKyAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIG5leHRD
aGlsZFByZXZpb3VzU2libGluZy5nZXQoKSwgbmV4dENoaWxkLCAxKTsKKyAgICAgICAgbm90aWZ5
Q2hpbGRJbnNlcnRlZChjaGlsZCk7CisgICAgfQorfQorCiBib29sIENvbnRhaW5lck5vZGU6OnJl
cGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIGJvb2wgc2hvdWxkTGF6eUF0dGFjaCkKIHsKICAgICAvLyBDaGVjayB0
aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KQEAgLTM2NywzMSArMzk5LDkgQEAgYm9v
bCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgLy8gdGhhdCBubyBjYWxsZXJzIGNhbGwgd2l0aCByZWYgY291bnQgPT0gMCBh
bmQgcGFyZW50ID0gMCAoYXMgb2YgdGhpcwogICAgIC8vIHdyaXRpbmcsIHRoZXJlIGFyZSBkZWZp
bml0ZWx5IGNhbGxlcnMgd2hvIGNhbGwgdGhhdCB3YXkpLgogCi0gICAgZm9yYmlkRXZlbnREaXNw
YXRjaCgpOwotCi0gICAgLy8gUmVtb3ZlIGZyb20gcmVuZGVyaW5nIHRyZWUKLSAgICBpZiAoY2hp
bGQtPmF0dGFjaGVkKCkpCi0gICAgICAgIGNoaWxkLT5kZXRhY2goKTsKLQotICAgIC8vIFJlbW92
ZSB0aGUgY2hpbGQKLSAgICBOb2RlICpwcmV2LCAqbmV4dDsKLSAgICBwcmV2ID0gY2hpbGQtPnBy
ZXZpb3VzU2libGluZygpOwotICAgIG5leHQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKLQotICAg
IGlmIChuZXh0KQotICAgICAgICBuZXh0LT5zZXRQcmV2aW91c1NpYmxpbmcocHJldik7Ci0gICAg
aWYgKHByZXYpCi0gICAgICAgIHByZXYtPnNldE5leHRTaWJsaW5nKG5leHQpOwotICAgIGlmICht
X2ZpcnN0Q2hpbGQgPT0gY2hpbGQpCi0gICAgICAgIG1fZmlyc3RDaGlsZCA9IG5leHQ7Ci0gICAg
aWYgKG1fbGFzdENoaWxkID09IGNoaWxkKQotICAgICAgICBtX2xhc3RDaGlsZCA9IHByZXY7Ci0K
LSAgICBjaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKDApOwotICAgIGNoaWxkLT5zZXROZXh0U2li
bGluZygwKTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KDApOwotCi0gICAgYWxsb3dFdmVudERpc3Bh
dGNoKCk7CisgICAgTm9kZSogcHJldiA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICBO
b2RlKiBuZXh0ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgcmVtb3ZlQmV0d2VlbihwcmV2
LCBuZXh0LCBjaGlsZC5nZXQoKSk7CiAKICAgICAvLyBEaXNwYXRjaCBwb3N0LXJlbW92YWwgbXV0
YXRpb24gZXZlbnRzCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBwcmV2LCBuZXh0LCAtMSk7
CkBAIC00MDUsNiArNDE1LDUwIEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9k
ZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBjaGlsZDsKIH0KIAor
dm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5vZGUqIHByZXZpb3VzQ2hpbGQsIE5v
ZGUqIG5leHRDaGlsZCwgTm9kZSogb2xkQ2hpbGQpCit7CisgICAgQVNTRVJUKG9sZENoaWxkKTsK
KyAgICBBU1NFUlQob2xkQ2hpbGQtPnBhcmVudE5vZGUoKSA9PSB0aGlzKTsKKworICAgIGZvcmJp
ZEV2ZW50RGlzcGF0Y2goKTsKKworICAgIC8vIFJlbW92ZSBmcm9tIHJlbmRlcmluZyB0cmVlCisg
ICAgaWYgKG9sZENoaWxkLT5hdHRhY2hlZCgpKQorICAgICAgICBvbGRDaGlsZC0+ZGV0YWNoKCk7
CisKKyAgICBpZiAobmV4dENoaWxkKQorICAgICAgICBuZXh0Q2hpbGQtPnNldFByZXZpb3VzU2li
bGluZyhwcmV2aW91c0NoaWxkKTsKKyAgICBpZiAocHJldmlvdXNDaGlsZCkKKyAgICAgICAgcHJl
dmlvdXNDaGlsZC0+c2V0TmV4dFNpYmxpbmcobmV4dENoaWxkKTsKKyAgICBpZiAobV9maXJzdENo
aWxkID09IG9sZENoaWxkKQorICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXh0Q2hpbGQ7CisgICAg
aWYgKG1fbGFzdENoaWxkID09IG9sZENoaWxkKQorICAgICAgICBtX2xhc3RDaGlsZCA9IHByZXZp
b3VzQ2hpbGQ7CisKKyAgICBvbGRDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKDApOworICAgIG9s
ZENoaWxkLT5zZXROZXh0U2libGluZygwKTsKKyAgICBvbGRDaGlsZC0+c2V0UGFyZW50KDApOwor
CisgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7Cit9CisKK3ZvaWQgQ29udGFpbmVyTm9kZTo6cGFy
c2VyUmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQpCit7CisgICAgQVNTRVJUKG9sZENoaWxkKTsK
KyAgICBBU1NFUlQob2xkQ2hpbGQtPnBhcmVudE5vZGUoKSA9PSB0aGlzKTsKKworICAgIE5vZGUq
IHByZXYgPSBvbGRDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgTm9kZSogbmV4dCA9IG9s
ZENoaWxkLT5uZXh0U2libGluZygpOworCisgICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBv
bGRDaGlsZCk7CisKKyAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgcHJldiwgbmV4dCwgLTEpOwor
ICAgIGlmIChvbGRDaGlsZC0+aW5Eb2N1bWVudCgpKQorICAgICAgICBvbGRDaGlsZC0+cmVtb3Zl
ZEZyb21Eb2N1bWVudCgpOworICAgIGVsc2UKKyAgICAgICAgb2xkQ2hpbGQtPnJlbW92ZWRGcm9t
VHJlZSh0cnVlKTsKK30KKwogLy8gdGhpcyBkaWZmZXJzIGZyb20gb3RoZXIgcmVtb3ZlIGZ1bmN0
aW9ucyBiZWNhdXNlIGl0IGZvcmNpYmx5IHJlbW92ZXMgYWxsIHRoZSBjaGlsZHJlbiwKIC8vIHJl
Z2FyZGxlc3Mgb2YgcmVhZC1vbmx5IHN0YXR1cyBvciBldmVudCBleGNlcHRpb25zLCBlLmcuCiBi
b29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKQEAgLTUzNiwxMyArNTkwLDE2IEBA
IGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6YWRkQ2hpbGRD
b21tb24oTm9kZSogbmV3Q2hpbGQpCiB7Ci0gICAgQVNTRVJUKCFuZXdDaGlsZC0+cGFyZW50KCkp
OyAvLyBVc2UgYXBwZW5kQ2hpbGQgaWYgeW91IG5lZWQgdG8gaGFuZGxlIHJlcGFyZW50aW5nLgor
ICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKCFuZXdDaGlsZC0+cGFyZW50KCkpOyAv
LyBEb2VzIG5vdCBoYW5kbGUgcmVwYXJlbnRpbmcuCisKICAgICBmb3JiaWRFdmVudERpc3BhdGNo
KCk7CiAgICAgTm9kZSogbGFzdCA9IG1fbGFzdENoaWxkOwogICAgIC8vIEZJWE1FOiBUaGlzIG1l
dGhvZCBzaG91bGQgdGFrZSBhIFBhc3NSZWZQdHIuCiAgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5l
cjxOb2RlLCBDb250YWluZXJOb2RlPihuZXdDaGlsZCwgdGhpcyk7CiAgICAgYWxsb3dFdmVudERp
c3BhdGNoKCk7CiAKKyAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyB1c2Ugbm90aWZ5Q2hp
bGRJbnNlcnRlZChuZXdDaGlsZCkgaW5zdGVhZD8KICAgICBkb2N1bWVudCgpLT5pbmNET01UcmVl
VmVyc2lvbigpOwogICAgIGlmIChpbkRvY3VtZW50KCkpCiAgICAgICAgIG5ld0NoaWxkLT5pbnNl
cnRlZEludG9Eb2N1bWVudCgpOwpAQCAtNTUyLDE3ICs2MDksMTIgQEAgdm9pZCBDb250YWluZXJO
b2RlOjphZGRDaGlsZENvbW1vbihOb2RlKiBuZXdDaGlsZCkKIHZvaWQgQ29udGFpbmVyTm9kZTo6
cGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCkKIHsKICAgICBBU1NFUlQo
bmV3Q2hpbGQpOwotICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VkIGR1cmluZyBwYXJz
aW5nLgotICAgIC8vIEl0IGRvZXMgbm90IHNlbmQgYW55IERPTSBtdXRhdGlvbiBldmVudHMgb3Ig
aGFuZGxlIHJlcGFyZW50aW5nLgotCiAgICAgYWRkQ2hpbGRDb21tb24obmV3Q2hpbGQuZ2V0KCkp
OwogfQogCiBDb250YWluZXJOb2RlKiBDb250YWluZXJOb2RlOjpsZWdhY3lQYXJzZXJBZGRDaGls
ZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkKQogewogICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0g
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgZHVyaW5nIHBhcnNpbmcuCi0gICAgLy8g
SXQgZG9lcyBub3Qgc2VuZCBhbnkgRE9NIG11dGF0aW9uIGV2ZW50cy4KIAogICAgIC8vIENoZWNr
IGZvciBjb25zaXN0ZW5jeSB3aXRoIERURCwgYnV0IG9ubHkgd2hlbiBwYXJzaW5nIEhUTUwuCiAg
ICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgJiYgIWNoaWxkQWxsb3dlZChuZXdD
aGlsZC5nZXQoKSkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggYTI3ZDk1YmVmZjJjNDZmNzNiNTJlOGE3
M2Y2Y2E4MTdlMjQwNjgzZC4uOTEzNDVhNzk5NmViYzU3MDA3YzVjOWI5NzAyM2E1MDhhM2Y1MTdm
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtNDgsOCArNDgsMTMgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCByZW1vdmVDaGlsZChOb2RlKiBjaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZp
cnR1YWwgYm9vbCBhcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRp
b25Db2RlJiwgYm9vbCBzaG91bGRMYXp5QXR0YWNoID0gZmFsc2UpOwogCisgICAgLy8gVGhlc2Ug
bWV0aG9kcyBhcmUgb25seSB1c2VkIGR1cmluZyBwYXJzaW5nLgorICAgIC8vIFRoZXkgZG9uJ3Qg
c2VuZCBET00gbXV0YXRpb24gZXZlbnRzIG9yIGhhbmRsZSByZXBhcmVudGluZy4KKyAgICAvLyBI
b3dldmVyLCBhcmJpdHJhcnkgY29kZSBtYXkgYmUgcnVuIGJ5IGJlZm9yZWxvYWQgaGFuZGxlcnMu
CiAgICAgdmlydHVhbCBDb250YWluZXJOb2RlKiBsZWdhY3lQYXJzZXJBZGRDaGlsZChQYXNzUmVm
UHRyPE5vZGU+KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxO
b2RlPik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlclJlbW92ZUNoaWxkKE5vZGUqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VySW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQs
IE5vZGUqIHJlZkNoaWxkKTsKIAogICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0
dXJuIG1fZmlyc3RDaGlsZDsgfQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKQEAgLTk3LDYg
KzEwMiw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHRha2UgYSBQYXNzUmVmUHRyLgogICAgIHZvaWQgYWRkQ2hpbGRDb21tb24oTm9kZSopOworICAg
IHZvaWQgcmVtb3ZlQmV0d2VlbihOb2RlKiBwcmV2aW91c0NoaWxkLCBOb2RlKiBuZXh0Q2hpbGQs
IE5vZGUqIG9sZENoaWxkKTsKKyAgICB2b2lkIGluc2VydEJldHdlZW4oTm9kZSogcHJldmlvdXND
aGlsZCwgTm9kZSogbmV4dENoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CiAKICAgICBzdGF0aWMgdm9p
ZCBkaXNwYXRjaFBvc3RBdHRhY2hDYWxsYmFja3MoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAwYmM4ZDllOWFlNTIzZTEx
ZWI0OGM4NzJkNTNkNWI0NjI4MDYyYjdmLi44OWQxMzkyMmE5NjZjNTM4M2UxMjA4MzlmOWM2YjA1
YWY4NzZjN2M4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtNjUxLDYgKzY1MSwxNiBAQCB2b2lkIE5vZGU6OnBhcnNlckFkZENo
aWxkKFBhc3NSZWZQdHI8Tm9kZT4pCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3Zv
aWQgTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPikKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoUGFz
c1JlZlB0cjxOb2RlPiwgTm9kZSopCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
IGJvb2wgTm9kZTo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdAogewogICAgIHJldHVybiBwYXJl
bnQoKSAmJiBwYXJlbnQoKS0+aXNDb250ZW50RWRpdGFibGUoKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL05vZGUuaCBiL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBlYzE2ZjA1OWNmMzI1MzYy
ODliMGM0MWNiNWE3ZTVjMzA0ZWQxM2ViLi4zZjA5MTYyNzcyOTYwYzdkN2QyMTc1NTgwZGRjN2I1
NTZhNzNlZWM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvV2ViQ29yZS9k
b20vTm9kZS5oCkBAIC0yNjcsNiArMjY3LDggQEAgcHVibGljOgogICAgIC8vIGFkZENoaWxkIGlz
IHRpZWQgaW50byB0aGUgbG9naWMgb2YgdGhlIExlZ2FjeUhUTUxUcmVlQnVpbGRlci4gIFdlIG5l
ZWQKICAgICAvLyBhICJjbGVhbiIgdmVyc2lvbiB0byB1c2UgZm9yIHRoZSBIVE1MNSB2ZXJzaW9u
IG9mIHRoZSBIVE1MVHJlZUJ1aWxkZXIuCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlckFkZENoaWxk
KFBhc3NSZWZQdHI8Tm9kZT4pOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJSZW1vdmVDaGlsZChQ
YXNzUmVmUHRyPE5vZGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VySW5zZXJ0QmVmb3JlKFBh
c3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG5leHRDaGlsZCk7CiAKICAgICAvLyBDYWxs
ZWQgYnkgdGhlIHBhcnNlciB3aGVuIHRoaXMgZWxlbWVudCdzIGNsb3NlIHRhZyBpcyByZWFjaGVk
LAogICAgIC8vIHNpZ25hbGluZyB0aGF0IGFsbCBjaGlsZCB0YWdzIGhhdmUgYmVlbiBwYXJzZWQg
YW5kIGFkZGVkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRl
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYTI1Yzdk
OTM4OGU2NTM2YmU5YjkxMWM1OGVlZjIxZTk1NWJjMmM0NC4uMWMxN2E2YmI1NzI1MzRmMzIxM2Y5
MGMwOTc0MTBkYTY4OGNkYmE0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3Bw
CkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQdHI8Q2hpbGRUeXBlPiBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6YXR0YWNoKE5vZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxDaGlsCiAgICAgLy8gZG9lc24n
dC4gIEl0IGZlZWxzIGxpa2Ugd2UncmUgbWlzc2luZyBhIGNvbmNlcHQgc29tZWhvdy4KICAgICBp
ZiAoc2hvdWxkRm9zdGVyUGFyZW50KCkpIHsKICAgICAgICAgZm9zdGVyUGFyZW50KGNoaWxkLmdl
dCgpKTsKLSAgICAgICAgQVNTRVJUKGNoaWxkLT5hdHRhY2hlZCgpIHx8ICFjaGlsZC0+cGFyZW50
KCktPmF0dGFjaGVkKCkpOworICAgICAgICBBU1NFUlQoY2hpbGQtPmF0dGFjaGVkKCkgfHwgIWNo
aWxkLT5wYXJlbnQoKSB8fCAhY2hpbGQtPnBhcmVudCgpLT5hdHRhY2hlZCgpKTsKICAgICAgICAg
cmV0dXJuIGNoaWxkLnJlbGVhc2UoKTsKICAgICB9CiAKQEAgLTExOCwxMCArMTE4LDcgQEAgdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6YXR0YWNoQXRTaXRlKGNvbnN0IEF0dGFjaG1lbnRTaXRl
JiBzaXRlLCBQYXNzUmVmUHRyPE4KICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBwcnBDaGlsZDsK
IAogICAgIGlmIChzaXRlLm5leHRDaGlsZCkgewotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCBh
biBpbnNlcnRFbGVtZW50IHdoaWNoIGRvZXMgbm90IHNlbmQgbXV0YXRpb24gZXZlbnRzLgotICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgc2l0ZS5wYXJlbnQtPmluc2VydEJl
Zm9yZShjaGlsZCwgc2l0ZS5uZXh0Q2hpbGQsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Cisg
ICAgICAgIHNpdGUucGFyZW50LT5wYXJzZXJJbnNlcnRCZWZvcmUoY2hpbGQsIHNpdGUubmV4dENo
aWxkKTsKICAgICAgICAgaWYgKHNpdGUucGFyZW50LT5hdHRhY2hlZCgpICYmICFjaGlsZC0+YXR0
YWNoZWQoKSkKICAgICAgICAgICAgIGNoaWxkLT5hdHRhY2goKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0
bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBmZDBiNjJlODc0ODNkMWQwMjI0YjVhMzU2YmQ3
ZGE1YzBiNGI2ZTdiLi5mOTlmMTA5ZTJiYjQ2MzA3Y2RiM2Y3YjE1ZDJmZjVjYTQyZDU2YWFhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtNTc4LDcgKzU3OCw3IEBAIHZvaWQgSFRNTFRy
ZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MVG9rZW4mIHRva2VuKQogICAg
ICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgPHNjcmlwdD4gdGFnIHdoZW4gdXNpbmcgdGhl
IFBhcnNlciB0byBjcmVhdGUKICAgICAgICAgICAgICAgICAgICAgLy8gYSBEb2N1bWVudEZyYWdt
ZW50IGZvciBwYXN0aW5nIHNvIHRoYXQgamF2YXNjcmlwdCBjb250ZW50CiAgICAgICAgICAgICAg
ICAgICAgIC8vIGRvZXMgbm90IHNob3cgdXAgaW4gcGFzdGVkIEhUTUwuCi0gICAgICAgICAgICAg
ICAgICAgIG1fbGFzdFNjcmlwdEVsZW1lbnQtPnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbGFzdFNjcmlwdEVsZW1lbnQtPnJlbW92ZUNoaWxkcmVuKCk7IC8vIEZJWE1F
OiBET00gbXV0YXRpb24gZXZlbnRzLgogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5zZXJ0
aW9uTW9kZSgpICE9IEFmdGVyRnJhbWVzZXRNb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9zY3JpcHRUb1Byb2Nlc3MpOyAvLyBDYWxsZXIgbmV2ZXIgY2FsbGVkIHRha2VTY3Jp
cHRUb1Byb2Nlc3MhCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3NjcmlwdFRvUHJvY2Vz
c1N0YXJ0TGluZSA9PSB1bmluaXRpYWxpemVkTGluZU51bWJlclZhbHVlKTsgLy8gQ2FsbGVyIG5l
dmVyIGNhbGxlZCB0YWtlU2NyaXB0VG9Qcm9jZXNzIQpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnJlcGFyZW50Q2hpbGRyZW4oRWxlbWVudCogb2xkUGFyZW50LCBF
bGVtZW50KiBuZXdQYXJlbnQpCiAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAgICAgIE5vZGUqIG5l
eHRDaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgICAgICBFeGNlcHRpb25Db2RlIGVj
OwotICAgICAgICBuZXdQYXJlbnQtPmFwcGVuZENoaWxkKGNoaWxkLCBlYyk7CisgICAgICAgIG5l
d1BhcmVudC0+YXBwZW5kQ2hpbGQoY2hpbGQsIGVjKTsgLy8gRklYTUU6IERPTSBtdXRhdGlvbiBl
dmVudHMuCiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgICAgICBjaGlsZCA9IG5leHRDaGlsZDsK
ICAgICB9CkBAIC0xODIwLDcgKzE4MjAsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y2FsbFRo
ZUFkb3B0aW9uQWdlbmN5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAvLyA2
LjYKICAgICAgICAgICAgIC8vIFVzZSBhcHBlbmRDaGlsZCBpbnN0ZWFkIG9mIHBhcnNlckFkZENo
aWxkIHRvIGhhbmRsZSBwb3NzaWJsZSByZXBhcmVudGluZy4KICAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWM7Ci0gICAgICAgICAgICBub2RlLT5lbGVtZW50KCktPmFwcGVuZENoaWxkKGxhc3RO
b2RlLT5lbGVtZW50KCksIGVjLCB0cnVlKTsKKyAgICAgICAgICAgIG5vZGUtPmVsZW1lbnQoKS0+
YXBwZW5kQ2hpbGQobGFzdE5vZGUtPmVsZW1lbnQoKSwgZWMsIHRydWUpOyAvLyBGSVhNRTogRE9N
IG11dGF0aW9uIGV2ZW50cy4KICAgICAgICAgICAgIEFTU0VSVCghZWMpOwogICAgICAgICAgICAg
Ly8gNi43CiAgICAgICAgICAgICBsYXN0Tm9kZSA9IG5vZGU7CkBAIC0xODMxLDExICsxODMxLDEz
IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjYWxsVGhlQWRvcHRpb25BZ2VuY3koQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKICAgICAgICAgLy8gY2F1c2VzRm9zdGVyUGFyZW50aW5nKHRhZ05hbWUp
IGluc3RlYWQuCiAgICAgICAgIGlmIChjb21tb25BbmNlc3RvclRhZyA9PSB0YWJsZVRhZwogICAg
ICAgICAgICAgfHwgY29tbW9uQW5jZXN0b3JUYWcgPT0gdHJUYWcKLSAgICAgICAgICAgIHx8IGlz
VGFibGVCb2R5Q29udGV4dFRhZyhjb21tb25BbmNlc3RvclRhZykpCisgICAgICAgICAgICB8fCBp
c1RhYmxlQm9keUNvbnRleHRUYWcoY29tbW9uQW5jZXN0b3JUYWcpKSB7CisgICAgICAgICAgICBp
ZiAobGFzdE5vZGUtPmVsZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpKQorICAgICAgICAgICAgICAg
IGxhc3ROb2RlLT5lbGVtZW50KCktPnBhcmVudEVsZW1lbnQoKS0+cGFyc2VyUmVtb3ZlQ2hpbGQo
bGFzdE5vZGUtPmVsZW1lbnQoKSk7CiAgICAgICAgICAgICBtX3RyZWUuZm9zdGVyUGFyZW50KGxh
c3ROb2RlLT5lbGVtZW50KCkpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgICAgICBjb21tb25BbmNlc3Rvci0+
YXBwZW5kQ2hpbGQobGFzdE5vZGUtPmVsZW1lbnQoKSwgZWMsIHRydWUpOworICAgICAgICAgICAg
Y29tbW9uQW5jZXN0b3ItPmFwcGVuZENoaWxkKGxhc3ROb2RlLT5lbGVtZW50KCksIGVjLCB0cnVl
KTsgLy8gRklYTUU6IERPTSBtdXRhdGlvbiBldmVudHMuCiAgICAgICAgICAgICBBU1NFUlQoIWVj
KTsKICAgICAgICAgfQogICAgICAgICAvLyA4Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64926</attachid>
            <date>2010-08-19 22:50:23 -0700</date>
            <delta_ts>2010-08-20 08:33:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44129-20100819225021.patch</filename>
            <type>text/plain</type>
            <size>20146</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlY2NmMmFmOWY4NGUyMTlmOTQ2MmQ4YThjNDFjZTIzYjY0M2Y1MDY0Li5jNmI3MTY5
ZjQ1MWNhNTQ1OWUxYmY1ZmE0MGYwM2I4Yzk4YWI0NzljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMTkgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBXZWJD
b3JlOjpOb2RlOjpjcmVhdGVSZW5kZXJlcklmTmVlZGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTI5CisKKyAgICAgICAgKiBodG1sNWxpYi9y
ZXNvdXJjZXMvYWRvcHRpb24wMi5kYXQ6IEEgY3JhenkgRE9NIGZyb20gaHR0cHM6Ly9idWdzLndl
YmtpZy5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MTcwIHdoaWNoIHByZXZpb3VzbHkgY3Jhc2hlZC4g
VGhlIGV4cGVjdGF0aW9uIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGNvcnJlY3QsIGJ1dCBpdCBiZWhh
dmVzIHRoZSBzYW1lIGluIEZpcmVmb3ggNCwgc28gSSdtIGdvaW5nIHRvIGZpbGUgYSBzcGVjIGJ1
Zy4KKyAgICAgICAgKiBmYXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1pbi1iZWZv
cmVsb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3BhcnNlci9yZW1vdmUtbWlzbmVz
dGVkLWlmcmFtZS1pbi1iZWZvcmVsb2FkLmh0bWw6IE1pc25lc3QgYSBub2RlIGluIGEgdGFibGUg
YW5kIHJlbW92ZSBpdCBkdXJpbmcgaXRzIGJlZm9yZWxvYWQgaGFuZGxlci4gVGhlIG5vZGUgc2hv
dWxkIG5vdCBiZSBpbiB0aGUgdHJlZS4KKyAgICAgICAgKiBmYXN0L3BhcnNlci9yZW1vdmUtbWlz
bmVzdGVkLWlmcmFtZS1wYXJlbnQtaW4tYmVmb3JlbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9wYXJzZXIvcmVtb3ZlLW1pc25lc3RlZC1pZnJhbWUtcGFyZW50LWluLWJlZm9yZWxv
YWQuaHRtbDogTWlzbmVzdCBhIG5vZGUgaW4gYSB0YWJsZSBhbmQgcmVtb3ZlIGl0cyBwYXJlbnQg
ZHVyaW5nIGl0cyBiZWZvcmVsb2FkIGhhbmRsZXIuIFRoZSBhZG9wdGlvbiBhZ2VuY3kgc2hvdWxk
IGhhdmUgYWxyZWFkeSBjaGFuZ2VkIGl0cyBwYXJlbnQgdG8gdGhlIG9uZSBiZWZvcmUgdGhlIHRh
YmxlIGFuZCBpdCBhbmQgaXRzIHBhcmVudCBzaG91bGQgYmUgcmVtb3ZlZC4KKwogMjAxMC0wOC0x
OSAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNl
ci9yZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1pbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLWluLWJlZm9yZWxv
YWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhOTRjYjM0ZjZhNTVhMzQ0ZGVkZmYyOTY5NjRl
NDZmYWE4NDZmNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9y
ZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1pbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEzIEBACit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgICAgPHNjcmlwdD4KK3wgICAgICAg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMiCit8ICAgICAiCisiCit8ICAg
PGJvZHk+Cit8ICAgICA8dGFibGU+Cit8ICAgICAgICIKKworIgorfCAgICAgIgorIgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVtb3ZlLW1pc25lc3RlZC1pZnJhbWUtaW4t
YmVmb3JlbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVtb3ZlLW1pc25lc3Rl
ZC1pZnJhbWUtaW4tYmVmb3JlbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3YTY0Mjk1YjZhZDMzMjE3
ZDA1NWZlMmViNWI4NjZkYWE4MDVhMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1pbi1iZWZvcmVsb2FkLmh0bWwKQEAg
LTAsMCArMSw0IEBACis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3Vw
LmpzIj48L3NjcmlwdD4KKzx0YWJsZT4KKzxpZnJhbWUgb25iZWZvcmVsb2FkPSJldmVudC50YXJn
ZXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChldmVudC50YXJnZXQpIj48L2lmcmFtZT4KKzwvdGFi
bGU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVk
LWlmcmFtZS1wYXJlbnQtaW4tYmVmb3JlbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1wYXJlbnQtaW4tYmVmb3JlbG9hZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBkZDYxODAxNjcxNDZkNjYwNjE2NTM1NjU4NWUzZDZj
MDFmZDFhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3JlbW92
ZS1taXNuZXN0ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDkgQEAKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgICA8c2NyaXB0PgorfCAgICAg
ICBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyIKK3wgICAgICIKKyIKK3wg
ICA8Ym9keT4KK3wgICAgICIKKyIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2Vy
L3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1wYXJlbnQtaW4tYmVm
b3JlbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZDJjOGRjOTM5NjVmN2UzYmFkZWFhM2I2MzJmMDA2
YTgxY2NhMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZW1v
dmUtbWlzbmVzdGVkLWlmcmFtZS1wYXJlbnQtaW4tYmVmb3JlbG9hZC5odG1sCkBAIC0wLDAgKzEs
NiBAQAorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9z
Y3JpcHQ+Cis8ZGl2PgorPHRhYmxlPgorPGlmcmFtZSBvbmJlZm9yZWxvYWQ9ImV2ZW50LnRhcmdl
dC5wYXJlbnROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXZlbnQudGFyZ2V0LnBhcmVudE5v
ZGUpIj48L2lmcmFtZT4KKzwvdGFibGU+Cis8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0bWw1bGliL3Jlc291cmNlcy9hZG9wdGlvbjAxLmRhdCBiL0xheW91dFRlc3RzL2h0bWw1bGli
L3Jlc291cmNlcy9hZG9wdGlvbjAxLmRhdAppbmRleCAwMzYyZjM3MGQ3ZDI5YzgxOTc3YjNlYmVh
N2JjNTQyYmJhZWVhOTYzLi4wYzg4NmQ1ZTZmZGQ5M2RlZGNlZTA0M2NlMzQ5YTQwMjRkMjM3OTk0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvYWRvcHRpb24wMS5k
YXQKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL2Fkb3B0aW9uMDEuZGF0CkBA
IC0xODEsMyArMTgxLDE3IEBACiB8ICAgICAgICAgPHRyPgogfCAgICAgICAgICAgPHRkPgogfCAg
ICAgICAgICAgICAiQiIKKworI2RhdGEKKzxhPjxzdmc+PHRyPjxpbnB1dD48L2E+CisjZXJyb3Jz
CisjZG9jdW1lbnQKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICA8YT4K
K3wgICAgICAgPHN2ZyBzdmc+Cit8ICAgICA8c3ZnIHRyPgorfCAgICAgICA8YT4KK3wgICA8c3Zn
IGlucHV0PgorfCAgICAgPGE+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5u
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci5odG1sCm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNTM4ZDk4ZjRkMGFmNzYwY2Y1Njg1Y2E0NWZlNmY2NGVjNjQyMWJj
MS4uZDViMDU4MGRmMzJlODJiMTVjNWRmNDZjMTNiOTgxODdjNjM2MTMxMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBA
QAorMjAxMC0wOC0xOSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyYXNoIGluIFdl
YkNvcmU6Ok5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMjkKKworICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJl
Zm9yZSk6IEZhY3RvciBvdXQgY29yZSBiaXQgdG8gaW5zZXJ0QmV0d2Vlbi4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJldHdlZW4pOiBGYWN0b3JlZCBvdXQgb2YgaW5z
ZXJ0QmVmb3JlLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0
QmVmb3JlKTogU2ltaWxhciB0byBpbnNlcnRCZWZvcmUsIGJ1dCBkb2Vzbid0IGhhbmRsZSByZXBh
cmVudGluZyBvciBkaXNwYXRjaCBET00gbXV0YXRpb24gZXZlbnRzLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQpOiBGYWN0b3Igb3V0IGNvcmUgYml0IHRvIHJl
bW92ZUJldHdlZW4uCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3
ZWVuKTogRmFjb3RyZWQgb3V0IG9mIHJlbW92ZUNoaWxkLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOiBTaW1pbGFyIHRvIHJlbW92ZUNoaWxkLCBi
dXQgZG9lc24ndCBoYW5kbGUgcmVwYXJlbnRpbmcgb3IgZGlzcGF0Y2ggRE9NIG11dGF0aW9uIGV2
ZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFkZENoaWxkQ29tbW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlckFkZENoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmxlZ2FjeVBhcnNlckFkZENoaWxkKToKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnBhcnNlckluc2VydEJlZm9yZSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb25zdHJ1Y3Rpb25TaXRlOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0
cnVjdGlvblNpdGU6OmF0dGFjaEF0U2l0ZSk6IFVzZSBuZXcgcGFyc2VySW5zZXJ0QmVmb3JlLgor
ICAgICAgICAqIGh0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6cGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpyZXBhcmVudENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6Y2FsbFRoZUFkb3B0aW9uQWdlbmN5KTogV2FzIG1pc3NpbmcgYSBr
ZXkgYml0IGZyb20gdGhlIHNwZWMgYWJvdXQgcmVtb3ZpbmcgdGhlIG9sZCBwYXJlbnQgaWYgaXQg
ZXhpc3RzLgorCiAyMDEwLTA4LTE5ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIENocm9taXVtIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXgg
ZTU1OWJhN2Y2ZTJmZmZlZTBhMzcwZGM4MjMzMGNkN2NiYTY1MWZmMy4uZTkxOTQ5NDViYzUzYmRm
NzhkM2I5Y2Q0ZjRiZjY1NTM3MjhiOWJlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTEzNCwz
MSArMTM0LDEyIEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8
Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgICAgIGlmIChjaGlsZC0+
cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgQVNTRVJUKCFjaGls
ZC0+bmV4dFNpYmxpbmcoKSk7Ci0gICAgICAgIEFTU0VSVCghY2hpbGQtPnByZXZpb3VzU2libGlu
ZygpKTsKLQotICAgICAgICAvLyBBZGQgY2hpbGQgYmVmb3JlICJuZXh0Ii4KLSAgICAgICAgZm9y
YmlkRXZlbnREaXNwYXRjaCgpOwotICAgICAgICBOb2RlKiBwcmV2ID0gbmV4dC0+cHJldmlvdXNT
aWJsaW5nKCk7Ci0gICAgICAgIEFTU0VSVChtX2xhc3RDaGlsZCAhPSBwcmV2KTsKLSAgICAgICAg
bmV4dC0+c2V0UHJldmlvdXNTaWJsaW5nKGNoaWxkKTsKLSAgICAgICAgaWYgKHByZXYpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChtX2ZpcnN0Q2hpbGQgIT0gbmV4dCk7Ci0gICAgICAgICAgICBBU1NF
UlQocHJldi0+bmV4dFNpYmxpbmcoKSA9PSBuZXh0KTsKLSAgICAgICAgICAgIHByZXYtPnNldE5l
eHRTaWJsaW5nKGNoaWxkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVCht
X2ZpcnN0Q2hpbGQgPT0gbmV4dCk7Ci0gICAgICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsK
LSAgICAgICAgfQotICAgICAgICBjaGlsZC0+c2V0UGFyZW50KHRoaXMpOwotICAgICAgICBjaGls
ZC0+c2V0UHJldmlvdXNTaWJsaW5nKHByZXYpOwotICAgICAgICBjaGlsZC0+c2V0TmV4dFNpYmxp
bmcobmV4dC5nZXQoKSk7Ci0gICAgICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOworICAgICAgICBp
bnNlcnRCZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hpbGQpOwogCiAgICAgICAgIC8vIFNlbmQg
bm90aWZpY2F0aW9uIGFib3V0IHRoZSBjaGlsZHJlbiBjaGFuZ2UuCiAgICAgICAgIGNoaWxkcmVu
Q2hhbmdlZChmYWxzZSwgcmVmQ2hpbGRQcmV2aW91c1NpYmxpbmcuZ2V0KCksIG5leHQuZ2V0KCks
IDEpOwogICAgICAgICBub3RpZnlDaGlsZEluc2VydGVkKGNoaWxkKTsKLSAgICAgICAgICAgICAg
ICAKKwogICAgICAgICAvLyBBZGQgY2hpbGQgdG8gdGhlIHJlbmRlcmluZyB0cmVlLgogICAgICAg
ICBpZiAoYXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVkKCkgJiYgY2hpbGQtPnBhcmVudCgp
ID09IHRoaXMpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRMYXp5QXR0YWNoKQpAQCAtMTc2LDYg
KzE1Nyw1NyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5v
ZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQogICAgIHJldHVybiB0cnVlOwogfQog
Cit2b2lkIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZUNvbW1vbihOb2RlKiBuZXh0Q2hpbGQs
IE5vZGUqIG5ld0NoaWxkKQoreworICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKCFu
ZXdDaGlsZC0+cGFyZW50KCkpOyAvLyBVc2UgaW5zZXJ0QmVmb3JlIGlmIHlvdSBuZWVkIHRvIGhh
bmRsZSByZXBhcmVudGluZyAoYW5kIHdhbnQgRE9NIG11dGF0aW9uIGV2ZW50cykuCisgICAgQVNT
RVJUKCFuZXdDaGlsZC0+bmV4dFNpYmxpbmcoKSk7CisgICAgQVNTRVJUKCFuZXdDaGlsZC0+cHJl
dmlvdXNTaWJsaW5nKCkpOworCisgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOworICAgIE5vZGUq
IHByZXYgPSBuZXh0Q2hpbGQtPnByZXZpb3VzU2libGluZygpOworICAgIEFTU0VSVChtX2xhc3RD
aGlsZCAhPSBwcmV2KTsKKyAgICBuZXh0Q2hpbGQtPnNldFByZXZpb3VzU2libGluZyhuZXdDaGls
ZCk7CisgICAgaWYgKHByZXYpIHsKKyAgICAgICAgQVNTRVJUKG1fZmlyc3RDaGlsZCAhPSBuZXh0
Q2hpbGQpOworICAgICAgICBBU1NFUlQocHJldi0+bmV4dFNpYmxpbmcoKSA9PSBuZXh0Q2hpbGQp
OworICAgICAgICBwcmV2LT5zZXROZXh0U2libGluZyhuZXdDaGlsZCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgQVNTRVJUKG1fZmlyc3RDaGlsZCA9PSBuZXh0Q2hpbGQpOworICAgICAgICBtX2Zp
cnN0Q2hpbGQgPSBuZXdDaGlsZDsKKyAgICB9CisgICAgbmV3Q2hpbGQtPnNldFBhcmVudCh0aGlz
KTsKKyAgICBuZXdDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKHByZXYpOworICAgIG5ld0NoaWxk
LT5zZXROZXh0U2libGluZyhuZXh0Q2hpbGQpOworICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwor
fQorCit2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5v
ZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hpbGQpCit7CisgICAgQVNTRVJUKG5ld0NoaWxkKTsK
KyAgICBBU1NFUlQobmV4dENoaWxkKTsKKyAgICBBU1NFUlQobmV4dENoaWxkLT5wYXJlbnROb2Rl
KCkgPT0gdGhpcyk7CisKKyAgICBOb2RlVmVjdG9yIHRhcmdldHM7CisgICAgY29sbGVjdFRhcmdl
dE5vZGVzKG5ld0NoaWxkLmdldCgpLCB0YXJnZXRzKTsKKyAgICBpZiAodGFyZ2V0cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXh0Q2hpbGQtPnByZXZpb3VzU2libGlu
ZygpID09IG5ld0NoaWxkIHx8IG5leHRDaGlsZCA9PSBuZXdDaGlsZCkgLy8gbm90aGluZyB0byBk
bworICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8Tm9kZT4gbmV4dCA9IG5leHRDaGlsZDsK
KyAgICBSZWZQdHI8Tm9kZT4gbmV4dENoaWxkUHJldmlvdXNTaWJsaW5nID0gbmV4dENoaWxkLT5w
cmV2aW91c1NpYmxpbmcoKTsKKyAgICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gdGFyZ2V0cy5iZWdpbigpOyBpdCAhPSB0YXJnZXRzLmVuZCgpOyArK2l0KSB7CisgICAgICAg
IE5vZGUqIGNoaWxkID0gaXQtPmdldCgpOworCisgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbihu
ZXh0LmdldCgpLCBjaGlsZCk7CisKKyAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIG5leHRD
aGlsZFByZXZpb3VzU2libGluZy5nZXQoKSwgbmV4dENoaWxkLCAxKTsKKyAgICAgICAgbm90aWZ5
Q2hpbGRJbnNlcnRlZChjaGlsZCk7CisgICAgfQorfQorCiBib29sIENvbnRhaW5lck5vZGU6OnJl
cGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCwgRXhj
ZXB0aW9uQ29kZSYgZWMsIGJvb2wgc2hvdWxkTGF6eUF0dGFjaCkKIHsKICAgICAvLyBDaGVjayB0
aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KQEAgLTM2NywzMSArMzk5LDkgQEAgYm9v
bCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgLy8gdGhhdCBubyBjYWxsZXJzIGNhbGwgd2l0aCByZWYgY291bnQgPT0gMCBh
bmQgcGFyZW50ID0gMCAoYXMgb2YgdGhpcwogICAgIC8vIHdyaXRpbmcsIHRoZXJlIGFyZSBkZWZp
bml0ZWx5IGNhbGxlcnMgd2hvIGNhbGwgdGhhdCB3YXkpLgogCi0gICAgZm9yYmlkRXZlbnREaXNw
YXRjaCgpOwotCi0gICAgLy8gUmVtb3ZlIGZyb20gcmVuZGVyaW5nIHRyZWUKLSAgICBpZiAoY2hp
bGQtPmF0dGFjaGVkKCkpCi0gICAgICAgIGNoaWxkLT5kZXRhY2goKTsKLQotICAgIC8vIFJlbW92
ZSB0aGUgY2hpbGQKLSAgICBOb2RlICpwcmV2LCAqbmV4dDsKLSAgICBwcmV2ID0gY2hpbGQtPnBy
ZXZpb3VzU2libGluZygpOwotICAgIG5leHQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKLQotICAg
IGlmIChuZXh0KQotICAgICAgICBuZXh0LT5zZXRQcmV2aW91c1NpYmxpbmcocHJldik7Ci0gICAg
aWYgKHByZXYpCi0gICAgICAgIHByZXYtPnNldE5leHRTaWJsaW5nKG5leHQpOwotICAgIGlmICht
X2ZpcnN0Q2hpbGQgPT0gY2hpbGQpCi0gICAgICAgIG1fZmlyc3RDaGlsZCA9IG5leHQ7Ci0gICAg
aWYgKG1fbGFzdENoaWxkID09IGNoaWxkKQotICAgICAgICBtX2xhc3RDaGlsZCA9IHByZXY7Ci0K
LSAgICBjaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKDApOwotICAgIGNoaWxkLT5zZXROZXh0U2li
bGluZygwKTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KDApOwotCi0gICAgYWxsb3dFdmVudERpc3Bh
dGNoKCk7CisgICAgTm9kZSogcHJldiA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICBO
b2RlKiBuZXh0ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgcmVtb3ZlQmV0d2VlbihwcmV2
LCBuZXh0LCBjaGlsZC5nZXQoKSk7CiAKICAgICAvLyBEaXNwYXRjaCBwb3N0LXJlbW92YWwgbXV0
YXRpb24gZXZlbnRzCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBwcmV2LCBuZXh0LCAtMSk7
CkBAIC00MDUsNiArNDE1LDUwIEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9k
ZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBjaGlsZDsKIH0KIAor
dm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5vZGUqIHByZXZpb3VzQ2hpbGQsIE5v
ZGUqIG5leHRDaGlsZCwgTm9kZSogb2xkQ2hpbGQpCit7CisgICAgQVNTRVJUKG9sZENoaWxkKTsK
KyAgICBBU1NFUlQob2xkQ2hpbGQtPnBhcmVudE5vZGUoKSA9PSB0aGlzKTsKKworICAgIGZvcmJp
ZEV2ZW50RGlzcGF0Y2goKTsKKworICAgIC8vIFJlbW92ZSBmcm9tIHJlbmRlcmluZyB0cmVlCisg
ICAgaWYgKG9sZENoaWxkLT5hdHRhY2hlZCgpKQorICAgICAgICBvbGRDaGlsZC0+ZGV0YWNoKCk7
CisKKyAgICBpZiAobmV4dENoaWxkKQorICAgICAgICBuZXh0Q2hpbGQtPnNldFByZXZpb3VzU2li
bGluZyhwcmV2aW91c0NoaWxkKTsKKyAgICBpZiAocHJldmlvdXNDaGlsZCkKKyAgICAgICAgcHJl
dmlvdXNDaGlsZC0+c2V0TmV4dFNpYmxpbmcobmV4dENoaWxkKTsKKyAgICBpZiAobV9maXJzdENo
aWxkID09IG9sZENoaWxkKQorICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXh0Q2hpbGQ7CisgICAg
aWYgKG1fbGFzdENoaWxkID09IG9sZENoaWxkKQorICAgICAgICBtX2xhc3RDaGlsZCA9IHByZXZp
b3VzQ2hpbGQ7CisKKyAgICBvbGRDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKDApOworICAgIG9s
ZENoaWxkLT5zZXROZXh0U2libGluZygwKTsKKyAgICBvbGRDaGlsZC0+c2V0UGFyZW50KDApOwor
CisgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7Cit9CisKK3ZvaWQgQ29udGFpbmVyTm9kZTo6cGFy
c2VyUmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQpCit7CisgICAgQVNTRVJUKG9sZENoaWxkKTsK
KyAgICBBU1NFUlQob2xkQ2hpbGQtPnBhcmVudE5vZGUoKSA9PSB0aGlzKTsKKworICAgIE5vZGUq
IHByZXYgPSBvbGRDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgTm9kZSogbmV4dCA9IG9s
ZENoaWxkLT5uZXh0U2libGluZygpOworCisgICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBv
bGRDaGlsZCk7CisKKyAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgcHJldiwgbmV4dCwgLTEpOwor
ICAgIGlmIChvbGRDaGlsZC0+aW5Eb2N1bWVudCgpKQorICAgICAgICBvbGRDaGlsZC0+cmVtb3Zl
ZEZyb21Eb2N1bWVudCgpOworICAgIGVsc2UKKyAgICAgICAgb2xkQ2hpbGQtPnJlbW92ZWRGcm9t
VHJlZSh0cnVlKTsKK30KKwogLy8gdGhpcyBkaWZmZXJzIGZyb20gb3RoZXIgcmVtb3ZlIGZ1bmN0
aW9ucyBiZWNhdXNlIGl0IGZvcmNpYmx5IHJlbW92ZXMgYWxsIHRoZSBjaGlsZHJlbiwKIC8vIHJl
Z2FyZGxlc3Mgb2YgcmVhZC1vbmx5IHN0YXR1cyBvciBldmVudCBleGNlcHRpb25zLCBlLmcuCiBi
b29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKQEAgLTUzNiwxMyArNTkwLDE2IEBA
IGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6YWRkQ2hpbGRD
b21tb24oTm9kZSogbmV3Q2hpbGQpCiB7Ci0gICAgQVNTRVJUKCFuZXdDaGlsZC0+cGFyZW50KCkp
OyAvLyBVc2UgYXBwZW5kQ2hpbGQgaWYgeW91IG5lZWQgdG8gaGFuZGxlIHJlcGFyZW50aW5nLgor
ICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKCFuZXdDaGlsZC0+cGFyZW50KCkpOyAv
LyBVc2UgYXBwZW5kQ2hpbGQgaWYgeW91IG5lZWQgdG8gaGFuZGxlIHJlcGFyZW50aW5nIChhbmQg
d2FudCBET00gbXV0YXRpb24gZXZlbnRzKS4KKwogICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsK
ICAgICBOb2RlKiBsYXN0ID0gbV9sYXN0Q2hpbGQ7CiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9k
IHNob3VsZCB0YWtlIGEgUGFzc1JlZlB0ci4KICAgICBhcHBlbmRDaGlsZFRvQ29udGFpbmVyPE5v
ZGUsIENvbnRhaW5lck5vZGU+KG5ld0NoaWxkLCB0aGlzKTsKICAgICBhbGxvd0V2ZW50RGlzcGF0
Y2goKTsKIAorICAgIC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIHVzZSBub3RpZnlDaGlsZElu
c2VydGVkKG5ld0NoaWxkKSBpbnN0ZWFkPwogICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJz
aW9uKCk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgbmV3Q2hpbGQtPmluc2VydGVk
SW50b0RvY3VtZW50KCk7CkBAIC01NTIsMTcgKzYwOSwxMiBAQCB2b2lkIENvbnRhaW5lck5vZGU6
OmFkZENoaWxkQ29tbW9uKE5vZGUqIG5ld0NoaWxkKQogdm9pZCBDb250YWluZXJOb2RlOjpwYXJz
ZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkKQogewogICAgIEFTU0VSVChuZXdD
aGlsZCk7Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgZHVyaW5nIHBhcnNpbmcu
Ci0gICAgLy8gSXQgZG9lcyBub3Qgc2VuZCBhbnkgRE9NIG11dGF0aW9uIGV2ZW50cyBvciBoYW5k
bGUgcmVwYXJlbnRpbmcuCi0KICAgICBhZGRDaGlsZENvbW1vbihuZXdDaGlsZC5nZXQoKSk7CiB9
CiAKIENvbnRhaW5lck5vZGUqIENvbnRhaW5lck5vZGU6OmxlZ2FjeVBhcnNlckFkZENoaWxkKFBh
c3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiB7CiAgICAgQVNTRVJUKG5ld0NoaWxkKTsKLSAgICAv
LyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBkdXJpbmcgcGFyc2luZy4KLSAgICAvLyBJdCBk
b2VzIG5vdCBzZW5kIGFueSBET00gbXV0YXRpb24gZXZlbnRzLgogCiAgICAgLy8gQ2hlY2sgZm9y
IGNvbnNpc3RlbmN5IHdpdGggRFRELCBidXQgb25seSB3aGVuIHBhcnNpbmcgSFRNTC4KICAgICBp
ZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiAhY2hpbGRBbGxvd2VkKG5ld0NoaWxk
LmdldCgpKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCBhMjdkOTViZWZmMmM0NmY3M2I1MmU4YTczZjZj
YTgxN2UyNDA2ODNkLi4xMTE0ZDNiMjQxZmJjOTQxNzc3NzEwZDBjN2Y3YzI2N2E2MDU3Y2U1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCkBAIC00OCw4ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHJlbW92ZUNoaWxkKE5vZGUqIGNoaWxkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIEV4Y2VwdGlvbkNv
ZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7CiAKKyAgICAvLyBUaGVzZSBtZXRo
b2RzIGFyZSBvbmx5IHVzZWQgZHVyaW5nIHBhcnNpbmcuCisgICAgLy8gVGhleSBkb24ndCBzZW5k
IERPTSBtdXRhdGlvbiBldmVudHMgb3IgaGFuZGxlIHJlcGFyZW50aW5nLgorICAgIC8vIEhvd2V2
ZXIsIGFyYml0cmFyeSBjb2RlIG1heSBiZSBydW4gYnkgYmVmb3JlbG9hZCBoYW5kbGVycy4KICAg
ICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGxlZ2FjeVBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8
Tm9kZT4pOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyUmVtb3ZlQ2hpbGQoTm9kZSopOworICAgIHZpcnR1
YWwgdm9pZCBwYXJzZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9k
ZSogcmVmQ2hpbGQpOwogCiAgICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3QgeyByZXR1cm4g
bV9maXJzdENoaWxkOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwpAQCAtOTcsNiArMTAy
LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGFr
ZSBhIFBhc3NSZWZQdHIuCiAgICAgdm9pZCBhZGRDaGlsZENvbW1vbihOb2RlKik7CisgICAgdm9p
ZCByZW1vdmVCZXR3ZWVuKE5vZGUqIHByZXZpb3VzQ2hpbGQsIE5vZGUqIG5leHRDaGlsZCwgTm9k
ZSogb2xkQ2hpbGQpOworICAgIHZvaWQgaW5zZXJ0QmVmb3JlQ29tbW9uKE5vZGUqIG5leHRDaGls
ZCwgTm9kZSogb2xkQ2hpbGQpOwogCiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQb3N0QXR0YWNo
Q2FsbGJhY2tzKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggMGJjOGQ5ZTlhZTUyM2UxMWViNDhjODcyZDUzZDViNDYyODA2
MmI3Zi4uODlkMTM5MjJhOTY2YzUzODNlMTIwODM5ZjljNmIwNWFmODc2YzdjOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTY1
MSw2ICs2NTEsMTYgQEAgdm9pZCBOb2RlOjpwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+
KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIE5vZGU6OnBhcnNlclJlbW92
ZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3ZvaWQgTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4sIE5vZGUq
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiBib29sIE5vZGU6OmlzQ29udGVu
dEVkaXRhYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gcGFyZW50KCkgJiYgcGFyZW50KCktPmlz
Q29udGVudEVkaXRhYmxlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9XZWJD
b3JlL2RvbS9Ob2RlLmgKaW5kZXggZWMxNmYwNTljZjMyNTM2Mjg5YjBjNDFjYjVhN2U1YzMwNGVk
MTNlYi4uM2YwOTE2Mjc3Mjk2MGM3ZDdkMjE3NTU4MGRkYzdiNTU2YTczZWVjNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjY3LDYg
KzI2Nyw4IEBAIHB1YmxpYzoKICAgICAvLyBhZGRDaGlsZCBpcyB0aWVkIGludG8gdGhlIGxvZ2lj
IG9mIHRoZSBMZWdhY3lIVE1MVHJlZUJ1aWxkZXIuICBXZSBuZWVkCiAgICAgLy8gYSAiY2xlYW4i
IHZlcnNpb24gdG8gdXNlIGZvciB0aGUgSFRNTDUgdmVyc2lvbiBvZiB0aGUgSFRNTFRyZWVCdWls
ZGVyLgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyUmVtb3ZlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPik7Cisg
ICAgdmlydHVhbCB2b2lkIHBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0No
aWxkLCBOb2RlKiBuZXh0Q2hpbGQpOwogCiAgICAgLy8gQ2FsbGVkIGJ5IHRoZSBwYXJzZXIgd2hl
biB0aGlzIGVsZW1lbnQncyBjbG9zZSB0YWcgaXMgcmVhY2hlZCwKICAgICAvLyBzaWduYWxpbmcg
dGhhdCBhbGwgY2hpbGQgdGFncyBoYXZlIGJlZW4gcGFyc2VkIGFuZCBhZGRlZC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IGEyNWM3ZDkzODhlNjUzNmJlOWI5MTFjNThl
ZWYyMWU5NTViYzJjNDQuLjFjMTdhNmJiNTcyNTM0ZjMyMTNmOTBjMDk3NDEwZGE2ODhjZGJhNDEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAtOTIsNyArOTIsNyBAQCBQ
YXNzUmVmUHRyPENoaWxkVHlwZT4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmF0dGFjaChOb2RlKiBw
YXJlbnQsIFBhc3NSZWZQdHI8Q2hpbAogICAgIC8vIGRvZXNuJ3QuICBJdCBmZWVscyBsaWtlIHdl
J3JlIG1pc3NpbmcgYSBjb25jZXB0IHNvbWVob3cuCiAgICAgaWYgKHNob3VsZEZvc3RlclBhcmVu
dCgpKSB7CiAgICAgICAgIGZvc3RlclBhcmVudChjaGlsZC5nZXQoKSk7Ci0gICAgICAgIEFTU0VS
VChjaGlsZC0+YXR0YWNoZWQoKSB8fCAhY2hpbGQtPnBhcmVudCgpLT5hdHRhY2hlZCgpKTsKKyAg
ICAgICAgQVNTRVJUKGNoaWxkLT5hdHRhY2hlZCgpIHx8ICFjaGlsZC0+cGFyZW50KCkgfHwgIWNo
aWxkLT5wYXJlbnQoKS0+YXR0YWNoZWQoKSk7CiAgICAgICAgIHJldHVybiBjaGlsZC5yZWxlYXNl
KCk7CiAgICAgfQogCkBAIC0xMTgsMTAgKzExOCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNp
dGU6OmF0dGFjaEF0U2l0ZShjb25zdCBBdHRhY2htZW50U2l0ZSYgc2l0ZSwgUGFzc1JlZlB0cjxO
CiAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gcHJwQ2hpbGQ7CiAKICAgICBpZiAoc2l0ZS5uZXh0
Q2hpbGQpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgYW4gaW5zZXJ0RWxlbWVudCB3aGlj
aCBkb2VzIG5vdCBzZW5kIG11dGF0aW9uIGV2ZW50cy4KLSAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgICAgIHNpdGUucGFyZW50LT5pbnNlcnRCZWZvcmUoY2hpbGQsIHNpdGUubmV4
dENoaWxkLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBzaXRlLnBhcmVudC0+
cGFyc2VySW5zZXJ0QmVmb3JlKGNoaWxkLCBzaXRlLm5leHRDaGlsZCk7CiAgICAgICAgIGlmIChz
aXRlLnBhcmVudC0+YXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVkKCkpCiAgICAgICAgICAg
ICBjaGlsZC0+YXR0YWNoKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5j
cHAKaW5kZXggZmQwYjYyZTg3NDgzZDFkMDIyNGI1YTM1NmJkN2RhNWMwYjRiNmU3Yi4uY2M1NTEx
MjI0Y2VkZmI2NDE5NWI1NGNhY2E4MzNjOGRmMDNlOTMwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRl
ci5jcHAKQEAgLTE3NDUsOSArMTc0NSwxMCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cmVwYXJl
bnRDaGlsZHJlbihFbGVtZW50KiBvbGRQYXJlbnQsIEVsZW1lbnQqIG5ld1BhcmVudCkKICAgICBO
b2RlKiBjaGlsZCA9IG9sZFBhcmVudC0+Zmlyc3RDaGlsZCgpOwogICAgIHdoaWxlIChjaGlsZCkg
ewogICAgICAgICBOb2RlKiBuZXh0Q2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgbmV3UGFyZW50LT5hcHBlbmRDaGlsZChjaGls
ZCwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgb2xkUGFyZW50LT5wYXJzZXJS
ZW1vdmVDaGlsZChjaGlsZCk7CisgICAgICAgIG5ld1BhcmVudC0+cGFyc2VyQWRkQ2hpbGQoY2hp
bGQpOworICAgICAgICBpZiAobmV3UGFyZW50LT5hdHRhY2hlZCgpICYmICFjaGlsZC0+YXR0YWNo
ZWQoKSkKKyAgICAgICAgICAgIGNoaWxkLT5hdHRhY2goKTsKICAgICAgICAgY2hpbGQgPSBuZXh0
Q2hpbGQ7CiAgICAgfQogfQpAQCAtMTgxOCwxNSArMTgxOSwxOCBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6Y2FsbFRoZUFkb3B0aW9uQWdlbmN5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgICAgICBpZiAobGFzdE5vZGUgPT0gZnVydGhlc3RCbG9jaykKICAgICAgICAgICAgICAgICBi
b29rbWFyay5tb3ZlVG9BZnRlcihub2RlRW50cnkpOwogICAgICAgICAgICAgLy8gNi42Ci0gICAg
ICAgICAgICAvLyBVc2UgYXBwZW5kQ2hpbGQgaW5zdGVhZCBvZiBwYXJzZXJBZGRDaGlsZCB0byBo
YW5kbGUgcG9zc2libGUgcmVwYXJlbnRpbmcuCi0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVj
OwotICAgICAgICAgICAgbm9kZS0+ZWxlbWVudCgpLT5hcHBlbmRDaGlsZChsYXN0Tm9kZS0+ZWxl
bWVudCgpLCBlYywgdHJ1ZSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAg
IGlmIChFbGVtZW50KiBwYXJlbnQgPSBsYXN0Tm9kZS0+ZWxlbWVudCgpLT5wYXJlbnRFbGVtZW50
KCkpCisgICAgICAgICAgICAgICAgcGFyZW50LT5wYXJzZXJSZW1vdmVDaGlsZChsYXN0Tm9kZS0+
ZWxlbWVudCgpKTsKKyAgICAgICAgICAgIG5vZGUtPmVsZW1lbnQoKS0+cGFyc2VyQWRkQ2hpbGQo
bGFzdE5vZGUtPmVsZW1lbnQoKSk7CisgICAgICAgICAgICBpZiAobGFzdE5vZGUtPmVsZW1lbnQo
KS0+cGFyZW50RWxlbWVudCgpLT5hdHRhY2hlZCgpICYmICFsYXN0Tm9kZS0+ZWxlbWVudCgpLT5h
dHRhY2hlZCgpKQorICAgICAgICAgICAgICAgIGxhc3ROb2RlLT5lbGVtZW50KCktPmxhenlBdHRh
Y2goKTsKICAgICAgICAgICAgIC8vIDYuNwogICAgICAgICAgICAgbGFzdE5vZGUgPSBub2RlOwog
ICAgICAgICB9CiAgICAgICAgIC8vIDcKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjb21t
b25BbmNlc3RvclRhZyA9IGNvbW1vbkFuY2VzdG9yLT5sb2NhbE5hbWUoKTsKKyAgICAgICAgaWYg
KEVsZW1lbnQqIHBhcmVudCA9IGxhc3ROb2RlLT5lbGVtZW50KCktPnBhcmVudEVsZW1lbnQoKSkK
KyAgICAgICAgICAgIHBhcmVudC0+cGFyc2VyUmVtb3ZlQ2hpbGQobGFzdE5vZGUtPmVsZW1lbnQo
KSk7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIG1vdmVzIHRvIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlLCB0aGlzIGNoZWNrIHNob3VsZCB1c2UKICAgICAgICAgLy8gY2F1c2VzRm9zdGVyUGFyZW50
aW5nKHRhZ05hbWUpIGluc3RlYWQuCiAgICAgICAgIGlmIChjb21tb25BbmNlc3RvclRhZyA9PSB0
YWJsZVRhZwpAQCAtMTgzNCw5ICsxODM4LDkgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNhbGxU
aGVBZG9wdGlvbkFnZW5jeShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgICAgICAgICAgfHwg
aXNUYWJsZUJvZHlDb250ZXh0VGFnKGNvbW1vbkFuY2VzdG9yVGFnKSkKICAgICAgICAgICAgIG1f
dHJlZS5mb3N0ZXJQYXJlbnQobGFzdE5vZGUtPmVsZW1lbnQoKSk7CiAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9y
LT5hcHBlbmRDaGlsZChsYXN0Tm9kZS0+ZWxlbWVudCgpLCBlYywgdHJ1ZSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yLT5wYXJzZXJBZGRDaGls
ZChsYXN0Tm9kZS0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAgIGlmIChsYXN0Tm9kZS0+ZWxlbWVu
dCgpLT5wYXJlbnRFbGVtZW50KCktPmF0dGFjaGVkKCkgJiYgIWxhc3ROb2RlLT5lbGVtZW50KCkt
PmF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgbGFzdE5vZGUtPmVsZW1lbnQoKS0+bGF6eUF0
dGFjaCgpOwogICAgICAgICB9CiAgICAgICAgIC8vIDgKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IG5ld0VsZW1lbnQgPSBtX3RyZWUuY3JlYXRlSFRNTEVsZW1lbnRGcm9tRWxlbWVudFJlY29yZChm
b3JtYXR0aW5nRWxlbWVudFJlY29yZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64958</attachid>
            <date>2010-08-20 08:33:13 -0700</date>
            <delta_ts>2010-08-20 10:30:21 -0700</delta_ts>
            <desc>Revert stray permission change</desc>
            <filename>bug-44129-20100820083312.patch</filename>
            <type>text/plain</type>
            <size>20025</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlY2NmMmFmOWY4NGUyMTlmOTQ2MmQ4YThjNDFjZTIzYjY0M2Y1MDY0Li4zOTcyMWY1
NjViYjg5NDZjNWVjNjE0OTEzZGVhYWRjMmE2MzU3OGIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMTkgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIENyYXNoIGluIFdlYkNvcmU6
Ok5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMjkKKworICAgICAgICAqIGh0bWw1bGliL3Jlc291
cmNlcy9hZG9wdGlvbjAyLmRhdDogQSBjcmF6eSBET00gZnJvbSBodHRwczovL2J1Z3Mud2Via2ln
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxNzAgd2hpY2ggcHJldmlvdXNseSBjcmFzaGVkLiBUaGUg
ZXhwZWN0YXRpb24gZG9lc24ndCBhcHBlYXIgdG8gYmUgY29ycmVjdCwgYnV0IGl0IGJlaGF2ZXMg
dGhlIHNhbWUgaW4gRmlyZWZveCA0LCBzbyBJJ20gZ29pbmcgdG8gZmlsZSBhIHNwZWMgYnVnLgor
ICAgICAgICAqIGZhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLWluLWJlZm9yZWxv
YWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQt
aWZyYW1lLWluLWJlZm9yZWxvYWQuaHRtbDogTWlzbmVzdCBhIG5vZGUgaW4gYSB0YWJsZSBhbmQg
cmVtb3ZlIGl0IGR1cmluZyBpdHMgYmVmb3JlbG9hZCBoYW5kbGVyLiBUaGUgbm9kZSBzaG91bGQg
bm90IGJlIGluIHRoZSB0cmVlLgorICAgICAgICAqIGZhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0
ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1wYXJlbnQtaW4tYmVmb3JlbG9hZC5o
dG1sOiBNaXNuZXN0IGEgbm9kZSBpbiBhIHRhYmxlIGFuZCByZW1vdmUgaXRzIHBhcmVudCBkdXJp
bmcgaXRzIGJlZm9yZWxvYWQgaGFuZGxlci4gVGhlIGFkb3B0aW9uIGFnZW5jeSBzaG91bGQgaGF2
ZSBhbHJlYWR5IGNoYW5nZWQgaXRzIHBhcmVudCB0byB0aGUgb25lIGJlZm9yZSB0aGUgdGFibGUg
YW5kIGl0IGFuZCBpdHMgcGFyZW50IHNob3VsZCBiZSByZW1vdmVkLgorCiAyMDEwLTA4LTE5ICBB
bmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3Jl
bW92ZS1taXNuZXN0ZWQtaWZyYW1lLWluLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9wYXJzZXIvcmVtb3ZlLW1pc25lc3RlZC1pZnJhbWUtaW4tYmVmb3JlbG9hZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5NGNiMzRmNmE1NWEzNDRkZWRmZjI5Njk2NGU0NmZh
YTg0NmY1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3JlbW92
ZS1taXNuZXN0ZWQtaWZyYW1lLWluLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTMgQEAKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgICA8c2NyaXB0PgorfCAgICAgICBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyIKK3wgICAgICIKKyIKK3wgICA8Ym9k
eT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgIgorCisiCit8ICAgICAiCisiCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1pbi1iZWZv
cmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVkLWlm
cmFtZS1pbi1iZWZvcmVsb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdhNjQyOTViNmFkMzMyMTdkMDU1
ZmUyZWI1Yjg2NmRhYTgwNWExNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLWluLWJlZm9yZWxvYWQuaHRtbApAQCAtMCww
ICsxLDQgQEAKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMi
Pjwvc2NyaXB0PgorPHRhYmxlPgorPGlmcmFtZSBvbmJlZm9yZWxvYWQ9ImV2ZW50LnRhcmdldC5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKGV2ZW50LnRhcmdldCkiPjwvaWZyYW1lPgorPC90YWJsZT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZy
YW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
cGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MGRkNjE4MDE2NzE0NmQ2NjA2MTY1MzU2NTg1ZTNkNmMwMWZk
MWFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVtb3ZlLW1p
c25lc3RlZC1pZnJhbWUtcGFyZW50LWluLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOSBAQAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICAgIDxzY3JpcHQ+Cit8ICAgICAgIHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIgorfCAgICAgIgorIgorfCAgIDxi
b2R5PgorfCAgICAgIgorIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVt
b3ZlLW1pc25lc3RlZC1pZnJhbWUtcGFyZW50LWluLWJlZm9yZWxvYWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZvcmVs
b2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVkMmM4ZGM5Mzk2NWY3ZTNiYWRlYWEzYjYzMmYwMDZhODFj
Y2EzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3JlbW92ZS1t
aXNuZXN0ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLmh0bWwKQEAgLTAsMCArMSw2IEBA
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3Njcmlw
dD4KKzxkaXY+Cis8dGFibGU+Cis8aWZyYW1lIG9uYmVmb3JlbG9hZD0iZXZlbnQudGFyZ2V0LnBh
cmVudE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChldmVudC50YXJnZXQucGFyZW50Tm9kZSki
PjwvaWZyYW1lPgorPC90YWJsZT4KKzwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRt
bDVsaWIvcmVzb3VyY2VzL2Fkb3B0aW9uMDEuZGF0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVz
b3VyY2VzL2Fkb3B0aW9uMDEuZGF0CmluZGV4IDAzNjJmMzcwZDdkMjljODE5NzdiM2ViZWE3YmM1
NDJiYmFlZWE5NjMuLjBjODg2ZDVlNmZkZDkzZGVkY2VlMDQzY2UzNDlhNDAyNGQyMzc5OTQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9hZG9wdGlvbjAxLmRhdAor
KysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvYWRvcHRpb24wMS5kYXQKQEAgLTE4
MSwzICsxODEsMTcgQEAKIHwgICAgICAgICA8dHI+CiB8ICAgICAgICAgICA8dGQ+CiB8ICAgICAg
ICAgICAgICJCIgorCisjZGF0YQorPGE+PHN2Zz48dHI+PGlucHV0PjwvYT4KKyNlcnJvcnMKKyNk
b2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxhPgorfCAg
ICAgICA8c3ZnIHN2Zz4KK3wgICAgIDxzdmcgdHI+Cit8ICAgICAgIDxhPgorfCAgIDxzdmcgaW5w
dXQ+Cit8ICAgICA8YT4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNTM4ZDk4ZjRkMGFmNzYwY2Y1Njg1Y2E0NWZlNmY2NGVjNjQyMWJjMS4u
MmFkYmRlOTJiNjdjMTQyOTJiY2IyYzVkOWE3YjEyY2E0ZWNmYzkzMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAor
MjAxMC0wOC0xOSAgVG9ueSBHZW50aWxjb3JlICA8dG9ueWdAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgQ3Jhc2ggaW4gV2ViQ29yZTo6
Tm9kZTo6Y3JlYXRlUmVuZGVyZXJJZk5lZWRlZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDEyOQorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKTog
RmFjdG9yIG91dCBjb3JlIGJpdCB0byBpbnNlcnRCZXR3ZWVuLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmV0d2Vlbik6IEZhY3RvcmVkIG91dCBvZiBpbnNlcnRCZWZv
cmUuCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUp
OiBTaW1pbGFyIHRvIGluc2VydEJlZm9yZSwgYnV0IGRvZXNuJ3QgaGFuZGxlIHJlcGFyZW50aW5n
IG9yIGRpc3BhdGNoIERPTSBtdXRhdGlvbiBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjpyZW1vdmVDaGlsZCk6IEZhY3RvciBvdXQgY29yZSBiaXQgdG8gcmVtb3ZlQmV0
d2Vlbi4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4pOiBG
YWNvdHJlZCBvdXQgb2YgcmVtb3ZlQ2hpbGQuCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpwYXJzZXJSZW1vdmVDaGlsZCk6IFNpbWlsYXIgdG8gcmVtb3ZlQ2hpbGQsIGJ1dCBkb2Vz
bid0IGhhbmRsZSByZXBhcmVudGluZyBvciBkaXNwYXRjaCBET00gbXV0YXRpb24gZXZlbnRzLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YWRkQ2hpbGRDb21tb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6bGVnYWN5UGFyc2VyQWRkQ2hpbGQpOgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGh0
bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0
cnVjdGlvblNpdGU6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6YXR0YWNoQXRTaXRlKTogVXNlIG5ldyBwYXJzZXJJbnNlcnRCZWZvcmUuCisgICAgICAg
ICogaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJlZUJ1aWxkZXI6OnJlcGFyZW50Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjpjYWxsVGhlQWRvcHRpb25BZ2VuY3kpOiBXYXMgbWlzc2luZyBhIGtleSBiaXQg
ZnJvbSB0aGUgc3BlYyBhYm91dCByZW1vdmluZyB0aGUgb2xkIHBhcmVudCBpZiBpdCBleGlzdHMu
CisKIDIwMTAtMDgtMTkgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQ2hyb21pdW0gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBlNTU5YmE3
ZjZlMmZmZmVlMGEzNzBkYzgyMzMwY2Q3Y2JhNjUxZmYzLi5lOTE5NDk0NWJjNTNiZGY3OGQzYjlj
ZDRmNGJmNjU1MzcyOGI5YmVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMTM0LDMxICsxMzQs
MTIgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBu
ZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICAgICAgaWYgKGNoaWxkLT5wYXJlbnRO
b2RlKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZXh0
U2libGluZygpKTsKLSAgICAgICAgQVNTRVJUKCFjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpOwot
Ci0gICAgICAgIC8vIEFkZCBjaGlsZCBiZWZvcmUgIm5leHQiLgotICAgICAgICBmb3JiaWRFdmVu
dERpc3BhdGNoKCk7Ci0gICAgICAgIE5vZGUqIHByZXYgPSBuZXh0LT5wcmV2aW91c1NpYmxpbmco
KTsKLSAgICAgICAgQVNTRVJUKG1fbGFzdENoaWxkICE9IHByZXYpOwotICAgICAgICBuZXh0LT5z
ZXRQcmV2aW91c1NpYmxpbmcoY2hpbGQpOwotICAgICAgICBpZiAocHJldikgewotICAgICAgICAg
ICAgQVNTRVJUKG1fZmlyc3RDaGlsZCAhPSBuZXh0KTsKLSAgICAgICAgICAgIEFTU0VSVChwcmV2
LT5uZXh0U2libGluZygpID09IG5leHQpOwotICAgICAgICAgICAgcHJldi0+c2V0TmV4dFNpYmxp
bmcoY2hpbGQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKG1fZmlyc3RD
aGlsZCA9PSBuZXh0KTsKLSAgICAgICAgICAgIG1fZmlyc3RDaGlsZCA9IGNoaWxkOwotICAgICAg
ICB9Ci0gICAgICAgIGNoaWxkLT5zZXRQYXJlbnQodGhpcyk7Ci0gICAgICAgIGNoaWxkLT5zZXRQ
cmV2aW91c1NpYmxpbmcocHJldik7Ci0gICAgICAgIGNoaWxkLT5zZXROZXh0U2libGluZyhuZXh0
LmdldCgpKTsKLSAgICAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CisgICAgICAgIGluc2VydEJl
Zm9yZUNvbW1vbihuZXh0LmdldCgpLCBjaGlsZCk7CiAKICAgICAgICAgLy8gU2VuZCBub3RpZmlj
YXRpb24gYWJvdXQgdGhlIGNoaWxkcmVuIGNoYW5nZS4KICAgICAgICAgY2hpbGRyZW5DaGFuZ2Vk
KGZhbHNlLCByZWZDaGlsZFByZXZpb3VzU2libGluZy5nZXQoKSwgbmV4dC5nZXQoKSwgMSk7CiAg
ICAgICAgIG5vdGlmeUNoaWxkSW5zZXJ0ZWQoY2hpbGQpOwotICAgICAgICAgICAgICAgIAorCiAg
ICAgICAgIC8vIEFkZCBjaGlsZCB0byB0aGUgcmVuZGVyaW5nIHRyZWUuCiAgICAgICAgIGlmIChh
dHRhY2hlZCgpICYmICFjaGlsZC0+YXR0YWNoZWQoKSAmJiBjaGlsZC0+cGFyZW50KCkgPT0gdGhp
cykgewogICAgICAgICAgICAgaWYgKHNob3VsZExhenlBdHRhY2gpCkBAIC0xNzYsNiArMTU3LDU3
IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3
Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlQ29tbW9uKE5vZGUqIG5leHRDaGlsZCwgTm9kZSog
bmV3Q2hpbGQpCit7CisgICAgQVNTRVJUKG5ld0NoaWxkKTsKKyAgICBBU1NFUlQoIW5ld0NoaWxk
LT5wYXJlbnQoKSk7IC8vIFVzZSBpbnNlcnRCZWZvcmUgaWYgeW91IG5lZWQgdG8gaGFuZGxlIHJl
cGFyZW50aW5nIChhbmQgd2FudCBET00gbXV0YXRpb24gZXZlbnRzKS4KKyAgICBBU1NFUlQoIW5l
d0NoaWxkLT5uZXh0U2libGluZygpKTsKKyAgICBBU1NFUlQoIW5ld0NoaWxkLT5wcmV2aW91c1Np
YmxpbmcoKSk7CisKKyAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CisgICAgTm9kZSogcHJldiA9
IG5leHRDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgQVNTRVJUKG1fbGFzdENoaWxkICE9
IHByZXYpOworICAgIG5leHRDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKG5ld0NoaWxkKTsKKyAg
ICBpZiAocHJldikgeworICAgICAgICBBU1NFUlQobV9maXJzdENoaWxkICE9IG5leHRDaGlsZCk7
CisgICAgICAgIEFTU0VSVChwcmV2LT5uZXh0U2libGluZygpID09IG5leHRDaGlsZCk7CisgICAg
ICAgIHByZXYtPnNldE5leHRTaWJsaW5nKG5ld0NoaWxkKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBBU1NFUlQobV9maXJzdENoaWxkID09IG5leHRDaGlsZCk7CisgICAgICAgIG1fZmlyc3RDaGls
ZCA9IG5ld0NoaWxkOworICAgIH0KKyAgICBuZXdDaGlsZC0+c2V0UGFyZW50KHRoaXMpOworICAg
IG5ld0NoaWxkLT5zZXRQcmV2aW91c1NpYmxpbmcocHJldik7CisgICAgbmV3Q2hpbGQtPnNldE5l
eHRTaWJsaW5nKG5leHRDaGlsZCk7CisgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7Cit9CisKK3Zv
aWQgQ29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3
Q2hpbGQsIE5vZGUqIG5leHRDaGlsZCkKK3sKKyAgICBBU1NFUlQobmV3Q2hpbGQpOworICAgIEFT
U0VSVChuZXh0Q2hpbGQpOworICAgIEFTU0VSVChuZXh0Q2hpbGQtPnBhcmVudE5vZGUoKSA9PSB0
aGlzKTsKKworICAgIE5vZGVWZWN0b3IgdGFyZ2V0czsKKyAgICBjb2xsZWN0VGFyZ2V0Tm9kZXMo
bmV3Q2hpbGQuZ2V0KCksIHRhcmdldHMpOworICAgIGlmICh0YXJnZXRzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG5leHRDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkgPT0g
bmV3Q2hpbGQgfHwgbmV4dENoaWxkID09IG5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxOb2RlPiBuZXh0ID0gbmV4dENoaWxkOworICAgIFJl
ZlB0cjxOb2RlPiBuZXh0Q2hpbGRQcmV2aW91c1NpYmxpbmcgPSBuZXh0Q2hpbGQtPnByZXZpb3Vz
U2libGluZygpOworICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0YXJn
ZXRzLmJlZ2luKCk7IGl0ICE9IHRhcmdldHMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgTm9kZSog
Y2hpbGQgPSBpdC0+Z2V0KCk7CisKKyAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQuZ2V0
KCksIGNoaWxkKTsKKworICAgICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgbmV4dENoaWxkUHJl
dmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0Q2hpbGQsIDEpOworICAgICAgICBub3RpZnlDaGlsZElu
c2VydGVkKGNoaWxkKTsKKyAgICB9Cit9CisKIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNo
aWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25D
b2RlJiBlYywgYm9vbCBzaG91bGRMYXp5QXR0YWNoKQogewogICAgIC8vIENoZWNrIHRoYXQgdGhp
cyBub2RlIGlzIG5vdCAiZmxvYXRpbmciLgpAQCAtMzY3LDMxICszOTksOSBAQCBib29sIENvbnRh
aW5lck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAvLyB0aGF0IG5vIGNhbGxlcnMgY2FsbCB3aXRoIHJlZiBjb3VudCA9PSAwIGFuZCBwYXJl
bnQgPSAwIChhcyBvZiB0aGlzCiAgICAgLy8gd3JpdGluZywgdGhlcmUgYXJlIGRlZmluaXRlbHkg
Y2FsbGVycyB3aG8gY2FsbCB0aGF0IHdheSkuCiAKLSAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7
Ci0KLSAgICAvLyBSZW1vdmUgZnJvbSByZW5kZXJpbmcgdHJlZQotICAgIGlmIChjaGlsZC0+YXR0
YWNoZWQoKSkKLSAgICAgICAgY2hpbGQtPmRldGFjaCgpOwotCi0gICAgLy8gUmVtb3ZlIHRoZSBj
aGlsZAotICAgIE5vZGUgKnByZXYsICpuZXh0OwotICAgIHByZXYgPSBjaGlsZC0+cHJldmlvdXNT
aWJsaW5nKCk7Ci0gICAgbmV4dCA9IGNoaWxkLT5uZXh0U2libGluZygpOwotCi0gICAgaWYgKG5l
eHQpCi0gICAgICAgIG5leHQtPnNldFByZXZpb3VzU2libGluZyhwcmV2KTsKLSAgICBpZiAocHJl
dikKLSAgICAgICAgcHJldi0+c2V0TmV4dFNpYmxpbmcobmV4dCk7Ci0gICAgaWYgKG1fZmlyc3RD
aGlsZCA9PSBjaGlsZCkKLSAgICAgICAgbV9maXJzdENoaWxkID0gbmV4dDsKLSAgICBpZiAobV9s
YXN0Q2hpbGQgPT0gY2hpbGQpCi0gICAgICAgIG1fbGFzdENoaWxkID0gcHJldjsKLQotICAgIGNo
aWxkLT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7Ci0gICAgY2hpbGQtPnNldE5leHRTaWJsaW5nKDAp
OwotICAgIGNoaWxkLT5zZXRQYXJlbnQoMCk7Ci0KLSAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsK
KyAgICBOb2RlKiBwcmV2ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpOworICAgIE5vZGUqIG5l
eHQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQs
IGNoaWxkLmdldCgpKTsKIAogICAgIC8vIERpc3BhdGNoIHBvc3QtcmVtb3ZhbCBtdXRhdGlvbiBl
dmVudHMKICAgICBjaGlsZHJlbkNoYW5nZWQoZmFsc2UsIHByZXYsIG5leHQsIC0xKTsKQEAgLTQw
NSw2ICs0MTUsNTAgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBvbGRD
aGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIGNoaWxkOwogfQogCit2b2lkIENv
bnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4oTm9kZSogcHJldmlvdXNDaGlsZCwgTm9kZSogbmV4
dENoaWxkLCBOb2RlKiBvbGRDaGlsZCkKK3sKKyAgICBBU1NFUlQob2xkQ2hpbGQpOworICAgIEFT
U0VSVChvbGRDaGlsZC0+cGFyZW50Tm9kZSgpID09IHRoaXMpOworCisgICAgZm9yYmlkRXZlbnRE
aXNwYXRjaCgpOworCisgICAgLy8gUmVtb3ZlIGZyb20gcmVuZGVyaW5nIHRyZWUKKyAgICBpZiAo
b2xkQ2hpbGQtPmF0dGFjaGVkKCkpCisgICAgICAgIG9sZENoaWxkLT5kZXRhY2goKTsKKworICAg
IGlmIChuZXh0Q2hpbGQpCisgICAgICAgIG5leHRDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKHBy
ZXZpb3VzQ2hpbGQpOworICAgIGlmIChwcmV2aW91c0NoaWxkKQorICAgICAgICBwcmV2aW91c0No
aWxkLT5zZXROZXh0U2libGluZyhuZXh0Q2hpbGQpOworICAgIGlmIChtX2ZpcnN0Q2hpbGQgPT0g
b2xkQ2hpbGQpCisgICAgICAgIG1fZmlyc3RDaGlsZCA9IG5leHRDaGlsZDsKKyAgICBpZiAobV9s
YXN0Q2hpbGQgPT0gb2xkQ2hpbGQpCisgICAgICAgIG1fbGFzdENoaWxkID0gcHJldmlvdXNDaGls
ZDsKKworICAgIG9sZENoaWxkLT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CisgICAgb2xkQ2hpbGQt
PnNldE5leHRTaWJsaW5nKDApOworICAgIG9sZENoaWxkLT5zZXRQYXJlbnQoMCk7CisKKyAgICBh
bGxvd0V2ZW50RGlzcGF0Y2goKTsKK30KKwordm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1v
dmVDaGlsZChOb2RlKiBvbGRDaGlsZCkKK3sKKyAgICBBU1NFUlQob2xkQ2hpbGQpOworICAgIEFT
U0VSVChvbGRDaGlsZC0+cGFyZW50Tm9kZSgpID09IHRoaXMpOworCisgICAgTm9kZSogcHJldiA9
IG9sZENoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICBOb2RlKiBuZXh0ID0gb2xkQ2hpbGQt
Pm5leHRTaWJsaW5nKCk7CisKKyAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQsIG9sZENoaWxk
KTsKKworICAgIGNoaWxkcmVuQ2hhbmdlZCh0cnVlLCBwcmV2LCBuZXh0LCAtMSk7CisgICAgaWYg
KG9sZENoaWxkLT5pbkRvY3VtZW50KCkpCisgICAgICAgIG9sZENoaWxkLT5yZW1vdmVkRnJvbURv
Y3VtZW50KCk7CisgICAgZWxzZQorICAgICAgICBvbGRDaGlsZC0+cmVtb3ZlZEZyb21UcmVlKHRy
dWUpOworfQorCiAvLyB0aGlzIGRpZmZlcnMgZnJvbSBvdGhlciByZW1vdmUgZnVuY3Rpb25zIGJl
Y2F1c2UgaXQgZm9yY2libHkgcmVtb3ZlcyBhbGwgdGhlIGNoaWxkcmVuLAogLy8gcmVnYXJkbGVz
cyBvZiByZWFkLW9ubHkgc3RhdHVzIG9yIGV2ZW50IGV4Y2VwdGlvbnMsIGUuZy4KIGJvb2wgQ29u
dGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4oKQpAQCAtNTM2LDEzICs1OTAsMTYgQEAgYm9vbCBD
b250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNl
cHRpb25Db2RlJiBlYywgYm8KIAogdm9pZCBDb250YWluZXJOb2RlOjphZGRDaGlsZENvbW1vbihO
b2RlKiBuZXdDaGlsZCkKIHsKLSAgICBBU1NFUlQoIW5ld0NoaWxkLT5wYXJlbnQoKSk7IC8vIFVz
ZSBhcHBlbmRDaGlsZCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcuCisgICAgQVNT
RVJUKG5ld0NoaWxkKTsKKyAgICBBU1NFUlQoIW5ld0NoaWxkLT5wYXJlbnQoKSk7IC8vIFVzZSBh
cHBlbmRDaGlsZCBpZiB5b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcgKGFuZCB3YW50IERP
TSBtdXRhdGlvbiBldmVudHMpLgorCiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwogICAgIE5v
ZGUqIGxhc3QgPSBtX2xhc3RDaGlsZDsKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxk
IHRha2UgYSBQYXNzUmVmUHRyLgogICAgIGFwcGVuZENoaWxkVG9Db250YWluZXI8Tm9kZSwgQ29u
dGFpbmVyTm9kZT4obmV3Q2hpbGQsIHRoaXMpOwogICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwog
CisgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgdXNlIG5vdGlmeUNoaWxkSW5zZXJ0ZWQo
bmV3Q2hpbGQpIGluc3RlYWQ/CiAgICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNpb24oKTsK
ICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBuZXdDaGlsZC0+aW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoKTsKQEAgLTU1MiwxNyArNjA5LDEyIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6YWRkQ2hp
bGRDb21tb24oTm9kZSogbmV3Q2hpbGQpCiB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFkZENo
aWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiB7CiAgICAgQVNTRVJUKG5ld0NoaWxkKTsK
LSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBkdXJpbmcgcGFyc2luZy4KLSAgICAv
LyBJdCBkb2VzIG5vdCBzZW5kIGFueSBET00gbXV0YXRpb24gZXZlbnRzIG9yIGhhbmRsZSByZXBh
cmVudGluZy4KLQogICAgIGFkZENoaWxkQ29tbW9uKG5ld0NoaWxkLmdldCgpKTsKIH0KIAogQ29u
dGFpbmVyTm9kZSogQ29udGFpbmVyTm9kZTo6bGVnYWN5UGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0
cjxOb2RlPiBuZXdDaGlsZCkKIHsKICAgICBBU1NFUlQobmV3Q2hpbGQpOwotICAgIC8vIFRoaXMg
ZnVuY3Rpb24gaXMgb25seSB1c2VkIGR1cmluZyBwYXJzaW5nLgotICAgIC8vIEl0IGRvZXMgbm90
IHNlbmQgYW55IERPTSBtdXRhdGlvbiBldmVudHMuCiAKICAgICAvLyBDaGVjayBmb3IgY29uc2lz
dGVuY3kgd2l0aCBEVEQsIGJ1dCBvbmx5IHdoZW4gcGFyc2luZyBIVE1MLgogICAgIGlmIChkb2N1
bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpICYmICFjaGlsZEFsbG93ZWQobmV3Q2hpbGQuZ2V0KCkp
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCmluZGV4IGEyN2Q5NWJlZmYyYzQ2ZjczYjUyZThhNzNmNmNhODE3ZTI0
MDY4M2QuLjExMTRkM2IyNDFmYmM5NDE3Nzc3MTBkMGM3ZjdjMjY3YTYwNTdjZTUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmgKQEAgLTQ4LDggKzQ4LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVt
b3ZlQ2hpbGQoTm9kZSogY2hpbGQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIGJvb2wg
YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYsIGJv
b2wgc2hvdWxkTGF6eUF0dGFjaCA9IGZhbHNlKTsKIAorICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJl
IG9ubHkgdXNlZCBkdXJpbmcgcGFyc2luZy4KKyAgICAvLyBUaGV5IGRvbid0IHNlbmQgRE9NIG11
dGF0aW9uIGV2ZW50cyBvciBoYW5kbGUgcmVwYXJlbnRpbmcuCisgICAgLy8gSG93ZXZlciwgYXJi
aXRyYXJ5IGNvZGUgbWF5IGJlIHJ1biBieSBiZWZvcmVsb2FkIGhhbmRsZXJzLgogICAgIHZpcnR1
YWwgQ29udGFpbmVyTm9kZSogbGVnYWN5UGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPik7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZXJSZW1vdmVDaGlsZChOb2RlKik7CisgICAgdmlydHVhbCB2b2lk
IHBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZD
aGlsZCk7CiAKICAgICBib29sIGhhc0NoaWxkTm9kZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0
Q2hpbGQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CkBAIC05Nyw2ICsxMDIsOCBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtlIGEgUGFz
c1JlZlB0ci4KICAgICB2b2lkIGFkZENoaWxkQ29tbW9uKE5vZGUqKTsKKyAgICB2b2lkIHJlbW92
ZUJldHdlZW4oTm9kZSogcHJldmlvdXNDaGlsZCwgTm9kZSogbmV4dENoaWxkLCBOb2RlKiBvbGRD
aGlsZCk7CisgICAgdm9pZCBpbnNlcnRCZWZvcmVDb21tb24oTm9kZSogbmV4dENoaWxkLCBOb2Rl
KiBvbGRDaGlsZCk7CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBvc3RBdHRhY2hDYWxsYmFj
a3MoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCAwYmM4ZDllOWFlNTIzZTExZWI0OGM4NzJkNTNkNWI0NjI4MDYyYjdmLi44
OWQxMzkyMmE5NjZjNTM4M2UxMjA4MzlmOWM2YjA1YWY4NzZjN2M4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNjUxLDYgKzY1
MSwxNiBAQCB2b2lkIE5vZGU6OnBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQo
UGFzc1JlZlB0cjxOb2RlPikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiwgTm9kZSopCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIGJvb2wgTm9kZTo6aXNDb250ZW50RWRpdGFi
bGUoKSBjb25zdAogewogICAgIHJldHVybiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNDb250ZW50
RWRpdGFibGUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuaCBiL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCBlYzE2ZjA1OWNmMzI1MzYyODliMGM0MWNiNWE3ZTVjMzA0ZWQxM2ViLi4z
ZjA5MTYyNzcyOTYwYzdkN2QyMTc1NTgwZGRjN2I1NTZhNzNlZWM2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Ob2RlLmgKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yNjcsNiArMjY3LDgg
QEAgcHVibGljOgogICAgIC8vIGFkZENoaWxkIGlzIHRpZWQgaW50byB0aGUgbG9naWMgb2YgdGhl
IExlZ2FjeUhUTUxUcmVlQnVpbGRlci4gIFdlIG5lZWQKICAgICAvLyBhICJjbGVhbiIgdmVyc2lv
biB0byB1c2UgZm9yIHRoZSBIVE1MNSB2ZXJzaW9uIG9mIHRoZSBIVE1MVHJlZUJ1aWxkZXIuCiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pOworICAgIHZp
cnR1YWwgdm9pZCBwYXJzZXJSZW1vdmVDaGlsZChQYXNzUmVmUHRyPE5vZGU+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VySW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5v
ZGUqIG5leHRDaGlsZCk7CiAKICAgICAvLyBDYWxsZWQgYnkgdGhlIHBhcnNlciB3aGVuIHRoaXMg
ZWxlbWVudCdzIGNsb3NlIHRhZyBpcyByZWFjaGVkLAogICAgIC8vIHNpZ25hbGluZyB0aGF0IGFs
bCBjaGlsZCB0YWdzIGhhdmUgYmVlbiBwYXJzZWQgYW5kIGFkZGVkLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQ29u
c3RydWN0aW9uU2l0ZS5jcHAKaW5kZXggYTI1YzdkOTM4OGU2NTM2YmU5YjkxMWM1OGVlZjIxZTk1
NWJjMmM0NC4uMWMxN2E2YmI1NzI1MzRmMzIxM2Y5MGMwOTc0MTBkYTY4OGNkYmE0MSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIFBhc3NSZWZQ
dHI8Q2hpbGRUeXBlPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6YXR0YWNoKE5vZGUqIHBhcmVudCwg
UGFzc1JlZlB0cjxDaGlsCiAgICAgLy8gZG9lc24ndC4gIEl0IGZlZWxzIGxpa2Ugd2UncmUgbWlz
c2luZyBhIGNvbmNlcHQgc29tZWhvdy4KICAgICBpZiAoc2hvdWxkRm9zdGVyUGFyZW50KCkpIHsK
ICAgICAgICAgZm9zdGVyUGFyZW50KGNoaWxkLmdldCgpKTsKLSAgICAgICAgQVNTRVJUKGNoaWxk
LT5hdHRhY2hlZCgpIHx8ICFjaGlsZC0+cGFyZW50KCktPmF0dGFjaGVkKCkpOworICAgICAgICBB
U1NFUlQoY2hpbGQtPmF0dGFjaGVkKCkgfHwgIWNoaWxkLT5wYXJlbnQoKSB8fCAhY2hpbGQtPnBh
cmVudCgpLT5hdHRhY2hlZCgpKTsKICAgICAgICAgcmV0dXJuIGNoaWxkLnJlbGVhc2UoKTsKICAg
ICB9CiAKQEAgLTExOCwxMCArMTE4LDcgQEAgdm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6YXR0
YWNoQXRTaXRlKGNvbnN0IEF0dGFjaG1lbnRTaXRlJiBzaXRlLCBQYXNzUmVmUHRyPE4KICAgICBS
ZWZQdHI8Tm9kZT4gY2hpbGQgPSBwcnBDaGlsZDsKIAogICAgIGlmIChzaXRlLm5leHRDaGlsZCkg
ewotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCBhbiBpbnNlcnRFbGVtZW50IHdoaWNoIGRvZXMg
bm90IHNlbmQgbXV0YXRpb24gZXZlbnRzLgotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICAgICAgc2l0ZS5wYXJlbnQtPmluc2VydEJlZm9yZShjaGlsZCwgc2l0ZS5uZXh0Q2hpbGQs
IGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHNpdGUucGFyZW50LT5wYXJzZXJJ
bnNlcnRCZWZvcmUoY2hpbGQsIHNpdGUubmV4dENoaWxkKTsKICAgICAgICAgaWYgKHNpdGUucGFy
ZW50LT5hdHRhY2hlZCgpICYmICFjaGlsZC0+YXR0YWNoZWQoKSkKICAgICAgICAgICAgIGNoaWxk
LT5hdHRhY2goKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxUcmVlQnVpbGRlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRl
eCBmZDBiNjJlODc0ODNkMWQwMjI0YjVhMzU2YmQ3ZGE1YzBiNGI2ZTdiLi5jYzU1MTEyMjRjZWRm
YjY0MTk1YjU0Y2FjYTgzM2M4ZGYwM2U5MzBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TFRyZWVCdWlsZGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcApA
QCAtMTc0NSw5ICsxNzQ1LDEwIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpyZXBhcmVudENoaWxk
cmVuKEVsZW1lbnQqIG9sZFBhcmVudCwgRWxlbWVudCogbmV3UGFyZW50KQogICAgIE5vZGUqIGNo
aWxkID0gb2xkUGFyZW50LT5maXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAg
ICAgIE5vZGUqIG5leHRDaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjOwotICAgICAgICBuZXdQYXJlbnQtPmFwcGVuZENoaWxkKGNoaWxkLCBlYyk7
Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBvbGRQYXJlbnQtPnBhcnNlclJlbW92ZUNo
aWxkKGNoaWxkKTsKKyAgICAgICAgbmV3UGFyZW50LT5wYXJzZXJBZGRDaGlsZChjaGlsZCk7Cisg
ICAgICAgIGlmIChuZXdQYXJlbnQtPmF0dGFjaGVkKCkgJiYgIWNoaWxkLT5hdHRhY2hlZCgpKQor
ICAgICAgICAgICAgY2hpbGQtPmF0dGFjaCgpOwogICAgICAgICBjaGlsZCA9IG5leHRDaGlsZDsK
ICAgICB9CiB9CkBAIC0xODE4LDE1ICsxODE5LDE4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpj
YWxsVGhlQWRvcHRpb25BZ2VuY3koQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAg
IGlmIChsYXN0Tm9kZSA9PSBmdXJ0aGVzdEJsb2NrKQogICAgICAgICAgICAgICAgIGJvb2ttYXJr
Lm1vdmVUb0FmdGVyKG5vZGVFbnRyeSk7CiAgICAgICAgICAgICAvLyA2LjYKLSAgICAgICAgICAg
IC8vIFVzZSBhcHBlbmRDaGlsZCBpbnN0ZWFkIG9mIHBhcnNlckFkZENoaWxkIHRvIGhhbmRsZSBw
b3NzaWJsZSByZXBhcmVudGluZy4KLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAg
ICAgICAgICBub2RlLT5lbGVtZW50KCktPmFwcGVuZENoaWxkKGxhc3ROb2RlLT5lbGVtZW50KCks
IGVjLCB0cnVlKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgaWYgKEVs
ZW1lbnQqIHBhcmVudCA9IGxhc3ROb2RlLT5lbGVtZW50KCktPnBhcmVudEVsZW1lbnQoKSkKKyAg
ICAgICAgICAgICAgICBwYXJlbnQtPnBhcnNlclJlbW92ZUNoaWxkKGxhc3ROb2RlLT5lbGVtZW50
KCkpOworICAgICAgICAgICAgbm9kZS0+ZWxlbWVudCgpLT5wYXJzZXJBZGRDaGlsZChsYXN0Tm9k
ZS0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAgIGlmIChsYXN0Tm9kZS0+ZWxlbWVudCgpLT5wYXJl
bnRFbGVtZW50KCktPmF0dGFjaGVkKCkgJiYgIWxhc3ROb2RlLT5lbGVtZW50KCktPmF0dGFjaGVk
KCkpCisgICAgICAgICAgICAgICAgbGFzdE5vZGUtPmVsZW1lbnQoKS0+bGF6eUF0dGFjaCgpOwog
ICAgICAgICAgICAgLy8gNi43CiAgICAgICAgICAgICBsYXN0Tm9kZSA9IG5vZGU7CiAgICAgICAg
IH0KICAgICAgICAgLy8gNwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1vbkFuY2Vz
dG9yVGFnID0gY29tbW9uQW5jZXN0b3ItPmxvY2FsTmFtZSgpOworICAgICAgICBpZiAoRWxlbWVu
dCogcGFyZW50ID0gbGFzdE5vZGUtPmVsZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpKQorICAgICAg
ICAgICAgcGFyZW50LT5wYXJzZXJSZW1vdmVDaGlsZChsYXN0Tm9kZS0+ZWxlbWVudCgpKTsKICAg
ICAgICAgLy8gRklYTUU6IElmIHRoaXMgbW92ZXMgdG8gSFRNTENvbnN0cnVjdGlvblNpdGUsIHRo
aXMgY2hlY2sgc2hvdWxkIHVzZQogICAgICAgICAvLyBjYXVzZXNGb3N0ZXJQYXJlbnRpbmcodGFn
TmFtZSkgaW5zdGVhZC4KICAgICAgICAgaWYgKGNvbW1vbkFuY2VzdG9yVGFnID09IHRhYmxlVGFn
CkBAIC0xODM0LDkgKzE4MzgsOSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y2FsbFRoZUFkb3B0
aW9uQWdlbmN5KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICB8fCBpc1RhYmxl
Qm9keUNvbnRleHRUYWcoY29tbW9uQW5jZXN0b3JUYWcpKQogICAgICAgICAgICAgbV90cmVlLmZv
c3RlclBhcmVudChsYXN0Tm9kZS0+ZWxlbWVudCgpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAgY29tbW9uQW5jZXN0b3ItPmFwcGVu
ZENoaWxkKGxhc3ROb2RlLT5lbGVtZW50KCksIGVjLCB0cnVlKTsKLSAgICAgICAgICAgIEFTU0VS
VCghZWMpOworICAgICAgICAgICAgY29tbW9uQW5jZXN0b3ItPnBhcnNlckFkZENoaWxkKGxhc3RO
b2RlLT5lbGVtZW50KCkpOworICAgICAgICAgICAgaWYgKGxhc3ROb2RlLT5lbGVtZW50KCktPnBh
cmVudEVsZW1lbnQoKS0+YXR0YWNoZWQoKSAmJiAhbGFzdE5vZGUtPmVsZW1lbnQoKS0+YXR0YWNo
ZWQoKSkKKyAgICAgICAgICAgICAgICBsYXN0Tm9kZS0+ZWxlbWVudCgpLT5sYXp5QXR0YWNoKCk7
CiAgICAgICAgIH0KICAgICAgICAgLy8gOAogICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3RWxl
bWVudCA9IG1fdHJlZS5jcmVhdGVIVE1MRWxlbWVudEZyb21FbGVtZW50UmVjb3JkKGZvcm1hdHRp
bmdFbGVtZW50UmVjb3JkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64963</attachid>
            <date>2010-08-20 10:30:35 -0700</date>
            <delta_ts>2010-08-20 17:26:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-44129-20100820103034.patch</filename>
            <type>text/plain</type>
            <size>20566</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NWEyMWE4NWU1ZGZlMTY0NTVkZTI1MDk4ZmFmZTQzMWY1M2MwMzkwLi4xOGExMmI1
ZTZmZTRmOWYyMGRmMTQwMjY3YmYyNmE3YmRkYmNlMjU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTAtMDgtMjAgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIENyYXNoIGluIFdlYkNvcmU6
Ok5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMjkKKworICAgICAgICAqIGh0bWw1bGliL3Jlc291
cmNlcy9hZG9wdGlvbjAyLmRhdDogQSBjcmF6eSBET00gZnJvbSBodHRwczovL2J1Z3Mud2Via2ln
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxNzAgd2hpY2ggcHJldmlvdXNseSBjcmFzaGVkLiBUaGUg
ZXhwZWN0YXRpb24gZG9lc24ndCBhcHBlYXIgdG8gYmUgY29ycmVjdCwgYnV0IGl0IGJlaGF2ZXMg
dGhlIHNhbWUgaW4gRmlyZWZveCA0LCBzbyBJJ20gZ29pbmcgdG8gZmlsZSBhIHNwZWMgYnVnLgor
ICAgICAgICAqIGZhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLWluLWJlZm9yZWxv
YWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQt
aWZyYW1lLWluLWJlZm9yZWxvYWQuaHRtbDogTWlzbmVzdCBhIG5vZGUgaW4gYSB0YWJsZSBhbmQg
cmVtb3ZlIGl0IGR1cmluZyBpdHMgYmVmb3JlbG9hZCBoYW5kbGVyLiBUaGUgbm9kZSBzaG91bGQg
bm90IGJlIGluIHRoZSB0cmVlLgorICAgICAgICAqIGZhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0
ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1wYXJlbnQtaW4tYmVmb3JlbG9hZC5o
dG1sOiBNaXNuZXN0IGEgbm9kZSBpbiBhIHRhYmxlIGFuZCByZW1vdmUgaXRzIHBhcmVudCBkdXJp
bmcgaXRzIGJlZm9yZWxvYWQgaGFuZGxlci4gVGhlIGFkb3B0aW9uIGFnZW5jeSBzaG91bGQgaGF2
ZSBhbHJlYWR5IGNoYW5nZWQgaXRzIHBhcmVudCB0byB0aGUgb25lIGJlZm9yZSB0aGUgdGFibGUg
YW5kIGl0IGFuZCBpdHMgcGFyZW50IHNob3VsZCBiZSByZW1vdmVkLgorCiAyMDEwLTA4LTIwICBO
aWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2Vy
L3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLWluLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVtb3ZlLW1pc25lc3RlZC1pZnJhbWUtaW4tYmVmb3JlbG9h
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5NGNiMzRmNmE1NWEzNDRkZWRmZjI5Njk2NGU0
NmZhYTg0NmY1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3Jl
bW92ZS1taXNuZXN0ZWQtaWZyYW1lLWluLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTMgQEAKK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgICA8c2NyaXB0PgorfCAgICAgICBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyIKK3wgICAgICIKKyIKK3wgICA8
Ym9keT4KK3wgICAgIDx0YWJsZT4KK3wgICAgICAgIgorCisiCit8ICAgICAiCisiCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVkLWlmcmFtZS1pbi1i
ZWZvcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZW1vdmUtbWlzbmVzdGVk
LWlmcmFtZS1pbi1iZWZvcmVsb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdhNjQyOTViNmFkMzMyMTdk
MDU1ZmUyZWI1Yjg2NmRhYTgwNWExNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLWluLWJlZm9yZWxvYWQuaHRtbApAQCAt
MCwwICsxLDQgQEAKKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAu
anMiPjwvc2NyaXB0PgorPHRhYmxlPgorPGlmcmFtZSBvbmJlZm9yZWxvYWQ9ImV2ZW50LnRhcmdl
dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGV2ZW50LnRhcmdldCkiPjwvaWZyYW1lPgorPC90YWJs
ZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQt
aWZyYW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGRkNjE4MDE2NzE0NmQ2NjA2MTY1MzU2NTg1ZTNkNmMw
MWZkMWFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVtb3Zl
LW1pc25lc3RlZC1pZnJhbWUtcGFyZW50LWluLWJlZm9yZWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOSBAQAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICAgIDxzY3JpcHQ+Cit8ICAgICAg
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIgorfCAgICAgIgorIgorfCAg
IDxib2R5PgorfCAgICAgIgorIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIv
cmVtb3ZlLW1pc25lc3RlZC1pZnJhbWUtcGFyZW50LWluLWJlZm9yZWxvYWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvcGFyc2VyL3JlbW92ZS1taXNuZXN0ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZv
cmVsb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTVkMmM4ZGM5Mzk2NWY3ZTNiYWRlYWEzYjYzMmYwMDZh
ODFjY2EzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3JlbW92
ZS1taXNuZXN0ZWQtaWZyYW1lLXBhcmVudC1pbi1iZWZvcmVsb2FkLmh0bWwKQEAgLTAsMCArMSw2
IEBACis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3Nj
cmlwdD4KKzxkaXY+Cis8dGFibGU+Cis8aWZyYW1lIG9uYmVmb3JlbG9hZD0iZXZlbnQudGFyZ2V0
LnBhcmVudE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChldmVudC50YXJnZXQucGFyZW50Tm9k
ZSkiPjwvaWZyYW1lPgorPC90YWJsZT4KKzwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcmVzb3VyY2VzL2Fkb3B0aW9uMDEuZGF0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIv
cmVzb3VyY2VzL2Fkb3B0aW9uMDEuZGF0CmluZGV4IDAzNjJmMzcwZDdkMjljODE5NzdiM2ViZWE3
YmM1NDJiYmFlZWE5NjMuLjBjODg2ZDVlNmZkZDkzZGVkY2VlMDQzY2UzNDlhNDAyNGQyMzc5OTQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy9hZG9wdGlvbjAxLmRh
dAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvYWRvcHRpb24wMS5kYXQKQEAg
LTE4MSwzICsxODEsMTcgQEAKIHwgICAgICAgICA8dHI+CiB8ICAgICAgICAgICA8dGQ+CiB8ICAg
ICAgICAgICAgICJCIgorCisjZGF0YQorPGE+PHN2Zz48dHI+PGlucHV0PjwvYT4KKyNlcnJvcnMK
KyNkb2N1bWVudAorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIDxhPgor
fCAgICAgICA8c3ZnIHN2Zz4KK3wgICAgIDxzdmcgdHI+Cit8ICAgICAgIDxhPgorfCAgIDxzdmcg
aW5wdXQ+Cit8ICAgICA8YT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5l
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0
CmluZGV4IGM5YWUyNDU0ODBkNDlmZjUwMmY3MDMwNzEyYzI0YjhjMzA1NWU3NjUuLmNjMDkxMmZl
MGE1N2IxZWZkNTAxNzEzZmJlNzRlZTA5OTk2MzllNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIv
cnVubmVyLWV4cGVjdGVkLnR4dApAQCAtMjAyLDcgKzIwMiw3IEBAIHJlc291cmNlcy9jb21tZW50
czAxLmRhdDogUEFTUwogcmVzb3VyY2VzL2Fkb3B0aW9uMDEuZGF0OgogMTIKIAotVGVzdCAxMiBv
ZiAxMiBpbiByZXNvdXJjZXMvYWRvcHRpb24wMS5kYXQgZmFpbGVkLiBJbnB1dDoKK1Rlc3QgMTIg
b2YgMTMgaW4gcmVzb3VyY2VzL2Fkb3B0aW9uMDEuZGF0IGZhaWxlZC4gSW5wdXQ6CiA8dGFibGU+
QTx0ZD5CPC90ZD5DPC90YWJsZT4KIEdvdDoKIHwgPGh0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNjY2QzM2YzZGI4OWE4MDBmYjRk
NjRiZmJkMmNiYmE1NzFlMGY4MDAuLmU4YTgyZDhlZTI4ZWE0Njc2NzU4MDc0OWVhODQzMDlhZTY3
NWNkOTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMDgtMjAgIFRvbnkgR2VudGlsY29yZSAgPHRvbnln
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAg
ICAgIENyYXNoIGluIFdlYkNvcmU6Ok5vZGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMjkKKworICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6Omluc2VydEJlZm9yZSk6IEZhY3RvciBvdXQgY29yZSBiaXQgdG8gaW5zZXJ0QmV0d2Vl
bi4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6Omluc2VydEJldHdlZW4pOiBGYWN0
b3JlZCBvdXQgb2YgaW5zZXJ0QmVmb3JlLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cGFyc2VySW5zZXJ0QmVmb3JlKTogU2ltaWxhciB0byBpbnNlcnRCZWZvcmUsIGJ1dCBkb2Vz
bid0IGhhbmRsZSByZXBhcmVudGluZyBvciBkaXNwYXRjaCBET00gbXV0YXRpb24gZXZlbnRzLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQpOiBGYWN0b3Igb3V0
IGNvcmUgYml0IHRvIHJlbW92ZUJldHdlZW4uCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpyZW1vdmVCZXR3ZWVuKTogRmFjb3RyZWQgb3V0IG9mIHJlbW92ZUNoaWxkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOiBTaW1pbGFyIHRv
IHJlbW92ZUNoaWxkLCBidXQgZG9lc24ndCBoYW5kbGUgcmVwYXJlbnRpbmcgb3IgZGlzcGF0Y2gg
RE9NIG11dGF0aW9uIGV2ZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFk
ZENoaWxkQ29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlckFk
ZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmxlZ2FjeVBhcnNlckFk
ZENoaWxkKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcnNlckluc2VydEJlZm9yZSk6CisgICAgICAgICogZG9t
L05vZGUuaDoKKyAgICAgICAgKiBodG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjphdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6OmF0dGFjaEF0U2l0ZSk6IFVzZSBuZXcgcGFyc2Vy
SW5zZXJ0QmVmb3JlLgorICAgICAgICAqIGh0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cGFzc1Rva2VuVG9MZWdhY3lQYXJzZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpyZXBhcmVudENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6Y2FsbFRoZUFkb3B0aW9uQWdlbmN5KTog
V2FzIG1pc3NpbmcgYSBrZXkgYml0IGZyb20gdGhlIHNwZWMgYWJvdXQgcmVtb3ZpbmcgdGhlIG9s
ZCBwYXJlbnQgaWYgaXQgZXhpc3RzLgorCiAyMDEwLTA4LTIwICBBbGVqYW5kcm8gRy4gQ2FzdHJv
ICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKaW5kZXggZTU1OWJhN2Y2ZTJmZmZlZTBhMzcwZGM4MjMzMGNkN2NiYTY1
MWZmMy4uZTkxOTQ5NDViYzUzYmRmNzhkM2I5Y2Q0ZjRiZjY1NTM3MjhiOWJlZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKQEAgLTEzNCwzMSArMTM0LDEyIEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5z
ZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNl
CiAgICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgQVNTRVJUKCFjaGlsZC0+bmV4dFNpYmxpbmcoKSk7Ci0gICAgICAgIEFTU0VSVCgh
Y2hpbGQtPnByZXZpb3VzU2libGluZygpKTsKLQotICAgICAgICAvLyBBZGQgY2hpbGQgYmVmb3Jl
ICJuZXh0Ii4KLSAgICAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwotICAgICAgICBOb2RlKiBw
cmV2ID0gbmV4dC0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgIEFTU0VSVChtX2xhc3RDaGls
ZCAhPSBwcmV2KTsKLSAgICAgICAgbmV4dC0+c2V0UHJldmlvdXNTaWJsaW5nKGNoaWxkKTsKLSAg
ICAgICAgaWYgKHByZXYpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2ZpcnN0Q2hpbGQgIT0gbmV4
dCk7Ci0gICAgICAgICAgICBBU1NFUlQocHJldi0+bmV4dFNpYmxpbmcoKSA9PSBuZXh0KTsKLSAg
ICAgICAgICAgIHByZXYtPnNldE5leHRTaWJsaW5nKGNoaWxkKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIEFTU0VSVChtX2ZpcnN0Q2hpbGQgPT0gbmV4dCk7Ci0gICAgICAgICAgICBt
X2ZpcnN0Q2hpbGQgPSBjaGlsZDsKLSAgICAgICAgfQotICAgICAgICBjaGlsZC0+c2V0UGFyZW50
KHRoaXMpOwotICAgICAgICBjaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKHByZXYpOwotICAgICAg
ICBjaGlsZC0+c2V0TmV4dFNpYmxpbmcobmV4dC5nZXQoKSk7Ci0gICAgICAgIGFsbG93RXZlbnRE
aXNwYXRjaCgpOworICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hpbGQp
OwogCiAgICAgICAgIC8vIFNlbmQgbm90aWZpY2F0aW9uIGFib3V0IHRoZSBjaGlsZHJlbiBjaGFu
Z2UuCiAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgcmVmQ2hpbGRQcmV2aW91c1NpYmxp
bmcuZ2V0KCksIG5leHQuZ2V0KCksIDEpOwogICAgICAgICBub3RpZnlDaGlsZEluc2VydGVkKGNo
aWxkKTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAvLyBBZGQgY2hpbGQgdG8gdGhlIHJl
bmRlcmluZyB0cmVlLgogICAgICAgICBpZiAoYXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0dGFjaGVk
KCkgJiYgY2hpbGQtPnBhcmVudCgpID09IHRoaXMpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRM
YXp5QXR0YWNoKQpAQCAtMTc2LDYgKzE1Nyw1NyBAQCBib29sIENvbnRhaW5lck5vZGU6Omluc2Vy
dEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZQog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZUNv
bW1vbihOb2RlKiBuZXh0Q2hpbGQsIE5vZGUqIG5ld0NoaWxkKQoreworICAgIEFTU0VSVChuZXdD
aGlsZCk7CisgICAgQVNTRVJUKCFuZXdDaGlsZC0+cGFyZW50KCkpOyAvLyBVc2UgaW5zZXJ0QmVm
b3JlIGlmIHlvdSBuZWVkIHRvIGhhbmRsZSByZXBhcmVudGluZyAoYW5kIHdhbnQgRE9NIG11dGF0
aW9uIGV2ZW50cykuCisgICAgQVNTRVJUKCFuZXdDaGlsZC0+bmV4dFNpYmxpbmcoKSk7CisgICAg
QVNTRVJUKCFuZXdDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpOworCisgICAgZm9yYmlkRXZlbnRE
aXNwYXRjaCgpOworICAgIE5vZGUqIHByZXYgPSBuZXh0Q2hpbGQtPnByZXZpb3VzU2libGluZygp
OworICAgIEFTU0VSVChtX2xhc3RDaGlsZCAhPSBwcmV2KTsKKyAgICBuZXh0Q2hpbGQtPnNldFBy
ZXZpb3VzU2libGluZyhuZXdDaGlsZCk7CisgICAgaWYgKHByZXYpIHsKKyAgICAgICAgQVNTRVJU
KG1fZmlyc3RDaGlsZCAhPSBuZXh0Q2hpbGQpOworICAgICAgICBBU1NFUlQocHJldi0+bmV4dFNp
YmxpbmcoKSA9PSBuZXh0Q2hpbGQpOworICAgICAgICBwcmV2LT5zZXROZXh0U2libGluZyhuZXdD
aGlsZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fZmlyc3RDaGlsZCA9PSBuZXh0
Q2hpbGQpOworICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXdDaGlsZDsKKyAgICB9CisgICAgbmV3
Q2hpbGQtPnNldFBhcmVudCh0aGlzKTsKKyAgICBuZXdDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5n
KHByZXYpOworICAgIG5ld0NoaWxkLT5zZXROZXh0U2libGluZyhuZXh0Q2hpbGQpOworICAgIGFs
bG93RXZlbnREaXNwYXRjaCgpOworfQorCit2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckluc2Vy
dEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hpbGQpCit7Cisg
ICAgQVNTRVJUKG5ld0NoaWxkKTsKKyAgICBBU1NFUlQobmV4dENoaWxkKTsKKyAgICBBU1NFUlQo
bmV4dENoaWxkLT5wYXJlbnROb2RlKCkgPT0gdGhpcyk7CisKKyAgICBOb2RlVmVjdG9yIHRhcmdl
dHM7CisgICAgY29sbGVjdFRhcmdldE5vZGVzKG5ld0NoaWxkLmdldCgpLCB0YXJnZXRzKTsKKyAg
ICBpZiAodGFyZ2V0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZXh0
Q2hpbGQtPnByZXZpb3VzU2libGluZygpID09IG5ld0NoaWxkIHx8IG5leHRDaGlsZCA9PSBuZXdD
aGlsZCkgLy8gbm90aGluZyB0byBkbworICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8Tm9k
ZT4gbmV4dCA9IG5leHRDaGlsZDsKKyAgICBSZWZQdHI8Tm9kZT4gbmV4dENoaWxkUHJldmlvdXNT
aWJsaW5nID0gbmV4dENoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICBmb3IgKE5vZGVWZWN0
b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdGFyZ2V0cy5iZWdpbigpOyBpdCAhPSB0YXJnZXRzLmVu
ZCgpOyArK2l0KSB7CisgICAgICAgIE5vZGUqIGNoaWxkID0gaXQtPmdldCgpOworCisgICAgICAg
IGluc2VydEJlZm9yZUNvbW1vbihuZXh0LmdldCgpLCBjaGlsZCk7CisKKyAgICAgICAgY2hpbGRy
ZW5DaGFuZ2VkKHRydWUsIG5leHRDaGlsZFByZXZpb3VzU2libGluZy5nZXQoKSwgbmV4dENoaWxk
LCAxKTsKKyAgICAgICAgbm90aWZ5Q2hpbGRJbnNlcnRlZChjaGlsZCk7CisgICAgfQorfQorCiBi
b29sIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxk
LCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvb2wgc2hvdWxkTGF6eUF0dGFj
aCkKIHsKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KQEAg
LTM2NywzMSArMzk5LDkgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBv
bGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gdGhhdCBubyBjYWxsZXJzIGNhbGwg
d2l0aCByZWYgY291bnQgPT0gMCBhbmQgcGFyZW50ID0gMCAoYXMgb2YgdGhpcwogICAgIC8vIHdy
aXRpbmcsIHRoZXJlIGFyZSBkZWZpbml0ZWx5IGNhbGxlcnMgd2hvIGNhbGwgdGhhdCB3YXkpLgog
Ci0gICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwotCi0gICAgLy8gUmVtb3ZlIGZyb20gcmVuZGVy
aW5nIHRyZWUKLSAgICBpZiAoY2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgIGNoaWxkLT5kZXRh
Y2goKTsKLQotICAgIC8vIFJlbW92ZSB0aGUgY2hpbGQKLSAgICBOb2RlICpwcmV2LCAqbmV4dDsK
LSAgICBwcmV2ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpOwotICAgIG5leHQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKTsKLQotICAgIGlmIChuZXh0KQotICAgICAgICBuZXh0LT5zZXRQcmV2aW91
c1NpYmxpbmcocHJldik7Ci0gICAgaWYgKHByZXYpCi0gICAgICAgIHByZXYtPnNldE5leHRTaWJs
aW5nKG5leHQpOwotICAgIGlmIChtX2ZpcnN0Q2hpbGQgPT0gY2hpbGQpCi0gICAgICAgIG1fZmly
c3RDaGlsZCA9IG5leHQ7Ci0gICAgaWYgKG1fbGFzdENoaWxkID09IGNoaWxkKQotICAgICAgICBt
X2xhc3RDaGlsZCA9IHByZXY7Ci0KLSAgICBjaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKDApOwot
ICAgIGNoaWxkLT5zZXROZXh0U2libGluZygwKTsKLSAgICBjaGlsZC0+c2V0UGFyZW50KDApOwot
Ci0gICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CisgICAgTm9kZSogcHJldiA9IGNoaWxkLT5wcmV2
aW91c1NpYmxpbmcoKTsKKyAgICBOb2RlKiBuZXh0ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7Cisg
ICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBjaGlsZC5nZXQoKSk7CiAKICAgICAvLyBEaXNw
YXRjaCBwb3N0LXJlbW92YWwgbXV0YXRpb24gZXZlbnRzCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGZh
bHNlLCBwcmV2LCBuZXh0LCAtMSk7CkBAIC00MDUsNiArNDE1LDUwIEBAIGJvb2wgQ29udGFpbmVy
Tm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IHJldHVybiBjaGlsZDsKIH0KIAordm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5v
ZGUqIHByZXZpb3VzQ2hpbGQsIE5vZGUqIG5leHRDaGlsZCwgTm9kZSogb2xkQ2hpbGQpCit7Cisg
ICAgQVNTRVJUKG9sZENoaWxkKTsKKyAgICBBU1NFUlQob2xkQ2hpbGQtPnBhcmVudE5vZGUoKSA9
PSB0aGlzKTsKKworICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKKworICAgIC8vIFJlbW92ZSBm
cm9tIHJlbmRlcmluZyB0cmVlCisgICAgaWYgKG9sZENoaWxkLT5hdHRhY2hlZCgpKQorICAgICAg
ICBvbGRDaGlsZC0+ZGV0YWNoKCk7CisKKyAgICBpZiAobmV4dENoaWxkKQorICAgICAgICBuZXh0
Q2hpbGQtPnNldFByZXZpb3VzU2libGluZyhwcmV2aW91c0NoaWxkKTsKKyAgICBpZiAocHJldmlv
dXNDaGlsZCkKKyAgICAgICAgcHJldmlvdXNDaGlsZC0+c2V0TmV4dFNpYmxpbmcobmV4dENoaWxk
KTsKKyAgICBpZiAobV9maXJzdENoaWxkID09IG9sZENoaWxkKQorICAgICAgICBtX2ZpcnN0Q2hp
bGQgPSBuZXh0Q2hpbGQ7CisgICAgaWYgKG1fbGFzdENoaWxkID09IG9sZENoaWxkKQorICAgICAg
ICBtX2xhc3RDaGlsZCA9IHByZXZpb3VzQ2hpbGQ7CisKKyAgICBvbGRDaGlsZC0+c2V0UHJldmlv
dXNTaWJsaW5nKDApOworICAgIG9sZENoaWxkLT5zZXROZXh0U2libGluZygwKTsKKyAgICBvbGRD
aGlsZC0+c2V0UGFyZW50KDApOworCisgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7Cit9CisKK3Zv
aWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQpCit7Cisg
ICAgQVNTRVJUKG9sZENoaWxkKTsKKyAgICBBU1NFUlQob2xkQ2hpbGQtPnBhcmVudE5vZGUoKSA9
PSB0aGlzKTsKKworICAgIE5vZGUqIHByZXYgPSBvbGRDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCk7
CisgICAgTm9kZSogbmV4dCA9IG9sZENoaWxkLT5uZXh0U2libGluZygpOworCisgICAgcmVtb3Zl
QmV0d2VlbihwcmV2LCBuZXh0LCBvbGRDaGlsZCk7CisKKyAgICBjaGlsZHJlbkNoYW5nZWQodHJ1
ZSwgcHJldiwgbmV4dCwgLTEpOworICAgIGlmIChvbGRDaGlsZC0+aW5Eb2N1bWVudCgpKQorICAg
ICAgICBvbGRDaGlsZC0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOworICAgIGVsc2UKKyAgICAgICAg
b2xkQ2hpbGQtPnJlbW92ZWRGcm9tVHJlZSh0cnVlKTsKK30KKwogLy8gdGhpcyBkaWZmZXJzIGZy
b20gb3RoZXIgcmVtb3ZlIGZ1bmN0aW9ucyBiZWNhdXNlIGl0IGZvcmNpYmx5IHJlbW92ZXMgYWxs
IHRoZSBjaGlsZHJlbiwKIC8vIHJlZ2FyZGxlc3Mgb2YgcmVhZC1vbmx5IHN0YXR1cyBvciBldmVu
dCBleGNlcHRpb25zLCBlLmcuCiBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkK
QEAgLTUzNiwxMyArNTkwLDE2IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFz
c1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAKIHZvaWQgQ29u
dGFpbmVyTm9kZTo6YWRkQ2hpbGRDb21tb24oTm9kZSogbmV3Q2hpbGQpCiB7Ci0gICAgQVNTRVJU
KCFuZXdDaGlsZC0+cGFyZW50KCkpOyAvLyBVc2UgYXBwZW5kQ2hpbGQgaWYgeW91IG5lZWQgdG8g
aGFuZGxlIHJlcGFyZW50aW5nLgorICAgIEFTU0VSVChuZXdDaGlsZCk7CisgICAgQVNTRVJUKCFu
ZXdDaGlsZC0+cGFyZW50KCkpOyAvLyBVc2UgYXBwZW5kQ2hpbGQgaWYgeW91IG5lZWQgdG8gaGFu
ZGxlIHJlcGFyZW50aW5nIChhbmQgd2FudCBET00gbXV0YXRpb24gZXZlbnRzKS4KKwogICAgIGZv
cmJpZEV2ZW50RGlzcGF0Y2goKTsKICAgICBOb2RlKiBsYXN0ID0gbV9sYXN0Q2hpbGQ7CiAgICAg
Ly8gRklYTUU6IFRoaXMgbWV0aG9kIHNob3VsZCB0YWtlIGEgUGFzc1JlZlB0ci4KICAgICBhcHBl
bmRDaGlsZFRvQ29udGFpbmVyPE5vZGUsIENvbnRhaW5lck5vZGU+KG5ld0NoaWxkLCB0aGlzKTsK
ICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKIAorICAgIC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0
aGlzIHVzZSBub3RpZnlDaGlsZEluc2VydGVkKG5ld0NoaWxkKSBpbnN0ZWFkPwogICAgIGRvY3Vt
ZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAg
ICAgbmV3Q2hpbGQtPmluc2VydGVkSW50b0RvY3VtZW50KCk7CkBAIC01NTIsMTcgKzYwOSwxMiBA
QCB2b2lkIENvbnRhaW5lck5vZGU6OmFkZENoaWxkQ29tbW9uKE5vZGUqIG5ld0NoaWxkKQogdm9p
ZCBDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxk
KQogewogICAgIEFTU0VSVChuZXdDaGlsZCk7Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5
IHVzZWQgZHVyaW5nIHBhcnNpbmcuCi0gICAgLy8gSXQgZG9lcyBub3Qgc2VuZCBhbnkgRE9NIG11
dGF0aW9uIGV2ZW50cyBvciBoYW5kbGUgcmVwYXJlbnRpbmcuCi0KICAgICBhZGRDaGlsZENvbW1v
bihuZXdDaGlsZC5nZXQoKSk7CiB9CiAKIENvbnRhaW5lck5vZGUqIENvbnRhaW5lck5vZGU6Omxl
Z2FjeVBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiB7CiAgICAgQVNT
RVJUKG5ld0NoaWxkKTsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBkdXJpbmcg
cGFyc2luZy4KLSAgICAvLyBJdCBkb2VzIG5vdCBzZW5kIGFueSBET00gbXV0YXRpb24gZXZlbnRz
LgogCiAgICAgLy8gQ2hlY2sgZm9yIGNvbnNpc3RlbmN5IHdpdGggRFRELCBidXQgb25seSB3aGVu
IHBhcnNpbmcgSFRNTC4KICAgICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiAh
Y2hpbGRBbGxvd2VkKG5ld0NoaWxkLmdldCgpKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCBhMjdkOTVi
ZWZmMmM0NmY3M2I1MmU4YTczZjZjYTgxN2UyNDA2ODNkLi4xMTE0ZDNiMjQxZmJjOTQxNzc3NzEw
ZDBjN2Y3YzI2N2E2MDU3Y2U1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmgKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC00OCw4ICs0OCwxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlbW92ZUNoaWxkKE5vZGUqIGNoaWxkLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4g
bmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7
CiAKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBvbmx5IHVzZWQgZHVyaW5nIHBhcnNpbmcuCisg
ICAgLy8gVGhleSBkb24ndCBzZW5kIERPTSBtdXRhdGlvbiBldmVudHMgb3IgaGFuZGxlIHJlcGFy
ZW50aW5nLgorICAgIC8vIEhvd2V2ZXIsIGFyYml0cmFyeSBjb2RlIG1heSBiZSBydW4gYnkgYmVm
b3JlbG9hZCBoYW5kbGVycy4KICAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGxlZ2FjeVBhcnNl
ckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJBZGRD
aGlsZChQYXNzUmVmUHRyPE5vZGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyUmVtb3ZlQ2hp
bGQoTm9kZSopOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJJbnNlcnRCZWZvcmUoUGFzc1JlZlB0
cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQpOwogCiAgICAgYm9vbCBoYXNDaGlsZE5v
ZGVzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaCgpOwpAQCAtOTcsNiArMTAyLDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgdGFrZSBhIFBhc3NSZWZQdHIuCiAgICAgdm9pZCBhZGRDaGlsZENv
bW1vbihOb2RlKik7CisgICAgdm9pZCByZW1vdmVCZXR3ZWVuKE5vZGUqIHByZXZpb3VzQ2hpbGQs
IE5vZGUqIG5leHRDaGlsZCwgTm9kZSogb2xkQ2hpbGQpOworICAgIHZvaWQgaW5zZXJ0QmVmb3Jl
Q29tbW9uKE5vZGUqIG5leHRDaGlsZCwgTm9kZSogb2xkQ2hpbGQpOwogCiAgICAgc3RhdGljIHZv
aWQgZGlzcGF0Y2hQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMGJjOGQ5ZTlhZTUyM2Ux
MWViNDhjODcyZDUzZDViNDYyODA2MmI3Zi4uODlkMTM5MjJhOTY2YzUzODNlMTIwODM5ZjljNmIw
NWFmODc2YzdjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTY1MSw2ICs2NTEsMTYgQEAgdm9pZCBOb2RlOjpwYXJzZXJBZGRD
aGlsZChQYXNzUmVmUHRyPE5vZGU+KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2
b2lkIE5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pCit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKFBh
c3NSZWZQdHI8Tm9kZT4sIE5vZGUqKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CiBib29sIE5vZGU6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gcGFy
ZW50KCkgJiYgcGFyZW50KCktPmlzQ29udGVudEVkaXRhYmxlKCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggZWMxNmYwNTljZjMyNTM2
Mjg5YjBjNDFjYjVhN2U1YzMwNGVkMTNlYi4uM2YwOTE2Mjc3Mjk2MGM3ZDdkMjE3NTU4MGRkYzdi
NTU2YTczZWVjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtMjY3LDYgKzI2Nyw4IEBAIHB1YmxpYzoKICAgICAvLyBhZGRDaGlsZCBp
cyB0aWVkIGludG8gdGhlIGxvZ2ljIG9mIHRoZSBMZWdhY3lIVE1MVHJlZUJ1aWxkZXIuICBXZSBu
ZWVkCiAgICAgLy8gYSAiY2xlYW4iIHZlcnNpb24gdG8gdXNlIGZvciB0aGUgSFRNTDUgdmVyc2lv
biBvZiB0aGUgSFRNTFRyZWVCdWlsZGVyLgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJBZGRDaGls
ZChQYXNzUmVmUHRyPE5vZGU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyUmVtb3ZlQ2hpbGQo
UGFzc1JlZlB0cjxOb2RlPik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlckluc2VydEJlZm9yZShQ
YXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBuZXh0Q2hpbGQpOwogCiAgICAgLy8gQ2Fs
bGVkIGJ5IHRoZSBwYXJzZXIgd2hlbiB0aGlzIGVsZW1lbnQncyBjbG9zZSB0YWcgaXMgcmVhY2hl
ZCwKICAgICAvLyBzaWduYWxpbmcgdGhhdCBhbGwgY2hpbGQgdGFncyBoYXZlIGJlZW4gcGFyc2Vk
IGFuZCBhZGRlZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3RydWN0aW9uU2l0
ZS5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDllNDNi
NzBlNmVhMDhiNjFmNWM4Y2I1NmM0OWQxMjMxOWIyNDM4YWQuLjRjMDIwN2NhNDIxODMyM2Y5NjVk
NDc5YjQxYTc5N2VjODU4MmU0ZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNw
cApAQCAtOTIsNyArOTIsNyBAQCBQYXNzUmVmUHRyPENoaWxkVHlwZT4gSFRNTENvbnN0cnVjdGlv
blNpdGU6OmF0dGFjaChOb2RlKiBwYXJlbnQsIFBhc3NSZWZQdHI8Q2hpbAogICAgIC8vIGRvZXNu
J3QuICBJdCBmZWVscyBsaWtlIHdlJ3JlIG1pc3NpbmcgYSBjb25jZXB0IHNvbWVob3cuCiAgICAg
aWYgKHNob3VsZEZvc3RlclBhcmVudCgpKSB7CiAgICAgICAgIGZvc3RlclBhcmVudChjaGlsZC5n
ZXQoKSk7Ci0gICAgICAgIEFTU0VSVChjaGlsZC0+YXR0YWNoZWQoKSB8fCAhY2hpbGQtPnBhcmVu
dCgpLT5hdHRhY2hlZCgpKTsKKyAgICAgICAgQVNTRVJUKGNoaWxkLT5hdHRhY2hlZCgpIHx8ICFj
aGlsZC0+cGFyZW50KCkgfHwgIWNoaWxkLT5wYXJlbnQoKS0+YXR0YWNoZWQoKSk7CiAgICAgICAg
IHJldHVybiBjaGlsZC5yZWxlYXNlKCk7CiAgICAgfQogCkBAIC0xMTgsMTAgKzExOCw3IEBAIHZv
aWQgSFRNTENvbnN0cnVjdGlvblNpdGU6OmF0dGFjaEF0U2l0ZShjb25zdCBBdHRhY2htZW50U2l0
ZSYgc2l0ZSwgUGFzc1JlZlB0cjxOCiAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gcHJwQ2hpbGQ7
CiAKICAgICBpZiAoc2l0ZS5uZXh0Q2hpbGQpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQg
YW4gaW5zZXJ0RWxlbWVudCB3aGljaCBkb2VzIG5vdCBzZW5kIG11dGF0aW9uIGV2ZW50cy4KLSAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIHNpdGUucGFyZW50LT5pbnNlcnRC
ZWZvcmUoY2hpbGQsIHNpdGUubmV4dENoaWxkLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwor
ICAgICAgICBzaXRlLnBhcmVudC0+cGFyc2VySW5zZXJ0QmVmb3JlKGNoaWxkLCBzaXRlLm5leHRD
aGlsZCk7CiAgICAgICAgIGlmIChzaXRlLnBhcmVudC0+YXR0YWNoZWQoKSAmJiAhY2hpbGQtPmF0
dGFjaGVkKCkpCiAgICAgICAgICAgICBjaGlsZC0+YXR0YWNoKCk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvV2ViQ29yZS9o
dG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggNzgwNTVmNzdhOWNjM2NmNDUxN2UzYzNkM2Vh
Njg2MjdkOWMyZWUwNy4uZjM2YjZhYmQyOWIxODUwNDFhN2I5ODM1OGVkNTA1ZTEyN2MwM2FmNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTE3NTYsOSArMTc1NiwxMCBAQCB2b2lkIEhU
TUxUcmVlQnVpbGRlcjo6cmVwYXJlbnRDaGlsZHJlbihFbGVtZW50KiBvbGRQYXJlbnQsIEVsZW1l
bnQqIG5ld1BhcmVudCkKICAgICBOb2RlKiBjaGlsZCA9IG9sZFBhcmVudC0+Zmlyc3RDaGlsZCgp
OwogICAgIHdoaWxlIChjaGlsZCkgewogICAgICAgICBOb2RlKiBuZXh0Q2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgbmV3UGFy
ZW50LT5hcHBlbmRDaGlsZChjaGlsZCwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAg
ICAgb2xkUGFyZW50LT5wYXJzZXJSZW1vdmVDaGlsZChjaGlsZCk7CisgICAgICAgIG5ld1BhcmVu
dC0+cGFyc2VyQWRkQ2hpbGQoY2hpbGQpOworICAgICAgICBpZiAobmV3UGFyZW50LT5hdHRhY2hl
ZCgpICYmICFjaGlsZC0+YXR0YWNoZWQoKSkKKyAgICAgICAgICAgIGNoaWxkLT5hdHRhY2goKTsK
ICAgICAgICAgY2hpbGQgPSBuZXh0Q2hpbGQ7CiAgICAgfQogfQpAQCAtMTgyOSwxNSArMTgzMCwx
OCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y2FsbFRoZUFkb3B0aW9uQWdlbmN5KEF0b21pY0hU
TUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBpZiAobGFzdE5vZGUgPT0gZnVydGhlc3RCbG9j
aykKICAgICAgICAgICAgICAgICBib29rbWFyay5tb3ZlVG9BZnRlcihub2RlRW50cnkpOwogICAg
ICAgICAgICAgLy8gNi42Ci0gICAgICAgICAgICAvLyBVc2UgYXBwZW5kQ2hpbGQgaW5zdGVhZCBv
ZiBwYXJzZXJBZGRDaGlsZCB0byBoYW5kbGUgcG9zc2libGUgcmVwYXJlbnRpbmcuCi0gICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICAgICAgbm9kZS0+ZWxlbWVudCgpLT5hcHBl
bmRDaGlsZChsYXN0Tm9kZS0+ZWxlbWVudCgpLCBlYywgdHJ1ZSk7Ci0gICAgICAgICAgICBBU1NF
UlQoIWVjKTsKKyAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnQgPSBsYXN0Tm9kZS0+ZWxl
bWVudCgpLT5wYXJlbnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgcGFyZW50LT5wYXJzZXJS
ZW1vdmVDaGlsZChsYXN0Tm9kZS0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAgIG5vZGUtPmVsZW1l
bnQoKS0+cGFyc2VyQWRkQ2hpbGQobGFzdE5vZGUtPmVsZW1lbnQoKSk7CisgICAgICAgICAgICBp
ZiAobGFzdE5vZGUtPmVsZW1lbnQoKS0+cGFyZW50RWxlbWVudCgpLT5hdHRhY2hlZCgpICYmICFs
YXN0Tm9kZS0+ZWxlbWVudCgpLT5hdHRhY2hlZCgpKQorICAgICAgICAgICAgICAgIGxhc3ROb2Rl
LT5lbGVtZW50KCktPmxhenlBdHRhY2goKTsKICAgICAgICAgICAgIC8vIDYuNwogICAgICAgICAg
ICAgbGFzdE5vZGUgPSBub2RlOwogICAgICAgICB9CiAgICAgICAgIC8vIDcKICAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBjb21tb25BbmNlc3RvclRhZyA9IGNvbW1vbkFuY2VzdG9yLT5sb2Nh
bE5hbWUoKTsKKyAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudCA9IGxhc3ROb2RlLT5lbGVtZW50
KCktPnBhcmVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgIHBhcmVudC0+cGFyc2VyUmVtb3ZlQ2hp
bGQobGFzdE5vZGUtPmVsZW1lbnQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGlzIG1vdmVz
IHRvIEhUTUxDb25zdHJ1Y3Rpb25TaXRlLCB0aGlzIGNoZWNrIHNob3VsZCB1c2UKICAgICAgICAg
Ly8gY2F1c2VzRm9zdGVyUGFyZW50aW5nKHRhZ05hbWUpIGluc3RlYWQuCiAgICAgICAgIGlmIChj
b21tb25BbmNlc3RvclRhZyA9PSB0YWJsZVRhZwpAQCAtMTg0NSw5ICsxODQ5LDkgQEAgdm9pZCBI
VE1MVHJlZUJ1aWxkZXI6OmNhbGxUaGVBZG9wdGlvbkFnZW5jeShBdG9taWNIVE1MVG9rZW4mIHRv
a2VuKQogICAgICAgICAgICAgfHwgaXNUYWJsZUJvZHlDb250ZXh0VGFnKGNvbW1vbkFuY2VzdG9y
VGFnKSkKICAgICAgICAgICAgIG1fdHJlZS5mb3N0ZXJQYXJlbnQobGFzdE5vZGUtPmVsZW1lbnQo
KSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgICAgIGNvbW1vbkFuY2VzdG9yLT5hcHBlbmRDaGlsZChsYXN0Tm9kZS0+ZWxlbWVudCgpLCBl
YywgdHJ1ZSk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIGNvbW1vbkFu
Y2VzdG9yLT5wYXJzZXJBZGRDaGlsZChsYXN0Tm9kZS0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAg
IGlmIChsYXN0Tm9kZS0+ZWxlbWVudCgpLT5wYXJlbnRFbGVtZW50KCktPmF0dGFjaGVkKCkgJiYg
IWxhc3ROb2RlLT5lbGVtZW50KCktPmF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgbGFzdE5v
ZGUtPmVsZW1lbnQoKS0+bGF6eUF0dGFjaCgpOwogICAgICAgICB9CiAgICAgICAgIC8vIDgKICAg
ICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0VsZW1lbnQgPSBtX3RyZWUuY3JlYXRlSFRNTEVsZW1l
bnRGcm9tRWxlbWVudFJlY29yZChmb3JtYXR0aW5nRWxlbWVudFJlY29yZCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>