<?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>104733</bug_id>
          
          <creation_ts>2012-12-11 15:53:06 -0800</creation_ts>
          <short_desc>Make WebGLRenderingContext inherit from ActiveDOMObject</short_desc>
          <delta_ts>2014-01-13 16:30:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>76225</dependson>
          <blocked>126947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brandon Jones">bajones</reporter>
          <assigned_to name="Brandon Jones">bajones</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>cmarrin</cc>
    
    <cc>danno</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>enne</cc>
    
    <cc>gman</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>kbr</cc>
    
    <cc>mifenton</cc>
    
    <cc>nduca</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>ulan</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>788892</commentid>
    <comment_count>0</comment_count>
    <who name="Brandon Jones">bajones</who>
    <bug_when>2012-12-11 15:53:06 -0800</bug_when>
    <thetext>In Chromium WebGL contexts are not being garbage collected eagerly enough. This is causing unexpected behavior in cases where many WebGL contexts are created in succession, such as refreshing the page multiple times during development. WebGLRenderingContexts should follow the pattern set by AudioContext and inherit from ActiveDOMObject to quickly detect when the page containing the context is closed/refreshed/navigated and actively release GPU resources.

An attempt to hint the garbage collector to collect WebGLRenderingContexts more eagerly was made in Bug 76225, but some problems still persist. The use of ActiveDOMObject to detect WebGLRenderingContext end of life was suggested in the comments for that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788899</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-11 15:55:30 -0800</bug_when>
    <thetext>To be clear: there were significant and valid objections to using a GC hint in the fix for Bug 76225. Using ActiveDOMObject to decide when to tear down the WebGLRenderingContext will work better for all ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790863</commentid>
    <comment_count>2</comment_count>
      <attachid>179321</attachid>
    <who name="Brandon Jones">bajones</who>
    <bug_when>2012-12-13 13:26:35 -0800</bug_when>
    <thetext>Created attachment 179321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791252</commentid>
    <comment_count>3</comment_count>
      <attachid>179321</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-12-13 19:43:14 -0800</bug_when>
    <thetext>Comment on attachment 179321
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        (WebCore):

Remove this useless line.

&gt; Source/WebCore/ChangeLog:22
&gt; +        (WebCore::WebGLRenderingContext::WebGLRenderingContext):
&gt; +        (WebCore::WebGLRenderingContext::~WebGLRenderingContext):
&gt; +        (WebCore::WebGLRenderingContext::destroyGraphicsContext3D):
&gt; +        (WebCore::WebGLRenderingContext::stop):

DarinA always encourages me to write per-function comments, especially when they are easy like this, and I appreciate it. Let me pay it forward!

&gt; Source/WebCore/ChangeLog:24
&gt; +        (WebGLRenderingContext):

And this useless line.

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:4597
&gt; +        // Will this cause anything else to panic and die?

You should probably preface this with FIXME. It&apos;s a fairly scary statement.

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.h:321
&gt; +    // Document notification

Maybe be clear that this block of functions comes from ActiveDOMObject? I did a quick search through WebCore and sometimes people do this, other times not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791356</commentid>
    <comment_count>4</comment_count>
      <attachid>179321</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 22:59:14 -0800</bug_when>
    <thetext>Comment on attachment 179321
Patch

Attachment 179321 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15318541

New failing tests:
platform/chromium/virtual/threaded/compositing/webgl/webgl-reflection.html
platform/chromium/virtual/threaded/compositing/webgl/webgl-no-alpha.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791965</commentid>
    <comment_count>5</comment_count>
      <attachid>179556</attachid>
    <who name="Brandon Jones">bajones</who>
    <bug_when>2012-12-14 16:46:34 -0800</bug_when>
    <thetext>Created attachment 179556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791981</commentid>
    <comment_count>6</comment_count>
      <attachid>179556</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-12-14 17:01:16 -0800</bug_when>
    <thetext>Comment on attachment 179556
Patch

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

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:617
&gt; +    // The drawing buffer holds a context reference. It must also be destroyed
&gt; +    // in order for the context to be released

Nit: Comment needs &quot;.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792123</commentid>
    <comment_count>7</comment_count>
      <attachid>179556</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-15 07:42:43 -0800</bug_when>
    <thetext>Comment on attachment 179556
Patch

Attachment 179556 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15362075

New failing tests:
platform/chromium/virtual/threaded/compositing/webgl/webgl-reflection.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792904</commentid>
    <comment_count>8</comment_count>
      <attachid>179777</attachid>
    <who name="Brandon Jones">bajones</who>
    <bug_when>2012-12-17 12:04:33 -0800</bug_when>
    <thetext>Created attachment 179777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792954</commentid>
    <comment_count>9</comment_count>
      <attachid>179777</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-17 13:13:17 -0800</bug_when>
    <thetext>Comment on attachment 179777
Patch

Looks good. From an offline discussion it sounds like this patch has undergone good testing. Let&apos;s let the final patch pass the EWS and then set cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792961</commentid>
    <comment_count>10</comment_count>
      <attachid>179777</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 13:18:26 -0800</bug_when>
    <thetext>Comment on attachment 179777
Patch

Attachment 179777 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15362861

New failing tests:
platform/chromium/virtual/threaded/compositing/webgl/webgl-no-alpha.html
platform/chromium/virtual/threaded/compositing/webgl/webgl-repaint.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793012</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-17 13:52:06 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 179777 [details])
&gt; Attachment 179777 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/15362861
&gt; 
&gt; New failing tests:
&gt; platform/chromium/virtual/threaded/compositing/webgl/webgl-no-alpha.html
&gt; platform/chromium/virtual/threaded/compositing/webgl/webgl-repaint.html

It&apos;s suspicious that some WebGL tests have started to fail with this patch. Are these crashes reproducible locally?

What happens if a WebGL context is used after it&apos;s stopped? Are there sufficient guards in the WebGLRenderingContext implementation (in particular, all of the OpenGL-related entry points) to have m_context deleted out from under it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794967</commentid>
    <comment_count>12</comment_count>
      <attachid>180229</attachid>
    <who name="Brandon Jones">bajones</who>
    <bug_when>2012-12-19 14:50:27 -0800</bug_when>
    <thetext>Created attachment 180229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794974</commentid>
    <comment_count>13</comment_count>
    <who name="Brandon Jones">bajones</who>
    <bug_when>2012-12-19 14:54:51 -0800</bug_when>
    <thetext>NOTE: The patch uploaded on 2012-12-19 has known issues with the threaded compositor and should not be used in production code. It is uploaded here for archival purposes only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800844</commentid>
    <comment_count>14</comment_count>
      <attachid>181424</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-04 20:34:34 -0800</bug_when>
    <thetext>Created attachment 181424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800846</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-04 20:38:45 -0800</bug_when>
    <thetext>There was a missing call to suspendIfNeeded in the earlier patch which was causing spurious assertion failures in debug builds.

The reason this is failing with Chromium&apos;s threaded compositor is that the impl tree is referencing a stale texture ID after the DrawingBuffer has been cleared and it&apos;s deleted its resources. I&apos;ve made a couple of attempts to tell the cc tree that it shouldn&apos;t draw that layer any more but haven&apos;t succeeded yet. I don&apos;t know how to run DumpRenderTree manually with the threaded compositor so can&apos;t catch it in the debugger yet. Would certainly appreciate any advice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800849</commentid>
    <comment_count>16</comment_count>
      <attachid>181424</attachid>
    <who name="Brandon Jones">bajones</who>
    <bug_when>2013-01-04 20:44:44 -0800</bug_when>
    <thetext>Comment on attachment 181424
Patch

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

Looks good overall, but obviously you need approval from a someone besides me.

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:470
&gt; +    fprintf(stderr, &quot;WebGLRenderingContext::WebGLRenderingContext %p\n&quot;, this);

Remove debugging statements

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:603
&gt; +    fprintf(stderr, &quot;WebGLRenderingContext::~WebGLRenderingContext %p\n&quot;, this);

Same here

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:4609
&gt; +        fprintf(stderr, &quot;WebGLRenderingContext::stop %p\n&quot;, this);

And here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800975</commentid>
    <comment_count>17</comment_count>
      <attachid>181424</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-05 12:52:53 -0800</bug_when>
    <thetext>Comment on attachment 181424
Patch

There&apos;s not ChangeLog, so I&apos;m not sure what you&apos;re trying to accomplish by using ActiveDOMObject.  Are you just looking for the stop() callback?  Most ActiveDOMObjects also use the [ActiveDOMObject] IDL attribute, which tells the garbage collector to keep the object&apos;s wrapper alive why hasPendingActivity returns true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800976</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-05 12:55:52 -0800</bug_when>
    <thetext>&gt; In Chromium WebGL contexts are not being garbage collected eagerly enough. This is causing unexpected behavior in cases where many WebGL contexts are created in succession, such as refreshing the page multiple times during development. WebGLRenderingContexts should follow the pattern set by AudioContext and inherit from ActiveDOMObject to quickly detect when the page containing the context is closed/refreshed/navigated and actively release GPU resources.

Hum...  It&apos;s not clear to me what using ActiveDOMObject is the right way to solve this problem.  Do we understand why the WebGL context isn&apos;t being garbage collected when you expect?  As an example, an app-like web page that runs for a long time will probably want its WebGL context garbage collected before ActiveDOMObject::stop gets called given that stop won&apos;t be called for the lifetime of the app.

AudioContext is different because it&apos;s &quot;active&quot; in the sense that it&apos;s actively producing sound that we want to stop when we navigate away from the page.  Does WebGL actively produce anything?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801946</commentid>
    <comment_count>19</comment_count>
      <attachid>181626</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-07 19:48:21 -0800</bug_when>
    <thetext>Created attachment 181626
Patch for testing

Properly clear out texture ID from compositor based on feedback from jamesr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801961</commentid>
    <comment_count>20</comment_count>
      <attachid>181626</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-07 20:20:26 -0800</bug_when>
    <thetext>Comment on attachment 181626
Patch for testing

Attachment 181626 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15738976</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802184</commentid>
    <comment_count>21</comment_count>
      <attachid>181626</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 03:10:29 -0800</bug_when>
    <thetext>Comment on attachment 181626
Patch for testing

Attachment 181626 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15744893

New failing tests:
fast/forms/range/slider-delete-while-dragging-thumb.html
http/tests/security/webgl-remote-read-remote-image-allowed.html
fast/canvas/webgl/error-reporting.html
fast/loader/text-document-wrapping.html
fast/canvas/webgl/context-lost-restored.html
fast/canvas/webgl/compressed-tex-image.html
fast/canvas/webgl/webgl-specific.html
fast/canvas/webgl/buffer-bind-test.html
fast/canvas/webgl/WebGLContextEvent.html
fast/forms/range/slider-mouse-events.html
fast/canvas/webgl/tex-sub-image-2d-bad-args.html
fast/canvas/webgl/index-validation-copies-indices.html
fast/canvas/webgl/index-validation-verifies-too-many-indices.html
fast/canvas/webgl/instanceof-test.html
fast/canvas/webgl/uniform-array-length-overflow.html
fast/canvas/webgl/css-webkit-canvas.html
fast/canvas/webgl/gl-bind-attrib-location-test.html
fast/canvas/webgl/tex-image-with-format-and-type.html
fast/canvas/webgl/premultiplyalpha-test.html
fast/canvas/webgl/draw-elements-out-of-bounds.html
fast/canvas/webgl/texture-active-bind.html
fast/loader/javascript-url-in-object.html
fast/canvas/webgl/null-uniform-location.html
fast/canvas/webgl/shader-deleted-by-accessor.html
fast/canvas/webgl/canvas-2d-webgl-texture.html
fast/canvas/webgl/invalid-passed-params.html
http/tests/security/window-events-clear-domain.html
fast/canvas/webgl/context-destroyed-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802329</commentid>
    <comment_count>22</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-08 10:24:06 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; In Chromium WebGL contexts are not being garbage collected eagerly enough. This is causing unexpected behavior in cases where many WebGL contexts are created in succession, such as refreshing the page multiple times during development. WebGLRenderingContexts should follow the pattern set by AudioContext and inherit from ActiveDOMObject to quickly detect when the page containing the context is closed/refreshed/navigated and actively release GPU resources.
&gt; 
&gt; Hum...  It&apos;s not clear to me what using ActiveDOMObject is the right way to solve this problem.  Do we understand why the WebGL context isn&apos;t being garbage collected when you expect?  As an example, an app-like web page that runs for a long time will probably want its WebGL context garbage collected before ActiveDOMObject::stop gets called given that stop won&apos;t be called for the lifetime of the app.

The WebGL context wasn&apos;t being GC&apos;d eagerly enough in Chrome because of V8&apos;s generational garbage collector. It used to be the case that DOM nodes could only be collected in full GCs, but many tests only provoke young generation GCs, so the WebGL contexts were staying alive much longer than expected or desired. haraken&apos;s recent work to support collection of DOM nodes in young gen collections improved the situation, but even so, if the HTMLCanvasElement is promoted to the old gen, then it won&apos;t be collected as eagerly as in non-generational GCs like JSC&apos;s.

I added a hack in Bug 76255 to hint the GC to run when navigating away from a page containing a WebGL canvas. This was hotly debated and was not an ideal solution. The desired behavior is to discard the heavyweight GPU resources as quickly as possible when the page is shut down. This is what this patch implements, and it removes the previous hack.

&gt; AudioContext is different because it&apos;s &quot;active&quot; in the sense that it&apos;s actively producing sound that we want to stop when we navigate away from the page.  Does WebGL actively produce anything?

WebGL isn&apos;t exactly like AudioContext in this regard, but yes, it produces output into a canvas element, and doing so requires many GPU resources. Releasing those resources eagerly upon page navigation or reload is necessary to improve robustness of real-world applications like MapsGL. (More work is underway in this area, but this patch is desired permanently -- it is not a stopgap solution.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802430</commentid>
    <comment_count>23</comment_count>
      <attachid>181626</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-08 11:26:49 -0800</bug_when>
    <thetext>Comment on attachment 181626
Patch for testing

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

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.h:322
&gt; +    // ActiveDOMObject notifications
&gt; +    virtual void stop();

Makes sense.  In that case, you probably want to override hasPendingActivity here and always return false.  Also, you&apos;re correct to skip the [ActiveDOMObject] IDL attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802581</commentid>
    <comment_count>24</comment_count>
      <attachid>181626</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-08 13:34:02 -0800</bug_when>
    <thetext>Comment on attachment 181626
Patch for testing

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

&gt;&gt; Source/WebCore/html/canvas/WebGLRenderingContext.h:322
&gt;&gt; +    virtual void stop();
&gt; 
&gt; Makes sense.  In that case, you probably want to override hasPendingActivity here and always return false.  Also, you&apos;re correct to skip the [ActiveDOMObject] IDL attribute.

Thanks, new patch coming which does this. Thanks also for the pointer to the [ActiveDOMObject] IDL attribute; I didn&apos;t know about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802723</commentid>
    <comment_count>25</comment_count>
      <attachid>181783</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-01-08 15:23:47 -0800</bug_when>
    <thetext>Created attachment 181783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802731</commentid>
    <comment_count>26</comment_count>
      <attachid>181783</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-08 15:32:05 -0800</bug_when>
    <thetext>Comment on attachment 181783
Patch

Thanks for explaining the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802870</commentid>
    <comment_count>27</comment_count>
      <attachid>181783</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 18:23:19 -0800</bug_when>
    <thetext>Comment on attachment 181783
Patch

Clearing flags on attachment: 181783

Committed r139142: &lt;http://trac.webkit.org/changeset/139142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802871</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-08 18:23:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179321</attachid>
            <date>2012-12-13 13:26:35 -0800</date>
            <delta_ts>2012-12-14 16:46:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104733-20121213132355.patch</filename>
            <type>text/plain</type>
            <size>6223</size>
            <attacher name="Brandon Jones">bajones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNhNzNlNjEyZTY2MjJh
MzJiMGM5ZmFkNGZiMGZjZGIyYzY3NzQ1Mi4uMzZmZTNmNmZiZDgzMGI3ZTZkNDdhMWI0Mzc1MmQy
M2M2NDgyNWJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTEzICBCcmFu
ZG9uIEpvbmVzICA8YmFqb25lc0Bnb29nbGUuY29tPgorCisgICAgICAgIE1ha2UgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0IGluaGVyaXQgZnJvbSBBY3RpdmVET01PYmplY3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDczMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gQWN0aXZlRE9NT2JqZWN0Ojpz
dG9wIGlzIGNhbGxlZCBvbiB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRoZQorICAgICAgICBE
cmF3aW5nQnVmZmVyIGFuZCBHcmFwaGljc0NvbnRleHQzRCBpbnN0YW5jZXMgYXJlIGZvcmNpYmx5
IHJlbGVhc2VkIGluCisgICAgICAgIG9yZGVyIHRvIGtlZXAgR1BVIG1lbW9yeSB1dGlsaXphdGlv
biB0byBhIG1pbmltdW0KKworICAgICAgICBObyB0ZXN0cyB5ZXQsIGFzIHRoaXMgaXNzdWUgaXMg
YWZmZWN0aW5nIG90aGVyIGFyZWFzIGFuZCBJIHdhbnRlZCB0bworICAgICAgICBtYWtlIHRoZSBw
YXRjaCBhdmFpbGFibGUgYXMgc29vbiBhcyBwb3NzaWJsZS4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2Vi
R0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGVzdHJveUdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6c3RvcCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJHTFJlbmRlcmluZ0NvbnRleHQpOgorCiAyMDEy
LTEyLTEzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjEzNzQwNik6IE5vZGVUcmF2ZXJzYWwgY2hhbmdlcyBjYXVzaW5nIGxhcmdlIHJlbmRl
cmVyIGNyYXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMTEyNzFlZmM0NzZh
NmEwNTZhMjZmODViYmM0NmY4ODMzNWZiZDY5Ni4uMzNlMWZjZGQxNTY4NjAwNmRjNjExMTk5ODdi
NDFkOGY0OGJjMmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcApAQCAtOTgsMTIg
Kzk4LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENv
bnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICB9CiAjaWYgRU5BQkxFKFdFQkdM
KQogICAgIGVsc2UgaWYgKHJlc3VsdC0+aXMzZCgpKSB7Ci0gICAgICAgIC8vIDNEIGNhbnZhcyBj
b250ZXh0cyBjYW4gaG9sZCBvbiB0byBsb3RzIG9mIEdQVSByZXNvdXJjZXMsIGFuZCB3ZSB3YW50
IHRvIHRha2UgYW4KLSAgICAgICAgLy8gb3Bwb3J0dW5pdHkgdG8gZ2V0IHJpZCBvZiB0aGVtIGFz
IHNvb24gYXMgcG9zc2libGUgd2hlbiB3ZSBuYXZpZ2F0ZSBhd2F5IGZyb20gcGFnZXMgdXNpbmcK
LSAgICAgICAgLy8gdGhlbS4KLSAgICAgICAgVjhQZXJJc29sYXRlRGF0YSogcGVySXNvbGF0ZURh
dGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAg
cGVySXNvbGF0ZURhdGEtPnNldFNob3VsZENvbGxlY3RHYXJiYWdlU29vbigpOwotCiAgICAgICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFJlc3VsdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Kj4ocmVzdWx0KSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRl
KCkpOwogICAgICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjYW52YXNBZ2VudEVu
YWJsZWQoaW1wLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQodjg6OkNvbnRleHQ6OkdldEN1cnJlbnQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCBkZTJlMjJlMDg4ODg2MjNkMTdmNDViZDg5ZGNhODU2NzZhMWRjMTUw
Li5iZWQ3MDA5YWFiYjFiMWVjY2U0YjE2MTJjOTNlMDQzMzE1OWFmNTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAg
LTQ0NCw2ICs0NDQsNyBAQCBQYXNzT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1lbgogV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqIHBhc3NlZENh
bnZhcywgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0KHBhc3NlZENh
bnZhcykKKyAgICAsIEFjdGl2ZURPTU9iamVjdChwYXNzZWRDYW52YXMtPmRvY3VtZW50KCksIHRo
aXMpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZHJhd2luZ0J1ZmZlcigwKQog
ICAgICwgbV9kaXNwYXRjaENvbnRleHRMb3N0RXZlbnRUaW1lcih0aGlzLCAmV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpkaXNwYXRjaENvbnRleHRMb3N0RXZlbnQpCkBAIC02MDYsMTEgKzYwNywyNCBA
QCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmluZ0NvbnRleHQoKQogICAgIG1f
YmxhY2tUZXh0dXJlQ3ViZU1hcCA9IDA7CiAKICAgICBkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3Rz
KCk7Ci0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG51bGxwdHIpOwotICAg
IG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2sobnVsbHB0cik7CisgICAgZGVzdHJv
eUdyYXBoaWNzQ29udGV4dDNEKCk7CiAgICAgbV9jb250ZXh0R3JvdXAtPnJlbW92ZUNvbnRleHQo
dGhpcyk7CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXN0cm95R3JhcGhpY3ND
b250ZXh0M0QoKQoreworICAgIC8vIFRoZSBkcmF3aW5nIGJ1ZmZlciBob2xkcyBhIGNvbnRleHQg
cmVmZXJlbmNlLiBJdCBtdXN0IGFsc28gYmUgZGVzdHJveWVkCisgICAgLy8gaW4gb3JkZXIgZm9y
IHRoZSBjb250ZXh0IHRvIGJlIHJlbGVhc2VkCisgICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikKKyAg
ICAgICAgbV9kcmF3aW5nQnVmZmVyLmNsZWFyKCk7CisKKyAgICBpZiAobV9jb250ZXh0KSB7Cisg
ICAgICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhudWxscHRyKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhudWxscHRyKTsKKyAgICAgICAg
bV9jb250ZXh0LmNsZWFyKCk7CisgICAgfQorfQorCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcp
CkBAIC00NTc1LDYgKzQ1ODksMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFj
aEFuZFJlbW92ZUFsbE9iamVjdHMoKQogICAgIH0KIH0KIAordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnN0b3AoKQoreworICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7CisgICAgICAgIGZv
cmNlTG9zdENvbnRleHQoU3ludGhldGljTG9zdENvbnRleHQpOworCisgICAgICAgIC8vIFdpbGwg
dGhpcyBjYXVzZSBhbnl0aGluZyBlbHNlIHRvIHBhbmljIGFuZCBkaWU/CisgICAgICAgIGRlc3Ry
b3lHcmFwaGljc0NvbnRleHQzRCgpOworICAgIH0KK30KKwogV2ViR0xHZXRJbmZvIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0Qm9vbGVhblBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSkKIHsKICAg
ICBHQzNEYm9vbGVhbiB2YWx1ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDdkZGZjMmNkNjVlZjAxYzAyNTgyNzM0
YjM2ZWQyN2ZhOTk3ZmZmZWEuLmRkMTRmYmU5ZmY2MzUzMzM0MzA0NzQ3N2UyZThjZmQ2OTFlM2Rk
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYkdMUmVuZGVyaW5nQ29udGV4
dF9oCiAjZGVmaW5lIFdlYkdMUmVuZGVyaW5nQ29udGV4dF9oCiAKKyNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiRHJhd2luZ0J1ZmZlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCkBAIC03
NSw3ICs3Niw3IEBAIGNsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM7CiAKIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dCA6IHB1Ymxp
YyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKK2NsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dCA6
IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IGNy
ZWF0ZShIVE1MQ2FudmFzRWxlbWVudCosIFdlYkdMQ29udGV4dEF0dHJpYnV0ZXMqKTsKICAgICB2
aXJ0dWFsIH5XZWJHTFJlbmRlcmluZ0NvbnRleHQoKTsKQEAgLTMxNyw2ICszMTgsOSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdW5zaWduZWQgZ2V0TWF4VmVydGV4QXR0cmlicygpIGNvbnN0IHsgcmV0
dXJuIG1fbWF4VmVydGV4QXR0cmliczsgfQogCisgICAgLy8gRG9jdW1lbnQgbm90aWZpY2F0aW9u
CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKwogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBXZWJHTEZyYW1lYnVmZmVyOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTE9iamVjdDsKQEAgLTMz
NCw2ICszMzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDb250ZXh0T2JqZWN0KFdlYkdMQ29u
dGV4dE9iamVjdCopOwogICAgIHZvaWQgZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpOwogCisg
ICAgdm9pZCBkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKTsKICAgICB2b2lkIG1hcmtDb250ZXh0
Q2hhbmdlZCgpOwogICAgIHZvaWQgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGJvb2wgY2hhbmdl
ZCkKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179556</attachid>
            <date>2012-12-14 16:46:34 -0800</date>
            <delta_ts>2012-12-17 12:04:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104733-20121214164354.patch</filename>
            <type>text/plain</type>
            <size>6230</size>
            <attacher name="Brandon Jones">bajones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3Nzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAK
aW5kZXggMTEyNzFlZmM0NzZhNmEwNTZhMjZmODViYmM0NmY4ODMzNWZiZDY5Ni4uMzNlMWZjZGQx
NTY4NjAwNmRjNjExMTk5ODdiNDFkOGY0OGJjMmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtOTgsMTIgKzk4LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICB9
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGVsc2UgaWYgKHJlc3VsdC0+aXMzZCgpKSB7Ci0gICAg
ICAgIC8vIDNEIGNhbnZhcyBjb250ZXh0cyBjYW4gaG9sZCBvbiB0byBsb3RzIG9mIEdQVSByZXNv
dXJjZXMsIGFuZCB3ZSB3YW50IHRvIHRha2UgYW4KLSAgICAgICAgLy8gb3Bwb3J0dW5pdHkgdG8g
Z2V0IHJpZCBvZiB0aGVtIGFzIHNvb24gYXMgcG9zc2libGUgd2hlbiB3ZSBuYXZpZ2F0ZSBhd2F5
IGZyb20gcGFnZXMgdXNpbmcKLSAgICAgICAgLy8gdGhlbS4KLSAgICAgICAgVjhQZXJJc29sYXRl
RGF0YSogcGVySXNvbGF0ZURhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLSAgICAgICAgcGVySXNvbGF0ZURhdGEtPnNldFNob3VsZENvbGxlY3RHYXJiYWdl
U29vbigpOwotCiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFJlc3VsdCA9IHRvVjgo
c3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ocmVzdWx0KSwgYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjYW52YXNBZ2VudEVuYWJsZWQoaW1wLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQodjg6OkNv
bnRleHQ6OkdldEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkZTJlMjJlMDg4ODg2MjNkMTdmNDVi
ZDg5ZGNhODU2NzZhMWRjMTUwLi4yNmFiZWNjZjA3MTY4NGMwMWU1N2JhODQxYTQ2ZWU2ODVkMzVj
MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTQ0NCw2ICs0NDQsNyBAQCBQYXNzT3duUHRyPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1l
bgogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZh
c0VsZW1lbnQqIHBhc3NlZENhbnZhcywgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0KHBhc3NlZENhbnZhcykKKyAgICAsIEFjdGl2ZURPTU9iamVjdChwYXNzZWRDYW52
YXMtPmRvY3VtZW50KCksIHRoaXMpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1f
ZHJhd2luZ0J1ZmZlcigwKQogICAgICwgbV9kaXNwYXRjaENvbnRleHRMb3N0RXZlbnRUaW1lcih0
aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNwYXRjaENvbnRleHRMb3N0RXZlbnQpCkBA
IC02MDYsMTEgKzYwNywyNCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmlu
Z0NvbnRleHQoKQogICAgIG1fYmxhY2tUZXh0dXJlQ3ViZU1hcCA9IDA7CiAKICAgICBkZXRhY2hB
bmRSZW1vdmVBbGxPYmplY3RzKCk7Ci0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxi
YWNrKG51bGxwdHIpOwotICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2sobnVs
bHB0cik7CisgICAgZGVzdHJveUdyYXBoaWNzQ29udGV4dDNEKCk7CiAgICAgbV9jb250ZXh0R3Jv
dXAtPnJlbW92ZUNvbnRleHQodGhpcyk7CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKQoreworICAgIC8vIFRoZSBkcmF3aW5nIGJ1ZmZl
ciBob2xkcyBhIGNvbnRleHQgcmVmZXJlbmNlLiBJdCBtdXN0IGFsc28gYmUgZGVzdHJveWVkCisg
ICAgLy8gaW4gb3JkZXIgZm9yIHRoZSBjb250ZXh0IHRvIGJlIHJlbGVhc2VkCisgICAgaWYgKG1f
ZHJhd2luZ0J1ZmZlcikKKyAgICAgICAgbV9kcmF3aW5nQnVmZmVyLmNsZWFyKCk7CisKKyAgICBp
ZiAobV9jb250ZXh0KSB7CisgICAgICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFj
ayhudWxscHRyKTsKKyAgICAgICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhu
dWxscHRyKTsKKyAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7CisgICAgfQorfQorCiB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICBpZiAobV9m
cmFtZWJ1ZmZlckJpbmRpbmcpCkBAIC00NTc1LDYgKzQ1ODksMTQgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMoKQogICAgIH0KIH0KIAordm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0b3AoKQoreworICAgIGlmICghaXNDb250ZXh0TG9z
dCgpKSB7CisgICAgICAgIGZvcmNlTG9zdENvbnRleHQoU3ludGhldGljTG9zdENvbnRleHQpOwor
ICAgICAgICBkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB9Cit9CisKIFdlYkdMR2V0
SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJvb2xlYW5QYXJhbWV0ZXIoR0MzRGVudW0g
cG5hbWUpCiB7CiAgICAgR0MzRGJvb2xlYW4gdmFsdWUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA3ZGRmYzJjZDY1
ZWYwMWMwMjU4MjczNGIzNmVkMjdmYTk5N2ZmZmVhLi5kOGRlOWEzZjY4NTg1ZDAwZTM5ZGExMjQ0
N2M0ZWM0ZDdjOGI4NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRfaAogI2RlZmluZSBXZWJHTFJlbmRlcmluZ0NvbnRleHRfaAogCisjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgpAQCAtNzUsNyArNzYsNyBAQCBjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CitjbGFzcyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PiBjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQqLCBXZWJHTENvbnRleHRBdHRyaWJ1
dGVzKik7CiAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7CkBAIC0zMTcsNiAr
MzE4LDkgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIGdldE1heFZlcnRleEF0dHJpYnMo
KSBjb25zdCB7IHJldHVybiBtX21heFZlcnRleEF0dHJpYnM7IH0KIAorICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBub3RpZmljYXRpb25zCisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKwogICBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogICAgIGZyaWVuZCBjbGFz
cyBXZWJHTE9iamVjdDsKQEAgLTMzNCw2ICszMzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRD
b250ZXh0T2JqZWN0KFdlYkdMQ29udGV4dE9iamVjdCopOwogICAgIHZvaWQgZGV0YWNoQW5kUmVt
b3ZlQWxsT2JqZWN0cygpOwogCisgICAgdm9pZCBkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKTsK
ICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIHZvaWQgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGJvb2wgY2hhbmdlZCkKICAgICB7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggYTY5YjhjOTY0YmM4MDQ4MjMwNjBlNzg5MGM4YmY3ZTMzZWNmZjNhNS4u
YzFhYjcxMmMxNzNhYTg0NWY3OTE4ZjgwMDcwY2UzN2I1ODViOWViMyAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEyLTE0ICBCcmFu
ZG9uIEpvbmVzICA8YmFqb25lc0Bnb29nbGUuY29tPgorCisgICAgICAgIE1ha2UgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0IGluaGVyaXQgZnJvbSBBY3RpdmVET01PYmplY3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDczMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gQWN0aXZlRE9NT2JqZWN0Ojpz
dG9wIGlzIGNhbGxlZCBvbiB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHRoZQorICAgICAgICBE
cmF3aW5nQnVmZmVyIGFuZCBHcmFwaGljc0NvbnRleHQzRCBpbnN0YW5jZXMgYXJlIGZvcmNpYmx5
IHJlbGVhc2VkIGluCisgICAgICAgIG9yZGVyIHRvIGtlZXAgR1BVIG1lbW9yeSB1dGlsaXphdGlv
biB0byBhIG1pbmltdW0KKworICAgICAgICBObyB0ZXN0cyB5ZXQsIGFzIHRoaXMgaXNzdWUgaXMg
YWZmZWN0aW5nIG90aGVyIGFyZWFzIGFuZCBJIHdhbnRlZCB0bworICAgICAgICBtYWtlIHRoZSBw
YXRjaCBhdmFpbGFibGUgYXMgc29vbiBhcyBwb3NzaWJsZS4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayk6IFJlbW92ZWQgdW5u
ZWNlc3NhcnkgR0MgaGludGluZworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dCk6IEluaXRpYWxpemUgQWN0aXZlRE9NT2JqZWN0CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmluZ0NvbnRleHQp
OiBwcm90ZWN0IGFnYWluc3QgcmVsZWFzaW5nIG1fY29udGV4dCB0d2ljZQorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QpOiBG
cmVlIEdQVSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIFdlYkdMIGNvbnRleHQKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6c3RvcCk6IFNpZ25hbCBmcm9tIERPTSB0aGF0
IGNvbnRleHQgaXMgdG8gYmUgc2h1dCBkb3duCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Lmg6CisKIDIwMTItMTItMTMgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJs
YW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkZWQgbWFudWFsIHRlc3QgZm9yIGNhbnZh
cyBzZXRGb250IHNwZWVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179777</attachid>
            <date>2012-12-17 12:04:33 -0800</date>
            <delta_ts>2012-12-19 14:50:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104733-20121217120150.patch</filename>
            <type>text/plain</type>
            <size>6255</size>
            <attacher name="Brandon Jones">bajones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAK
aW5kZXggMTEyNzFlZmM0NzZhNmEwNTZhMjZmODViYmM0NmY4ODMzNWZiZDY5Ni4uMzNlMWZjZGQx
NTY4NjAwNmRjNjExMTk5ODdiNDFkOGY0OGJjMmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtOTgsMTIgKzk4LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICB9
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGVsc2UgaWYgKHJlc3VsdC0+aXMzZCgpKSB7Ci0gICAg
ICAgIC8vIDNEIGNhbnZhcyBjb250ZXh0cyBjYW4gaG9sZCBvbiB0byBsb3RzIG9mIEdQVSByZXNv
dXJjZXMsIGFuZCB3ZSB3YW50IHRvIHRha2UgYW4KLSAgICAgICAgLy8gb3Bwb3J0dW5pdHkgdG8g
Z2V0IHJpZCBvZiB0aGVtIGFzIHNvb24gYXMgcG9zc2libGUgd2hlbiB3ZSBuYXZpZ2F0ZSBhd2F5
IGZyb20gcGFnZXMgdXNpbmcKLSAgICAgICAgLy8gdGhlbS4KLSAgICAgICAgVjhQZXJJc29sYXRl
RGF0YSogcGVySXNvbGF0ZURhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLSAgICAgICAgcGVySXNvbGF0ZURhdGEtPnNldFNob3VsZENvbGxlY3RHYXJiYWdl
U29vbigpOwotCiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFJlc3VsdCA9IHRvVjgo
c3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ocmVzdWx0KSwgYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjYW52YXNBZ2VudEVuYWJsZWQoaW1wLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQodjg6OkNv
bnRleHQ6OkdldEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkZTJlMjJlMDg4ODg2MjNkMTdmNDVi
ZDg5ZGNhODU2NzZhMWRjMTUwLi5lZTZjNTYwOWU3YTEzMjRlN2ViYzA2YmY4YWVjN2Q4ZmI2MDhm
ODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTQ0NCw2ICs0NDQsNyBAQCBQYXNzT3duUHRyPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1l
bgogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZh
c0VsZW1lbnQqIHBhc3NlZENhbnZhcywgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0KHBhc3NlZENhbnZhcykKKyAgICAsIEFjdGl2ZURPTU9iamVjdChwYXNzZWRDYW52
YXMtPmRvY3VtZW50KCksIHRoaXMpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1f
ZHJhd2luZ0J1ZmZlcigwKQogICAgICwgbV9kaXNwYXRjaENvbnRleHRMb3N0RXZlbnRUaW1lcih0
aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNwYXRjaENvbnRleHRMb3N0RXZlbnQpCkBA
IC02MDYsMTEgKzYwNywyNCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmlu
Z0NvbnRleHQoKQogICAgIG1fYmxhY2tUZXh0dXJlQ3ViZU1hcCA9IDA7CiAKICAgICBkZXRhY2hB
bmRSZW1vdmVBbGxPYmplY3RzKCk7Ci0gICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxi
YWNrKG51bGxwdHIpOwotICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2sobnVs
bHB0cik7CisgICAgZGVzdHJveUdyYXBoaWNzQ29udGV4dDNEKCk7CiAgICAgbV9jb250ZXh0R3Jv
dXAtPnJlbW92ZUNvbnRleHQodGhpcyk7CiB9CiAKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKQoreworICAgIC8vIFRoZSBkcmF3aW5nIGJ1ZmZl
ciBob2xkcyBhIGNvbnRleHQgcmVmZXJlbmNlLiBJdCBtdXN0IGFsc28gYmUgZGVzdHJveWVkCisg
ICAgLy8gaW4gb3JkZXIgZm9yIHRoZSBjb250ZXh0IHRvIGJlIHJlbGVhc2VkLgorICAgIGlmICht
X2RyYXdpbmdCdWZmZXIpCisgICAgICAgIG1fZHJhd2luZ0J1ZmZlci5jbGVhcigpOworCisgICAg
aWYgKG1fY29udGV4dCkgeworICAgICAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0Q2FsbGJh
Y2sobnVsbHB0cik7CisgICAgICAgIG1fY29udGV4dC0+c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2so
bnVsbHB0cik7CisgICAgICAgIG1fY29udGV4dC5jbGVhcigpOworICAgIH0KK30KKwogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7CiAgICAgaWYgKG1f
ZnJhbWVidWZmZXJCaW5kaW5nKQpAQCAtNDU3NSw2ICs0NTg5LDE0IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCkKICAgICB9CiB9CiAKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdG9wKCkKK3sKKyAgICBpZiAoIWlzQ29udGV4dExv
c3QoKSkgeworICAgICAgICBmb3JjZUxvc3RDb250ZXh0KFN5bnRoZXRpY0xvc3RDb250ZXh0KTsK
KyAgICAgICAgZGVzdHJveUdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgfQorfQorCiBXZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29sZWFuUGFyYW1ldGVyKEdDM0RlbnVt
IHBuYW1lKQogewogICAgIEdDM0Rib29sZWFuIHZhbHVlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggN2RkZmMyY2Q2
NWVmMDFjMDI1ODI3MzRiMzZlZDI3ZmE5OTdmZmZlYS4uZDhkZTlhM2Y2ODU4NWQwMGUzOWRhMTI0
NDdjNGVjNGQ3YzhiODRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0X2gKICNkZWZpbmUgV2ViR0xSZW5kZXJpbmdDb250ZXh0X2gKIAorI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaCIKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKQEAgLTc1LDcgKzc2LDcgQEAgY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
UzsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgV2ViR0xSZW5kZXJpbmdD
b250ZXh0IDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgeworY2xhc3MgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0IDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiwgV2ViR0xDb250ZXh0QXR0cmli
dXRlcyopOwogICAgIHZpcnR1YWwgfldlYkdMUmVuZGVyaW5nQ29udGV4dCgpOwpAQCAtMzE3LDYg
KzMxOCw5IEBAIHB1YmxpYzoKICAgICAKICAgICB1bnNpZ25lZCBnZXRNYXhWZXJ0ZXhBdHRyaWJz
KCkgY29uc3QgeyByZXR1cm4gbV9tYXhWZXJ0ZXhBdHRyaWJzOyB9CiAKKyAgICAvLyBBY3RpdmVE
T01PYmplY3Qgbm90aWZpY2F0aW9ucworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisKICAgcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKICAgICBmcmllbmQgY2xh
c3MgV2ViR0xPYmplY3Q7CkBAIC0zMzQsNiArMzM4LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
Q29udGV4dE9iamVjdChXZWJHTENvbnRleHRPYmplY3QqKTsKICAgICB2b2lkIGRldGFjaEFuZFJl
bW92ZUFsbE9iamVjdHMoKTsKIAorICAgIHZvaWQgZGVzdHJveUdyYXBoaWNzQ29udGV4dDNEKCk7
CiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICB2b2lkIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChib29sIGNoYW5nZWQpCiAgICAgewpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IDBjNGE0NDdjODBmYWZmZjMxZGE1NTE4MWU5MTMzNzU0YjA1YzQyODcu
LjY2YTRkN2U3OGQ0MjJmNDllM2E0OGZmOTg1NjI5NDM1MmMyNDVhYTAgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0xMi0xNyAgQnJh
bmRvbiBKb25lcyAgPGJham9uZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBNYWtlIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCBpbmhlcml0IGZyb20gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3MzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgV2hlbiBBY3RpdmVET01PYmplY3Q6OnN0
b3AgaXMgY2FsbGVkIG9uIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdGhlCisgICAgICAgIERy
YXdpbmdCdWZmZXIgYW5kIEdyYXBoaWNzQ29udGV4dDNEIGluc3RhbmNlcyBhcmUgZm9yY2libHkg
cmVsZWFzZWQgaW4KKyAgICAgICAgb3JkZXIgdG8ga2VlcCBHUFUgbWVtb3J5IHV0aWxpemF0aW9u
IHRvIGEgbWluaW11bQorCisgICAgICAgIE5vIHRlc3RzIHlldCwgYXMgdGhpcyBpc3N1ZSBpcyBh
ZmZlY3Rpbmcgb3RoZXIgYXJlYXMgYW5kIEkgd2FudGVkIHRvCisgICAgICAgIG1ha2UgdGhlIHBh
dGNoIGF2YWlsYWJsZSBhcyBzb29uIGFzIHBvc3NpYmxlLgorCisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKTogUmVtb3ZlZCB1bm5l
Y2Vzc2FyeSBHQyBoaW50aW5nCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0KTogSW5pdGlhbGl6ZSBBY3RpdmVET01PYmplY3QKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVuZGVyaW5nQ29udGV4dCk6
IHByb3RlY3QgYWdhaW5zdCByZWxlYXNpbmcgbV9jb250ZXh0IHR3aWNlCisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlc3Ryb3lHcmFwaGljc0NvbnRleHQzRCk6IEZy
ZWUgR1BVIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggV2ViR0wgY29udGV4dAorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdG9wKTogU2lnbmFsIGZyb20gRE9NIHRoYXQg
Y29udGV4dCBpcyB0byBiZSBzaHV0IGRvd24KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaDoKKwogMjAxMi0xMi0xNiAgQ2hhbmdTZW9rIE9oICA8c2hpdmFtaWRv
d0BnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS11bQUNdIEJ1aWxkIGZhaWx1cmUgd2l0aCBhbiBv
cHRpb24gLS13aXRoLWFjY2VsZXJhdGlvbi1iYWNrZW5kPWNsdXR0ZXIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180229</attachid>
            <date>2012-12-19 14:50:27 -0800</date>
            <delta_ts>2013-01-04 20:34:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104733-20121219144744.patch</filename>
            <type>text/plain</type>
            <size>19983</size>
            <attacher name="Brandon Jones">bajones</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAK
aW5kZXggMTEyNzFlZmM0NzZhNmEwNTZhMjZmODViYmM0NmY4ODMzNWZiZDY5Ni4uMzNlMWZjZGQx
NTY4NjAwNmRjNjExMTk5ODdiNDFkOGY0OGJjMmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtOTgsMTIgKzk4LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICB9
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGVsc2UgaWYgKHJlc3VsdC0+aXMzZCgpKSB7Ci0gICAg
ICAgIC8vIDNEIGNhbnZhcyBjb250ZXh0cyBjYW4gaG9sZCBvbiB0byBsb3RzIG9mIEdQVSByZXNv
dXJjZXMsIGFuZCB3ZSB3YW50IHRvIHRha2UgYW4KLSAgICAgICAgLy8gb3Bwb3J0dW5pdHkgdG8g
Z2V0IHJpZCBvZiB0aGVtIGFzIHNvb24gYXMgcG9zc2libGUgd2hlbiB3ZSBuYXZpZ2F0ZSBhd2F5
IGZyb20gcGFnZXMgdXNpbmcKLSAgICAgICAgLy8gdGhlbS4KLSAgICAgICAgVjhQZXJJc29sYXRl
RGF0YSogcGVySXNvbGF0ZURhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLSAgICAgICAgcGVySXNvbGF0ZURhdGEtPnNldFNob3VsZENvbGxlY3RHYXJiYWdl
U29vbigpOwotCiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFJlc3VsdCA9IHRvVjgo
c3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ocmVzdWx0KSwgYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjYW52YXNBZ2VudEVuYWJsZWQoaW1wLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQodjg6OkNv
bnRleHQ6OkdldEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkZTJlMjJlMDg4ODg2MjNkMTdmNDVi
ZDg5ZGNhODU2NzZhMWRjMTUwLi4yYmRhZDA2NjgxMjIzN2Y3MDdmMzc5Y2U5YTA1ZjRhMzVlY2Vh
YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTQ0NCw2ICs0NDQsNyBAQCBQYXNzT3duUHRyPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1l
bgogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZh
c0VsZW1lbnQqIHBhc3NlZENhbnZhcywgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0KHBhc3NlZENhbnZhcykKKyAgICAsIEFjdGl2ZURPTU9iamVjdChwYXNzZWRDYW52
YXMtPmRvY3VtZW50KCksIHRoaXMpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1f
ZHJhd2luZ0J1ZmZlcigwKQogICAgICwgbV9kaXNwYXRjaENvbnRleHRMb3N0RXZlbnRUaW1lcih0
aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNwYXRjaENvbnRleHRMb3N0RXZlbnQpCkBA
IC00ODAsNiArNDgxLDcgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQoSFRNTENhbnZhc0VsZW1lbnQqIHBhc3NlZENhbnZhcywgUGEKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojppbml0aWFsaXplTmV3Q29udGV4dCgpCiB7CiAgICAgQVNTRVJUKCFtX2Nv
bnRleHRMb3N0KTsKKyAgICBBU1NFUlQoIW1fY29udGV4dCk7CiAgICAgbV9uZWVkc1VwZGF0ZSA9
IHRydWU7CiAgICAgbV9tYXJrZWRDYW52YXNEaXJ0eSA9IGZhbHNlOwogICAgIG1fYWN0aXZlVGV4
dHVyZVVuaXQgPSAwOwpAQCAtNjA2LDE3ICs2MDgsMzEgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCkKICAgICBtX2JsYWNrVGV4dHVyZUN1YmVNYXAgPSAw
OwogCiAgICAgZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpOwotICAgIG1fY29udGV4dC0+c2V0
Q29udGV4dExvc3RDYWxsYmFjayhudWxscHRyKTsKLSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVz
c2FnZUNhbGxiYWNrKG51bGxwdHIpOworICAgIGRlc3Ryb3lHcmFwaGljc0NvbnRleHQzRCgpOwog
ICAgIG1fY29udGV4dEdyb3VwLT5yZW1vdmVDb250ZXh0KHRoaXMpOwogfQogCit2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6ZGVzdHJveUdyYXBoaWNzQ29udGV4dDNEKCkKK3sKKyAgICAvLyBU
aGUgZHJhd2luZyBidWZmZXIgaG9sZHMgYSBjb250ZXh0IHJlZmVyZW5jZS4gSXQgbXVzdCBhbHNv
IGJlIGRlc3Ryb3llZAorICAgIC8vIGluIG9yZGVyIGZvciB0aGUgY29udGV4dCB0byBiZSByZWxl
YXNlZC4KKyAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQorICAgICAgICBtX2RyYXdpbmdCdWZmZXIt
PmNsZWFyKCk7CisKKyAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgIG1fY29udGV4dC0+c2V0
Q29udGV4dExvc3RDYWxsYmFjayhudWxscHRyKTsKKyAgICAgICAgbV9jb250ZXh0LT5zZXRFcnJv
ck1lc3NhZ2VDYWxsYmFjayhudWxscHRyKTsKKyAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7Cisg
ICAgfQorfQorCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bWFya0NvbnRleHRDaGFuZ2Vk
KCkKIHsKICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgaWYgKG1fY29udGV4dCkK
KyAgICAgICAgbV9jb250ZXh0LT5tYXJrQ29udGV4dENoYW5nZWQoKTsKIAogICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXIpCiAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+bWFya0NvbnRlbnRzQ2hhbmdl
ZCgpOwpAQCAtNjQwLDcgKzY1Niw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjptYXJr
Q29udGV4dENoYW5nZWQoKQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJJZkNv
bXBvc2l0ZWQoR0MzRGJpdGZpZWxkIG1hc2spCiB7Ci0gICAgaWYgKGlzQ29udGV4dExvc3QoKSkg
CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKCFtX2NvbnRleHQtPmxheWVyQ29tcG9zaXRlZCgpIHx8IG1fbGF5ZXJDbGVhcmVkCkBAIC02
OTQsNiArNzEwLDkgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFySWZDb21wb3Np
dGVkKEdDM0RiaXRmaWVsZCBtYXNrKQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVz
dG9yZVN0YXRlQWZ0ZXJDbGVhcigpCiB7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgLy8gUmVzdG9yZSB0aGUgc3RhdGUgdGhhdCB0aGUgY29udGV4dCBz
ZXQuCiAgICAgaWYgKG1fc2Npc3NvckVuYWJsZWQpCiAgICAgICAgIG1fY29udGV4dC0+ZW5hYmxl
KEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpOwpAQCAtNzA5LDExICs3MjgsMTUgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVTdGF0ZUFmdGVyQ2xlYXIoKQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bWFya0xheWVyQ29tcG9zaXRlZCgpCiB7Ci0gICAg
bV9jb250ZXh0LT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CisgICAgaWYgKG1fY29udGV4dCkKKyAg
ICAgICAgbV9jb250ZXh0LT5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCiB7CisgICAg
aWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gVW50aWwgdGhl
IGNhbnZhcyBpcyB3cml0dGVuIHRvIGJ5IHRoZSBhcHBsaWNhdGlvbiwgdGhlIGNsZWFyIHRoYXQK
ICAgICAvLyBoYXBwZW5lZCBhZnRlciBpdCB3YXMgY29tcG9zaXRlZCBzaG91bGQgYmUgaWdub3Jl
ZCBieSB0aGUgY29tcG9zaXRvci4KICAgICBpZiAobV9jb250ZXh0LT5sYXllckNvbXBvc2l0ZWQo
KSAmJiAhbV9hdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlcikgewpAQCAtNzQ5LDYgKzc3
MiwxMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMoKQogCiBQYXNzUmVmUHRyPEltYWdlRGF0YT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CisgICAgLy8gVE9ETyhiYWpv
bmVzKTogVmVyaWZ5IHRoYXQgdGhpcyBpcyBhIHNhZmUgcmV0dXJuIHZhbHVlCisgICAgaWYgKGlz
Q29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBjbGVhcklmQ29tcG9zaXRl
ZCgpOwogICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCiAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+
Y29tbWl0KCk7CkBAIC03NjYsNiArNzkzLDkgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
CiB7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8g
VGhpcyBpcyBhbiBhcHByb3hpbWF0aW9uIGJlY2F1c2UgYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
IGxldmVsIHdlIGRvbid0CiAgICAgLy8ga25vdyBpZiB0aGUgdW5kZXJseWluZyBGQk8gdXNlcyB0
ZXh0dXJlcyBvciByZW5kZXJidWZmZXJzLgogICAgIEdDM0RpbnQgbWF4U2l6ZSA9IHN0ZDo6bWlu
KG1fbWF4VGV4dHVyZVNpemUsIG1fbWF4UmVuZGVyYnVmZmVyU2l6ZSk7CkBAIC04MDUsNyArODM1
LDEwIEBAIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdpbmdCdWZmZXJXaWR0aCgpIGNv
bnN0CiAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikKICAgICAgICAgcmV0dXJuIG1fZHJhd2luZ0J1
ZmZlci0+c2l6ZSgpLndpZHRoKCk7CiAKLSAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlcm5h
bEZyYW1lYnVmZmVyU2l6ZSgpLndpZHRoKCk7CisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS53aWR0aCgpOwor
CisgICAgcmV0dXJuIDA7CiB9CiAKIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdpbmdC
dWZmZXJIZWlnaHQoKSBjb25zdApAQCAtODEzLDcgKzg0NiwxMCBAQCBpbnQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpkcmF3aW5nQnVmZmVySGVpZ2h0KCkgY29uc3QKICAgICBpZiAobV9kcmF3aW5n
QnVmZmVyKQogICAgICAgICByZXR1cm4gbV9kcmF3aW5nQnVmZmVyLT5zaXplKCkuaGVpZ2h0KCk7
CiAKLSAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmhl
aWdodCgpOworICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIHJldHVybiBtX2NvbnRleHQtPmdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaGVpZ2h0KCk7CisKKyAgICByZXR1cm4gMDsKIH0K
IAogdW5zaWduZWQgaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2l6ZUluQnl0ZXMoR0MzRGVu
dW0gdHlwZSkKQEAgLTIzMjMsNyArMjM1OSw5IEBAIFBhc3NSZWZQdHI8V2ViR0xDb250ZXh0QXR0
cmlidXRlcz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRDb250ZXh0QXR0cmlidXRlcygpCiAK
IEdDM0RlbnVtIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXJyb3IoKQogewotICAgIHJldHVy
biBtX2NvbnRleHQtPmdldEVycm9yKCk7CisgICAgaWYgKG1fY29udGV4dCkKKyAgICAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTlRFWFRfTE9TVF9XRUJHTDsKIH0KIAogV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTI4NjQsMjYgKzI5
MDIsMjggQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyU291cmNlKFdl
YkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUKIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiB7CiAgICAgVmVjdG9yPFN0
cmluZz4gcmVzdWx0OwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9y
dHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190
ZXh0dXJlX2Zsb2F0Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBw
b3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikpCi0gICAgICAgIHJlc3VsdC5hcHBl
bmQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
KQotICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCi0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKTsKLSAgICByZXN1bHQuYXBwZW5kKCJX
RUJLSVRfV0VCR0xfbG9zZV9jb250ZXh0Iik7Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVTM1RDOjpzdXBwb3J0ZWQodGhpcykpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9X
RUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpOwotICAgIGlmIChXZWJHTERlcHRoVGV4dHVy
ZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkpKQotICAgICAgICByZXN1bHQuYXBwZW5k
KCJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIpOwotCi0gICAgaWYgKGFsbG93UHJpdmlsZWdl
ZEV4dGVuc2lvbnMoKSkgewotICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3NoYWRlcnMiKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpOworICAgIGlmIChtX2NvbnRleHQp
IHsKKyAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
T0VTX3RleHR1cmVfZmxvYXQiKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0
dXJlX2Zsb2F0Iik7CisgICAgICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3Vw
cG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7CisgICAgICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYyIpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX2VsZW1lbnRfaW5k
ZXhfdWludCIpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX2VsZW1lbnRfaW5kZXhf
dWludCIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfbG9zZV9jb250ZXh0
Iik7CisgICAgICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKHRo
aXMpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIik7CisgICAgICAgIGlmIChXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVk
KGdyYXBoaWNzQ29udGV4dDNEKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lU
X1dFQkdMX2RlcHRoX3RleHR1cmUiKTsKKworICAgICAgICBpZiAoYWxsb3dQcml2aWxlZ2VkRXh0
ZW5zaW9ucygpKSB7CisgICAgICAgICAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkKKyAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIik7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIik7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzE3NCw3ICszMjE0LDcgQEAgR0MzRGJv
b2xlYW4gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc0J1ZmZlcihXZWJHTEJ1ZmZlciogYnVmZmVy
KQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNDb250ZXh0TG9zdCgpCiB7Ci0gICAg
cmV0dXJuIG1fY29udGV4dExvc3Q7CisgICAgcmV0dXJuIG1fY29udGV4dExvc3QgfHwgIW1fY29u
dGV4dDsKIH0KIAogR0MzRGJvb2xlYW4gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojppc0VuYWJsZWQo
R0MzRGVudW0gY2FwKQpAQCAtMzU3NSw2ICszNjE1LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRleEltYWdlMkRCYXNlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGUKIHsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5l
ZAogICAgIGVjID0gMDsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47
CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNQYXJhbWV0ZXJzKCJ0ZXhJbWFnZTJEIiwgTm90VGV4
U3ViSW1hZ2UyRCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgZm9ybWF0LCB0eXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIFdlYkdMVGV4dHVy
ZSogdGV4ID0gdmFsaWRhdGVUZXh0dXJlQmluZGluZygidGV4SW1hZ2UyRCIsIHRhcmdldCwgdHJ1
ZSk7CkBAIC0zNjEyLDYgKzM2NTQsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4
SW1hZ2UyREJhc2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZQogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkRJbXBsKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgSW1hZ2UqIGltYWdlLCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VIdG1sRG9t
U291cmNlIGRvbVNvdXJjZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkK
KyAgICAgICAgcmV0dXJuOwogICAgIGlmICghdmFsaWRhdGVTZXR0YWJsZVRleEZvcm1hdCgidGV4
SW1hZ2UyRCIsIGludGVybmFsZm9ybWF0KSkKICAgICAgICAgcmV0dXJuOwogICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhOwpAQCAtNDU0MSw2ICs0NTg1LDEwIEBAIFBsYXRmb3JtTGF5ZXIqIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBt
X2RyYXdpbmdCdWZmZXItPnBsYXRmb3JtTGF5ZXIoKTsKICNlbmRpZgogCisgICAgLy8gVE9ETyhi
YWpvbmVzKTogVmVyaWZ5IHRoYXQgdGhpcyBpcyBhIHNhZmUgcmV0dXJuIHZhbHVlCisgICAgaWYg
KCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybiAwOworCiAgICAgcmV0dXJuIG1fY29udGV4dC0+
cGxhdGZvcm1MYXllcigpOwogfQogI2VuZGlmCkBAIC00NTc1LDggKzQ2MjMsMTkgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMoKQogICAgIH0K
IH0KIAordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0b3AoKQoreworICAgIGlmICghaXND
b250ZXh0TG9zdCgpKSB7CisgICAgICAgIGZvcmNlTG9zdENvbnRleHQoU3ludGhldGljTG9zdENv
bnRleHQpOworICAgICAgICBkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB9Cit9CisK
Ky8vIFRPRE8oYmFqb25lcyk6IFdoYXQgdG8gZG8gaW4gdGhlIGNhc2Ugb2YgYSBsb3N0IGNvbnRl
eHQ/CiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29sZWFuUGFyYW1l
dGVyKEdDM0RlbnVtIHBuYW1lKQogeworICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oZmFsc2UpOwogICAgIEdDM0Rib29sZWFuIHZhbHVlID0gMDsK
ICAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCAmdmFsdWUpOwogICAgIHJldHVybiBX
ZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKQEAgLTQ1ODQsMTMgKzQ2NDMs
MTUgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Qm9vbGVhblBhcmFt
ZXRlcihHQzNEZW51bSBwbmFtZSkKIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0Qm9vbGVhbkFycmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogeworICAgIGJvb2wg
Ym9vbFZhbHVlWzRdID0ge2ZhbHNlfTsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKGJvb2xWYWx1ZSwgMCk7CiAgICAgaWYgKHBuYW1lICE9IEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9XUklURU1BU0spIHsKICAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygwLCAwKTsKICAgICB9CiAgICAgR0Mz
RGJvb2xlYW4gdmFsdWVbNF0gPSB7MH07CiAgICAgbV9jb250ZXh0LT5nZXRCb29sZWFudihwbmFt
ZSwgdmFsdWUpOwotICAgIGJvb2wgYm9vbFZhbHVlWzRdOwogICAgIGZvciAoaW50IGlpID0gMDsg
aWkgPCA0OyArK2lpKQogICAgICAgICBib29sVmFsdWVbaWldID0gc3RhdGljX2Nhc3Q8Ym9vbD4o
dmFsdWVbaWldKTsKICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKGJvb2xWYWx1ZSwgNCk7CkBAIC00
NTk5LDEyICs0NjYwLDE2IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEJvb2xlYW5BcnJheVBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSkKIFdlYkdMR2V0SW5mbyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEZsb2F0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogewog
ICAgIEdDM0RmbG9hdCB2YWx1ZSA9IDA7CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbyh2YWx1ZSk7CiAgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYo
cG5hbWUsICZ2YWx1ZSk7CiAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyh2YWx1ZSk7CiB9CiAKIFdl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEludFBhcmFtZXRlcihHQzNEZW51
bSBwbmFtZSkKIHsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKDApOwogICAgIEdDM0RpbnQgdmFsdWUgPSAwOwogICAgIG1fY29udGV4dC0+Z2V0
SW50ZWdlcnYocG5hbWUsICZ2YWx1ZSk7CiAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyh2YWx1ZSk7
CkBAIC00NjEyLDYgKzQ2NzcsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRJbnRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCiAKIFdlYkdMR2V0SW5mbyBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFVuc2lnbmVkSW50UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQog
eworICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
MHUpOwogICAgIEdDM0RpbnQgdmFsdWUgPSAwOwogICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYo
cG5hbWUsICZ2YWx1ZSk7CiAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KHZhbHVlKSk7CkBAIC00NjE5LDYgKzQ2ODYsOCBAQCBXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbnNpZ25lZEludFBhcmFtZXRlcihHQzNEZW51bSBwbmFt
ZSkKIAogV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xGbG9hdEFy
cmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogeworICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oRmxvYXQzMkFycmF5OjpjcmVhdGUoMCwgMCkp
OwogICAgIEdDM0RmbG9hdCB2YWx1ZVs0XSA9IHswfTsKICAgICBtX2NvbnRleHQtPmdldEZsb2F0
dihwbmFtZSwgdmFsdWUpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CkBAIC00NjQwLDYgKzQ3
MDksOCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRXZWJHTEZsb2F0
QXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCiAKIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUpCiB7
CisgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhJ
bnQzMkFycmF5OjpjcmVhdGUoMCwgMCkpOwogICAgIEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07CiAg
ICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOwogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IDA7CkBAIC00NjU5LDYgKzQ3MzAsOCBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGFuZGxlTlBPVFRleHR1cmVzKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgYm9vbCBwcmVwYXJlVG9EcmF3KQogeworICAgIGlmIChpc0NvbnRleHRM
b3N0KCkpCisgICAgICAgIHJldHVybjsKICAgICBib29sIHJlc2V0QWN0aXZlVW5pdCA9IGZhbHNl
OwogICAgIGZvciAodW5zaWduZWQgaWkgPSAwOyBpaSA8IG1fdGV4dHVyZVVuaXRzLnNpemUoKTsg
KytpaSkgewogICAgICAgICBpZiAoKG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmUyREJpbmRp
bmcgJiYgbV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZTJEQmluZGluZy0+bmVlZFRvVXNlQmxh
Y2tUZXh0dXJlKCkpCkBAIC00Njk0LDYgKzQ3NjcsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6aGFuZGxlTlBPVFRleHR1cmVzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBw
cgogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlRmFsbGJhY2tCbGFja1RleHR1
cmVzMXgxKCkKIHsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47CiAg
ICAgdW5zaWduZWQgY2hhciBibGFja1tdID0gezAsIDAsIDAsIDI1NX07CiAgICAgbV9ibGFja1Rl
eHR1cmUyRCA9IGNyZWF0ZVRleHR1cmUoKTsKICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2JsYWNrVGV4dHVyZTJELT5vYmplY3QoKSk7
CkBAIC00NzM4LDE0ICs0ODEzLDIyIEBAIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJv
dW5kRnJhbWVidWZmZXJXaWR0aCgpCiB7CiAgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nICYm
IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5vYmplY3QoKSkKICAgICAgICAgcmV0dXJuIG1fZnJhbWVi
dWZmZXJCaW5kaW5nLT5nZXRDb2xvckJ1ZmZlcldpZHRoKCk7Ci0gICAgcmV0dXJuIG1fZHJhd2lu
Z0J1ZmZlciA/IG1fZHJhd2luZ0J1ZmZlci0+c2l6ZSgpLndpZHRoKCkgOiBtX2NvbnRleHQtPmdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCkud2lkdGgoKTsKKyAgICBpZiAobV9kcmF3aW5nQnVm
ZmVyKQorICAgICAgICByZXR1cm4gbV9kcmF3aW5nQnVmZmVyLT5zaXplKCkud2lkdGgoKTsKKyAg
ICBpZiAobV9jb250ZXh0KQorICAgICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpLndpZHRoKCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIGludCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKQogewogICAgIGlmICht
X2ZyYW1lYnVmZmVyQmluZGluZyAmJiBtX2ZyYW1lYnVmZmVyQmluZGluZy0+b2JqZWN0KCkpCiAg
ICAgICAgIHJldHVybiBtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0Q29sb3JCdWZmZXJIZWlnaHQo
KTsKLSAgICByZXR1cm4gbV9kcmF3aW5nQnVmZmVyID8gbV9kcmF3aW5nQnVmZmVyLT5zaXplKCku
aGVpZ2h0KCkgOiBtX2NvbnRleHQtPmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaGVpZ2h0
KCk7CisgICAgaWYgKG1fZHJhd2luZ0J1ZmZlcikKKyAgICAgICAgcmV0dXJuIG1fZHJhd2luZ0J1
ZmZlci0+c2l6ZSgpLmhlaWdodCgpOworICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIHJldHVy
biBtX2NvbnRleHQtPmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaGVpZ2h0KCk7CisgICAg
cmV0dXJuIDA7CiB9CiAKIFdlYkdMVGV4dHVyZSogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxp
ZGF0ZVRleHR1cmVCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdGFy
Z2V0LCBib29sIHVzZVNpeEVudW1zRm9yQ3ViZU1hcCkKQEAgLTUwMTYsNiArNTA5OSw5IEBAIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleEZ1bmNEYXRhKGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgR0MzRGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBcnJheUJ1ZmZlclZpZXcqIHBpeGVscywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bGxEaXNwb3NpdGlvbiBkaXNwb3NpdGlv
bikKIHsKKyAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
ICAgICBpZiAoIXBpeGVscykgewogICAgICAgICBpZiAoZGlzcG9zaXRpb24gPT0gTnVsbEFsbG93
ZWQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1ODEsNyArNTY2Nyw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNwYXRjaENvbnRleHRMb3N0RXZlbnQoVGltZXI8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bWF5YmVSZXN0
b3JlQ29udGV4dChUaW1lcjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KikKIHsKICAgICBBU1NFUlQo
bV9jb250ZXh0TG9zdCk7Ci0gICAgaWYgKCFtX2NvbnRleHRMb3N0KQorICAgIGlmICghbV9jb250
ZXh0TG9zdCB8fCAhbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgcmVu
ZGVyaW5nIGNvbnRleHQgaXMgbm90IHJlc3RvcmVkIHVubGVzcyB0aGUgZGVmYXVsdCBiZWhhdmlv
ciBvZiB0aGUKQEAgLTU3MzgsNyArNTgyNCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpzeW50aGVzaXplR0xFcnJvcihHQzNEZW51bSBlcnJvciwgY29uc3QgY2hhciogZnVuY3RpCiAg
ICAgICBTdHJpbmcgc3RyID0gU3RyaW5nKCJXZWJHTDogIikgKyBHZXRFcnJvclN0cmluZyhlcnJv
cikgKyAgIjogIiArIFN0cmluZyhmdW5jdGlvbk5hbWUpICsgIjogIiArIFN0cmluZyhkZXNjcmlw
dGlvbik7CiAgICAgICBwcmludEdMRXJyb3JUb0NvbnNvbGUoc3RyKTsKICAgICB9Ci0gICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihlcnJvcik7CisgICAgaWYgKG1fY29udGV4dCkKKyAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihlcnJvcik7CiB9CiAKIApAQCAtNTc2
Niw2ICs1ODUzLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFwcGx5U3RlbmNpbFRl
c3QoKQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlT3JEaXNhYmxlKEdDM0Rl
bnVtIGNhcGFiaWxpdHksIGJvb2wgZW5hYmxlKQogeworICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChlbmFibGUpCiAgICAgICAgIG1fY29udGV4dC0+
ZW5hYmxlKGNhcGFiaWxpdHkpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggN2RkZmMyY2Q2NWVmMDFjMDI1
ODI3MzRiMzZlZDI3ZmE5OTdmZmZlYS4uZDhkZTlhM2Y2ODU4NWQwMGUzOWRhMTI0NDdjNGVjNGQ3
YzhiODRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViR0xSZW5kZXJpbmdD
b250ZXh0X2gKICNkZWZpbmUgV2ViR0xSZW5kZXJpbmdDb250ZXh0X2gKIAorI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
QEAgLTc1LDcgKzc2LDcgQEAgY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKIAogdHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0IDog
cHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgeworY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250
ZXh0IDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4
dD4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyopOwog
ICAgIHZpcnR1YWwgfldlYkdMUmVuZGVyaW5nQ29udGV4dCgpOwpAQCAtMzE3LDYgKzMxOCw5IEBA
IHB1YmxpYzoKICAgICAKICAgICB1bnNpZ25lZCBnZXRNYXhWZXJ0ZXhBdHRyaWJzKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXhWZXJ0ZXhBdHRyaWJzOyB9CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3Qg
bm90aWZpY2F0aW9ucworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisKICAgcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xP
YmplY3Q7CkBAIC0zMzQsNiArMzM4LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ29udGV4dE9i
amVjdChXZWJHTENvbnRleHRPYmplY3QqKTsKICAgICB2b2lkIGRldGFjaEFuZFJlbW92ZUFsbE9i
amVjdHMoKTsKIAorICAgIHZvaWQgZGVzdHJveUdyYXBoaWNzQ29udGV4dDNEKCk7CiAgICAgdm9p
ZCBtYXJrQ29udGV4dENoYW5nZWQoKTsKICAgICB2b2lkIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChib29sIGNoYW5nZWQpCiAgICAgewpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IDBjNGE0NDdjODBmYWZmZjMxZGE1NTE4MWU5MTMzNzU0YjA1YzQyODcuLjY2YTRkN2U3
OGQ0MjJmNDllM2E0OGZmOTg1NjI5NDM1MmMyNDVhYTAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0xMi0xNyAgQnJhbmRvbiBKb25l
cyAgPGJham9uZXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBNYWtlIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCBpbmhlcml0IGZyb20gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBE
ZWFuIEphY2tzb24uCisKKyAgICAgICAgV2hlbiBBY3RpdmVET01PYmplY3Q6OnN0b3AgaXMgY2Fs
bGVkIG9uIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdGhlCisgICAgICAgIERyYXdpbmdCdWZm
ZXIgYW5kIEdyYXBoaWNzQ29udGV4dDNEIGluc3RhbmNlcyBhcmUgZm9yY2libHkgcmVsZWFzZWQg
aW4KKyAgICAgICAgb3JkZXIgdG8ga2VlcCBHUFUgbWVtb3J5IHV0aWxpemF0aW9uIHRvIGEgbWlu
aW11bQorCisgICAgICAgIE5vIHRlc3RzIHlldCwgYXMgdGhpcyBpc3N1ZSBpcyBhZmZlY3Rpbmcg
b3RoZXIgYXJlYXMgYW5kIEkgd2FudGVkIHRvCisgICAgICAgIG1ha2UgdGhlIHBhdGNoIGF2YWls
YWJsZSBhcyBzb29uIGFzIHBvc3NpYmxlLgorCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKTogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBH
QyBoaW50aW5nCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0KTogSW5pdGlhbGl6ZSBBY3RpdmVET01PYmplY3QKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVuZGVyaW5nQ29udGV4dCk6IHByb3RlY3Qg
YWdhaW5zdCByZWxlYXNpbmcgbV9jb250ZXh0IHR3aWNlCisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmRlc3Ryb3lHcmFwaGljc0NvbnRleHQzRCk6IEZyZWUgR1BVIG1l
bW9yeSBhc3NvY2lhdGVkIHdpdGggV2ViR0wgY29udGV4dAorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpzdG9wKTogU2lnbmFsIGZyb20gRE9NIHRoYXQgY29udGV4dCBp
cyB0byBiZSBzaHV0IGRvd24KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaDoKKwogMjAxMi0xMi0xNiAgQ2hhbmdTZW9rIE9oICA8c2hpdmFtaWRvd0BnbWFpbC5j
b20+CiAKICAgICAgICAgW0dUS11bQUNdIEJ1aWxkIGZhaWx1cmUgd2l0aCBhbiBvcHRpb24gLS13
aXRoLWFjY2VsZXJhdGlvbi1iYWNrZW5kPWNsdXR0ZXIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181424</attachid>
            <date>2013-01-04 20:34:34 -0800</date>
            <delta_ts>2013-01-07 19:48:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104733-20130104203141.patch</filename>
            <type>text/plain</type>
            <size>11385</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAK
aW5kZXggYzkwMGVmMjZmMDlmZjM2YmViODcxZmE5OTljYmZhNjBiMGE1Mjc5YS4uNzM4Y2RiYmE4
MWJkMWE2MGE3NzBiYjNkNTZkNjZjNTNlZTUxMmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtOTcsMTIgKzk3LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICB9
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGVsc2UgaWYgKHJlc3VsdC0+aXMzZCgpKSB7Ci0gICAg
ICAgIC8vIDNEIGNhbnZhcyBjb250ZXh0cyBjYW4gaG9sZCBvbiB0byBsb3RzIG9mIEdQVSByZXNv
dXJjZXMsIGFuZCB3ZSB3YW50IHRvIHRha2UgYW4KLSAgICAgICAgLy8gb3Bwb3J0dW5pdHkgdG8g
Z2V0IHJpZCBvZiB0aGVtIGFzIHNvb24gYXMgcG9zc2libGUgd2hlbiB3ZSBuYXZpZ2F0ZSBhd2F5
IGZyb20gcGFnZXMgdXNpbmcKLSAgICAgICAgLy8gdGhlbS4KLSAgICAgICAgVjhQZXJJc29sYXRl
RGF0YSogcGVySXNvbGF0ZURhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLSAgICAgICAgcGVySXNvbGF0ZURhdGEtPnNldFNob3VsZENvbGxlY3RHYXJiYWdl
U29vbigpOwotCiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFJlc3VsdCA9IHRvVjgo
c3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ocmVzdWx0KSwgYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjYW52YXNBZ2VudEVuYWJsZWQoaW1wLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQodjg6OkNv
bnRleHQ6OkdldEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyZTBlNTFiMzM5ZWY5YjdkMTc5MDUw
MjA1NGZkMjQ3OWQ3MThjN2JmLi43Y2MwMjk2NTkwYjgyMTI1NGNlNTM0N2FkYTIxNDM5MWM4ZTAz
YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTQwMyw3ICs0MDMsNyBAQCBQYXNzT3duUHRyPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1l
bgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFt
ZS0+c2V0dGluZ3MoKTsKIAotICAgIC8vIFRoZSBGcmFtZUxvYWRlckNsaWVudCBtaWdodCBjcmVh
dGlvbiBvZiBhIG5ldyBXZWJHTCBjb250ZXh0IGRlc3BpdGUgdGhlIHBhZ2Ugc2V0dGluZ3M7IGlu
CisgICAgLy8gVGhlIEZyYW1lTG9hZGVyQ2xpZW50IG1pZ2h0IGRpc2FsbG93IGNyZWF0aW9uIG9m
IGEgbmV3IFdlYkdMIGNvbnRleHQgZGVzcGl0ZSB0aGUgcGFnZSBzZXR0aW5nczsgaW4KICAgICAv
LyBwYXJ0aWN1bGFyLCBpZiBXZWJHTCBjb250ZXh0cyB3ZXJlIGxvc3Qgb25lIG9yIG1vcmUgdGlt
ZXMgdmlhIHRoZSBHTF9BUkJfcm9idXN0bmVzcyBleHRlbnNpb24uCiAgICAgaWYgKCFmcmFtZS0+
bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd1dlYkdMKHNldHRpbmdzICYmIHNldHRpbmdzLT53ZWJH
TEVuYWJsZWQoKSkpIHsKICAgICAgICAgY2FudmFzLT5kaXNwYXRjaEV2ZW50KFdlYkdMQ29udGV4
dEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3JFdmVu
dCwgZmFsc2UsIHRydWUsICJXZWIgcGFnZSB3YXMgbm90IGFsbG93ZWQgdG8gY3JlYXRlIGEgV2Vi
R0wgY29udGV4dC4iKSk7CkBAIC00MzksNiArNDM5LDcgQEAgUGFzc093blB0cjxXZWJHTFJlbmRl
cmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVt
ZW4KICAgICAgICAgZXh0ZW5zaW9ucy0+cHVzaEdyb3VwTWFya2VyRVhUKCJXZWJHTFJlbmRlcmlu
Z0NvbnRleHQiKTsKIAogICAgIE93blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IHJlbmRlcmlu
Z0NvbnRleHQgPSBhZG9wdFB0cihuZXcgV2ViR0xSZW5kZXJpbmdDb250ZXh0KGNhbnZhcywgY29u
dGV4dCwgYXR0cmlidXRlcykpOworICAgIHJlbmRlcmluZ0NvbnRleHQtPnN1c3BlbmRJZk5lZWRl
ZCgpOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgaWYgKCFyZW5kZXJpbmdDb250ZXh0
LT5tX2RyYXdpbmdCdWZmZXIpIHsKQEAgLTQ1Myw2ICs0NTQsNyBAQCBQYXNzT3duUHRyPFdlYkdM
UmVuZGVyaW5nQ29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZh
c0VsZW1lbgogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQoSFRN
TENhbnZhc0VsZW1lbnQqIHBhc3NlZENhbnZhcywgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgOiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0KHBhc3NlZENhbnZhcykKKyAgICAsIEFjdGl2ZURPTU9iamVjdChwYXNz
ZWRDYW52YXMtPmRvY3VtZW50KCksIHRoaXMpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAg
ICAsIG1fZHJhd2luZ0J1ZmZlcigwKQogICAgICwgbV9kaXNwYXRjaENvbnRleHRMb3N0RXZlbnRU
aW1lcih0aGlzLCAmV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNwYXRjaENvbnRleHRMb3N0RXZl
bnQpCkBAIC00NjUsNiArNDY3LDggQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1lbnQqIHBhc3NlZENhbnZhcywgUGEKICAgICAsIG1f
c3ludGhlc2l6ZWRFcnJvcnNUb0NvbnNvbGUoZmFsc2UpCiAgICAgLCBtX251bUdMRXJyb3JzVG9D
b25zb2xlQWxsb3dlZChtYXhHTEVycm9yc0FsbG93ZWRUb0NvbnNvbGUpCiB7CisgICAgZnByaW50
ZihzdGRlcnIsICJXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dCAl
cFxuIiwgdGhpcyk7CisKICAgICBBU1NFUlQobV9jb250ZXh0KTsKICAgICBtX2NvbnRleHRHcm91
cCA9IFdlYkdMQ29udGV4dEdyb3VwOjpjcmVhdGUoKTsKICAgICBtX2NvbnRleHRHcm91cC0+YWRk
Q29udGV4dCh0aGlzKTsKQEAgLTU5Niw2ICs2MDAsOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQogCiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmluZ0NvbnRleHQoKQogeworICAgIGZwcmlu
dGYoc3RkZXJyLCAiV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0
ICVwXG4iLCB0aGlzKTsKKwogICAgIC8vIFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBXZWJHTE9i
amVjdHMgc28gaWYgdGhleSBhcmUgdGhlIGxhc3QgcmVmZXJlbmNlCiAgICAgLy8gdGhleSB3aWxs
IGJlIGZyZWVkIGJlZm9yZSB0aGUgbGFzdCBjb250ZXh0IGlzIHJlbW92ZWQgZnJvbSB0aGUgY29u
dGV4dCBncm91cC4KICAgICBtX2JvdW5kQXJyYXlCdWZmZXIgPSAwOwpAQCAtNjE1LDExICs2MjEs
MjQgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCkKICAg
ICBtX2JsYWNrVGV4dHVyZUN1YmVNYXAgPSAwOwogCiAgICAgZGV0YWNoQW5kUmVtb3ZlQWxsT2Jq
ZWN0cygpOwotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhudWxscHRyKTsK
LSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKG51bGxwdHIpOworICAgIGRl
c3Ryb3lHcmFwaGljc0NvbnRleHQzRCgpOwogICAgIG1fY29udGV4dEdyb3VwLT5yZW1vdmVDb250
ZXh0KHRoaXMpOwogfQogCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVzdHJveUdyYXBo
aWNzQ29udGV4dDNEKCkKK3sKKyAgICAvLyBUaGUgZHJhd2luZyBidWZmZXIgaG9sZHMgYSBjb250
ZXh0IHJlZmVyZW5jZS4gSXQgbXVzdCBhbHNvIGJlIGRlc3Ryb3llZAorICAgIC8vIGluIG9yZGVy
IGZvciB0aGUgY29udGV4dCB0byBiZSByZWxlYXNlZC4KKyAgICBpZiAobV9kcmF3aW5nQnVmZmVy
KQorICAgICAgICBtX2RyYXdpbmdCdWZmZXIuY2xlYXIoKTsKKworICAgIGlmIChtX2NvbnRleHQp
IHsKKyAgICAgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG51bGxwdHIpOwor
ICAgICAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKG51bGxwdHIpOworICAg
ICAgICBtX2NvbnRleHQuY2xlYXIoKTsKKyAgICB9Cit9CisKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjptYXJrQ29udGV4dENoYW5nZWQoKQogewogICAgIGlmIChtX2ZyYW1lYnVmZmVyQmlu
ZGluZykKQEAgLTQ1ODQsNiArNDYwMywxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpCiAgICAgfQogfQogCit2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6c3RvcCgpCit7CisgICAgaWYgKCFpc0NvbnRleHRMb3N0KCkpIHsKKyAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0b3AgJXBcbiIsIHRo
aXMpOworCisgICAgICAgIGZvcmNlTG9zdENvbnRleHQoU3ludGhldGljTG9zdENvbnRleHQpOwor
ICAgICAgICBkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB9Cit9CisKIFdlYkdMR2V0
SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJvb2xlYW5QYXJhbWV0ZXIoR0MzRGVudW0g
cG5hbWUpCiB7CiAgICAgR0MzRGJvb2xlYW4gdmFsdWUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA3ZGRmYzJjZDY1
ZWYwMWMwMjU4MjczNGIzNmVkMjdmYTk5N2ZmZmVhLi5kOGRlOWEzZjY4NTg1ZDAwZTM5ZGExMjQ0
N2M0ZWM0ZDdjOGI4NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRfaAogI2RlZmluZSBXZWJHTFJlbmRlcmluZ0NvbnRleHRfaAogCisjaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRC5oIgpAQCAtNzUsNyArNzYsNyBAQCBjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CitjbGFzcyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PiBjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQqLCBXZWJHTENvbnRleHRBdHRyaWJ1
dGVzKik7CiAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7CkBAIC0zMTcsNiAr
MzE4LDkgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIGdldE1heFZlcnRleEF0dHJpYnMo
KSBjb25zdCB7IHJldHVybiBtX21heFZlcnRleEF0dHJpYnM7IH0KIAorICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBub3RpZmljYXRpb25zCisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKwogICBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogICAgIGZyaWVuZCBjbGFz
cyBXZWJHTE9iamVjdDsKQEAgLTMzNCw2ICszMzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRD
b250ZXh0T2JqZWN0KFdlYkdMQ29udGV4dE9iamVjdCopOwogICAgIHZvaWQgZGV0YWNoQW5kUmVt
b3ZlQWxsT2JqZWN0cygpOwogCisgICAgdm9pZCBkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKTsK
ICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIHZvaWQgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGJvb2wgY2hhbmdlZCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAppbmRleCBhZWVlNDUxODgzYWRiOGNiNTVjZDg3OWZiY2JmNmQ1N2EwMmRiN2I4
Li40ZTI1ZjEzMDE3ZWEwOTI1Y2U2OTA3YzJhOTRlZmMyY2RkN2Y3OWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTE4Niw2ICsxODYsMTMgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVyZShXZWJLaXQ6OldlYlRleHR1cmVV
cGRhdGVyJiB1cGRhdGVyKSBPVkVSUklERQogICAgIHsKKyAgICAgICAgaWYgKCFtX2RyYXdpbmdC
dWZmZXItPmNvbG9yQnVmZmVyKCkpIHsKKyAgICAgICAgICAgIC8vIERyYXdpbmdCdWZmZXIgaGFz
IGFscmVhZHkgYmVlbiB0b3JuIGRvd24gZHVlIHRvIHBhZ2UgbmF2aWdhdGlvbi4gVGhpcyBpcyB0
aGUgb25seSB3YXkKKyAgICAgICAgICAgIC8vIHdlIGNhbiB0ZWxsIHRoZSBjb21wb3NpdG9yIHRv
IHN0b3AgcmVuZGVyaW5nIHRoZSBhc3NvY2lhdGVkIGxheWVyLiBDYWxsaW5nCisgICAgICAgICAg
ICAvLyBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVucmVnaXN0ZXJDb250ZW50c0xheWVyIGlzIGlu
c3VmZmljaWVudC4KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKICAgICAgICAg
bV9kcmF3aW5nQnVmZmVyLT5wcmVwYXJlQmFja0J1ZmZlcigpOwogCiAgICAgICAgIG1fZHJhd2lu
Z0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Zmx1c2goKTsKQEAgLTIwMyw2ICsyMTAsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRy
YWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQz
RCgpKTsKICAgICB9CiAKKyAgICB2b2lkIGNsZWFyVGV4dHVyZUlkKCkKKyAgICB7CisgICAgICAg
IG1fbGF5ZXItPnNldFRleHR1cmVJZCgwKTsKKyAgICB9CisKICAgICBXZWJLaXQ6OldlYkxheWVy
KiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXItPmxheWVyKCk7IH0KIAogcHJpdmF0ZToKQEAgLTIx
MCw2ICsyMjIsMTEgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcj4gbV9sYXllcjsKIH07CiAKK1BsYXRmb3JtM0RPYmplY3QgRHJhd2luZ0J1ZmZl
cjo6ZnJhbWVidWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZibzsKK30KKwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6
OnBsYXRmb3JtTGF5ZXIoKQogewpAQCAtMjE4LDE0ICsyMzUsNyBAQCBQbGF0Zm9ybUxheWVyKiBE
cmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkKIAogICAgIHJldHVybiBtX3ByaXZhdGUtPmxh
eWVyKCk7CiB9Ci0jZW5kaWYKIAotUGxhdGZvcm0zRE9iamVjdCBEcmF3aW5nQnVmZmVyOjpmcmFt
ZWJ1ZmZlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmJvOwotfQotCi0jaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogdm9pZCBEcmF3aW5nQnVmZmVyOjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewogICAgIGlmICghbV9j
b250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19F
UlJPUikKQEAgLTI0OSw2ICsyNTksMTEgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogCiAgICAgbV9j
b250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBw
cmV2aW91c0ZyYW1lYnVmZmVyKTsKIH0KKwordm9pZCBEcmF3aW5nQnVmZmVyOjpjbGVhclBsYXRm
b3JtTGF5ZXIoKQoreworICAgIG1fcHJpdmF0ZS0+Y2xlYXJUZXh0dXJlSWQoKTsKK30KICNlbmRp
ZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
RHJhd2luZ0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
RHJhd2luZ0J1ZmZlci5jcHAKaW5kZXggMjgyYmRlMDNmMmJkM2ZhOGYxMWQ0M2JjZTU3ZDU3ZTE2
YmRiYWRiNC4uOTg3NmY0MGE0Mjg4ZjFkNDY2OGM4ZWQwMmFlMmJiNzJiMmNmMWFlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVm
ZmVyLmNwcApAQCAtMTIwLDYgKzEyMCwxMCBAQCB2b2lkIERyYXdpbmdCdWZmZXI6OmNsZWFyKCkK
ICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zibyk7CiAgICAgICAgIG1f
ZmJvID0gMDsKICAgICB9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAg
Y2xlYXJQbGF0Zm9ybUxheWVyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBEcmF3aW5nQnVmZmVyOjpj
cmVhdGVTZWNvbmRhcnlCdWZmZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCmluZGV4IGIyYzU5YWFlNjQxZTA3ZTZkZjMy
NzE0ZmVhMDI3OGYwYmI2NWQxZjIuLjYxYWExY2U2YmVlN2ZmNzAzNzMxYmU4OGYzYzMxNjRiNjFi
ODMyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9E
cmF3aW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuaApAQCAtMTI5LDYgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBib29sIHJl
cXVpcmVzQ29weUZyb21CYWNrVG9Gcm9udEJ1ZmZlcigpIGNvbnN0OwogICAgIHVuc2lnbmVkIGZy
b250Q29sb3JCdWZmZXIoKSBjb25zdDsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopOworICAgIHZvaWQgY2xlYXJQbGF0Zm9ybUxheWVyKCk7CiAj
ZW5kaWYKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCmluZGV4
IDQwZGMyYTUxZWFkOGU5YjlkMmU0YjNiNjUyOGY5NzE4MmNkZDFjZmUuLjU4MzdlM2ExNDUwNGRm
N2NlM2YyYTI1OTUyZjNiZTQ0OWNhYzRiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KQEAg
LTExMyw2ICsxMTMsMTEgQEAgdW5zaWduZWQgRHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZl
cigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbG9yQnVmZmVyKCk7CiB9CisKK3ZvaWQgRHJhd2lu
Z0J1ZmZlcjo6Y2xlYXJQbGF0Zm9ybUxheWVyKCkKK3sKKyAgICAvLyBEb24ndCBuZWVkIHRvIGRv
IGFueXRoaW5nIG9uIHRoaXMgcGxhdGZvcm0uCit9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZl
clF0LmNwcAppbmRleCAxN2E1OWE0MTgxMDRkZTBjZDczMTFlMzIyZGU5ZDE0MjIwNmNlYTY0Li45
MDRhNzRmYTY0MzM3NjQyMmEyNzRiNDFkZGE2MjQxYjgwNGYxODAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZl
clF0LmNwcApAQCAtMTA0LDYgKzEwNCwxMCBAQCB1bnNpZ25lZCBEcmF3aW5nQnVmZmVyOjpmcm9u
dENvbG9yQnVmZmVyKCkgY29uc3QKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikKIHsKIH0KKwordm9pZCBEcmF3aW5nQnVmZmVy
OjpjbGVhclBsYXRmb3JtTGF5ZXIoKQoreworfQogI2VuZGlmCiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181626</attachid>
            <date>2013-01-07 19:48:21 -0800</date>
            <delta_ts>2013-01-08 15:23:43 -0800</delta_ts>
            <desc>Patch for testing</desc>
            <filename>bug-104733-20130107194525.patch</filename>
            <type>text/plain</type>
            <size>9246</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAK
aW5kZXggYzkwMGVmMjZmMDlmZjM2YmViODcxZmE5OTljYmZhNjBiMGE1Mjc5YS4uNzM4Y2RiYmE4
MWJkMWE2MGE3NzBiYjNkNTZkNjZjNTNlZTUxMmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtOTcsMTIgKzk3LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICB9
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGVsc2UgaWYgKHJlc3VsdC0+aXMzZCgpKSB7Ci0gICAg
ICAgIC8vIDNEIGNhbnZhcyBjb250ZXh0cyBjYW4gaG9sZCBvbiB0byBsb3RzIG9mIEdQVSByZXNv
dXJjZXMsIGFuZCB3ZSB3YW50IHRvIHRha2UgYW4KLSAgICAgICAgLy8gb3Bwb3J0dW5pdHkgdG8g
Z2V0IHJpZCBvZiB0aGVtIGFzIHNvb24gYXMgcG9zc2libGUgd2hlbiB3ZSBuYXZpZ2F0ZSBhd2F5
IGZyb20gcGFnZXMgdXNpbmcKLSAgICAgICAgLy8gdGhlbS4KLSAgICAgICAgVjhQZXJJc29sYXRl
RGF0YSogcGVySXNvbGF0ZURhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLSAgICAgICAgcGVySXNvbGF0ZURhdGEtPnNldFNob3VsZENvbGxlY3RHYXJiYWdl
U29vbigpOwotCiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFJlc3VsdCA9IHRvVjgo
c3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ocmVzdWx0KSwgYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpjYW52YXNBZ2VudEVuYWJsZWQoaW1wLT5kb2N1bWVudCgpKSkgewogICAgICAgICAgICAg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQodjg6OkNv
bnRleHQ6OkdldEN1cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyZTBlNTFiMzM5ZWY5YjdkMTc5MDUw
MjA1NGZkMjQ3OWQ3MThjN2JmLi45YTNkNmQ5MTIwZjExMDlmMzA4MzlhOGQzM2UzM2UwMmVkZGQx
MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTQzOSw2ICs0MzksNyBAQCBQYXNzT3duUHRyPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1l
bgogICAgICAgICBleHRlbnNpb25zLT5wdXNoR3JvdXBNYXJrZXJFWFQoIldlYkdMUmVuZGVyaW5n
Q29udGV4dCIpOwogCiAgICAgT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gcmVuZGVyaW5n
Q29udGV4dCA9IGFkb3B0UHRyKG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRleHQoY2FudmFzLCBjb250
ZXh0LCBhdHRyaWJ1dGVzKSk7CisgICAgcmVuZGVyaW5nQ29udGV4dC0+c3VzcGVuZElmTmVlZGVk
KCk7CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBpZiAoIXJlbmRlcmluZ0NvbnRleHQt
Pm1fZHJhd2luZ0J1ZmZlcikgewpAQCAtNDUzLDYgKzQ1NCw3IEBAIFBhc3NPd25QdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFz
RWxlbWVuCiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1M
Q2FudmFzRWxlbWVudCogcGFzc2VkQ2FudmFzLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICA6IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQocGFzc2VkQ2FudmFzKQorICAgICwgQWN0aXZlRE9NT2JqZWN0KHBhc3Nl
ZENhbnZhcy0+ZG9jdW1lbnQoKSwgdGhpcykKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9kcmF3aW5nQnVmZmVyKDApCiAgICAgLCBtX2Rpc3BhdGNoQ29udGV4dExvc3RFdmVudFRp
bWVyKHRoaXMsICZXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRpc3BhdGNoQ29udGV4dExvc3RFdmVu
dCkKQEAgLTYxNSwxMSArNjE3LDI0IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVu
ZGVyaW5nQ29udGV4dCgpCiAgICAgbV9ibGFja1RleHR1cmVDdWJlTWFwID0gMDsKIAogICAgIGRl
dGFjaEFuZFJlbW92ZUFsbE9iamVjdHMoKTsKLSAgICBtX2NvbnRleHQtPnNldENvbnRleHRMb3N0
Q2FsbGJhY2sobnVsbHB0cik7Ci0gICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxsYmFj
ayhudWxscHRyKTsKKyAgICBkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKTsKICAgICBtX2NvbnRl
eHRHcm91cC0+cmVtb3ZlQ29udGV4dCh0aGlzKTsKIH0KIAordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmRlc3Ryb3lHcmFwaGljc0NvbnRleHQzRCgpCit7CisgICAgLy8gVGhlIGRyYXdpbmcg
YnVmZmVyIGhvbGRzIGEgY29udGV4dCByZWZlcmVuY2UuIEl0IG11c3QgYWxzbyBiZSBkZXN0cm95
ZWQKKyAgICAvLyBpbiBvcmRlciBmb3IgdGhlIGNvbnRleHQgdG8gYmUgcmVsZWFzZWQuCisgICAg
aWYgKG1fZHJhd2luZ0J1ZmZlcikKKyAgICAgICAgbV9kcmF3aW5nQnVmZmVyLmNsZWFyKCk7CisK
KyAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RD
YWxsYmFjayhudWxscHRyKTsKKyAgICAgICAgbV9jb250ZXh0LT5zZXRFcnJvck1lc3NhZ2VDYWxs
YmFjayhudWxscHRyKTsKKyAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7CisgICAgfQorfQorCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICBp
ZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcpCkBAIC00NTg0LDYgKzQ1OTksMTQgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMoKQogICAgIH0KIH0K
IAordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0b3AoKQoreworICAgIGlmICghaXNDb250
ZXh0TG9zdCgpKSB7CisgICAgICAgIGZvcmNlTG9zdENvbnRleHQoU3ludGhldGljTG9zdENvbnRl
eHQpOworICAgICAgICBkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QoKTsKKyAgICB9Cit9CisKIFdl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJvb2xlYW5QYXJhbWV0ZXIoR0Mz
RGVudW0gcG5hbWUpCiB7CiAgICAgR0MzRGJvb2xlYW4gdmFsdWUgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA3ZGRm
YzJjZDY1ZWYwMWMwMjU4MjczNGIzNmVkMjdmYTk5N2ZmZmVhLi5kOGRlOWEzZjY4NTg1ZDAwZTM5
ZGExMjQ0N2M0ZWM0ZDdjOGI4NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRfaAogI2RlZmluZSBXZWJHTFJlbmRlcmluZ0NvbnRleHRfaAog
CisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgpAQCAtNzUsNyArNzYsNyBAQCBjbGFzcyBXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CitjbGFzcyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0PiBjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQqLCBXZWJHTENvbnRleHRB
dHRyaWJ1dGVzKik7CiAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCk7CkBAIC0z
MTcsNiArMzE4LDkgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIGdldE1heFZlcnRleEF0
dHJpYnMoKSBjb25zdCB7IHJldHVybiBtX21heFZlcnRleEF0dHJpYnM7IH0KIAorICAgIC8vIEFj
dGl2ZURPTU9iamVjdCBub3RpZmljYXRpb25zCisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKwog
ICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJHTE9iamVjdDsKQEAgLTMzNCw2ICszMzgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZGRDb250ZXh0T2JqZWN0KFdlYkdMQ29udGV4dE9iamVjdCopOwogICAgIHZvaWQgZGV0YWNo
QW5kUmVtb3ZlQWxsT2JqZWN0cygpOwogCisgICAgdm9pZCBkZXN0cm95R3JhcGhpY3NDb250ZXh0
M0QoKTsKICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIHZvaWQgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGJvb2wgY2hhbmdlZCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1
ZmZlckNocm9taXVtLmNwcAppbmRleCBhZWVlNDUxODgzYWRiOGNiNTVjZDg3OWZiY2JmNmQ1N2Ew
MmRiN2I4Li41ZGFiMThjMzcyNTBlNjJiM2M0MjhhNGQ4ZDVjMTU0MTllYjk1MGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVm
ZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTIwMyw2ICsyMDMsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpKTsK
ICAgICB9CiAKKyAgICB2b2lkIGNsZWFyVGV4dHVyZUlkKCkKKyAgICB7CisgICAgICAgIG1fbGF5
ZXItPnNldFRleHR1cmVJZCgwKTsKKyAgICB9CisKICAgICBXZWJLaXQ6OldlYkxheWVyKiBsYXll
cigpIHsgcmV0dXJuIG1fbGF5ZXItPmxheWVyKCk7IH0KIAogcHJpdmF0ZToKQEAgLTIxMCw2ICsy
MTUsMTEgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVM
YXllcj4gbV9sYXllcjsKIH07CiAKK1BsYXRmb3JtM0RPYmplY3QgRHJhd2luZ0J1ZmZlcjo6ZnJh
bWVidWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZibzsKK30KKwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIFBsYXRmb3JtTGF5ZXIqIERyYXdpbmdCdWZmZXI6OnBsYXRm
b3JtTGF5ZXIoKQogewpAQCAtMjE4LDE0ICsyMjgsNyBAQCBQbGF0Zm9ybUxheWVyKiBEcmF3aW5n
QnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkKIAogICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVyKCk7
CiB9Ci0jZW5kaWYKLQotUGxhdGZvcm0zRE9iamVjdCBEcmF3aW5nQnVmZmVyOjpmcmFtZWJ1ZmZl
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZmJvOwotfQogCi0jaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogdm9pZCBEcmF3aW5nQnVmZmVyOjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewogICAgIGlmICghbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikK
QEAgLTI0OSw2ICsyNTIsMTIgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpwYWludENvbXBvc2l0ZWRS
ZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogCiAgICAgbV9jb250ZXh0
LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBwcmV2aW91
c0ZyYW1lYnVmZmVyKTsKIH0KKwordm9pZCBEcmF3aW5nQnVmZmVyOjpjbGVhclBsYXRmb3JtTGF5
ZXIoKQoreworICAgIG1fcHJpdmF0ZS0+Y2xlYXJUZXh0dXJlSWQoKTsKKyAgICBtX2NvbnRleHQt
PmZsdXNoKCk7Cit9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCmluZGV4IDI4MmJkZTAzZjJiZDNm
YThmMTFkNDNiY2U1N2Q1N2UxNmJkYmFkYjQuLmJkNDEyOWEzYTZlOTlmZjhlZTA5ZDViZjk3NzAx
MmY3MjE2ZWJjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9EcmF3aW5nQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAKQEAgLTc2LDYgKzc2LDExIEBAIHZvaWQgRHJhd2lu
Z0J1ZmZlcjo6Y2xlYXIoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAg
IGNsZWFyUGxhdGZvcm1MYXllcigpOworI2VuZGlmCisKICAgICBpZiAoIW1fc2l6ZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgc19jdXJyZW50UmVzb3VyY2VVc2VQaXhlbHMgLT0gbV9zaXplLndpZHRo
KCkgKiBtX3NpemUuaGVpZ2h0KCk7CiAgICAgICAgIG1fc2l6ZSA9IEludFNpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5o
CmluZGV4IGIyYzU5YWFlNjQxZTA3ZTZkZjMyNzE0ZmVhMDI3OGYwYmI2NWQxZjIuLjYxYWExY2U2
YmVlN2ZmNzAzNzMxYmU4OGYzYzMxNjRiNjFiODMyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaApAQCAtMTI5LDYgKzEy
OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzQ29weUZyb21CYWNrVG9Gcm9udEJ1ZmZl
cigpIGNvbnN0OwogICAgIHVuc2lnbmVkIGZyb250Q29sb3JCdWZmZXIoKSBjb25zdDsKICAgICB2
b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOworICAgIHZv
aWQgY2xlYXJQbGF0Zm9ybUxheWVyKCk7CiAjZW5kaWYKIAogICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBncmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3
aW5nQnVmZmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21h
Yy9EcmF3aW5nQnVmZmVyTWFjLm1tCmluZGV4IDQwZGMyYTUxZWFkOGU5YjlkMmU0YjNiNjUyOGY5
NzE4MmNkZDFjZmUuLjU4MzdlM2ExNDUwNGRmN2NlM2YyYTI1OTUyZjNiZTQ0OWNhYzRiNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2lu
Z0J1ZmZlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
bWFjL0RyYXdpbmdCdWZmZXJNYWMubW0KQEAgLTExMyw2ICsxMTMsMTEgQEAgdW5zaWduZWQgRHJh
d2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbG9y
QnVmZmVyKCk7CiB9CisKK3ZvaWQgRHJhd2luZ0J1ZmZlcjo6Y2xlYXJQbGF0Zm9ybUxheWVyKCkK
K3sKKyAgICAvLyBEb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIG9uIHRoaXMgcGxhdGZvcm0uCit9
CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcAppbmRleCAxN2E1OWE0MTgxMDRkZTBj
ZDczMTFlMzIyZGU5ZDE0MjIwNmNlYTY0Li45MDRhNzRmYTY0MzM3NjQyMmEyNzRiNDFkZGE2MjQx
YjgwNGYxODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcApAQCAtMTA0LDYgKzEwNCwxMCBAQCB1
bnNpZ25lZCBEcmF3aW5nQnVmZmVyOjpmcm9udENvbG9yQnVmZmVyKCkgY29uc3QKIHZvaWQgRHJh
d2luZ0J1ZmZlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKikK
IHsKIH0KKwordm9pZCBEcmF3aW5nQnVmZmVyOjpjbGVhclBsYXRmb3JtTGF5ZXIoKQoreworfQog
I2VuZGlmCiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181783</attachid>
            <date>2013-01-08 15:23:47 -0800</date>
            <delta_ts>2013-01-08 18:23:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104733-20130108152051.patch</filename>
            <type>text/plain</type>
            <size>22169</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJiM2NjYzI4Y2E0Nzg1
OWI5NDA0MjhjYjgyNmFlZWMwZjAxMWE1NC4uOGNmNWQyOGUxYzA2ZWQ5NjQ4OWJiZDc4YzQyOWFi
NjcwNWJkNWZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAxLTA4ICBCcmFu
ZG9uIEpvbmVzICA8YmFqb25lc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBXZWJHTFJl
bmRlcmluZ0NvbnRleHQgaW5oZXJpdCBmcm9tIEFjdGl2ZURPTU9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NzMzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBBY3RpdmVET01PYmplY3Q6
OnN0b3AgaXMgY2FsbGVkIG9uIHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgdGhlCisgICAgICAg
IERyYXdpbmdCdWZmZXIgYW5kIEdyYXBoaWNzQ29udGV4dDNEIGluc3RhbmNlcyBhcmUgZm9yY2li
bHkgcmVsZWFzZWQgaW4KKyAgICAgICAgb3JkZXIgdG8ga2VlcCBHUFUgbWVtb3J5IHV0aWxpemF0
aW9uIHRvIGEgbWluaW11bS4KKworICAgICAgICBJbmNvcnBvcmF0ZWQgbmV3IGxheW91dCB0ZXN0
IGJhc2VkIG9uIG9uZSBqdXN0IGFkZGVkIHRvIHRoZSBXZWJHTAorICAgICAgICBjb25mb3JtYW5j
ZSBzdWl0ZS4gQWxzbyB0ZXN0ZWQgbWFudWFsbHkgYnkgcmVsb2FkaW5nIGFuZAorICAgICAgICBu
YXZpZ2F0aW5nIGJldHdlZW4gbWFueSBXZWJHTCBhcHBzLgorCisgICAgICAgIFRlc3Q6IGZhc3Qv
Y2FudmFzL3dlYmdsL2NvbnRleHQtcmVsZWFzZS11cG9uLXJlbG9hZC5odG1sCisKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2FsbGJhY2spOgor
ICAgICAgICAgICAgUmVtb3ZlZCBnYXJiYWdlIGNvbGxlY3Rpb24gaGFjayBhZGRlZCBpbiBCdWcg
NzYyNTUuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGUpOgorICAgICAgICAgICAgQ2FsbCBzdXNwZW5kSWZOZWVkZWQgcGVyIEFjdGl2
ZURPTU9iamVjdCBjb250cmFjdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgICAgIENhbGwgQWN0aXZlRE9N
T2JqZWN0IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgICAgIENhbGwgZGVzdHJveUdy
YXBoaWNzQ29udGV4dDNELgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAgICAgRHJvcCBEcmF3aW5nQnVm
ZmVyIGJhY2tpbmcgc3RvcmUgYW5kIGRlbGV0ZSBHcmFwaGljc0NvbnRleHQzRC4KKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAg
ICAgICAgICAgIEFsd2F5cyByZXR1cm4gZmFsc2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnN0b3ApOgorICAgICAgICAgICAgRm9yY2UgbG9zdCBjb250ZXh0IHVw
b24gcGFnZSByZWxvYWQgb3IgbmF2aWdhdGlvbi4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkdMUmVuZGVyaW5nQ29udGV4dCk6Cisg
ICAgICAgICAgICBJbmhlcml0IGZyb20gQWN0aXZlRE9NT2JqZWN0IGFuZCBvdmVycmlkZSBub3Rp
ZmljYXRpb25zLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2lu
Z0J1ZmZlckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpEcmF3aW5nQnVmZmVyOjpjbGVhclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAgICAgQWRk
IGN1cnJlbnRseSBuby1vcCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyOjpjbGVhclBsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAgICAgQWRkIGN1cnJlbnRseSBuby1vcCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclByaXZhdGU6OmNsZWFyVGV4dHVyZUlkKToKKyAg
ICAgICAgICAgIENsZWFyIHRleHR1cmUgSUQgZnJvbSBjb21wb3NpdG9yJ3MgbGF5ZXIuCisgICAg
ICAgIChEcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVm
ZmVyOjpmcmFtZWJ1ZmZlcik6CisgICAgICAgICAgICBNb3ZlZCBhcm91bmQgdG8gcmVkdWNlIG51
bWJlciBvZiAjaWZkZWZzLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdC
dWZmZXI6OmNsZWFyUGxhdGZvcm1MYXllcik6CisgICAgICAgICAgICBUZWxsIGNvbXBvc2l0b3Ig
dG8gc3RvcCByZWZlcmVuY2luZyBEcmF3aW5nQnVmZmVyJ3MgdGV4dHVyZS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0RyYXdpbmdCdWZmZXJDbHV0dGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6Y2xlYXJQbGF0
Zm9ybUxheWVyKToKKyAgICAgICAgICAgIEFkZCBjdXJyZW50bHkgbm8tb3AgaW1wbGVtZW50YXRp
b24uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlcjo6Y2xlYXIpOgorICAgICAgICAgICAgQ2Fs
bCBjbGVhclBsYXRmb3JtTGF5ZXIgYmVmb3JlIGRlbGV0aW5nIE9wZW5HTCByZXNvdXJjZXMuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaDoKKyAgICAgICAg
KERyYXdpbmdCdWZmZXIpOgorICAgICAgICAgICAgQWRkIGNsZWFyUGxhdGZvcm1MYXllci4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXI6OmNsZWFy
UGxhdGZvcm1MYXllcik6CisgICAgICAgICAgICBBZGQgY3VycmVudGx5IG5vLW9wIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVy
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVm
ZmVyOjpjbGVhclBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAgICAgQWRkIGN1cnJlbnRseSBuby1v
cCBpbXBsZW1lbnRhdGlvbi4KKwogMjAxMy0wMS0wOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBDb3B5LXBhc3RlIHByZXNlcnZlcyA8ZW1iZWQ+IHRhZ3MgY29u
dGFpbmluZyBhY3RpdmUgY29udGVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRl
eCBjOTAwZWYyNmYwOWZmMzZiZWI4NzFmYTk5OWNiZmE2MGIwYTUyNzlhLi43MzhjZGJiYTgxYmQx
YTYwYTc3MGJiM2Q1NmQ2NmM1M2VlNTEyYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwCkBAIC05NywxMiArOTcsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ2FudmFz
RWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgIH0KICNp
ZiBFTkFCTEUoV0VCR0wpCiAgICAgZWxzZSBpZiAocmVzdWx0LT5pczNkKCkpIHsKLSAgICAgICAg
Ly8gM0QgY2FudmFzIGNvbnRleHRzIGNhbiBob2xkIG9uIHRvIGxvdHMgb2YgR1BVIHJlc291cmNl
cywgYW5kIHdlIHdhbnQgdG8gdGFrZSBhbgotICAgICAgICAvLyBvcHBvcnR1bml0eSB0byBnZXQg
cmlkIG9mIHRoZW0gYXMgc29vbiBhcyBwb3NzaWJsZSB3aGVuIHdlIG5hdmlnYXRlIGF3YXkgZnJv
bSBwYWdlcyB1c2luZwotICAgICAgICAvLyB0aGVtLgotICAgICAgICBWOFBlcklzb2xhdGVEYXRh
KiBwZXJJc29sYXRlRGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oYXJncy5HZXRJc29sYXRl
KCkpOwotICAgICAgICBwZXJJc29sYXRlRGF0YS0+c2V0U2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29u
KCk7Ci0KICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4UmVzdWx0ID0gdG9WOChzdGF0
aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihyZXN1bHQpLCBhcmdzLkhvbGRlcigpLCBh
cmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNhbnZhc0FnZW50RW5hYmxlZChpbXAtPmRvY3VtZW50KCkpKSB7CiAgICAgICAgICAgICBTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4dCh2ODo6Q29udGV4
dDo6R2V0Q3VycmVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDJlMGU1MWIzMzllZjliN2QxNzkwNTAyMDU0
ZmQyNDc5ZDcxOGM3YmYuLjIwYzYwYjhkNGU3YTJjODhkNjE1ZTc5MGJmYjk3YTg2ZjMyMjc4NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtNDM5LDYgKzQzOSw3IEBAIFBhc3NPd25QdHI8V2ViR0xSZW5kZXJpbmdD
b250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFzRWxlbWVuCiAg
ICAgICAgIGV4dGVuc2lvbnMtPnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250
ZXh0Iik7CiAKICAgICBPd25QdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiByZW5kZXJpbmdDb250
ZXh0ID0gYWRvcHRQdHIobmV3IFdlYkdMUmVuZGVyaW5nQ29udGV4dChjYW52YXMsIGNvbnRleHQs
IGF0dHJpYnV0ZXMpKTsKKyAgICByZW5kZXJpbmdDb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsK
IAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIGlmICghcmVuZGVyaW5nQ29udGV4dC0+bV9k
cmF3aW5nQnVmZmVyKSB7CkBAIC00NTMsNiArNDU0LDcgQEAgUGFzc093blB0cjxXZWJHTFJlbmRl
cmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVt
ZW4KIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52
YXNFbGVtZW50KiBwYXNzZWRDYW52YXMsIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIDogQ2FudmFzUmVuZGVy
aW5nQ29udGV4dChwYXNzZWRDYW52YXMpCisgICAgLCBBY3RpdmVET01PYmplY3QocGFzc2VkQ2Fu
dmFzLT5kb2N1bWVudCgpLCB0aGlzKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBt
X2RyYXdpbmdCdWZmZXIoMCkKICAgICAsIG1fZGlzcGF0Y2hDb250ZXh0TG9zdEV2ZW50VGltZXIo
dGhpcywgJldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzcGF0Y2hDb250ZXh0TG9zdEV2ZW50KQpA
QCAtNjE1LDExICs2MTcsMjQgQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5kZXJp
bmdDb250ZXh0KCkKICAgICBtX2JsYWNrVGV4dHVyZUN1YmVNYXAgPSAwOwogCiAgICAgZGV0YWNo
QW5kUmVtb3ZlQWxsT2JqZWN0cygpOwotICAgIG1fY29udGV4dC0+c2V0Q29udGV4dExvc3RDYWxs
YmFjayhudWxscHRyKTsKLSAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKG51
bGxwdHIpOworICAgIGRlc3Ryb3lHcmFwaGljc0NvbnRleHQzRCgpOwogICAgIG1fY29udGV4dEdy
b3VwLT5yZW1vdmVDb250ZXh0KHRoaXMpOwogfQogCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZGVzdHJveUdyYXBoaWNzQ29udGV4dDNEKCkKK3sKKyAgICAvLyBUaGUgZHJhd2luZyBidWZm
ZXIgaG9sZHMgYSBjb250ZXh0IHJlZmVyZW5jZS4gSXQgbXVzdCBhbHNvIGJlIGRlc3Ryb3llZAor
ICAgIC8vIGluIG9yZGVyIGZvciB0aGUgY29udGV4dCB0byBiZSByZWxlYXNlZC4KKyAgICBpZiAo
bV9kcmF3aW5nQnVmZmVyKQorICAgICAgICBtX2RyYXdpbmdCdWZmZXIuY2xlYXIoKTsKKworICAg
IGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxi
YWNrKG51bGxwdHIpOworICAgICAgICBtX2NvbnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNr
KG51bGxwdHIpOworICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKKyAgICB9Cit9CisKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjptYXJrQ29udGV4dENoYW5nZWQoKQogewogICAgIGlmICht
X2ZyYW1lYnVmZmVyQmluZGluZykKQEAgLTQ1ODQsNiArNDU5OSwxOSBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpCiAgICAgfQogfQogCiti
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdG9w
KCkKK3sKKyAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgeworICAgICAgICBmb3JjZUxvc3RDb250
ZXh0KFN5bnRoZXRpY0xvc3RDb250ZXh0KTsKKyAgICAgICAgZGVzdHJveUdyYXBoaWNzQ29udGV4
dDNEKCk7CisgICAgfQorfQorCiBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRCb29sZWFuUGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lKQogewogICAgIEdDM0Rib29sZWFuIHZh
bHVlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgKaW5kZXggN2RkZmMyY2Q2NWVmMDFjMDI1ODI3MzRiMzZlZDI3ZmE5OTdmZmZl
YS4uNWIwZmI5MTJmODIyYmEyOGNjMTVjYTRiMWQzZmQwNzU5N2NjOWVjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViR0xSZW5kZXJpbmdDb250ZXh0X2gKICNkZWZpbmUgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0X2gKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVy
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKQEAgLTc1LDcgKzc2LDcgQEAgY2xh
c3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29k
ZTsKIAotY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQgeworY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKEhUTUxDYW52YXNF
bGVtZW50KiwgV2ViR0xDb250ZXh0QXR0cmlidXRlcyopOwogICAgIHZpcnR1YWwgfldlYkdMUmVu
ZGVyaW5nQ29udGV4dCgpOwpAQCAtMzE3LDYgKzMxOCwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dW5zaWduZWQgZ2V0TWF4VmVydGV4QXR0cmlicygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4VmVydGV4
QXR0cmliczsgfQogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0IG5vdGlmaWNhdGlvbnMKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IHN0b3AoKTsKKwogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJHTEZyYW1lYnVmZmVy
OwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTE9iamVjdDsKQEAgLTMzNCw2ICszMzksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRDb250ZXh0T2JqZWN0KFdlYkdMQ29udGV4dE9iamVjdCopOwogICAg
IHZvaWQgZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpOwogCisgICAgdm9pZCBkZXN0cm95R3Jh
cGhpY3NDb250ZXh0M0QoKTsKICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwogICAgIHZv
aWQgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGJvb2wgY2hhbmdlZCkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0RyYXdpbmdC
dWZmZXJCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCmluZGV4IDhkZmQ2ZjNmN2E4NmM4
NWRhYjlhZTQwMGVkZmU5MjAyM2E4NDNhZmYuLjc4MDg3NjA2MTdiZjExZWQ2YTRiOTY5NWRiNjli
OWRmMTdkYmU5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRHJhd2luZ0J1ZmZlckJsYWNrQmVycnku
Y3BwCkBAIC0xMjIsNiArMTIyLDEwIEBAIHVuc2lnbmVkIERyYXdpbmdCdWZmZXI6OmZyb250Q29s
b3JCdWZmZXIoKSBjb25zdAogewogICAgIHJldHVybiBjb2xvckJ1ZmZlcigpOwogfQorCit2b2lk
IERyYXdpbmdCdWZmZXI6OmNsZWFyUGxhdGZvcm1MYXllcigpCit7Cit9CiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHAKaW5kZXggYTRlYWJl
OGFiZjRjZmRhNDJmNjllN2RkZjNiMWNiNGZhYzQyMzJjOC4uODkzZDAzY2FkNmNmY2RlOWYyZDg5
YjU3ZTE1OTM1ZDM3NjlhNWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRHJhd2luZ0J1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xMDEs
NiArMTAxLDEwIEBAIHVuc2lnbmVkIERyYXdpbmdCdWZmZXI6OmZyb250Q29sb3JCdWZmZXIoKSBj
b25zdAogdm9pZCBEcmF3aW5nQnVmZmVyOjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKQogewogfQorCit2b2lkIERyYXdpbmdCdWZmZXI6OmNsZWFyUGxhdGZvcm1M
YXllcigpCit7Cit9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1
bS5jcHAKaW5kZXggYWVlZTQ1MTg4M2FkYjhjYjU1Y2Q4NzlmYmNiZjZkNTdhMDJkYjdiOC4uYWEw
NTg5OTI4MDU3YzhlOThjMWU1MDBjMDUwZGVkYjg2NTQyZGQ0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3
aW5nQnVmZmVyQ2hyb21pdW0uY3BwCkBAIC0yMDMsNiArMjAzLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29u
dGV4dDNEKG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7CiAgICAgfQogCisg
ICAgdm9pZCBjbGVhclRleHR1cmVJZCgpCisgICAgeworICAgICAgICBtX2xheWVyLT5zZXRUZXh0
dXJlSWQoMCk7CisgICAgfQorCiAgICAgV2ViS2l0OjpXZWJMYXllciogbGF5ZXIoKSB7IHJldHVy
biBtX2xheWVyLT5sYXllcigpOyB9CiAKIHByaXZhdGU6CkBAIC0yMTAsNiArMjE1LDExIEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5
ZXI7CiB9OwogCitQbGF0Zm9ybTNET2JqZWN0IERyYXdpbmdCdWZmZXI6OmZyYW1lYnVmZmVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9mYm87Cit9CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiBQbGF0Zm9ybUxheWVyKiBEcmF3aW5nQnVmZmVyOjpwbGF0Zm9ybUxheWVyKCkK
IHsKQEAgLTIxOCwxNCArMjI4LDcgQEAgUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6cGxh
dGZvcm1MYXllcigpCiAKICAgICByZXR1cm4gbV9wcml2YXRlLT5sYXllcigpOwogfQotI2VuZGlm
CiAKLVBsYXRmb3JtM0RPYmplY3QgRHJhd2luZ0J1ZmZlcjo6ZnJhbWVidWZmZXIoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2ZibzsKLX0KLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKElt
YWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpCkBAIC0yNDksNiAr
MjUyLDE0IEBAIHZvaWQgRHJhd2luZ0J1ZmZlcjo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2Fu
dmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKIAogICAgIG1fY29udGV4dC0+YmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgcHJldmlvdXNGcmFtZWJ1ZmZl
cik7CiB9CisKK3ZvaWQgRHJhd2luZ0J1ZmZlcjo6Y2xlYXJQbGF0Zm9ybUxheWVyKCkKK3sKKyAg
ICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPmNsZWFyVGV4dHVyZUlkKCk7CisK
KyAgICBtX2NvbnRleHQtPmZsdXNoKCk7Cit9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9EcmF3aW5nQnVmZmVyQ2x1dHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0RyYXdpbmdC
dWZmZXJDbHV0dGVyLmNwcAppbmRleCBiNTJhYjhkZDIyNDVmZTdkODYzNWQwMjMzNzU5M2IyYzBk
NzFiZjljLi5jMWZjMDdhY2JiYTY0MzY1MDYxNzY0MGMyNjg3ZjMyMTA5YjhkOTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0RyYXdpbmdCdWZm
ZXJDbHV0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0
dGVyL0RyYXdpbmdCdWZmZXJDbHV0dGVyLmNwcApAQCAtNzQsNiArNzQsMTAgQEAgdW5zaWduZWQg
RHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZlcigpIGNvbnN0CiB2b2lkIERyYXdpbmdCdWZm
ZXI6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCiB7CiB9CisK
K3ZvaWQgRHJhd2luZ0J1ZmZlcjo6Y2xlYXJQbGF0Zm9ybUxheWVyKCkKK3sKK30KICNlbmRpZgog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJh
d2luZ0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJh
d2luZ0J1ZmZlci5jcHAKaW5kZXggMjgyYmRlMDNmMmJkM2ZhOGYxMWQ0M2JjZTU3ZDU3ZTE2YmRi
YWRiNC4uYmQ0MTI5YTNhNmU5OWZmOGVlMDlkNWJmOTc3MDEyZjcyMTZlYmNkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVy
LmNwcApAQCAtNzYsNiArNzYsMTEgQEAgdm9pZCBEcmF3aW5nQnVmZmVyOjpjbGVhcigpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgY2xlYXJQbGF0Zm9ybUxheWVyKCk7
CisjZW5kaWYKKwogICAgIGlmICghbV9zaXplLmlzRW1wdHkoKSkgewogICAgICAgICBzX2N1cnJl
bnRSZXNvdXJjZVVzZVBpeGVscyAtPSBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKTsK
ICAgICAgICAgbV9zaXplID0gSW50U2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKaW5kZXggYjJjNTlhYWU2NDFlMDdl
NmRmMzI3MTRmZWEwMjc4ZjBiYjY1ZDFmMi4uNjFhYTFjZTZiZWU3ZmY3MDM3MzFiZTg4ZjNjMzE2
NGI2MWI4MzJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0RyYXdpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvRHJhd2luZ0J1ZmZlci5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHVibGljOgogICAgIGJv
b2wgcmVxdWlyZXNDb3B5RnJvbUJhY2tUb0Zyb250QnVmZmVyKCkgY29uc3Q7CiAgICAgdW5zaWdu
ZWQgZnJvbnRDb2xvckJ1ZmZlcigpIGNvbnN0OwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVz
dWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7CisgICAgdm9pZCBjbGVhclBsYXRmb3JtTGF5ZXIo
KTsKICNlbmRpZgogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW0K
aW5kZXggNDBkYzJhNTFlYWQ4ZTliOWQyZTRiM2I2NTI4Zjk3MTgyY2RkMWNmZS4uNTgzN2UzYTE0
NTA0ZGY3Y2UzZjJhMjU5NTJmM2JlNDQ5Y2FjNGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5t
bQpAQCAtMTEzLDYgKzExMywxMSBAQCB1bnNpZ25lZCBEcmF3aW5nQnVmZmVyOjpmcm9udENvbG9y
QnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29sb3JCdWZmZXIoKTsKIH0KKwordm9pZCBE
cmF3aW5nQnVmZmVyOjpjbGVhclBsYXRmb3JtTGF5ZXIoKQoreworICAgIC8vIERvbid0IG5lZWQg
dG8gZG8gYW55dGhpbmcgb24gdGhpcyBwbGF0Zm9ybS4KK30KICNlbmRpZgogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZl
clF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5n
QnVmZmVyUXQuY3BwCmluZGV4IDE3YTU5YTQxODEwNGRlMGNkNzMxMWUzMjJkZTlkMTQyMjA2Y2Vh
NjQuLjkwNGE3NGZhNjQzMzc2NDIyYTI3NGI0MWRkYTYyNDFiODA0ZjE4MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5nQnVmZmVyUXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3aW5n
QnVmZmVyUXQuY3BwCkBAIC0xMDQsNiArMTA0LDEwIEBAIHVuc2lnbmVkIERyYXdpbmdCdWZmZXI6
OmZyb250Q29sb3JCdWZmZXIoKSBjb25zdAogdm9pZCBEcmF3aW5nQnVmZmVyOjpwYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKQogewogfQorCit2b2lkIERyYXdpbmdC
dWZmZXI6OmNsZWFyUGxhdGZvcm1MYXllcigpCit7Cit9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBi
YTVkODk4NjhmYWE2OWRkZGY4YjQyZTdhMDZlYTE2ZTc5MGFhNjIuLjA0ZWM5ZGJiMmM0YzA5ZWRk
YmQyZjgxMjk3Y2QzZmUwNTg5YzI5ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMS0w
OCAgQnJhbmRvbiBKb25lcyAgPGJham9uZXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2Ug
V2ViR0xSZW5kZXJpbmdDb250ZXh0IGluaGVyaXQgZnJvbSBBY3RpdmVET01PYmplY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDczMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvY29udGV4dC1yZWxlYXNlLXVwb24tcmVsb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1yZWxlYXNlLXVwb24tcmVsb2FkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9jb250ZXh0
LXJlbGVhc2UtdXBvbi1yZWxvYWQtY2hpbGQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMDggIERp
bWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21p
dW1dIExheW91dCBUZXN0cyBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50LXN2Z2RvbS10YWJsZVZhbHVlcyogYXJlIGZsYWt5LgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1yZWxlYXNlLXVwb24tcmVsb2FkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtcmVsZWFz
ZS11cG9uLXJlbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMwNmU1ZWI4NWFmOTdlOWQx
OTkxMDFhMDNjZGM5MzMwOWVjMTJiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2NvbnRleHQtcmVsZWFzZS11cG9uLXJlbG9hZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw1OSBAQAorCitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IFdlYkdMIGNvbnRleHRz
IGFyZSByZWxlYXNlZCBwcm9wZXJseSB1cG9uIHBhZ2UgcmVsb2FkCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitUZXN0IDEgb2YgMTAKK1BBU1MgY29udGV4dCB3YXMgY3JlYXRlZCBw
cm9wZXJseQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2hv
dWxkIGJlIG5vIGVycm9ycworUEFTUyBCdWZmZXIgd2FzIHRoZSBjb3JyZWN0IHNpemU6IDE2ODB4
MTA1MAorCitUZXN0IDIgb2YgMTAKK1BBU1MgY29udGV4dCB3YXMgY3JlYXRlZCBwcm9wZXJseQor
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2hvdWxkIGJlIG5v
IGVycm9ycworUEFTUyBCdWZmZXIgd2FzIHRoZSBjb3JyZWN0IHNpemU6IDE2ODB4MTA1MAorCitU
ZXN0IDMgb2YgMTAKK1BBU1MgY29udGV4dCB3YXMgY3JlYXRlZCBwcm9wZXJseQorUEFTUyBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2hvdWxkIGJlIG5vIGVycm9ycwor
UEFTUyBCdWZmZXIgd2FzIHRoZSBjb3JyZWN0IHNpemU6IDE2ODB4MTA1MAorCitUZXN0IDQgb2Yg
MTAKK1BBU1MgY29udGV4dCB3YXMgY3JlYXRlZCBwcm9wZXJseQorUEFTUyBnZXRFcnJvciB3YXMg
ZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2hvdWxkIGJlIG5vIGVycm9ycworUEFTUyBCdWZm
ZXIgd2FzIHRoZSBjb3JyZWN0IHNpemU6IDE2ODB4MTA1MAorCitUZXN0IDUgb2YgMTAKK1BBU1Mg
Y29udGV4dCB3YXMgY3JlYXRlZCBwcm9wZXJseQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IE5PX0VSUk9SIDogU2hvdWxkIGJlIG5vIGVycm9ycworUEFTUyBCdWZmZXIgd2FzIHRo
ZSBjb3JyZWN0IHNpemU6IDE2ODB4MTA1MAorCitUZXN0IDYgb2YgMTAKK1BBU1MgY29udGV4dCB3
YXMgY3JlYXRlZCBwcm9wZXJseQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5P
X0VSUk9SIDogU2hvdWxkIGJlIG5vIGVycm9ycworUEFTUyBCdWZmZXIgd2FzIHRoZSBjb3JyZWN0
IHNpemU6IDE2ODB4MTA1MAorCitUZXN0IDcgb2YgMTAKK1BBU1MgY29udGV4dCB3YXMgY3JlYXRl
ZCBwcm9wZXJseQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDog
U2hvdWxkIGJlIG5vIGVycm9ycworUEFTUyBCdWZmZXIgd2FzIHRoZSBjb3JyZWN0IHNpemU6IDE2
ODB4MTA1MAorCitUZXN0IDggb2YgMTAKK1BBU1MgY29udGV4dCB3YXMgY3JlYXRlZCBwcm9wZXJs
eQorUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2hvdWxkIGJl
IG5vIGVycm9ycworUEFTUyBCdWZmZXIgd2FzIHRoZSBjb3JyZWN0IHNpemU6IDE2ODB4MTA1MAor
CitUZXN0IDkgb2YgMTAKK1BBU1MgY29udGV4dCB3YXMgY3JlYXRlZCBwcm9wZXJseQorUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogU2hvdWxkIGJlIG5vIGVycm9y
cworUEFTUyBCdWZmZXIgd2FzIHRoZSBjb3JyZWN0IHNpemU6IDE2ODB4MTA1MAorCitUZXN0IDEw
IG9mIDEwCitQQVNTIGNvbnRleHQgd2FzIGNyZWF0ZWQgcHJvcGVybHkKK1BBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IFNob3VsZCBiZSBubyBlcnJvcnMKK1BBU1Mg
QnVmZmVyIHdhcyB0aGUgY29ycmVjdCBzaXplOiAxNjgweDEwNTAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0LXJlbGVhc2UtdXBvbi1yZWxvYWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtcmVsZWFzZS11cG9uLXJlbG9hZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc3ODNlMDQyZGJiMjhkZDMyNzY1YjIzNzNlNTRhMjlkOWVhZDNlNDAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9jb250ZXh0
LXJlbGVhc2UtdXBvbi1yZWxvYWQuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wg
Q29udGV4dCBSZWxlYXNlIFRlc3Q8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlm
cmFtZSBpZD0iaG9zdCIgc3R5bGU9IndpZHRoOiAyNTZweDsgaGVpZ2h0OiAyNTZweDsgYm9yZGVy
OiAwOyI+PC9pZnJhbWU+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMg
dGhhdCBXZWJHTCBjb250ZXh0cyBhcmUgcmVsZWFzZWQgcHJvcGVybHkgdXBvbiBwYWdlIHJlbG9h
ZCIpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGhvc3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIpOwordmFyIHRlc3RJdGVyYXRpb25zID0gMTA7
Cit2YXIgY3VycmVudEl0ZXJhdGlvbiA9IDA7CisKK2Z1bmN0aW9uIHJlZnJlc2hGcmFtZSgpIHsK
KyAgaWYoY3VycmVudEl0ZXJhdGlvbiA8IHRlc3RJdGVyYXRpb25zKSB7CisgICAgY3VycmVudEl0
ZXJhdGlvbisrOworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiVGVzdCAiICsgY3VycmVudEl0
ZXJhdGlvbiArICIgb2YgIiArIHRlc3RJdGVyYXRpb25zKTsKKyAgICBob3N0LnNyYyA9ICJyZXNv
dXJjZXMvY29udGV4dC1yZWxlYXNlLXVwb24tcmVsb2FkLWNoaWxkLmh0bWwiOworICB9IGVsc2Ug
eworICAgIGZpbmlzaFRlc3QoKTsKKyAgfQorfQorCitmdW5jdGlvbiB0ZXN0Q29udGV4dCgpIHsK
KyAgdmFyIGdsID0gaG9zdC5jb250ZW50V2luZG93LmdsQ29udGV4dDsKKyAgYXNzZXJ0TXNnKGds
ICE9IG51bGwsICJjb250ZXh0IHdhcyBjcmVhdGVkIHByb3Blcmx5Iik7CisKKyAgZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5OT19FUlJPUiwgIlNob3VsZCBiZSBubyBlcnJvcnMiKTsKKworICBpZihn
bC5jYW52YXMud2lkdGggIT0gZ2wuZHJhd2luZ0J1ZmZlcldpZHRoIHx8CisgICAgZ2wuY2FudmFz
LmhlaWdodCAhPSBnbC5kcmF3aW5nQnVmZmVySGVpZ2h0KSB7CisgICAgdGVzdEZhaWxlZCgiQnVm
ZmVyIHdhcyB0aGUgd3Jvbmcgc2l6ZTogIiArCisgICAgICAgIGdsLmRyYXdpbmdCdWZmZXJXaWR0
aCArICJ4IiArIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQpOworICB9IGVsc2UgeworICAgIHRlc3RQ
YXNzZWQoIkJ1ZmZlciB3YXMgdGhlIGNvcnJlY3Qgc2l6ZTogIiArCisgICAgICAgIGdsLmRyYXdp
bmdCdWZmZXJXaWR0aCArICJ4IiArIGdsLmRyYXdpbmdCdWZmZXJIZWlnaHQpOworICAgIHJlZnJl
c2hGcmFtZSgpOworICB9CisKKyAgZ2wgPSBudWxsOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgIGlmKGV2ZW50LmRhdGEgPT0gIlJl
YWR5IikgeworICAgIHRlc3RDb250ZXh0KCk7CisgIH0KK30pOworCityZWZyZXNoRnJhbWUoKTsK
Kzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvY29udGV4dC1yZWxlYXNlLXVwb24tcmVsb2FkLWNo
aWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvY29udGV4
dC1yZWxlYXNlLXVwb24tcmVsb2FkLWNoaWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQxNTk5ODg0ODhl
ZDdjZjBmYjYwNWMwZWNiYzQ1YWRjZDUyM2UwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9jb250ZXh0LXJlbGVhc2UtdXBvbi1yZWxv
YWQtY2hpbGQuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sIHN0
eWxlPSJtYXJnaW46IDA7IHBhZGRpbmc6IDA7Ij4KKyAgPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+CisgICAgPHRpdGxlPlNpbXBsZSBXZWJHTCBjb250ZXh0PC90aXRsZT4KKyAgICA8c2Ny
aXB0IHNyYz0id2ViZ2wtdGVzdC11dGlscy5qcyI+IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
c3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsgb3ZlcmZsb3c6IGhpZGRlbjsiPgorICAgIDxj
YW52YXMgaWQ9ImMiCisgICAgICAgIHdpZHRoPSIxNjgwIiBoZWlnaHQ9IjEwNTAiCisgICAgICAg
IHN0eWxlPSJ3aWR0aDogMjU2cHg7IGhlaWdodDogMjU2cHg7Ij4gPCEtLSBzY2FsZWQgdG8gZml0
IHBhZ2UgYmV0dGVyIC0tPgorICAgIDxzY3JpcHQgaWQ9InZzaGFkZXIiIHR5cGU9Ingtc2hhZGVy
L3gtdmVydGV4Ij4KKyAgICAgICAgYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOworICAgICAgICB2
b2lkIG1haW4oKQorICAgICAgICB7CisgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlv
bjsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBpZD0iZnNoYWRlciIg
dHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CisgICAgICAgIHZvaWQgbWFpbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLDAuMCwwLjAsMS4wKTsKKyAg
ICAgICAgfQorICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworCisgICAgICAgIHZhciBnbCA9IHd0dS5jcmVhdGUzRENvbnRleHQo
ImMiLCB7ImFudGlhbGlhc2VkIjogZmFsc2V9KTsKKyAgICAgICAgcHJvZ3JhbSA9IHd0dS5zZXR1
cFByb2dyYW0oZ2wsIFsidnNoYWRlciIsICJmc2hhZGVyIl0sIFsidlBvc2l0aW9uIl0pOworCisg
ICAgICAgIHZhciB2ZXJ0ZXhPYmplY3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICAgICAgZ2wu
YmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7CisgICAgICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsgMCwwLjc1LDAsIC0w
Ljc1LC0wLjc1LDAsIDAuNzUsLTAuNzUsMCBdKSwgZ2wuU1RBVElDX0RSQVcpOworICAgICAgICBn
bC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICAgICAgZ2wudmVydGV4QXR0cmliUG9p
bnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworCisgICAgICAgIGdsLmNsZWFyQ29s
b3IoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVS
X0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRS
SUFOR0xFUywgMCwgMyk7CisKKyAgICAgICAgaWYocGFyZW50KSB7CisgICAgICAgICAgICB3aW5k
b3cuZ2xDb250ZXh0ID0gZ2w7CisgICAgICAgICAgICBwYXJlbnQucG9zdE1lc3NhZ2UoIlJlYWR5
IiwgIioiKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>