<?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>97652</bug_id>
          
          <creation_ts>2012-09-26 02:52:45 -0700</creation_ts>
          <short_desc>[EFL][WK2] Implement WebGL</short_desc>
          <delta_ts>2012-10-26 05:44:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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>96627</dependson>
    
    <dependson>100494</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Regina Chung">heejin.r.chung</reporter>
          <assigned_to name="Regina Chung">heejin.r.chung</assigned_to>
          <cc>dino</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>joone</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>ostap73</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>728367</commentid>
    <comment_count>0</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-09-26 02:52:45 -0700</bug_when>
    <thetext>Enable WebGL for WebKit2 on EFL, with a GraphicsSurface based implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746195</commentid>
    <comment_count>1</comment_count>
      <attachid>169592</attachid>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-19 03:43:35 -0700</bug_when>
    <thetext>Created attachment 169592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746197</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-19 03:45:35 -0700</bug_when>
    <thetext>Attachment 169592 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:164:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:165:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746276</commentid>
    <comment_count>3</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-19 06:57:21 -0700</bug_when>
    <thetext>Any reason why not to use the existing GraphicsSurfaceGLX?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747218</commentid>
    <comment_count>4</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-21 21:49:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Any reason why not to use the existing GraphicsSurfaceGLX?

I was a bit hesitant about directly editing GraphicsSurfaceGLX, and thought of extracting the common code as a next step. But I guess I should just do that now :)

I&apos;m thinking of moving the QT dependent GraphicsSurfacePrivate code in GraphicsSurfaceGLX to GraphicsSurfaceQt and only leaving the corresponding code in GraphicsSurfaceEfl...
Should that be okay with you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747234</commentid>
    <comment_count>5</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-21 22:53:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Any reason why not to use the existing GraphicsSurfaceGLX?
&gt; 
&gt; I was a bit hesitant about directly editing GraphicsSurfaceGLX, and thought of extracting the common code as a next step. But I guess I should just do that now :)
&gt; 
&gt; I&apos;m thinking of moving the QT dependent GraphicsSurfacePrivate code in GraphicsSurfaceGLX to GraphicsSurfaceQt and only leaving the corresponding code in GraphicsSurfaceEfl...
&gt; Should that be okay with you?

Sounds like the right thing to do :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747238</commentid>
    <comment_count>6</comment_count>
      <attachid>169592</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-21 23:08:05 -0700</bug_when>
    <thetext>Comment on attachment 169592
Patch

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

r- because of incorrect licensing/authorship

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DPrivate.cpp:206
&gt; +#if USE(GRAPHICS_SURFACE)
&gt; +void GraphicsContext3DPrivate::createGraphicsSurfaces(const IntSize&amp; size)
&gt; +{
&gt; +    if (size.isEmpty())
&gt; +        m_graphicsSurface.clear();
&gt; +    else
&gt; +        m_graphicsSurface = GraphicsSurface::create(size, m_surfaceFlags);
&gt; +}
&gt; +
&gt; +uint32_t GraphicsContext3DPrivate::copyToGraphicsSurface()
&gt; +{
&gt; +    if (!m_graphicsSurface)
&gt; +        return 0;
&gt; +
&gt; +    makeContextCurrent();
&gt; +    m_graphicsSurface-&gt;copyFromTexture(m_context-&gt;m_texture, IntRect(0, 0, m_context-&gt;m_currentWidth, m_context-&gt;m_currentHeight));
&gt; +    return m_graphicsSurface-&gt;swapBuffers();
&gt; +}
&gt; +
&gt; +GraphicsSurfaceToken GraphicsContext3DPrivate::graphicsSurfaceToken() const
&gt; +{
&gt; +    return m_graphicsSurface-&gt;exportToken();
&gt; +}
&gt; +#endif

This looks like code that we could put into GraphicsContext3D.cpp if it&apos;s 100% identical between Qt and EFL.

&gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:2
&gt; + * Copyright (C) 2012 Samsung Electronics

This file is a 90% copy of surfaces/qt/GraphicsSurfaceGLX.cpp. If you decide to fork it like this, then you need to retain the existing license and authorship.

But I suggest to merge the efforts, i.e. create surfaces/glx/GraphicsSurfaceGLX.cpp with the little #ifdef&apos;ed glue code remaining for interaction with the toolkit GL bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747393</commentid>
    <comment_count>7</comment_count>
      <attachid>169871</attachid>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-22 03:44:36 -0700</bug_when>
    <thetext>Created attachment 169871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747394</commentid>
    <comment_count>8</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-22 03:47:50 -0700</bug_when>
    <thetext>Tried to reuse exiting code (GraphicsSurfaceGLX) as much as possible..

About the GC3DPrivate functions. Yes, they are 100% identical but I&apos;m not sure how to put them in GraphicsContext3D.cpp because they&apos;re &apos;GC3DPrivate&apos; member functions. And it&apos;s GC3DPrivate that&apos;s inheriting TextureMapperPlatformLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747397</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-22 03:50:20 -0700</bug_when>
    <thetext>Attachment 169871 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:97:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:98:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747466</commentid>
    <comment_count>10</comment_count>
      <attachid>169871</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-22 05:52:24 -0700</bug_when>
    <thetext>Comment on attachment 169871
Patch

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

&gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DPrivate.cpp:182
&gt; +

We are wondering, if it would make sense to move the common code down to GraphicsContext3D instead of GraphicsContext3DPrivate, and therefore make GraphicsContext3D derive from TextureMapperPlatformLayer directly.
This way we could get rid of quite some duplicated code and even improve the design, by having less many abstraction layers.

&gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:29
&gt; +

This code mostly looks like a copy from GraphicsSurfaceGLX.cpp. It would be nice if we could share more of it.
For Qt we could also operate on a pure GLXContext (i might need to tweak the Qt implementation a little bit) but we should be able to achieve this.
So most of this code could actually remain in GraphicsSurfaceGLX and actually replace the current code. - As long as you only use GLX api.

&gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:122
&gt; +        glXMakeCurrent(m_display, m_detachedSurface, m_detachedContext);

Here we should probably do:
m_detachedContext = 0;

It is missing in our implementation as well. :)

&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.h:57
&gt; +#if PLATFORM(QT)

We will not need most of these #ifdefs if we manage to unify the code as stated above.

&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.h:222
&gt; +    pGlXBindTexImageEXT = (PFNGLXBINDTEXIMAGEEXTPROC)glXGetProcAddress((GLubyte *) &quot;glXBindTexImageEXT&quot;);

I think C-style casts are not allowed in WebKit code base.

&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceQt.cpp:31
&gt; +

This code should be wrapped by:
#if HAVE(GLX)

because we Qt also uses this file on Mac and Windows.
Then again - As far as i see, all of it would go away under the premise that we can adjust the code as stated above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748178</commentid>
    <comment_count>11</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-22 19:13:40 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 169871 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169871&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/efl/GraphicsContext3DPrivate.cpp:182
&gt; &gt; +
&gt; 
&gt; We are wondering, if it would make sense to move the common code down to GraphicsContext3D instead of GraphicsContext3DPrivate, and therefore make GraphicsContext3D derive from TextureMapperPlatformLayer directly.
&gt; This way we could get rid of quite some duplicated code and even improve the design, by having less many abstraction layers.

Yes, I think that&apos;s a good idea. A lot of the code can be shared if GraphicsContext3D is derived from TextureMapperPlatformLayer directly.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:29
&gt; &gt; +
&gt; 
&gt; This code mostly looks like a copy from GraphicsSurfaceGLX.cpp. It would be nice if we could share more of it.
&gt; For Qt we could also operate on a pure GLXContext (i might need to tweak the Qt implementation a little bit) but we should be able to achieve this.
&gt; So most of this code could actually remain in GraphicsSurfaceGLX and actually replace the current code. - As long as you only use GLX api.
&gt; 

The efl port will only use GLX api, so it would be great if we can completely share the original GraphicsSurfaceGLX implementation.

&gt; &gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:122
&gt; &gt; +        glXMakeCurrent(m_display, m_detachedSurface, m_detachedContext);
&gt; 
&gt; Here we should probably do:
&gt; m_detachedContext = 0;
&gt; 
&gt; It is missing in our implementation as well. :)
&gt; 
This would probably go into the common code if we&apos;re able to adjust the code as you suggested? :)

&gt; &gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.h:57
&gt; &gt; +#if PLATFORM(QT)
&gt; 
&gt; We will not need most of these #ifdefs if we manage to unify the code as stated above.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.h:222
&gt; &gt; +    pGlXBindTexImageEXT = (PFNGLXBINDTEXIMAGEEXTPROC)glXGetProcAddress((GLubyte *) &quot;glXBindTexImageEXT&quot;);
&gt; 
&gt; I think C-style casts are not allowed in WebKit code base.
&gt; 

I&apos;ll fix that.

&gt; &gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceQt.cpp:31
&gt; &gt; +
&gt; 
&gt; This code should be wrapped by:
&gt; #if HAVE(GLX)
&gt; 
&gt; because we Qt also uses this file on Mac and Windows.
&gt; Then again - As far as i see, all of it would go away under the premise that we can adjust the code as stated above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749424</commentid>
    <comment_count>12</comment_count>
      <attachid>170334</attachid>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-24 00:22:32 -0700</bug_when>
    <thetext>Created attachment 170334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749428</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 00:25:43 -0700</bug_when>
    <thetext>Attachment 170334 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:235:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:236:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749438</commentid>
    <comment_count>14</comment_count>
      <attachid>170337</attachid>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-24 00:51:29 -0700</bug_when>
    <thetext>Created attachment 170337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749467</commentid>
    <comment_count>15</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-24 01:32:43 -0700</bug_when>
    <thetext>I moved back everything to GraphicsSurfaceGLX and added the EFL code with #ifdefs. Most of these #ifdefs should be cleaned up when Qt also works with a pure GLXContext, as Zeno suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749508</commentid>
    <comment_count>16</comment_count>
      <attachid>170337</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-24 03:44:30 -0700</bug_when>
    <thetext>Comment on attachment 170337
Patch

LGTM, once the patch has landed i will go through the #ifdefs on the Qt side, and remove as many as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749520</commentid>
    <comment_count>17</comment_count>
      <attachid>170337</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-24 04:11:17 -0700</bug_when>
    <thetext>Comment on attachment 170337
Patch

Why you don&apos;t enable WEBGL in OptionEfl.cmake ? It looks this patch enables WEBGL feature according to bug title. By the way, are there no unskipped tests by this patch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749522</commentid>
    <comment_count>18</comment_count>
      <attachid>170337</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-24 04:14:13 -0700</bug_when>
    <thetext>Comment on attachment 170337
Patch

Oops. I clear r+ by kenneth. My mistake. So, I set r+ again. I would like to listen answer about my question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749583</commentid>
    <comment_count>19</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-24 05:33:45 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 170337 [details])
&gt; Why you don&apos;t enable WEBGL in OptionEfl.cmake ? It looks this patch enables WEBGL feature according to bug title. By the way, are there no unskipped tests by this patch ?
Most likely not. Even though this might be bad practice, we currently do not have infrastructure to do read-pixel based tests for webgl content for the Qt port.
And the Qt port was up to know, the only one using the GraphicsSurface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750832</commentid>
    <comment_count>20</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-25 07:52:43 -0700</bug_when>
    <thetext>I changed the bug title after seeing Gyuyoung&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751350</commentid>
    <comment_count>21</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-25 16:52:35 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I changed the bug title after seeing Gyuyoung&apos;s comments.

As I asked in comment #17, Why you don&apos;t enable ENABLE_WEBGL macro in OptionEfl.cmake ? Will you enable it in other patches ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751405</commentid>
    <comment_count>22</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-25 18:25:58 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; I changed the bug title after seeing Gyuyoung&apos;s comments.
&gt; As I asked in comment #17, Why you don&apos;t enable ENABLE_WEBGL macro in OptionEfl.cmake ? Will you enable it in other patches ?

I thought it would be better to leave it as a build option rather than enabling webgl by default. Or should I enable I by default (actually it can only be enabled with the 3d-rendering and tiled-backing-store options)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751414</commentid>
    <comment_count>23</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-25 18:37:15 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; I changed the bug title after seeing Gyuyoung&apos;s comments.
&gt; &gt; As I asked in comment #17, Why you don&apos;t enable ENABLE_WEBGL macro in OptionEfl.cmake ? Will you enable it in other patches ?
&gt; 
&gt; I thought it would be better to leave it as a build option rather than enabling webgl by default. Or should I enable I by default (actually it can only be enabled with the 3d-rendering and tiled-backing-store options)?

I think it is better to enable the flag (when tiled-backing-store is enabled).
That way it is easier for us to build with the feature turned on, test it and fix bugs that we find.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751446</commentid>
    <comment_count>24</comment_count>
      <attachid>170786</attachid>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-25 19:04:55 -0700</bug_when>
    <thetext>Created attachment 170786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751447</commentid>
    <comment_count>25</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-25 19:06:00 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; &gt; I changed the bug title after seeing Gyuyoung&apos;s comments.
&gt; &gt; &gt; As I asked in comment #17, Why you don&apos;t enable ENABLE_WEBGL macro in OptionEfl.cmake ? Will you enable it in other patches ?
&gt; &gt; 
&gt; &gt; I thought it would be better to leave it as a build option rather than enabling webgl by default. Or should I enable I by default (actually it can only be enabled with the 3d-rendering and tiled-backing-store options)?
&gt; I think it is better to enable the flag (when tiled-backing-store is enabled).
&gt; That way it is easier for us to build with the feature turned on, test it and fix bugs that we find.

I enabled webgl when tiled-backing-store is enabled in OptionsEfl.cmake :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751460</commentid>
    <comment_count>26</comment_count>
      <attachid>170789</attachid>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-25 19:40:37 -0700</bug_when>
    <thetext>Created attachment 170789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751461</commentid>
    <comment_count>27</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-25 19:41:48 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Created an attachment (id=170789) [details]
&gt; Patch

Sorry, there was a merge error in my last patch.. I fixed it in this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751462</commentid>
    <comment_count>28</comment_count>
      <attachid>170790</attachid>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-25 19:43:50 -0700</bug_when>
    <thetext>Created attachment 170790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751464</commentid>
    <comment_count>29</comment_count>
      <attachid>170789</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-10-25 19:51:12 -0700</bug_when>
    <thetext>Comment on attachment 170789
Patch

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

&gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:23
&gt; +#if USE(GRAPHICS_SURFACE) &amp;&amp; PLATFORM(EFL)

I think that we don&apos;t need to check PLATFORM(EFL) in Efl file.

&gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:29
&gt; +PassOwnPtr&lt;GraphicsContext&gt; GraphicsSurface::platformBeginPaint(const IntSize&amp; size, char* bits, int stride)

As a style issue, please remove unused variable name.
XXX(const IntSize&amp;, char*, int) is enough

&gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:35
&gt; +PassRefPtr&lt;Image&gt; GraphicsSurface::createReadOnlyImage(const IntRect&amp; rect)

Ditto.

&gt; Source/cmake/OptionsEfl.cmake:192
&gt; +  SET (ENABLE_WEBGL 1)

Could you check this once more?

I am not sure whether changing cmake variable is enough.
DOM.idl has WEBGL condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751670</commentid>
    <comment_count>30</comment_count>
      <attachid>170790</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-26 01:17:32 -0700</bug_when>
    <thetext>Comment on attachment 170790
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Implemented GraphicsSurface for EFL to enable WebGL for WebKit2.
&gt; +        Depends on GLX since Evas doesn&apos;t provide the necessary functionality.

Great, I dont see any reason to depend on Evas, so far it is only resulting in problems. Using GLX or EGL directly is fine.

&gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:5
&gt; +/*
&gt; +    Copyright (C) 2012 Samsung Electronics
&gt; +
&gt; +    This library is free software; you can redistribute it and/or
&gt; +    modify it under the terms of the GNU Library General Public

Do we need this GraphicsSurfaceEfl file? I dont understand why we need a port specific file for this, especailly given it does nothing!

&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:100
&gt; +#elif PLATFORM(EFL)

I dont think this is EFL related, it is more like GLX pure...

&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:188
&gt; +#endif

I would change this to

#elif PLATFORM(QT)
    m_glContext = adoptPtr(new QOpenGLContext);
#endif

and remove that from the ctor

&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:420
&gt;      pGlGenFramebuffers = reinterpret_cast&lt;PFNGLGENFRAMEBUFFERSPROC&gt;(glContext-&gt;getProcAddress(&quot;glGenFramebuffers&quot;));
&gt;      pGlDeleteFramebuffers = reinterpret_cast&lt;PFNGLDELETEFRAMEBUFFERSPROC&gt;(glContext-&gt;getProcAddress(&quot;glDeleteFramebuffers&quot;));
&gt;      pGlFramebufferTexture2D = reinterpret_cast&lt;PFNGLFRAMEBUFFERTEXTURE2DPROC&gt;(glContext-&gt;getProcAddress(&quot;glFramebufferTexture2D&quot;));
&gt; -
&gt; +#elif PLATFORM(EFL)
&gt; +    pGlXBindTexImageEXT = reinterpret_cast&lt;PFNGLXBINDTEXIMAGEEXTPROC&gt;(glXGetProcAddress(reinterpret_cast&lt;const GLubyte*&gt;(&quot;glXBindTexImageEXT&quot;)));
&gt; +    pGlXReleaseTexImageEXT = reinterpret_cast&lt;PFNGLXRELEASETEXIMAGEEXTPROC&gt;(glXGetProcAddress(reinterpret_cast&lt;const GLubyte*&gt;(&quot;glXReleaseTexImageEXT&quot;)));

Can&apos;t this be shared somehow? Why is it different? can a macro or template help?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751689</commentid>
    <comment_count>31</comment_count>
      <attachid>170851</attachid>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-26 01:46:58 -0700</bug_when>
    <thetext>Created attachment 170851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751693</commentid>
    <comment_count>32</comment_count>
    <who name="Regina Chung">heejin.r.chung</who>
    <bug_when>2012-10-26 01:49:47 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 170789 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170789&amp;action=review
&gt; &gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:23
&gt; &gt; +#if USE(GRAPHICS_SURFACE) &amp;&amp; PLATFORM(EFL)
&gt; I think that we don&apos;t need to check PLATFORM(EFL) in Efl file.
&gt; &gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:29
&gt; &gt; +PassOwnPtr&lt;GraphicsContext&gt; GraphicsSurface::platformBeginPaint(const IntSize&amp; size, char* bits, int stride)
&gt; As a style issue, please remove unused variable name.
&gt; XXX(const IntSize&amp;, char*, int) is enough
&gt; &gt; Source/WebCore/platform/graphics/surfaces/efl/GraphicsSurfaceEfl.cpp:35
&gt; &gt; +PassRefPtr&lt;Image&gt; GraphicsSurface::createReadOnlyImage(const IntRect&amp; rect)
&gt; Ditto.
&gt; &gt; Source/cmake/OptionsEfl.cmake:192
&gt; &gt; +  SET (ENABLE_WEBGL 1)
&gt; Could you check this once more?
&gt; I am not sure whether changing cmake variable is enough.
&gt; DOM.idl has WEBGL condition.

I removed the GraphicsSurfaceEfl.cpp file as Kenneth suggested and moved the &apos;notImplemented&apos; functions into GraphicsSurfaceGLX.cpp.
Also removed the parameter names as you mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751694</commentid>
    <comment_count>33</comment_count>
      <attachid>170790</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-26 01:49:50 -0700</bug_when>
    <thetext>Comment on attachment 170790
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:100
&gt;&gt; +#elif PLATFORM(EFL)
&gt; 
&gt; I dont think this is EFL related, it is more like GLX pure...

This #ifdef can go away completely, once i switched Qt to use pure GLX as well.
I have a patch ready for that, but it of course depends on this patch. :)

&gt;&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:188
&gt;&gt; +#endif
&gt; 
&gt; I would change this to
&gt; 
&gt; #elif PLATFORM(QT)
&gt;     m_glContext = adoptPtr(new QOpenGLContext);
&gt; #endif
&gt; 
&gt; and remove that from the ctor

Same here.

&gt;&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:420
&gt;&gt; +    pGlXReleaseTexImageEXT = reinterpret_cast&lt;PFNGLXRELEASETEXIMAGEEXTPROC&gt;(glXGetProcAddress(reinterpret_cast&lt;const GLubyte*&gt;(&quot;glXReleaseTexImageEXT&quot;)));
&gt; 
&gt; Can&apos;t this be shared somehow? Why is it different? can a macro or template help?

No need for macros. Th current Qt code path will go away. Asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751696</commentid>
    <comment_count>34</comment_count>
      <attachid>170851</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-26 01:51:27 -0700</bug_when>
    <thetext>Comment on attachment 170851
Patch

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

&gt; ChangeLog:6
&gt; +        Reviewed by Gyuyoung Kim.

You are still changing it, to reset review please

&gt; Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:79
&gt; +    Window* get(Display* dpy)

Weird method name.

Window* createOffscreenXWindow()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751703</commentid>
    <comment_count>35</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-26 01:56:49 -0700</bug_when>
    <thetext>Thanks for the update Zeno! You want this to go in as it is?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751707</commentid>
    <comment_count>36</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-26 02:05:04 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Thanks for the update Zeno! You want this to go in as it is?

I cant judge for EFL, but from the Qt side it is fine with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751775</commentid>
    <comment_count>37</comment_count>
      <attachid>170851</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 03:22:16 -0700</bug_when>
    <thetext>Comment on attachment 170851
Patch

Clearing flags on attachment: 170851

Committed r132601: &lt;http://trac.webkit.org/changeset/132601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751776</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 03:22:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751813</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-26 03:49:55 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 100494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751823</commentid>
    <comment_count>40</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-26 03:57:19 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 170851 [details])
&gt; Clearing flags on attachment: 170851
&gt; 
&gt; Committed r132601: &lt;http://trac.webkit.org/changeset/132601&gt;

Rolled out, because it broke the Qt build:

/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp: In constructor ‘WebCore::GraphicsSurfacePrivate::GraphicsSurfacePrivate(PlatformGraphicsContext3D)’:
/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:151:27: error: no matching function for call to ‘WTF::OwnPtr&lt;QOpenGLContext&gt;::OwnPtr(int)’
/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:151:27: note: candidates are:
/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WTF/wtf/OwnPtr.h:60:9: note: WTF::OwnPtr&lt;T&gt;::OwnPtr(const WTF::OwnPtr&lt;typename WTF::RemovePointer&lt;T&gt;::Type&gt;&amp;) [with T = QOpenGLContext, typename WTF::RemovePointer&lt;T&gt;::Type = QOpenGLContext]
/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WTF/wtf/OwnPtr.h:60:9: note:   no known conversion for argument 1 from ‘int’ to ‘const WTF::OwnPtr&lt;QOpenGLContext&gt;&amp;’
/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WTF/wtf/OwnPtr.h:53:30: note: template&lt;class U&gt; WTF::OwnPtr::OwnPtr(const WTF::PassOwnPtr&lt;U&gt;&amp;)
/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WTF/wtf/OwnPtr.h:50:9: note: WTF::OwnPtr&lt;T&gt;::OwnPtr(std::nullptr_t) [with T = QOpenGLContext]
/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WTF/wtf/OwnPtr.h:50:9: note:   no known conversion for argument 1 from ‘int’ to ‘std::nullptr_t’
/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WTF/wtf/OwnPtr.h:49:9: note: WTF::OwnPtr&lt;T&gt;::OwnPtr() [with T = QOpenGLContext]
/home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WTF/wtf/OwnPtr.h:49:9: note:   candidate expects 0 arguments, 1 provided</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751884</commentid>
    <comment_count>41</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-26 04:53:05 -0700</bug_when>
    <thetext>Unfortunately we caught to build fail lately, because libxcomposite-dev 
wasn&apos;t installes on our bots (nobody complained about it and build-webkit 
simple disabled building GraphicsSurfaceGLX.cpp)

I installed this package, we will catch similar failures by the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751892</commentid>
    <comment_count>42</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-26 04:57:04 -0700</bug_when>
    <thetext>(In reply to comment #40)

&gt; Rolled out, because it broke the Qt build:
&gt; 
&gt; /home/webkitbuildbot/slaves/release64bitWebKit2_EC2/buildslave/qt-linux-64-release-webkit2/build/Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp: In constructor 
...

This error would be fixed as well by: https://bugs.webkit.org/show_bug.cgi?id=100492
So how do we proceed about that now?
Sorry for not being online right now, i&apos;m facing some trouble with my quassel core right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751921</commentid>
    <comment_count>43</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-26 05:20:55 -0700</bug_when>
    <thetext>Committed r132627: &lt;http://trac.webkit.org/changeset/132627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751937</commentid>
    <comment_count>44</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-26 05:33:12 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; Committed r132627: &lt;http://trac.webkit.org/changeset/132627&gt;

The build is still failing:
/ramdisk/qt-linux-32-release-webkit2/build/Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp: In constructor ‘WebCore::GraphicsSurfacePrivate::GraphicsSurfacePrivate(QOpenGLContext*)’:
/ramdisk/qt-linux-32-release-webkit2/build/Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:139: error: ‘glxGetCurrentContext’ was not declared in this scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751943</commentid>
    <comment_count>45</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-26 05:44:51 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; (In reply to comment #43)
&gt; &gt; Committed r132627: &lt;http://trac.webkit.org/changeset/132627&gt;
&gt; 
&gt; The build is still failing:
&gt; /ramdisk/qt-linux-32-release-webkit2/build/Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp: In constructor ‘WebCore::GraphicsSurfacePrivate::GraphicsSurfacePrivate(QOpenGLContext*)’:
&gt; /ramdisk/qt-linux-32-release-webkit2/build/Source/WebCore/platform/graphics/surfaces/qt/GraphicsSurfaceGLX.cpp:139: error: ‘glxGetCurrentContext’ was not declared in this scope

Fixed in http://trac.webkit.org/changeset/132634 :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169592</attachid>
            <date>2012-10-19 03:43:35 -0700</date>
            <delta_ts>2012-10-22 03:44:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97652-20121019194301.patch</filename>
            <type>text/plain</type>
            <size>28983</size>
            <attacher name="Regina Chung">heejin.r.chung</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMTg4
NCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEw
LTE5ICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgR3JhcGhpY3MgU3VyZmFjZSB0byBlbmFibGUgV2ViR0wgZm9y
IFdlYktpdDIgRUZMLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6
CisKIDIwMTItMTAtMTggIExhc3psbyBHb21ib3MgIDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBbRUZMXSBCdWlsZGZpeCBpZiBOZXRzY2FwZSBwbHVnaW4gc3VwcG9ydCBpcyBkaXNh
YmxlZApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMxODg0KQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTItMTAtMTkgIFJl
Z2luYSBDaHVuZyAgPGhlZWppbi5yLmNodW5nQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxd
W1dLMl0gRW5hYmxlIFdlYkdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NzY1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudGVkIEdyYXBoaWNzU3VyZmFjZSBmb3IgRUZMIHRvIGVuYWJsZSBX
ZWJHTCBmb3IgV2ViS2l0Mi4KKyAgICAgICAgRGVwZW5kcyBvbiBHTFggc2luY2UgRXZhcyBkb2Vz
bid0IHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3Jt
RWZsLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGlj
c1N1cmZhY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNvcHlUb0dyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAg
ICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWZsOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9lZmwvR3JhcGhpY3NTdXJmYWNlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKE9mZlNjcmVlblJvb3RXaW5kb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpPZmZTY3JlZW5Sb290V2luZG93OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6T2Zm
U2NyZWVuUm9vdFdpbmRvdzo6fk9mZlNjcmVlblJvb3RXaW5kb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAg
ICAgIChHcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZVByaXZhdGU6On5HcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3JlYXRlUGl4bWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6Om1ha2VDdXJyZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmRvbmVDdXJyZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmNvcHlGcm9tVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpkaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmdseFBpeG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
c29sdmVHTE1ldGhvZHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0
Zm9ybUV4cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3Jt
R2V0VGV4dHVyZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1Db3B5VG9HTFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpw
bGF0Zm9ybUNvcHlGcm9tVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Td2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzU3VyZmFjZTo6cGxhdGZvcm1JbXBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUxvY2spOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVVubG9jayk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtRGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtQmVnaW5QYWludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmNyZWF0
ZVJlYWRPbmx5SW1hZ2UpOgorCiAyMDEyLTEwLTE5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxv
dkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW52YWxpZCBSZWdleCBp
biBTQVNTU291cmNlTWFwcGluZy9kaWRSZXF1ZXN0Q29udGVudCwgYnJlYWtzIFN1cHBvcnQgZm9y
IFNhc3MgZXhwZXJpbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9u
IDEzMTg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0zLDYgKzMsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UvZWZsIgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZWZsIgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvZWZsIgorICAiJHtX
RUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMiCiAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9saW51eCIKICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lciIKICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsvc291cCIKQEAg
LTI5NCw2ICsyOTUsOCBAQCBJRiAoV1RGX1VTRV8zRF9HUkFQSElDUykKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VmbC9HcmFwaGljc1N1cmZhY2VFZmwuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCiAgICkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAkocmV2aXNpb24gMTMxODcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBA
QCB0eXBlZGVmIFFPcGVuR0xDb250ZXh0KiBQbGF0Zm9ybUdyYXBoaWNzCiB0eXBlZGVmIFFTdXJm
YWNlKiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTNEOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRDsKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFwaGljc1N1
cmZhY2UzRDsKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShC
TEFDS0JFUlJZKSkgJiYgVVNFKFNLSUEpCkBAIC05NDcsNyArOTQ4LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCByZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCByZXNvbHZlTXVs
dGlzYW1wbGluZ0lmTmVjZXNzYXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKLSNpZiBQ
TEFURk9STShRVCkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaWYgKFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShFRkwpKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2b2lkIGNyZWF0
ZUdyYXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNERWZsLmNwcAkocmV2aXNpb24gMTMxODcwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9D
YW52YXMoY28KICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIG1fcHJpdmF0ZS0+Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhz
aXplKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cAkocmV2aXNpb24gMTMxODcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIb3N0V2lu
ZG93LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRDYWlyby5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzX0dM
Lmg+CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CkBAIC04Nyw2ICs4OCwxMyBAQCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4CiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisg
ICAgSW50U2l6ZSBzdXJmYWNlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRl
eHQtPm1fY3VycmVudEhlaWdodCk7CisgICAgbV9zdXJmYWNlRmxhZ3MgPSBHcmFwaGljc1N1cmZh
Y2U6OlN1cHBvcnRzVGV4dHVyZVRhcmdldCB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFy
aW5nOworICAgIGlmICghc3VyZmFjZVNpemUuaXNFbXB0eSgpKQorICAgICAgICBtX2dyYXBoaWNz
U3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHN1cmZhY2VTaXplLCBtX3N1cmZhY2VG
bGFncyk7CisjZW5kaWYKIH0KIAogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlKCkKQEAgLTEwMSw4ICsxMDksMTEgQEAgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjp+R3JhcGhpY3NDb250ZQogICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveSht
X2V2YXNHTCwgbV9ldmFzR0xDb250ZXh0KTsKIAogICAgIGV2YXNfZ2xfZnJlZShtX2V2YXNHTCk7
Ci19CiAKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBtX2dyYXBoaWNzU3VyZmFjZS5j
bGVhcigpOworI2VuZGlmCit9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVTdXJmYWNlKFBhZ2VDbGllbnRFZmwqIHBhZ2VDbGllbnQsIGJvb2wgcmVuZGVyRGlyZWN0bHlU
b0hvc3RXaW5kb3cpCiB7CkBAIC0xNjgsNiArMTc5LDMyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpwYWludFRvVGUKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogI2VuZGlmCisK
KyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYg
KHNpemUuaXNFbXB0eSgpKQorICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS5jbGVhcigpOworICAg
IGVsc2UKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0
ZShzaXplLCBtX3N1cmZhY2VGbGFncyk7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y29weVRvR3JhcGhpY3NTdXJmYWNlKCkKK3sKKyAgICBpZiAoIW1fZ3JhcGhpY3NT
dXJmYWNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5jb3B5RnJvbVRleHR1cmUobV9jb250ZXh0LT5tX3RleHR1
cmUsIEludFJlY3QoMCwgMCwgbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5t
X2N1cnJlbnRIZWlnaHQpKTsKKyAgICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZm
ZXJzKCk7Cit9CisKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNz
U3VyZmFjZS0+ZXhwb3J0VG9rZW4oKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBVU0UoM0RfR1JBUEhJQ1MpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgJKHJldmlzaW9uIDEz
MTg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTAgQEAKICNpbmNs
dWRlIDx0ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaD4KICNlbmRpZgogCisjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCisjZW5k
aWYKKwogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfR0wgICAgICAgICAgICAgICBFdmFzX0dMOwogdHlw
ZWRlZiBzdHJ1Y3QgX0V2YXNfR0xfU3VyZmFjZSAgICAgICBFdmFzX0dMX1N1cmZhY2U7CiB0eXBl
ZGVmIHN0cnVjdCBfRXZhc19HTF9Db250ZXh0ICAgICAgIEV2YXNfR0xfQ29udGV4dDsKQEAgLTUy
LDYgKzU2LDEyIEBAIHB1YmxpYzoKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdmly
dHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5
LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKICNlbmRpZgorI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQorICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCk7CisgICAgdmly
dHVhbCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0Owor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRTaXplJik7CisjZW5kaWYK
KwogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgYm9vbCBjcmVhdGVTdXJmYWNl
KFBhZ2VDbGllbnRFZmwqLCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpOwogICAg
IHZvaWQgc2V0Q3VycmVudEdMQ29udGV4dCh2b2lkKiwgdm9pZCopOwpAQCAtNTksNiArNjksMTAg
QEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRl
czsKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEhvc3RXaW5kb3cqIG1f
aG9zdFdpbmRvdzsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBHcmFwaGljc1N1cmZh
Y2U6OkZsYWdzIG1fc3VyZmFjZUZsYWdzOworICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IG1f
Z3JhcGhpY3NTdXJmYWNlOworI2VuZGlmCiAKICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT4gbV9z
eW50aGV0aWNFcnJvcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAkocmV2aXNpb24gMTMxODcwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnJlc2hhcGUoaW50IHdpZHQKICAgICBpZiAod2lkdGggPT0gbV9jdXJyZW50V2lkdGggJiYgaGVp
Z2h0ID09IG1fY3VycmVudEhlaWdodCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0o
UVQpICYmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2lmIChQTEFURk9STShRVCkgfHwgUExBVEZP
Uk0oRUZMKSkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgOjpnbEZsdXNoKCk7IC8vIE1h
a2Ugc3VyZSBhbGwgR0wgY2FsbHMgaGF2ZSBiZWVuIGNvbW1pdHRlZCBiZWZvcmUgcmVzaXppbmcu
CiAgICAgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZs
L0dyYXBoaWNzU3VyZmFjZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUVmbC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwv
R3JhcGhpY3NTdXJmYWNlRWZsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgorCisjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCisjaWZkZWYgSEFWRV9FQ09SRV9YCisKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorI2luY2x1ZGUgPEdM
L2dsLmg+CisjaW5jbHVkZSA8R0wvZ2x4Lmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNv
bXBvc2l0ZS5oPgorI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdGF0aWMgbG9uZyBYMTFPdmVycmlkZVJlZGlyZWN0ID0gMUwgPDwg
OTsKKworc3RhdGljIFBGTkdMWEJJTkRURVhJTUFHRUVYVFBST0MgcEdsWEJpbmRUZXhJbWFnZUVY
VCA9IDA7CitzdGF0aWMgUEZOR0xYUkVMRUFTRVRFWElNQUdFRVhUUFJPQyBwR2xYUmVsZWFzZVRl
eEltYWdlRVhUID0gMDsKK3N0YXRpYyBQRk5HTEJJTkRGUkFNRUJVRkZFUlBST0MgcEdsQmluZEZy
YW1lYnVmZmVyID0gMDsKK3N0YXRpYyBQRk5HTEJMSVRGUkFNRUJVRkZFUlBST0MgcEdsQmxpdEZy
YW1lYnVmZmVyID0gMDsKK3N0YXRpYyBQRk5HTEdFTkZSQU1FQlVGRkVSU1BST0MgcEdsR2VuRnJh
bWVidWZmZXJzID0gMDsKK3N0YXRpYyBQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0MgcEdsRGVs
ZXRlRnJhbWVidWZmZXJzID0gMDsKK3N0YXRpYyBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJEUFJP
QyBwR2xGcmFtZWJ1ZmZlclRleHR1cmUyRCA9IDA7CisKK2NsYXNzIE9mZlNjcmVlblJvb3RXaW5k
b3cgeworcHVibGljOgorICAgIE9mZlNjcmVlblJvb3RXaW5kb3coKQorICAgIHsKKyAgICAgICAg
KytyZWZDb3VudDsKKyAgICB9CisKKyAgICBXaW5kb3cqIGdldChEaXNwbGF5KiBkcHkpCisgICAg
eworICAgICAgICBpZiAoIXdpbmRvdykgeworICAgICAgICAgICAgd2luZG93ID0gWENyZWF0ZVNp
bXBsZVdpbmRvdyhkcHksIFhEZWZhdWx0Um9vdFdpbmRvdyhkcHkpLCAtMSwgLTEsIDEsIDEsIDAs
IEJsYWNrUGl4ZWwoZHB5LCAwKSwgV2hpdGVQaXhlbChkcHksIDApKTsKKworICAgICAgICAgICAg
WFNldFdpbmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMu
b3ZlcnJpZGVfcmVkaXJlY3QgPSB0cnVlOworICAgICAgICAgICAgWENoYW5nZVdpbmRvd0F0dHJp
YnV0ZXMoZHB5LCB3aW5kb3csIFgxMU92ZXJyaWRlUmVkaXJlY3QsICZhdHRyaWJ1dGVzKTsKKyAg
ICAgICAgICAgIGRpc3BsYXkgPSBkcHk7CisgICAgICAgICAgICAvLyBNYXAgd2luZG93IHRvIHRo
ZSBzY3JlZW4KKyAgICAgICAgICAgIFhNYXBXaW5kb3coZHB5LCB3aW5kb3cpOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuICZ3aW5kb3c7CisgICAgfQorCisgICAgfk9mZlNjcmVlblJvb3RX
aW5kb3coKQorICAgIHsKKyAgICAgICAgaWYgKCEtLXJlZkNvdW50KSB7CisgICAgICAgICAgICBY
VW5tYXBXaW5kb3coZGlzcGxheSwgd2luZG93KTsKKyAgICAgICAgICAgIFhEZXN0cm95V2luZG93
KGRpc3BsYXksIHdpbmRvdyk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3Rh
dGljIGludCByZWZDb3VudDsKKyAgICBzdGF0aWMgV2luZG93IHdpbmRvdzsKKyAgICBEaXNwbGF5
KiBkaXNwbGF5OworfTsKKworaW50IE9mZlNjcmVlblJvb3RXaW5kb3c6OnJlZkNvdW50ID0gMDsK
K1dpbmRvdyBPZmZTY3JlZW5Sb290V2luZG93Ojp3aW5kb3cgPSAwOworCitzdGF0aWMgY29uc3Qg
aW50IGdseFNwZWNbXSA9IHsKKyAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBpcyBhIHNldCBrZXkg
dmFsdWUgcGFpcnMgc3RvcmVkIGluIGEgc2ltcGxlIGFycmF5LgorICAgIEdMWF9MRVZFTCwgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgR0xYX0RSQVdBQkxFX1RZUEUsICAgICAgICAg
ICAgICAgICAgR0xYX1BJWE1BUF9CSVQgfCBHTFhfV0lORE9XX0JJVCwKKyAgICBHTFhfQklORF9U
T19URVhUVVJFX1RBUkdFVFNfRVhULCAgICBHTFhfVEVYVFVSRV8yRF9CSVRfRVhULAorICAgIEdM
WF9CSU5EX1RPX1RFWFRVUkVfUkdCX0VYVCwgICAgICAgIFRSVUUsCisgICAgMAorfTsKKworc3Rh
dGljIGNvbnN0IGludCBnbHhBdHRyaWJ1dGVzW10gPSB7CisgICAgR0xYX1RFWFRVUkVfRk9STUFU
X0VYVCwKKyAgICBHTFhfVEVYVFVSRV9GT1JNQVRfUkdCX0VYVCwKKyAgICBHTFhfVEVYVFVSRV9U
QVJHRVRfRVhULAorICAgIEdMWF9URVhUVVJFXzJEX0VYVCwKKyAgICAwCit9OworCitzdHJ1Y3Qg
R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CisgICAgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZShjb25z
dCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHNoYXJlQ29udGV4dCA9IDApCisgICAgICAgIDog
bV9kaXNwbGF5KDApCisgICAgICAgICwgbV94UGl4bWFwKDApCisgICAgICAgICwgbV9nbHhQaXht
YXAoMCkKKyAgICAgICAgLCBtX3dpbmRvdygwKQorICAgICAgICAsIG1fZ2x4Q29udGV4dCgwKQor
ICAgICAgICAsIG1fZGV0YWNoZWRDb250ZXh0KDApCisgICAgICAgICwgbV9kZXRhY2hlZERyYXdh
YmxlKDApCisgICAgICAgICwgbV90ZXh0dXJlSXNZSW52ZXJ0ZWQoZmFsc2UpCisgICAgICAgICwg
bV9oYXNBbHBoYShmYWxzZSkKKyAgICB7CisgICAgICAgIG1fZGlzcGxheSA9IFhPcGVuRGlzcGxh
eSgwKTsKKworICAgICAgICBpbnQgYXR0cmlidXRlc1tdID0geworICAgICAgICAgICAgR0xYX0xF
VkVMLCAwLAorICAgICAgICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULAor
ICAgICAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCAgIEdMWF9SR0JBX0JJVCwKKyAgICAgICAgICAg
IEdMWF9SRURfU0laRSwgICAgICAxLCAgICAgLyogdGhlIG1heGltdW0gbnVtYmVyIG9mIGJpdHMg
cGVyIGNvbXBvbmVudCAgICAqLworICAgICAgICAgICAgR0xYX0dSRUVOX1NJWkUsICAgIDEsCisg
ICAgICAgICAgICBHTFhfQkxVRV9TSVpFLCAgICAgMSwKKyAgICAgICAgICAgIEdMWF9ET1VCTEVC
VUZGRVIsICBUcnVlLCAgLyogUmVxdWVzdCBhIGRvdWJsZS1idWZmZXJlZCBjb2xvciBidWZmZXIg
Ki8KKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgfTsKKworICAgICAgICBpbnQgbnVtUmV0dXJu
ZWQ7CisgICAgICAgIG1fZmJDb25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcobV9kaXNwbGF5LCBE
ZWZhdWx0U2NyZWVuKG1fZGlzcGxheSksIGF0dHJpYnV0ZXMsICZudW1SZXR1cm5lZCk7CisgICAg
ICAgIC8vIENyZWF0ZSBhIEdMWCBjb250ZXh0IGZvciBPcGVuR0wgcmVuZGVyaW5nCisgICAgICAg
IG1fZ2x4Q29udGV4dCA9IGdsWENyZWF0ZU5ld0NvbnRleHQobV9kaXNwbGF5LCBtX2ZiQ29uZmln
c1swXSwgR0xYX1JHQkFfVFlQRSwgMCwgdHJ1ZSk7CisgICAgfQorCisgICAgfkdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ2x4UGl4bWFwKQorICAgICAgICAg
ICAgZ2xYRGVzdHJveVBpeG1hcChtX2Rpc3BsYXksIG1fZ2x4UGl4bWFwKTsKKyAgICAgICAgbV9n
bHhQaXhtYXAgPSAwOworICAgICAgICBpZiAobV94UGl4bWFwKQorICAgICAgICAgICAgWEZyZWVQ
aXhtYXAobV9kaXNwbGF5LCBtX3hQaXhtYXApOworICAgICAgICBtX3hQaXhtYXAgPSAwOworICAg
ICAgICBpZiAobV9kaXNwbGF5KQorICAgICAgICAgICAgWENsb3NlRGlzcGxheShtX2Rpc3BsYXkp
OworICAgICAgICBtX2Rpc3BsYXkgPSAwOworICAgIH0KKworICAgIHVpbnQzMl90IGNyZWF0ZVN1
cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIFhWaXN1YWxJbmZvKiB2
aXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fZGlzcGxheSwgbV9mYkNvbmZp
Z3NbMF0pOworICAgICAgICBpZiAoIXZpc3VhbEluZm8pCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICBDb2xvcm1hcCBjbWFwID0gWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgKm1f
b2ZmU2NyZWVuV2luZG93LmdldChtX2Rpc3BsYXkpLCB2aXN1YWxJbmZvLT52aXN1YWwsIEFsbG9j
Tm9uZSk7CisgICAgICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIGE7CisgICAgICAgIGEuYmFja2dy
b3VuZF9waXhlbCA9IFdoaXRlUGl4ZWwobV9kaXNwbGF5LCAwKTsKKyAgICAgICAgYS5ib3JkZXJf
cGl4ZWwgPSBCbGFja1BpeGVsKG1fZGlzcGxheSwgMCk7CisgICAgICAgIGEuY29sb3JtYXAgPSBj
bWFwOworICAgICAgICBtX3dpbmRvdyA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LCAqbV9vZmZT
Y3JlZW5XaW5kb3cuZ2V0KG1fZGlzcGxheSksIDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHZpc3VhbEluZm8tPmRl
cHRoLCBJbnB1dE91dHB1dCwgdmlzdWFsSW5mby0+dmlzdWFsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1dCYWNrUGl4ZWwgfCBDV0JvcmRlclBpeGVsIHwgQ1dDb2xvcm1hcCwg
JmEpOworICAgICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcChtX2Rpc3BsYXksIG1fd2lu
ZG93LCAwKTsKKyAgICAgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV93
aW5kb3csIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIFhSZW5kZXIgRXh0ZW5zaW9uIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgaW50IGV2ZW50QmFz
ZXAsIGVycm9yQmFzZXA7CisgICAgICAgIGlmICghWFJlbmRlclF1ZXJ5RXh0ZW5zaW9uKG1fZGlz
cGxheSwgJmV2ZW50QmFzZXAsICZlcnJvckJhc2VwKSkKKyAgICAgICAgICAgIHJldHVybiAwOwor
CisgICAgICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisgICAgICAgIHJldHVy
biBtX3dpbmRvdzsKKyAgICB9CisKKyAgICB2b2lkIGNyZWF0ZVBpeG1hcCh1aW50MzJfdCB3aW5J
ZCkKKyAgICB7CisgICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHI7CisgICAgICAgIFhHZXRX
aW5kb3dBdHRyaWJ1dGVzKG1fZGlzcGxheSwgd2luSWQsICZhdHRyKTsKKworICAgICAgICBYUmVu
ZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9kaXNwbGF5
LCBhdHRyLnZpc3VhbCk7CisgICAgICAgIGlmIChmb3JtYXQpCisgICAgICAgICAgICBtX2hhc0Fs
cGhhID0gKGZvcm1hdC0+dHlwZSA9PSBQaWN0VHlwZURpcmVjdCAmJiBmb3JtYXQtPmRpcmVjdC5h
bHBoYU1hc2spOworICAgICAgICBtX3NpemUgPSBJbnRTaXplKGF0dHIud2lkdGgsIGF0dHIuaGVp
Z2h0KTsKKworICAgICAgICBpbnQgbnVtYmVyT2ZDb25maWdzOworICAgICAgICBHTFhGQkNvbmZp
ZyogY29uZmlncyA9IGdsWENob29zZUZCQ29uZmlnKG1fZGlzcGxheSwgWERlZmF1bHRTY3JlZW4o
bV9kaXNwbGF5KSwgZ2x4U3BlYywgJm51bWJlck9mQ29uZmlncyk7CisKKyAgICAgICAgbV94UGl4
bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCB3aW5JZCk7CisgICAg
ICAgIG1fZ2x4UGl4bWFwID0gZ2xYQ3JlYXRlUGl4bWFwKG1fZGlzcGxheSwgKmNvbmZpZ3MsIG1f
eFBpeG1hcCwgZ2x4QXR0cmlidXRlcyk7CisKKyAgICAgICAgdWludCBpbnZlcnRlZCA9IDA7Cisg
ICAgICAgIGdsWFF1ZXJ5RHJhd2FibGUobV9kaXNwbGF5LCBtX2dseFBpeG1hcCwgR0xYX1lfSU5W
RVJURURfRVhULCAmaW52ZXJ0ZWQpOworICAgICAgICBtX3RleHR1cmVJc1lJbnZlcnRlZCA9ICEh
aW52ZXJ0ZWQ7CisKKyAgICAgICAgWEZyZWUoY29uZmlncyk7CisgICAgfQorCisgICAgdm9pZCBt
YWtlQ3VycmVudCgpCisgICAgeworICAgICAgICBtX2RldGFjaGVkQ29udGV4dCA9IGdsWEdldEN1
cnJlbnRDb250ZXh0KCk7CisgICAgICAgIG1fZGV0YWNoZWREcmF3YWJsZSA9IGdsWEdldEN1cnJl
bnREcmF3YWJsZSgpOworICAgICAgICBpZiAobV93aW5kb3cgJiYgbV9nbHhDb250ZXh0KQorICAg
ICAgICAgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBtX3dpbmRvdywgbV9nbHhDb250ZXh0
KTsKKyAgICB9CisKKyAgICB2b2lkIGRvbmVDdXJyZW50KCkKKyAgICB7CisgICAgICAgIGlmICht
X2RldGFjaGVkQ29udGV4dCkKKyAgICAgICAgICAgIGdsWE1ha2VDdXJyZW50KG1fZGlzcGxheSwg
bV9kZXRhY2hlZERyYXdhYmxlLCBtX2RldGFjaGVkQ29udGV4dCk7CisgICAgfQorCisgICAgdm9p
ZCBzd2FwQnVmZmVycygpCisgICAgeworICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHhwaXhtYXAs
IHdlIGFyZSBvbiB0aGUgcmVhZGluZyBzaWRlIGFuZCBkbyBub3Qgd2FudCB0byBzd2FwIGFueSBi
dWZmZXJzLgorICAgICAgICAvLyBUaGUgYnVmZmVycyBhcmUgYmVpbmcgc3dpdGNoZWQgb24gdGhl
IHdyaXRpbmcgc2lkZSwgdGhlIHJlYWRpbmcgc2lkZSBqdXN0IHJlYWRzCisgICAgICAgIC8vIHdo
YXRldmVyIHRleHR1cmUgdGhlIFhXaW5kb3cgY29udGFpbnMuCisgICAgICAgIGlmIChtX3hQaXht
YXApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgR0xYQ29udGV4dCBnbHhDb250ZXh0
ID0gZ2xYR2V0Q3VycmVudENvbnRleHQoKTsKKyAgICAgICAgaWYgKG1fd2luZG93ICYmIGdseENv
bnRleHQpIHsKKyAgICAgICAgICAgIEdMaW50IG9sZEZCTzsKKyAgICAgICAgICAgIGdsR2V0SW50
ZWdlcnYoR0xfRlJBTUVCVUZGRVJfQklORElORywgJm9sZEZCTyk7CisgICAgICAgICAgICBwR2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgICAgICAgICAgZ2xYU3dhcEJ1
ZmZlcnMobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisgICAgICAgICAgICBwR2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG9sZEZCTyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lk
IGNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0KQorICAgIHsKKyAgICAgICAgbWFrZUN1cnJlbnQoKTsKKyAgICAgICAgaW50IHggPSBzb3Vy
Y2VSZWN0LngoKTsKKyAgICAgICAgaW50IHkgPSBzb3VyY2VSZWN0LnkoKTsKKyAgICAgICAgaW50
IHdpZHRoID0gc291cmNlUmVjdC53aWR0aCgpOworICAgICAgICBpbnQgaGVpZ2h0ID0gc291cmNl
UmVjdC5oZWlnaHQoKTsKKworICAgICAgICBnbFB1c2hBdHRyaWIoR0xfQUxMX0FUVFJJQl9CSVRT
KTsKKyAgICAgICAgR0xpbnQgcHJldmlvdXNGQk87CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xf
RlJBTUVCVUZGRVJfQklORElORywgJnByZXZpb3VzRkJPKTsKKworICAgICAgICBHTHVpbnQgb3Jp
Z2luRkJPOworICAgICAgICBwR2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm9yaWdpbkZCTyk7CisgICAg
ICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBvcmlnaW5GQk8pOwor
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICBw
R2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9SRUFEX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisKKyAgICAgICAgcEdsQmluZEZy
YW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIDApOworICAgICAgICBwR2xCbGl0RnJhbWVi
dWZmZXIoeCwgeSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfQ09MT1Jf
QlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKworICAgICAgICBwR2xGcmFtZWJ1ZmZlclRleHR1cmUy
RChHTF9SRUFEX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8y
RCwgMCwgMCk7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CisgICAg
ICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgcHJldmlvdXNGQk8pOworICAg
ICAgICBwR2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm9yaWdpbkZCTyk7CisKKyAgICAgICAgZ2xQ
b3BBdHRyaWIoKTsKKyAgICAgICAgZG9uZUN1cnJlbnQoKTsKKyAgICB9CisKKyAgICBEaXNwbGF5
KiBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CisKKyAgICBHTFhQaXhtYXAg
Z2x4UGl4bWFwKCkgY29uc3QgeyByZXR1cm4gbV9nbHhQaXhtYXA7IH0KKworICAgIEludFNpemUg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorCitwcml2YXRlOgorICAgIE9mZlNjcmVl
blJvb3RXaW5kb3cgbV9vZmZTY3JlZW5XaW5kb3c7CisgICAgSW50U2l6ZSBtX3NpemU7CisgICAg
RGlzcGxheSogbV9kaXNwbGF5OworICAgIFBpeG1hcCBtX3hQaXhtYXA7CisgICAgR0xYUGl4bWFw
IG1fZ2x4UGl4bWFwOworICAgIFdpbmRvdyBtX3dpbmRvdzsKKyAgICBHTFhDb250ZXh0IG1fZ2x4
Q29udGV4dDsKKyAgICBHTFhDb250ZXh0IG1fZGV0YWNoZWRDb250ZXh0OworICAgIEdMWERyYXdh
YmxlIG1fZGV0YWNoZWREcmF3YWJsZTsKKyAgICBib29sIG1fdGV4dHVyZUlzWUludmVydGVkOwor
ICAgIGJvb2wgbV9oYXNBbHBoYTsKKyAgICBHTFhGQkNvbmZpZyogbV9mYkNvbmZpZ3M7Cit9Owor
CitzdGF0aWMgYm9vbCByZXNvbHZlR0xNZXRob2RzKEdyYXBoaWNzU3VyZmFjZVByaXZhdGUqIHAp
Cit7CisgICAgc3RhdGljIGJvb2wgcmVzb2x2ZWQgPSBmYWxzZTsKKyAgICBpZiAocmVzb2x2ZWQp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcEdsWEJpbmRUZXhJbWFnZUVYVCA9IChQRk5H
TFhCSU5EVEVYSU1BR0VFWFRQUk9DKWdsWEdldFByb2NBZGRyZXNzKChHTHVieXRlICopICJnbFhC
aW5kVGV4SW1hZ2VFWFQiKTsKKyAgICBwR2xYUmVsZWFzZVRleEltYWdlRVhUID0gKFBGTkdMWFJF
TEVBU0VURVhJTUFHRUVYVFBST0MpKGdsWEdldFByb2NBZGRyZXNzKChHTHVieXRlICopICJnbFhS
ZWxlYXNlVGV4SW1hZ2VFWFQiKSk7CisgICAgcEdsQmluZEZyYW1lYnVmZmVyID0gKFBGTkdMQklO
REZSQU1FQlVGRkVSUFJPQykoZ2xYR2V0UHJvY0FkZHJlc3MoKEdMdWJ5dGUgKikgImdsQmluZEZy
YW1lYnVmZmVyIikpOworICAgIHBHbEJsaXRGcmFtZWJ1ZmZlciA9IChQRk5HTEJMSVRGUkFNRUJV
RkZFUlBST0MpKGdsWEdldFByb2NBZGRyZXNzKChHTHVieXRlICopICJnbEJsaXRGcmFtZWJ1ZmZl
ciIpKTsKKworICAgIHBHbEdlbkZyYW1lYnVmZmVycyA9IChQRk5HTEdFTkZSQU1FQlVGRkVSU1BS
T0MpKGdsWEdldFByb2NBZGRyZXNzKChHTHVieXRlICopICJnbEdlbkZyYW1lYnVmZmVycyIpKTsK
KyAgICBwR2xEZWxldGVGcmFtZWJ1ZmZlcnMgPSAoUEZOR0xERUxFVEVGUkFNRUJVRkZFUlNQUk9D
KShnbFhHZXRQcm9jQWRkcmVzcygoR0x1Ynl0ZSAqKSAiZ2xEZWxldGVGcmFtZWJ1ZmZlcnMiKSk7
CisgICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQgPSAoUEZOR0xGUkFNRUJVRkZFUlRFWFRVUkUy
RFBST0MpKGdsWEdldFByb2NBZGRyZXNzKChHTHVieXRlICopICJnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEIikpOworCisgICAgcmVzb2x2ZWQgPSBwR2xCbGl0RnJhbWVidWZmZXIgJiYgcEdsQmluZEZy
YW1lYnVmZmVyICYmIHBHbFhCaW5kVGV4SW1hZ2VFWFQgJiYgcEdsWFJlbGVhc2VUZXhJbWFnZUVY
VCAmJiBwR2xHZW5GcmFtZWJ1ZmZlcnMgJiYgcEdsRGVsZXRlRnJhbWVidWZmZXJzICYmIHBHbEZy
YW1lYnVmZmVyVGV4dHVyZTJEOworCisgICAgcmV0dXJuIHJlc29sdmVkOworfQorCitHcmFwaGlj
c1N1cmZhY2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkKK3sKKyAgICBy
ZXR1cm4gR3JhcGhpY3NTdXJmYWNlVG9rZW4obV9wbGF0Zm9ybVN1cmZhY2UpOworfQorCit1aW50
MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtR2V0VGV4dHVyZUlEKCkKK3sKKyAgICBpZiAo
IW1fdGV4dHVyZSkgeworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOworICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAgICAgIGds
VGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJ
TkVBUik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBf
VE9fRURHRSk7CisgICAgICAgIHBHbFhCaW5kVGV4SW1hZ2VFWFQobV9wcml2YXRlLT5kaXNwbGF5
KCksIG1fcHJpdmF0ZS0+Z2x4UGl4bWFwKCksIEdMWF9GUk9OVF9FWFQsIDApOworICAgIH0KKwor
ICAgIHJldHVybiBtX3RleHR1cmU7Cit9CisKK3ZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9y
bUNvcHlUb0dMVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IGlkLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQoreworICAgIC8vIFRoaXMg
aXMgbm90IHN1cHBvcnRlZCBieSBHTFgvWGNvbXBvc2l0ZS4KK30KKwordm9pZCBHcmFwaGljc1N1
cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QpCit7CisgICAgbV9wcml2YXRlLT5jb3B5RnJvbVRleHR1cmUodGV4
dHVyZSwgc291cmNlUmVjdCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKK3sKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICBhZGp1c3RlZFRy
YW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChGbG9hdFJl
Y3QoRmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpLCB0YXJnZXRSZWN0KSk7CisgICAgc3RhdGlj
X2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKHBsYXRm
b3JtR2V0VGV4dHVyZUlEKCksIDAsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgYWRqdXN0ZWRUcmFuc2Zv
cm0sIG9wYWNpdHksIG1hc2spOworfQorCit1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtRnJvbnRCdWZmZXIoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCit1aW50MzJfdCBH
cmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtU3dhcEJ1ZmZlcnMoKQoreworICAgIG1fcHJpdmF0ZS0+
c3dhcEJ1ZmZlcnMoKTsKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxHcmFwaGljc1N1
cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qgc2hhcmVDb250
ZXh0KQoreworICAgIC8vIFgxMSBkb2VzIG5vdCBzdXBwb3J0IENvcHlUb1RleHR1cmUsIHNvIHdl
IGRvIG5vdCBjcmVhdGUgYSBHcmFwaGljc1N1cmZhY2UgaWYgdGhpcyBpcyByZXF1ZXN0ZWQuCisg
ICAgLy8gR3JhcGhpY3NTdXJmYWNlR0xYIHVzZXMgYW4gWFdpbmRvdyBhcyBuYXRpdmUgc3VyZmFj
ZS4gVGhpcyBvbmUgYWx3YXlzIGhhcyBhIGZyb250IGFuZCBhIGJhY2sgYnVmZmVyLgorICAgIC8v
IFRoZXJlZm9yZSBzaW5nbGUgYnVmZmVyZWQgR3JhcGhpY3NTdXJmYWNlcyBhcmUgbm90IHN1cHBv
cnRlZC4KKyAgICBpZiAoZmxhZ3MgJiBTdXBwb3J0c0NvcHlUb1RleHR1cmUgfHwgZmxhZ3MgJiBT
dXBwb3J0c1NpbmdsZUJ1ZmZlcmVkKQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxHcmFwaGlj
c1N1cmZhY2U+KCk7CisKKyAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gYWRv
cHRSZWYobmV3IEdyYXBoaWNzU3VyZmFjZShzaXplLCBmbGFncykpOworCisgICAgc3VyZmFjZS0+
bV9wcml2YXRlID0gbmV3IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUoc2hhcmVDb250ZXh0KTsKKyAg
ICBpZiAoIXJlc29sdmVHTE1ldGhvZHMoc3VyZmFjZS0+bV9wcml2YXRlKSkKKyAgICAgICAgcmV0
dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigpOworCisgICAgc3VyZmFjZS0+bV9wbGF0
Zm9ybVN1cmZhY2UgPSBzdXJmYWNlLT5tX3ByaXZhdGUtPmNyZWF0ZVN1cmZhY2Uoc2l6ZSk7CisK
KyAgICByZXR1cm4gc3VyZmFjZTsKK30KKworUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZmxhZ3MsIGNvbnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKK3sKKyAgICAvLyBYMTEg
ZG9lcyBub3Qgc3VwcG9ydCBDb3B5VG9UZXh0dXJlLCBzbyB3ZSBkbyBub3QgY3JlYXRlIGEgR3Jh
cGhpY3NTdXJmYWNlIGlmIHRoaXMgaXMgcmVxdWVzdGVkLgorICAgIC8vIEdyYXBoaWNzU3VyZmFj
ZUdMWCB1c2VzIGFuIFhXaW5kb3cgYXMgbmF0aXZlIHN1cmZhY2UuIFRoaXMgb25lIGFsd2F5cyBo
YXMgYSBmcm9udCBhbmQgYSBiYWNrIGJ1ZmZlci4KKyAgICAvLyBUaGVyZWZvcmUgc2luZ2xlIGJ1
ZmZlcmVkIEdyYXBoaWNzU3VyZmFjZXMgYXJlIG5vdCBzdXBwb3J0ZWQuCisgICAgaWYgKGZsYWdz
ICYgU3VwcG9ydHNDb3B5VG9UZXh0dXJlIHx8IGZsYWdzICYgU3VwcG9ydHNTaW5nbGVCdWZmZXJl
ZCkKKyAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigpOworCisgICAg
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc1N1
cmZhY2Uoc2l6ZSwgZmxhZ3MpKTsKKworICAgIHN1cmZhY2UtPm1fcHJpdmF0ZSA9IG5ldyBHcmFw
aGljc1N1cmZhY2VQcml2YXRlKCk7CisgICAgaWYgKCFyZXNvbHZlR0xNZXRob2RzKHN1cmZhY2Ut
Pm1fcHJpdmF0ZSkpCisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4o
KTsKKworICAgIHN1cmZhY2UtPm1fcGxhdGZvcm1TdXJmYWNlID0gdG9rZW4uZnJvbnRCdWZmZXJI
YW5kbGU7CisKKyAgICBzdXJmYWNlLT5tX3ByaXZhdGUtPmNyZWF0ZVBpeG1hcChzdXJmYWNlLT5t
X3BsYXRmb3JtU3VyZmFjZSk7CisgICAgc3VyZmFjZS0+bV9zaXplID0gc3VyZmFjZS0+bV9wcml2
YXRlLT5zaXplKCk7CisKKyAgICByZXR1cm4gc3VyZmFjZTsKK30KKworY2hhciogR3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUxvY2soY29uc3QgSW50UmVjdCYgcmVjdCwgaW50KiBvdXRwdXRTdHJp
ZGUsIExvY2tPcHRpb25zIGxvY2tPcHRpb25zKQoreworICAgIC8vIEdyYXBoaWNzU3VyZmFjZSBp
cyBjdXJyZW50bHkgb25seSBiZWluZyB1c2VkIGZvciBXZWJHTCwgd2hpY2ggZG9lcyBub3QgcmVx
dWlyZSB0aGlzIGxvY2tpbmcgbWVjaGFuaXNtLgorICAgIHJldHVybiAwOworfQorCit2b2lkIEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1VbmxvY2soKQoreworICAgIC8vIEdyYXBoaWNzU3VyZmFj
ZSBpcyBjdXJyZW50bHkgb25seSBiZWluZyB1c2VkIGZvciBXZWJHTCwgd2hpY2ggZG9lcyBub3Qg
cmVxdWlyZSB0aGlzIGxvY2tpbmcgbWVjaGFuaXNtLgorfQorCit2b2lkIEdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBpZiAobV90ZXh0dXJlKSB7CisgICAgICAgIHBH
bFhSZWxlYXNlVGV4SW1hZ2VFWFQobV9wcml2YXRlLT5kaXNwbGF5KCksIG1fcHJpdmF0ZS0+Z2x4
UGl4bWFwKCksIEdMWF9GUk9OVF9FWFQpOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZt
X3RleHR1cmUpOworICAgIH0KKworICAgIGRlbGV0ZSBtX3ByaXZhdGU7CisgICAgbV9wcml2YXRl
ID0gMDsKK30KKworUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IEdyYXBoaWNzU3VyZmFjZTo6
cGxhdGZvcm1CZWdpblBhaW50KGNvbnN0IEludFNpemUmIHNpemUsIGNoYXIqIGJpdHMsIGludCBz
dHJpZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworUGFzc1JlZlB0cjxJbWFnZT4gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGVSZWFkT25seUltYWdl
KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKK30KKworfQorI2VuZGlmCisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VmbC9HcmFwaGljc1N1cmZhY2VF
ZmwuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzMTg4NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEwLTE5ICBSZWdpbmEgQ2h1bmcgIDxo
ZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEVuYWJsZSBX
ZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2
NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQg
V2ViR0xFbmFibGVkIHRvIHRydWUgd2hlbiBXZWJHTCBpcyBlbmFibGVkLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X2luaXRp
YWxpemUpOgorCiAyMDEyLTEwLTE5ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTMxODQ0KTogSXQgYnJva2UgdGhlIGJ1aWxkIG9u
ICFFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgcGxhdGZvcm1zCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiAxMzE4NzAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgxNiw2ICs4MTYsOSBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW5pdGlh
bGl6ZShFdmFzX09iCiAgICAgcHJpdi0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5j
ZXMoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgcHJpdi0+
cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0Rm9yY2VDb21wb3NpdGlu
Z01vZGUodHJ1ZSk7CiAgICAgcHJpdi0+cGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVl
KTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcHJpdi0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+
cHJlZmVyZW5jZXMoKS0+c2V0V2ViR0xFbmFibGVkKHRydWUpOworI2VuZGlmCiAjZW5kaWYKICAg
ICBwcml2LT5wYWdlUHJveHktPmluaXRpYWxpemVXZWJQYWdlKCk7CiAKSW5kZXg6IFNvdXJjZS9j
bWFrZS9PcHRpb25zRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9jbWFrZS9PcHRpb25z
RWZsLmNtYWtlCShyZXZpc2lvbiAxMzE4NzApCisrKyBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5j
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4MiwxMCBAQCBJRiAoV1RGX1VTRV9USUxF
RF9CQUNLSU5HX1NUT1JFKQogICBTRVQoV1RGX1VTRV8zRF9HUkFQSElDUyAxKQogICBBRERfREVG
SU5JVElPTlMoLURXVEZfVVNFXzNEX0dSQVBISUNTPTEpCiAKKyAgU0VUIChXVEZfVVNFX0dSQVBI
SUNTX1NVUkZBQ0UgMSkKKyAgQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV9HUkFQSElDU19TVVJG
QUNFPTEpCisgIEFERF9ERUZJTklUSU9OUygtREhBVkVfR0xYKQorCiAgIEZJTkRfUEFDS0FHRShP
cGVuR0wgUkVRVUlSRUQpCiBFTkRJRigpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169871</attachid>
            <date>2012-10-22 03:44:36 -0700</date>
            <delta_ts>2012-10-24 00:22:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97652-20121022194404.patch</filename>
            <type>text/plain</type>
            <size>41411</size>
            <attacher name="Regina Chung">heejin.r.chung</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjA1
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEw
LTIyICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgR3JhcGhpY3MgU3VyZmFjZSB0byBlbmFibGUgV2ViR0wgZm9y
IFdlYktpdDIgRUZMLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6
CisKIDIwMTItMTAtMjIgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbWVyZ2UgImRvY2tlZCIgc3RhdGUgaW50byB0aGUgImRv
Y2sgc2lkZSIgZW51bS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjA1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDEy
LTEwLTIyICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAg
ICAgICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCBHcmFwaGljc1N1cmZhY2UgZm9yIEVGTCB0
byBlbmFibGUgV2ViR0wgZm9yIFdlYktpdDIuCisgICAgICAgIERlcGVuZHMgb24gR0xYIHNpbmNl
IEV2YXMgZG9lc24ndCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZnVuY3Rpb25hbGl0eS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0Nv
bnRleHQzREVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlR3JhcGhpY3NTdXJmYWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VG9HcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpncmFwaGljc1N1cmZhY2VUb2tlbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VmbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUVmbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpPZmZTY3JlZW5Sb290V2luZG93
OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6fk9mZlNjcmVl
blJvb3RXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6
R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2VQcml2YXRlOjpjcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGU6Om1ha2VDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGU6OmRvbmVDdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGU6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1CZWdpblBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZTo6Y3JlYXRlUmVhZE9ubHlJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKE9mZlNjcmVlblJvb3RXaW5kb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAg
IChHcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGU6On5HcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmNyZWF0ZVBpeG1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjb3B5RnJvbVRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZGlzcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpnbHhQaXhtYXApOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c1N1cmZhY2VQcml2YXRlOjpnbENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZUdM
TWV0aG9kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhp
Y3NTdXJmYWNlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpP
ZmZTY3JlZW5Sb290V2luZG93OjpPZmZTY3JlZW5Sb290V2luZG93OjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6fk9mZlNjcmVlblJvb3RXaW5kb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6R3JhcGhpY3NTdXJmYWNlUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVT
dXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6Om1ha2VD
dXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmRvbmVD
dXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnN3YXBC
dWZmZXJzKToKKwogMjAxMi0xMC0yMiAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwu
Y29tPgogCiAgICAgICAgIFtHVEtdIEVuYWJsZSBNaWNyb2RhdGEgRE9NIEFQSQpJbmRleDogU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDEzMjA1OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQCBMSVNUKEFQ
UEVORCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uv
ZWZsIgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZWZsIgogICAiJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsIgorICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9saW51eCIKICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lciIKICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL25ldHdvcmsvc291cCIKQEAgLTI5NCw2ICsyOTUsOSBAQCBJRiAoV1RGX1VT
RV8zRF9HUkFQSElDUykKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMQ29tbW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
R3JhcGhpY3NTdXJmYWNlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VmbC9H
cmFwaGljc1N1cmZhY2VFZmwuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQv
R3JhcGhpY3NTdXJmYWNlR0xYLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTaGFkZXJNYW5hZ2VyLmNwcAogICApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDEzMjA1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgdHlwZWRlZiBRT3BlbkdMQ29udGV4dCog
UGxhdGZvcm1HcmFwaGljcwogdHlwZWRlZiBRU3VyZmFjZSogUGxhdGZvcm1HcmFwaGljc1N1cmZh
Y2UzRDsKICNlbHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Q7Cit0
eXBlZGVmIHZvaWQqIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlM0Q7CiAjZW5kaWYKIAogI2lmIChQ
TEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkpICYmIFVTRShTS0lBKQpA
QCAtOTQ3LDcgKzk0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcmVzaGFwZUZCT3MoY29uc3Qg
SW50U2l6ZSYpOwogICAgIHZvaWQgcmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeShjb25z
dCBJbnRSZWN0JiA9IEludFJlY3QoKSk7Ci0jaWYgUExBVEZPUk0oUVQpICYmIFVTRShHUkFQSElD
U19TVVJGQUNFKQorI2lmIChQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKSkgJiYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCiAgICAgdm9pZCBjcmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0IElu
dFNpemUmKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAJKHJldmlz
aW9uIDEzMjA1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzREVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw3ICsyMjYsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvCiAjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc1N1cmZhY2Vz
KGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3By
aXZhdGUtPmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMoc2l6ZSk7CiB9CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAJKHJldmlzaW9uIDEzMjA1OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhc19HTC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJh
eVB0ci5oPgpAQCAtODcsNiArODgsMTMgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFw
aGljc0NvbnRleAogICAgICAgICByZXR1cm47CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIEludFNpemUgc3VyZmFjZVNpemUobV9j
b250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpOworICAg
IG1fc3VyZmFjZUZsYWdzID0gR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1RleHR1cmVUYXJnZXQg
fCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU2hhcmluZzsKKyAgICBpZiAoIXN1cmZhY2VTaXpl
LmlzRW1wdHkoKSkKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZShzdXJmYWNlU2l6ZSwgbV9zdXJmYWNlRmxhZ3MpOworI2VuZGlmCiB9CiAKIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpCkBAIC0xMDEs
OCArMTA5LDExIEBAIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGUKICAg
ICAgICAgZXZhc19nbF9jb250ZXh0X2Rlc3Ryb3kobV9ldmFzR0wsIG1fZXZhc0dMQ29udGV4dCk7
CiAKICAgICBldmFzX2dsX2ZyZWUobV9ldmFzR0wpOwotfQogCisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCisgICAgbV9ncmFwaGljc1N1cmZhY2UuY2xlYXIoKTsKKyNlbmRpZgorfQogCiBib29s
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZShQYWdlQ2xpZW50RWZsKiBw
YWdlQ2xpZW50LCBib29sIHJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KQogewpAQCAtMTY4LDYg
KzE3OSwzMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RlCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KICNlbmRpZgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhj
b25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChzaXplLmlzRW1wdHkoKSkKKyAgICAgICAg
bV9ncmFwaGljc1N1cmZhY2UuY2xlYXIoKTsKKyAgICBlbHNlCisgICAgICAgIG1fZ3JhcGhpY3NT
dXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgbV9zdXJmYWNlRmxhZ3MpOwor
fQorCit1aW50MzJfdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNvcHlUb0dyYXBoaWNzU3Vy
ZmFjZSgpCit7CisgICAgaWYgKCFtX2dyYXBoaWNzU3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBtX2dyYXBoaWNzU3VyZmFjZS0+Y29w
eUZyb21UZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCBJbnRSZWN0KDAsIDAsIG1fY29udGV4
dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KSk7CisgICAgcmV0
dXJuIG1fZ3JhcGhpY3NTdXJmYWNlLT5zd2FwQnVmZmVycygpOworfQorCitHcmFwaGljc1N1cmZh
Y2VUb2tlbiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPmV4cG9ydFRva2VuKCk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKDNEX0dS
QVBISUNTKSB8fCBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oCShyZXZpc2lvbiAxMzIwNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDEwIEBACiAjaW5jbHVkZSA8dGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyLmg+CiAjZW5kaWYKIAorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2lu
Y2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgorI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IF9FdmFz
X0dMICAgICAgICAgICAgICAgRXZhc19HTDsKIHR5cGVkZWYgc3RydWN0IF9FdmFzX0dMX1N1cmZh
Y2UgICAgICAgRXZhc19HTF9TdXJmYWNlOwogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfR0xfQ29udGV4
dCAgICAgICBFdmFzX0dMX0NvbnRleHQ7CkBAIC01Miw2ICs1NiwxMiBAQCBwdWJsaWM6CiAjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzayk7CiAj
ZW5kaWYKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICB2aXJ0dWFsIHVpbnQzMl90IGNv
cHlUb0dyYXBoaWNzU3VyZmFjZSgpOworICAgIHZpcnR1YWwgR3JhcGhpY3NTdXJmYWNlVG9rZW4g
Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzU3Vy
ZmFjZXMoY29uc3QgSW50U2l6ZSYpOworI2VuZGlmCisKICAgICBib29sIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwogICAgIGJvb2wgY3JlYXRlU3VyZmFjZShQYWdlQ2xpZW50RWZsKiwgYm9vbCByZW5k
ZXJEaXJlY3RseVRvRXZhc0dMT2JqZWN0KTsKICAgICB2b2lkIHNldEN1cnJlbnRHTENvbnRleHQo
dm9pZCosIHZvaWQqKTsKQEAgLTU5LDYgKzY5LDEwIEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Qq
IG1fY29udGV4dDsKICAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7CisjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCisgICAgR3JhcGhpY3NTdXJmYWNlOjpGbGFncyBtX3N1cmZhY2VGbGFnczsK
KyAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBtX2dyYXBoaWNzU3VyZmFjZTsKKyNlbmRpZgog
CiAgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+IG1fc3ludGhldGljRXJyb3JzOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHJldmlzaW9u
IDEzMjA1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw3ICsy
MjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0CiAgICAgaWYg
KHdpZHRoID09IG1fY3VycmVudFdpZHRoICYmIGhlaWdodCA9PSBtX2N1cnJlbnRIZWlnaHQpCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIFBMQVRGT1JNKFFUKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKKyNpZiAoUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkpICYmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogICAgIDo6Z2xGbHVzaCgpOyAvLyBNYWtlIHN1cmUgYWxsIEdMIGNhbGxzIGhhdmUg
YmVlbiBjb21taXR0ZWQgYmVmb3JlIHJlc2l6aW5nLgogICAgIGNyZWF0ZUdyYXBoaWNzU3VyZmFj
ZXMoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VmbC9HcmFwaGljc1N1cmZhY2VFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2Vm
bC9HcmFwaGljc1N1cmZhY2VFZmwuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUVmbC5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdy
YXBoaWNzU3VyZmFjZS5oIgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpICYmIFBMQVRGT1JN
KEVGTCkKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAicXQvR3JhcGhp
Y3NTdXJmYWNlR0xYLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2luZG93KiBPZmZTY3Jl
ZW5Sb290V2luZG93OjpnZXQoRGlzcGxheSogZHB5KQoreworICAgIGlmICghd2luZG93KSB7Cisg
ICAgICAgIHdpbmRvdyA9IFhDcmVhdGVTaW1wbGVXaW5kb3coZHB5LCBYRGVmYXVsdFJvb3RXaW5k
b3coZHB5KSwgLTEsIC0xLCAxLCAxLCAwLCBCbGFja1BpeGVsKGRweSwgMCksIFdoaXRlUGl4ZWwo
ZHB5LCAwKSk7CisgICAgICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAg
ICAgIGF0dHJpYnV0ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSB0cnVlOworICAgICAgICBYQ2hhbmdl
V2luZG93QXR0cmlidXRlcyhkcHksIHdpbmRvdywgWDExT3ZlcnJpZGVSZWRpcmVjdCwgJmF0dHJp
YnV0ZXMpOworICAgICAgICBkaXNwbGF5ID0gZHB5OworICAgICAgICAvLyBNYXAgd2luZG93IHRv
IHRoZSBzY3JlZW4KKyAgICAgICAgWE1hcFdpbmRvdyhkcHksIHdpbmRvdyk7CisgICAgfQorCisg
ICAgcmV0dXJuICZ3aW5kb3c7Cit9CisKK09mZlNjcmVlblJvb3RXaW5kb3c6On5PZmZTY3JlZW5S
b290V2luZG93KCkKK3sKKyAgICBpZiAoIS0tcmVmQ291bnQpIHsKKyAgICAgICAgWFVubWFwV2lu
ZG93KGRpc3BsYXksIHdpbmRvdyk7CisgICAgICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXksIHdp
bmRvdyk7CisgICAgfQorfQorCitpbnQgT2ZmU2NyZWVuUm9vdFdpbmRvdzo6cmVmQ291bnQgPSAw
OworV2luZG93IE9mZlNjcmVlblJvb3RXaW5kb3c6OndpbmRvdyA9IDA7CisKK0dyYXBoaWNzU3Vy
ZmFjZVByaXZhdGU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGUoY29uc3QgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCBzaGFyZUNvbnRleHQpCisgICAgOiBtX2Rpc3BsYXkoMCkKKyAgICAsIG1feFBp
eG1hcCgwKQorICAgICwgbV9nbHhQaXhtYXAoMCkKKyAgICAsIG1fZ2xDb250ZXh0KDApCisgICAg
LCBtX2RldGFjaGVkQ29udGV4dCgwKQorICAgICwgbV9kZXRhY2hlZFN1cmZhY2UoMCkKKyAgICAs
IG1fdGV4dHVyZUlzWUludmVydGVkKGZhbHNlKQorICAgICwgbV9oYXNBbHBoYShmYWxzZSkKK3sK
KyAgICBtX2Rpc3BsYXkgPSBYT3BlbkRpc3BsYXkoMCk7CisKKyAgICBpbnQgYXR0cmlidXRlc1td
ID0geworICAgICAgICBHTFhfTEVWRUwsIDAsCisgICAgICAgIEdMWF9EUkFXQUJMRV9UWVBFLCBH
TFhfV0lORE9XX0JJVCwKKyAgICAgICAgR0xYX1JFTkRFUl9UWVBFLCAgIEdMWF9SR0JBX0JJVCwK
KyAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsICAgICAvKiB0aGUgbWF4aW11bSBudW1iZXIg
b2YgYml0cyBwZXIgY29tcG9uZW50ICAgICovCisgICAgICAgIEdMWF9HUkVFTl9TSVpFLCAgICAx
LAorICAgICAgICBHTFhfQkxVRV9TSVpFLCAgICAgMSwKKyAgICAgICAgR0xYX0RPVUJMRUJVRkZF
UiwgIFRydWUsICAvKiBSZXF1ZXN0IGEgZG91YmxlLWJ1ZmZlcmVkIGNvbG9yIGJ1ZmZlciAqLwor
ICAgICAgICBOb25lCisgICAgfTsKKworICAgIGludCBudW1SZXR1cm5lZDsKKyAgICBtX2ZiQ29u
ZmlncyA9IGdsWENob29zZUZCQ29uZmlnKG1fZGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX2Rpc3Bs
YXkpLCBhdHRyaWJ1dGVzLCAmbnVtUmV0dXJuZWQpOworICAgIC8vIENyZWF0ZSBhIEdMWCBjb250
ZXh0IGZvciBPcGVuR0wgcmVuZGVyaW5nCisgICAgbV9nbENvbnRleHQgPSBnbFhDcmVhdGVOZXdD
b250ZXh0KG1fZGlzcGxheSwgbV9mYkNvbmZpZ3NbMF0sIEdMWF9SR0JBX1RZUEUsIDAsIHRydWUp
OworfQorICAgIAordWludDMyX3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFj
ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFhWaXN1YWxJbmZvKiB2aXN1YWxJbmZvID0g
Z2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fZGlzcGxheSwgbV9mYkNvbmZpZ3NbMF0pOworICAg
IGlmICghdmlzdWFsSW5mbykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBDb2xvcm1hcCBjbWFw
ID0gWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgKm1fb2ZmU2NyZWVuV2luZG93LmdldChtX2Rp
c3BsYXkpLCB2aXN1YWxJbmZvLT52aXN1YWwsIEFsbG9jTm9uZSk7CisgICAgWFNldFdpbmRvd0F0
dHJpYnV0ZXMgYTsKKyAgICBhLmJhY2tncm91bmRfcGl4ZWwgPSBXaGl0ZVBpeGVsKG1fZGlzcGxh
eSwgMCk7CisgICAgYS5ib3JkZXJfcGl4ZWwgPSBCbGFja1BpeGVsKG1fZGlzcGxheSwgMCk7Cisg
ICAgYS5jb2xvcm1hcCA9IGNtYXA7CisgICAgbV9zdXJmYWNlID0gWENyZWF0ZVdpbmRvdyhtX2Rp
c3BsYXksICptX29mZlNjcmVlbldpbmRvdy5nZXQobV9kaXNwbGF5KSwgMCwgMCwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgdmlz
dWFsSW5mby0+ZGVwdGgsIElucHV0T3V0cHV0LCB2aXN1YWxJbmZvLT52aXN1YWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDV0JhY2tQaXhlbCB8IENXQm9yZGVyUGl4ZWwgfCBDV0Nv
bG9ybWFwLCAmYSk7CisgICAgWFNldFdpbmRvd0JhY2tncm91bmRQaXhtYXAobV9kaXNwbGF5LCBt
X3N1cmZhY2UsIDApOworICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rpc3BsYXksIG1f
c3VyZmFjZSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworCisgICAgLy8gTWFrZSBzdXJlIHRo
ZSBYUmVuZGVyIEV4dGVuc2lvbiBpcyBhdmFpbGFibGUuCisgICAgaW50IGV2ZW50QmFzZXAsIGVy
cm9yQmFzZXA7CisgICAgaWYgKCFYUmVuZGVyUXVlcnlFeHRlbnNpb24obV9kaXNwbGF5LCAmZXZl
bnRCYXNlcCwgJmVycm9yQmFzZXApKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFhNYXBXaW5k
b3cobV9kaXNwbGF5LCBtX3N1cmZhY2UpOworICAgIHJldHVybiBtX3N1cmZhY2U7Cit9CisKK3Zv
aWQgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQoKQoreworICAgIG1fZGV0YWNo
ZWRDb250ZXh0ID0gZ2xYR2V0Q3VycmVudENvbnRleHQoKTsKKyAgICBtX2RldGFjaGVkU3VyZmFj
ZSA9IGdsWEdldEN1cnJlbnREcmF3YWJsZSgpOworICAgIGlmIChtX3N1cmZhY2UgJiYgbV9nbENv
bnRleHQpCisgICAgICAgIGdsWE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9zdXJmYWNlLCBtX2ds
Q29udGV4dCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQo
KQoreworICAgIGlmIChtX2RldGFjaGVkQ29udGV4dCkKKyAgICAgICAgZ2xYTWFrZUN1cnJlbnQo
bV9kaXNwbGF5LCBtX2RldGFjaGVkU3VyZmFjZSwgbV9kZXRhY2hlZENvbnRleHQpOworfQorCit2
b2lkIEdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnN3YXBCdWZmZXJzKCkKK3sKKyAgICAvLyBJZiB0
aGVyZSBpcyBhIHhwaXhtYXAsIHdlIGFyZSBvbiB0aGUgcmVhZGluZyBzaWRlIGFuZCBkbyBub3Qg
d2FudCB0byBzd2FwIGFueSBidWZmZXJzLgorICAgIC8vIFRoZSBidWZmZXJzIGFyZSBiZWluZyBz
d2l0Y2hlZCBvbiB0aGUgd3JpdGluZyBzaWRlLCB0aGUgcmVhZGluZyBzaWRlIGp1c3QgcmVhZHMK
KyAgICAvLyB3aGF0ZXZlciB0ZXh0dXJlIHRoZSBYV2luZG93IGNvbnRhaW5zLgorICAgIGlmICht
X3hQaXhtYXApCisgICAgICAgIHJldHVybjsKKworICAgIEdMWENvbnRleHQgZ2xDb250ZXh0ID0g
Z2xYR2V0Q3VycmVudENvbnRleHQoKTsKKworICAgIGlmIChtX3N1cmZhY2UgJiYgZ2xDb250ZXh0
KSB7CisgICAgICAgIEdMaW50IG9sZEZCTzsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9GUkFN
RUJVRkZFUl9CSU5ESU5HLCAmb2xkRkJPKTsKKyAgICAgICAgcEdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCAwKTsKKyAgICAgICAgZ2xYU3dhcEJ1ZmZlcnMobV9kaXNwbGF5LCBtX3N1
cmZhY2UpOworICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG9sZEZC
Tyk7CisgICAgfQorfQorICAgIAorUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IEdyYXBoaWNz
U3VyZmFjZTo6cGxhdGZvcm1CZWdpblBhaW50KGNvbnN0IEludFNpemUmIHNpemUsIGNoYXIqIGJp
dHMsIGludCBzdHJpZGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworUGFzc1JlZlB0cjxJbWFnZT4gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGVSZWFk
T25seUltYWdlKGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworfQorCisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VmbC9HcmFwaGljc1N1cmZh
Y2VFZmwuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3Vy
ZmFjZUdMWC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAkocmV2aXNpb24gMTMyMDU5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NT
dXJmYWNlR0xYLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgsMjg2ICsxOCwxNiBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2VHTFguaCIKKwog
I2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
CiAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLS8vIFF0IGhlYWRlcnMgbXVzdCBiZSBp
bmNsdWRlZCBiZWZvcmUgZ2x4IGhlYWRlcnMuCi0jaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4K
LSNpbmNsdWRlIDxRT3BlbkdMQ29udGV4dD4KLSNpbmNsdWRlIDxRVmVjdG9yPgotI2luY2x1ZGUg
PFFXaW5kb3c+Ci0jaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXdpbmRvdy5oPgotI2luY2x1ZGUgPEdM
L2dsZXh0Lmg+Ci0jaW5jbHVkZSA8R0wvZ2x4Lmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMv
WGNvbXBvc2l0ZS5oPgotI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgbG9uZyBYMTFPdmVycmlkZVJlZGlyZWN0ID0gMUwg
PDwgOTsKLQotc3RhdGljIFBGTkdMWEJJTkRURVhJTUFHRUVYVFBST0MgcEdsWEJpbmRUZXhJbWFn
ZUVYVCA9IDA7Ci1zdGF0aWMgUEZOR0xYUkVMRUFTRVRFWElNQUdFRVhUUFJPQyBwR2xYUmVsZWFz
ZVRleEltYWdlRVhUID0gMDsKLXN0YXRpYyBQRk5HTEJJTkRGUkFNRUJVRkZFUlBST0MgcEdsQmlu
ZEZyYW1lYnVmZmVyID0gMDsKLXN0YXRpYyBQRk5HTEJMSVRGUkFNRUJVRkZFUlBST0MgcEdsQmxp
dEZyYW1lYnVmZmVyID0gMDsKLXN0YXRpYyBQRk5HTEdFTkZSQU1FQlVGRkVSU1BST0MgcEdsR2Vu
RnJhbWVidWZmZXJzID0gMDsKLXN0YXRpYyBQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0MgcEds
RGVsZXRlRnJhbWVidWZmZXJzID0gMDsKLXN0YXRpYyBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJE
UFJPQyBwR2xGcmFtZWJ1ZmZlclRleHR1cmUyRCA9IDA7Ci0KLWNsYXNzIE9mZlNjcmVlblJvb3RX
aW5kb3cgewotcHVibGljOgotICAgIE9mZlNjcmVlblJvb3RXaW5kb3coKQotICAgIHsKLSAgICAg
ICAgKytyZWZDb3VudDsKLSAgICB9Ci0KLSAgICBRV2luZG93KiBnZXQoRGlzcGxheSogZHB5KQot
ICAgIHsKLSAgICAgICAgaWYgKCF3aW5kb3cpIHsKLSAgICAgICAgICAgIHdpbmRvdyA9IG5ldyBR
V2luZG93OwotICAgICAgICAgICAgd2luZG93LT5zZXRHZW9tZXRyeShRUmVjdCgtMSwgLTEsIDEs
IDEpKTsKLSAgICAgICAgICAgIHdpbmRvdy0+Y3JlYXRlKCk7Ci0gICAgICAgICAgICBYU2V0V2lu
ZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwotICAgICAgICAgICAgYXR0cmlidXRlcy5vdmVycmlk
ZV9yZWRpcmVjdCA9IHRydWU7Ci0gICAgICAgICAgICBYQ2hhbmdlV2luZG93QXR0cmlidXRlcyhk
cHksIHdpbmRvdy0+aGFuZGxlKCktPndpbklkKCksIFgxMU92ZXJyaWRlUmVkaXJlY3QsICZhdHRy
aWJ1dGVzKTsKLSAgICAgICAgICAgIHdpbmRvdy0+c2hvdygpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgcmV0dXJuIHdpbmRvdzsKLSAgICB9Ci0KLSAgICB+T2ZmU2NyZWVuUm9vdFdpbmRvdygpCi0g
ICAgewotICAgICAgICBpZiAoIS0tcmVmQ291bnQpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB3aW5k
b3c7Ci0gICAgICAgICAgICB3aW5kb3cgPSAwOwotICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIHN0YXRpYyBpbnQgcmVmQ291bnQ7Ci0gICAgc3RhdGljIFFXaW5kb3cqIHdpbmRvdzsK
LX07Ci0KLWludCBPZmZTY3JlZW5Sb290V2luZG93OjpyZWZDb3VudCA9IDA7Ci1RV2luZG93KiBP
ZmZTY3JlZW5Sb290V2luZG93Ojp3aW5kb3cgPSAwOwotCi1zdGF0aWMgY29uc3QgaW50IGdseFNw
ZWNbXSA9IHsKLSAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBpcyBhIHNldCBrZXkgdmFsdWUgcGFp
cnMgc3RvcmVkIGluIGEgc2ltcGxlIGFycmF5LgotICAgIEdMWF9MRVZFTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsCi0gICAgR0xYX0RSQVdBQkxFX1RZUEUsICAgICAgICAgICAgICAgICAg
R0xYX1BJWE1BUF9CSVQgfCBHTFhfV0lORE9XX0JJVCwKLSAgICBHTFhfQklORF9UT19URVhUVVJF
X1RBUkdFVFNfRVhULCAgICBHTFhfVEVYVFVSRV8yRF9CSVRfRVhULAotICAgIEdMWF9CSU5EX1RP
X1RFWFRVUkVfUkdCX0VYVCwgICAgICAgIFRSVUUsCi0gICAgMAotfTsKLQotc3RhdGljIGNvbnN0
IGludCBnbHhBdHRyaWJ1dGVzW10gPSB7Ci0gICAgR0xYX1RFWFRVUkVfRk9STUFUX0VYVCwKLSAg
ICBHTFhfVEVYVFVSRV9GT1JNQVRfUkdCX0VYVCwKLSAgICBHTFhfVEVYVFVSRV9UQVJHRVRfRVhU
LAotICAgIEdMWF9URVhUVVJFXzJEX0VYVCwKLSAgICAwCi19OwotCi1zdHJ1Y3QgR3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZSB7Ci0gICAgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZShjb25zdCBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDNEIHNoYXJlQ29udGV4dCA9IDApCi0gICAgICAgIDogbV9kaXNwbGF5
KDApCi0gICAgICAgICwgbV94UGl4bWFwKDApCi0gICAgICAgICwgbV9nbHhQaXhtYXAoMCkKLSAg
ICAgICAgLCBtX2dsQ29udGV4dChhZG9wdFB0cihuZXcgUU9wZW5HTENvbnRleHQpKQotICAgICAg
ICAsIG1fZGV0YWNoZWRDb250ZXh0KDApCi0gICAgICAgICwgbV9kZXRhY2hlZFN1cmZhY2UoMCkK
LSAgICAgICAgLCBtX3RleHR1cmVJc1lJbnZlcnRlZChmYWxzZSkKLSAgICAgICAgLCBtX2hhc0Fs
cGhhKGZhbHNlKQotICAgIHsKLSAgICAgICAgUVN1cmZhY2UqIGN1cnJlbnRTdXJmYWNlID0gMDsK
LSAgICAgICAgUU9wZW5HTENvbnRleHQqIGN1cnJlbnRDb250ZXh0ID0gUU9wZW5HTENvbnRleHQ6
OmN1cnJlbnRDb250ZXh0KCk7Ci0gICAgICAgIGlmIChjdXJyZW50Q29udGV4dCkKLSAgICAgICAg
ICAgIGN1cnJlbnRTdXJmYWNlID0gY3VycmVudENvbnRleHQtPnN1cmZhY2UoKTsKLQotICAgICAg
ICBtX2Rpc3BsYXkgPSBYT3BlbkRpc3BsYXkoMCk7Ci0gICAgICAgIG1fZ2xDb250ZXh0LT5zZXRT
aGFyZUNvbnRleHQoc2hhcmVDb250ZXh0KTsKLSAgICAgICAgbV9nbENvbnRleHQtPmNyZWF0ZSgp
OwotCi0gICAgICAgIC8vIFRoZSBHTFggaW1wbGVtZW50YXRpb24gb2YgUU9wZW5HTENvbnRleHQg
d2lsbCByZXNldCB0aGUgY3VycmVudCBjb250ZXh0IHdoZW4gY3JlYXRlIGlzIGJlaW5nIGNhbGxl
ZC4KLSAgICAgICAgLy8gVGhlcmVmb3JlIHdlIGhhdmUgdG8gbWFrZSB0aGUgcHJldmlvdXMgY29u
dGV4dCBjdXJyZW50IGFnYWluLgotICAgICAgICBpZiAoY3VycmVudENvbnRleHQpCi0gICAgICAg
ICAgICBjdXJyZW50Q29udGV4dC0+bWFrZUN1cnJlbnQoY3VycmVudFN1cmZhY2UpOwotICAgIH0K
LQotICAgIH5HcmFwaGljc1N1cmZhY2VQcml2YXRlKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2ds
eFBpeG1hcCkKLSAgICAgICAgICAgIGdsWERlc3Ryb3lQaXhtYXAobV9kaXNwbGF5LCBtX2dseFBp
eG1hcCk7Ci0gICAgICAgIG1fZ2x4UGl4bWFwID0gMDsKLQotICAgICAgICBpZiAobV94UGl4bWFw
KQotICAgICAgICAgICAgWEZyZWVQaXhtYXAobV9kaXNwbGF5LCBtX3hQaXhtYXApOwotICAgICAg
ICBtX3hQaXhtYXAgPSAwOwotCi0gICAgICAgIGlmIChtX2Rpc3BsYXkpCi0gICAgICAgICAgICBY
Q2xvc2VEaXNwbGF5KG1fZGlzcGxheSk7Ci0gICAgICAgIG1fZGlzcGxheSA9IDA7Ci0gICAgfQot
Ci0gICAgdWludDMyX3QgY3JlYXRlU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplKQotICAgIHsK
LSAgICAgICAgbV9zdXJmYWNlID0gYWRvcHRQdHIobmV3IFFXaW5kb3cobV9vZmZTY3JlZW5XaW5k
b3cuZ2V0KG1fZGlzcGxheSkpKTsKLSAgICAgICAgbV9zdXJmYWNlLT5zZXRTdXJmYWNlVHlwZShR
U3VyZmFjZTo6T3BlbkdMU3VyZmFjZSk7Ci0gICAgICAgIG1fc3VyZmFjZS0+c2V0R2VvbWV0cnko
MCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICAgICAgbV9zdXJmYWNlLT5j
cmVhdGUoKTsKLSAgICAgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV9z
dXJmYWNlLT5oYW5kbGUoKS0+d2luSWQoKSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOwotCi0g
ICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgWFJlbmRlciBFeHRlbnNpb24gaXMgYXZhaWxhYmxlLgot
ICAgICAgICBpbnQgZXZlbnRCYXNlcCwgZXJyb3JCYXNlcDsKLSAgICAgICAgaWYgKCFYUmVuZGVy
UXVlcnlFeHRlbnNpb24obV9kaXNwbGF5LCAmZXZlbnRCYXNlcCwgJmVycm9yQmFzZXApKQotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgbV9zdXJmYWNlLT5zaG93KCk7Ci0KLSAgICAg
ICAgcmV0dXJuIG1fc3VyZmFjZS0+aGFuZGxlKCktPndpbklkKCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBjcmVhdGVQaXhtYXAodWludDMyX3Qgd2luSWQpCi0gICAgewotICAgICAgICBYV2luZG93QXR0
cmlidXRlcyBhdHRyOwotICAgICAgICBYR2V0V2luZG93QXR0cmlidXRlcyhtX2Rpc3BsYXksIHdp
bklkLCAmYXR0cik7Ci0KLSAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5k
ZXJGaW5kVmlzdWFsRm9ybWF0KG1fZGlzcGxheSwgYXR0ci52aXN1YWwpOwotICAgICAgICBtX2hh
c0FscGhhID0gKGZvcm1hdC0+dHlwZSA9PSBQaWN0VHlwZURpcmVjdCAmJiBmb3JtYXQtPmRpcmVj
dC5hbHBoYU1hc2spOwotICAgICAgICBtX3NpemUgPSBJbnRTaXplKGF0dHIud2lkdGgsIGF0dHIu
aGVpZ2h0KTsKLQotICAgICAgICBpbnQgbnVtYmVyT2ZDb25maWdzOwotICAgICAgICBHTFhGQkNv
bmZpZyogY29uZmlncyA9IGdsWENob29zZUZCQ29uZmlnKG1fZGlzcGxheSwgWERlZmF1bHRTY3Jl
ZW4obV9kaXNwbGF5KSwgZ2x4U3BlYywgJm51bWJlck9mQ29uZmlncyk7Ci0KLSAgICAgICAgbV94
UGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCB3aW5JZCk7Ci0g
ICAgICAgIG1fZ2x4UGl4bWFwID0gZ2xYQ3JlYXRlUGl4bWFwKG1fZGlzcGxheSwgKmNvbmZpZ3Ms
IG1feFBpeG1hcCwgZ2x4QXR0cmlidXRlcyk7Ci0KLSAgICAgICAgdWludCBpbnZlcnRlZCA9IDA7
Ci0gICAgICAgIGdsWFF1ZXJ5RHJhd2FibGUobV9kaXNwbGF5LCBtX2dseFBpeG1hcCwgR0xYX1lf
SU5WRVJURURfRVhULCAmaW52ZXJ0ZWQpOwotICAgICAgICBtX3RleHR1cmVJc1lJbnZlcnRlZCA9
ICEhaW52ZXJ0ZWQ7Ci0KLSAgICAgICAgWEZyZWUoY29uZmlncyk7Ci0gICAgfQotCi0gICAgdm9p
ZCBtYWtlQ3VycmVudCgpCi0gICAgewotICAgICAgICBtX2RldGFjaGVkQ29udGV4dCA9IFFPcGVu
R0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpOwotICAgICAgICBpZiAobV9kZXRhY2hlZENvbnRl
eHQpCi0gICAgICAgICAgICBtX2RldGFjaGVkU3VyZmFjZSA9IG1fZGV0YWNoZWRDb250ZXh0LT5z
dXJmYWNlKCk7Ci0KLSAgICAgICAgaWYgKG1fc3VyZmFjZSAmJiBtX2dsQ29udGV4dCkKLSAgICAg
ICAgICAgIG1fZ2xDb250ZXh0LT5tYWtlQ3VycmVudChtX3N1cmZhY2UuZ2V0KCkpOwotICAgIH0K
LQotICAgIHZvaWQgZG9uZUN1cnJlbnQoKQotICAgIHsKLSAgICAgICAgaWYgKG1fZGV0YWNoZWRD
b250ZXh0KQotICAgICAgICAgICAgbV9kZXRhY2hlZENvbnRleHQtPm1ha2VDdXJyZW50KG1fZGV0
YWNoZWRTdXJmYWNlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXBCdWZmZXJzKCkKLSAgICB7Ci0g
ICAgICAgIC8vIElmIHRoZXJlIGlzIGEgeHBpeG1hcCwgd2UgYXJlIG9uIHRoZSByZWFkaW5nIHNp
ZGUgYW5kIGRvIG5vdCB3YW50IHRvIHN3YXAgYW55IGJ1ZmZlcnMuCi0gICAgICAgIC8vIFRoZSBi
dWZmZXJzIGFyZSBiZWluZyBzd2l0Y2hlZCBvbiB0aGUgd3JpdGluZyBzaWRlLCB0aGUgcmVhZGlu
ZyBzaWRlIGp1c3QgcmVhZHMKLSAgICAgICAgLy8gd2hhdGV2ZXIgdGV4dHVyZSB0aGUgWFdpbmRv
dyBjb250YWlucy4KLSAgICAgICAgaWYgKG1feFBpeG1hcCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBpZiAoIW1fc3VyZmFjZS0+aXNWaXNpYmxlKCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgLy8gQ3JlYXRpbmcgYW5kIGV4cG9zaW5nIHRoZSBzdXJmYWNlIGlzIGFz
eW5jaHJvbm91cy4gVGhlcmVmb3JlIHdlIGhhdmUgdG8gd2FpdCBoZXJlCi0gICAgICAgIC8vIGJl
Zm9yZSBzd2FwcGluZyB0aGUgYnVmZmVycy4gVGhpcyBzaG91bGQgb25seSBiZSB0aGUgY2FzZSBm
b3IgdGhlIHZlcnkgZmlyc3QgZnJhbWUuCi0gICAgICAgIHdoaWxlICghbV9zdXJmYWNlLT5pc0V4
cG9zZWQoKSkKLSAgICAgICAgICAgIFFDb3JlQXBwbGljYXRpb246OnByb2Nlc3NFdmVudHMoKTsK
LQotICAgICAgICBRT3BlbkdMQ29udGV4dCogZ2xDb250ZXh0ID0gUU9wZW5HTENvbnRleHQ6OmN1
cnJlbnRDb250ZXh0KCk7Ci0gICAgICAgIGlmIChtX3N1cmZhY2UgJiYgZ2xDb250ZXh0KSB7Ci0g
ICAgICAgICAgICBHTGludCBvbGRGQk87Ci0gICAgICAgICAgICBnbEdldEludGVnZXJ2KEdMX0ZS
QU1FQlVGRkVSX0JJTkRJTkcsICZvbGRGQk8pOwotICAgICAgICAgICAgcEdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBnbENvbnRleHQtPmRlZmF1bHRGcmFtZWJ1ZmZlck9iamVjdCgp
KTsKLSAgICAgICAgICAgIGdsQ29udGV4dC0+c3dhcEJ1ZmZlcnMobV9zdXJmYWNlLmdldCgpKTsK
LSAgICAgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgb2xkRkJPKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgY29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCi0gICAgewotICAgICAgICBtYWtlQ3Vy
cmVudCgpOwotICAgICAgICBpbnQgeCA9IHNvdXJjZVJlY3QueCgpOwotICAgICAgICBpbnQgeSA9
IHNvdXJjZVJlY3QueSgpOwotICAgICAgICBpbnQgd2lkdGggPSBzb3VyY2VSZWN0LndpZHRoKCk7
Ci0gICAgICAgIGludCBoZWlnaHQgPSBzb3VyY2VSZWN0LmhlaWdodCgpOwotCi0gICAgICAgIGds
UHVzaEF0dHJpYihHTF9BTExfQVRUUklCX0JJVFMpOwotICAgICAgICBHTGludCBwcmV2aW91c0ZC
TzsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9GUkFNRUJVRkZFUl9CSU5ESU5HLCAmcHJldmlv
dXNGQk8pOwotCi0gICAgICAgIEdMdWludCBvcmlnaW5GQk87Ci0gICAgICAgIHBHbEdlbkZyYW1l
YnVmZmVycygxLCAmb3JpZ2luRkJPKTsKLSAgICAgICAgcEdsQmluZEZyYW1lYnVmZmVyKEdMX1JF
QURfRlJBTUVCVUZGRVIsIG9yaWdpbkZCTyk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4dHVyZSk7Ci0gICAgICAgIHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX1JF
QURfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0
dXJlLCAwKTsKLQotICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZF
UiwgZ2xDb250ZXh0KCktPmRlZmF1bHRGcmFtZWJ1ZmZlck9iamVjdCgpKTsKLSAgICAgICAgcEds
QmxpdEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQsIHgsIHksIHdpZHRoLCBoZWlnaHQs
IEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7Ci0KLSAgICAgICAgcEdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIDAsIDApOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IDApOwotICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHByZXZpb3Vz
RkJPKTsKLSAgICAgICAgcEdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZvcmlnaW5GQk8pOwotCi0g
ICAgICAgIGdsUG9wQXR0cmliKCk7Ci0gICAgICAgIGRvbmVDdXJyZW50KCk7Ci0gICAgfQotCi0K
LSAgICBEaXNwbGF5KiBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9Ci0KLSAg
ICBHTFhQaXhtYXAgZ2x4UGl4bWFwKCkgY29uc3QgeyByZXR1cm4gbV9nbHhQaXhtYXA7IH0KLQot
ICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgUU9wZW5H
TENvbnRleHQqIGdsQ29udGV4dCgpIHsgcmV0dXJuIG1fZ2xDb250ZXh0LmdldCgpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgT2ZmU2NyZWVuUm9vdFdpbmRvdyBtX29mZlNjcmVlbldpbmRvdzsKLSAgICBJ
bnRTaXplIG1fc2l6ZTsKLSAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7Ci0gICAgUGl4bWFwIG1feFBp
eG1hcDsKLSAgICBHTFhQaXhtYXAgbV9nbHhQaXhtYXA7Ci0gICAgT3duUHRyPFFXaW5kb3c+IG1f
c3VyZmFjZTsKLSAgICBPd25QdHI8UU9wZW5HTENvbnRleHQ+IG1fZ2xDb250ZXh0OwotICAgIFFP
cGVuR0xDb250ZXh0KiBtX2RldGFjaGVkQ29udGV4dDsKLSAgICBRU3VyZmFjZSogbV9kZXRhY2hl
ZFN1cmZhY2U7Ci0gICAgYm9vbCBtX3RleHR1cmVJc1lJbnZlcnRlZDsKLSAgICBib29sIG1faGFz
QWxwaGE7Ci19OwotCi1zdGF0aWMgYm9vbCByZXNvbHZlR0xNZXRob2RzKEdyYXBoaWNzU3VyZmFj
ZVByaXZhdGUqIHApCi17Ci0gICAgc3RhdGljIGJvb2wgcmVzb2x2ZWQgPSBmYWxzZTsKLSAgICBp
ZiAocmVzb2x2ZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgUU9wZW5HTENvbnRleHQq
IGdsQ29udGV4dCA9IHAtPmdsQ29udGV4dCgpOwotICAgIHBHbFhCaW5kVGV4SW1hZ2VFWFQgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMWEJJTkRURVhJTUFHRUVYVFBST0M+KGdsQ29udGV4dC0+Z2V0
UHJvY0FkZHJlc3MoImdsWEJpbmRUZXhJbWFnZUVYVCIpKTsKLSAgICBwR2xYUmVsZWFzZVRleElt
YWdlRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFhSRUxFQVNFVEVYSU1BR0VFWFRQUk9DPihn
bENvbnRleHQtPmdldFByb2NBZGRyZXNzKCJnbFhSZWxlYXNlVGV4SW1hZ2VFWFQiKSk7Ci0gICAg
cEdsQmluZEZyYW1lYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJJTkRGUkFNRUJVRkZF
UlBST0M+KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsQmluZEZyYW1lYnVmZmVyIikpOwot
ICAgIHBHbEJsaXRGcmFtZWJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTElURlJBTUVC
VUZGRVJQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRyZXNzKCJnbEJsaXRGcmFtZWJ1ZmZlciIp
KTsKLQotICAgIHBHbEdlbkZyYW1lYnVmZmVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRU5G
UkFNRUJVRkZFUlNQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRyZXNzKCJnbEdlbkZyYW1lYnVm
ZmVycyIpKTsKLSAgICBwR2xEZWxldGVGcmFtZWJ1ZmZlcnMgPSByZWludGVycHJldF9jYXN0PFBG
TkdMREVMRVRFRlJBTUVCVUZGRVJTUFJPQz4oZ2xDb250ZXh0LT5nZXRQcm9jQWRkcmVzcygiZ2xE
ZWxldGVGcmFtZWJ1ZmZlcnMiKSk7Ci0gICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQgPSByZWlu
dGVycHJldF9jYXN0PFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFMkRQUk9DPihnbENvbnRleHQtPmdl
dFByb2NBZGRyZXNzKCJnbEZyYW1lYnVmZmVyVGV4dHVyZTJEIikpOwotCi0gICAgcmVzb2x2ZWQg
PSBwR2xCbGl0RnJhbWVidWZmZXIgJiYgcEdsQmluZEZyYW1lYnVmZmVyICYmIHBHbFhCaW5kVGV4
SW1hZ2VFWFQgJiYgcEdsWFJlbGVhc2VUZXhJbWFnZUVYVDsKLQotICAgIHJldHVybiByZXNvbHZl
ZDsKLX0KLQogR3JhcGhpY3NTdXJmYWNlVG9rZW4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4
cG9ydCgpCiB7CiAgICAgcmV0dXJuIEdyYXBoaWNzU3VyZmFjZVRva2VuKG1fcGxhdGZvcm1TdXJm
YWNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0
L0dyYXBoaWNzU3VyZmFjZUdMWC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhp
Y3NTdXJmYWNlR0xYLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM5IEBACisvKgorIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisK
KyNpZiBQTEFURk9STShRVCkKKy8vIFF0IGhlYWRlcnMgbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUg
Z2x4IGhlYWRlcnMuCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRT3Bl
bkdMQ29udGV4dD4KKyNpbmNsdWRlIDxRVmVjdG9yPgorI2luY2x1ZGUgPFFXaW5kb3c+CisjaW5j
bHVkZSA8cXBhL3FwbGF0Zm9ybXdpbmRvdy5oPgorI2VsaWYgUExBVEZPUk0oRUZMKQorI2luY2x1
ZGUgPEdML2dsLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPEdML2dsZXh0Lmg+CisjaW5jbHVkZSA8
R0wvZ2x4Lmg+CisjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgorI2luY2x1
ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgbG9uZyBYMTFPdmVycmlkZVJlZGlyZWN0ID0gMUwgPDwgOTsKKworc3RhdGljIFBGTkdM
WEJJTkRURVhJTUFHRUVYVFBST0MgcEdsWEJpbmRUZXhJbWFnZUVYVCA9IDA7CitzdGF0aWMgUEZO
R0xYUkVMRUFTRVRFWElNQUdFRVhUUFJPQyBwR2xYUmVsZWFzZVRleEltYWdlRVhUID0gMDsKK3N0
YXRpYyBQRk5HTEJJTkRGUkFNRUJVRkZFUlBST0MgcEdsQmluZEZyYW1lYnVmZmVyID0gMDsKK3N0
YXRpYyBQRk5HTEJMSVRGUkFNRUJVRkZFUlBST0MgcEdsQmxpdEZyYW1lYnVmZmVyID0gMDsKK3N0
YXRpYyBQRk5HTEdFTkZSQU1FQlVGRkVSU1BST0MgcEdsR2VuRnJhbWVidWZmZXJzID0gMDsKK3N0
YXRpYyBQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0MgcEdsRGVsZXRlRnJhbWVidWZmZXJzID0g
MDsKK3N0YXRpYyBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJEUFJPQyBwR2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRCA9IDA7CisKK2NsYXNzIE9mZlNjcmVlblJvb3RXaW5kb3cgeworcHVibGljOgorICAg
IE9mZlNjcmVlblJvb3RXaW5kb3coKQorICAgIHsKKyAgICAgICAgKytyZWZDb3VudDsKKyAgICB9
CisKKyNpZiBQTEFURk9STShRVCkKKyAgICBRV2luZG93KiBnZXQoRGlzcGxheSogZHB5KTsKKyNl
bGlmIFBMQVRGT1JNKEVGTCkKKyAgICBXaW5kb3cqIGdldChEaXNwbGF5KiBkcHkpOworI2VuZGlm
CisgICAgfk9mZlNjcmVlblJvb3RXaW5kb3coKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgaW50
IHJlZkNvdW50OworI2lmIFBMQVRGT1JNKFFUKQorICAgIHN0YXRpYyBRV2luZG93KiB3aW5kb3c7
CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgc3RhdGljIFdpbmRvdyB3aW5kb3c7CisgICAgRGlz
cGxheSogZGlzcGxheTsKKyNlbmRpZgorfTsKKworc3RhdGljIGNvbnN0IGludCBnbHhTcGVjW10g
PSB7CisgICAgLy8gVGhlIHNwZWNpZmljYXRpb24gaXMgYSBzZXQga2V5IHZhbHVlIHBhaXJzIHN0
b3JlZCBpbiBhIHNpbXBsZSBhcnJheS4KKyAgICBHTFhfTEVWRUwsICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLAorICAgIEdMWF9EUkFXQUJMRV9UWVBFLCAgICAgICAgICAgICAgICAgIEdMWF9Q
SVhNQVBfQklUIHwgR0xYX1dJTkRPV19CSVQsCisgICAgR0xYX0JJTkRfVE9fVEVYVFVSRV9UQVJH
RVRTX0VYVCwgICAgR0xYX1RFWFRVUkVfMkRfQklUX0VYVCwKKyAgICBHTFhfQklORF9UT19URVhU
VVJFX1JHQl9FWFQsICAgICAgICBUUlVFLAorICAgIDAKK307CisKK3N0YXRpYyBjb25zdCBpbnQg
Z2x4QXR0cmlidXRlc1tdID0geworICAgIEdMWF9URVhUVVJFX0ZPUk1BVF9FWFQsCisgICAgR0xY
X1RFWFRVUkVfRk9STUFUX1JHQl9FWFQsCisgICAgR0xYX1RFWFRVUkVfVEFSR0VUX0VYVCwKKyAg
ICBHTFhfVEVYVFVSRV8yRF9FWFQsCisgICAgMAorfTsKKworc3RydWN0IEdyYXBoaWNzU3VyZmFj
ZVByaXZhdGUgeworICAgIEdyYXBoaWNzU3VyZmFjZVByaXZhdGUoY29uc3QgUGxhdGZvcm1HcmFw
aGljc0NvbnRleHQzRCBzaGFyZUNvbnRleHQgPSAwKTsKKworICAgIH5HcmFwaGljc1N1cmZhY2VQ
cml2YXRlKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dseFBpeG1hcCkKKyAgICAgICAgICAgIGds
WERlc3Ryb3lQaXhtYXAobV9kaXNwbGF5LCBtX2dseFBpeG1hcCk7CisgICAgICAgIG1fZ2x4UGl4
bWFwID0gMDsKKworICAgICAgICBpZiAobV94UGl4bWFwKQorICAgICAgICAgICAgWEZyZWVQaXht
YXAobV9kaXNwbGF5LCBtX3hQaXhtYXApOworICAgICAgICBtX3hQaXhtYXAgPSAwOworCisgICAg
ICAgIGlmIChtX2Rpc3BsYXkpCisgICAgICAgICAgICBYQ2xvc2VEaXNwbGF5KG1fZGlzcGxheSk7
CisgICAgICAgIG1fZGlzcGxheSA9IDA7CisgICAgfQorCisgICAgdWludDMyX3QgY3JlYXRlU3Vy
ZmFjZShjb25zdCBJbnRTaXplJik7CisKKyAgICB2b2lkIGNyZWF0ZVBpeG1hcCh1aW50MzJfdCB3
aW5JZCkKKyAgICB7CisgICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHI7CisgICAgICAgIFhH
ZXRXaW5kb3dBdHRyaWJ1dGVzKG1fZGlzcGxheSwgd2luSWQsICZhdHRyKTsKKworICAgICAgICBY
UmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9kaXNw
bGF5LCBhdHRyLnZpc3VhbCk7CisgICAgICAgIG1faGFzQWxwaGEgPSAoZm9ybWF0LT50eXBlID09
IFBpY3RUeXBlRGlyZWN0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayk7CisgICAgICAgIG1f
c2l6ZSA9IEludFNpemUoYXR0ci53aWR0aCwgYXR0ci5oZWlnaHQpOworCisgICAgICAgIGludCBu
dW1iZXJPZkNvbmZpZ3M7CisgICAgICAgIEdMWEZCQ29uZmlnKiBjb25maWdzID0gZ2xYQ2hvb3Nl
RkJDb25maWcobV9kaXNwbGF5LCBYRGVmYXVsdFNjcmVlbihtX2Rpc3BsYXkpLCBnbHhTcGVjLCAm
bnVtYmVyT2ZDb25maWdzKTsKKworICAgICAgICBtX3hQaXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdp
bmRvd1BpeG1hcChtX2Rpc3BsYXksIHdpbklkKTsKKyAgICAgICAgbV9nbHhQaXhtYXAgPSBnbFhD
cmVhdGVQaXhtYXAobV9kaXNwbGF5LCAqY29uZmlncywgbV94UGl4bWFwLCBnbHhBdHRyaWJ1dGVz
KTsKKworICAgICAgICB1aW50IGludmVydGVkID0gMDsKKyAgICAgICAgZ2xYUXVlcnlEcmF3YWJs
ZShtX2Rpc3BsYXksIG1fZ2x4UGl4bWFwLCBHTFhfWV9JTlZFUlRFRF9FWFQsICZpbnZlcnRlZCk7
CisgICAgICAgIG1fdGV4dHVyZUlzWUludmVydGVkID0gISFpbnZlcnRlZDsKKworICAgICAgICBY
RnJlZShjb25maWdzKTsKKyAgICB9CisKKyAgICB2b2lkIG1ha2VDdXJyZW50KCk7CisKKyAgICB2
b2lkIGRvbmVDdXJyZW50KCk7CisKKyAgICB2b2lkIHN3YXBCdWZmZXJzKCk7CisKKyAgICB2b2lk
IGNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0KQorICAgIHsKKyAgICAgICAgbWFrZUN1cnJlbnQoKTsKKyAgICAgICAgaW50IHggPSBzb3Vy
Y2VSZWN0LngoKTsKKyAgICAgICAgaW50IHkgPSBzb3VyY2VSZWN0LnkoKTsKKyAgICAgICAgaW50
IHdpZHRoID0gc291cmNlUmVjdC53aWR0aCgpOworICAgICAgICBpbnQgaGVpZ2h0ID0gc291cmNl
UmVjdC5oZWlnaHQoKTsKKworICAgICAgICBnbFB1c2hBdHRyaWIoR0xfQUxMX0FUVFJJQl9CSVRT
KTsKKyAgICAgICAgR0xpbnQgcHJldmlvdXNGQk87CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xf
RlJBTUVCVUZGRVJfQklORElORywgJnByZXZpb3VzRkJPKTsKKworICAgICAgICBHTHVpbnQgb3Jp
Z2luRkJPOworICAgICAgICBwR2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm9yaWdpbkZCTyk7CisgICAg
ICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBvcmlnaW5GQk8pOwor
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgICAgICBw
R2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9SRUFEX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CisKKyNpZiBQTEFURk9STShRVCkK
KyAgICAgICAgcEdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIGdsQ29udGV4
dCgpLT5kZWZhdWx0RnJhbWVidWZmZXJPYmplY3QoKSk7CisjZWxpZiBQTEFURk9STShFRkwpCisg
ICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCAwKTsKKyNlbmRp
ZgorICAgICAgICBwR2xCbGl0RnJhbWVidWZmZXIoeCwgeSwgd2lkdGgsIGhlaWdodCwgeCwgeSwg
d2lkdGgsIGhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKworICAgICAg
ICBwR2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9SRUFEX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgMCwgMCk7CisgICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgMCk7CisgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgcHJldmlvdXNGQk8pOworICAgICAgICBwR2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm9y
aWdpbkZCTyk7CisKKyAgICAgICAgZ2xQb3BBdHRyaWIoKTsKKyAgICAgICAgZG9uZUN1cnJlbnQo
KTsKKyAgICB9CisKKyAgICBEaXNwbGF5KiBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5OyB9CisKKyAgICBHTFhQaXhtYXAgZ2x4UGl4bWFwKCkgY29uc3QgeyByZXR1cm4gbV9nbHhQ
aXhtYXA7IH0KKworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQor
ICAgIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIFFPcGVuR0xDb250ZXh0KiBnbENvbnRleHQoKSB7
IHJldHVybiBtX2dsQ29udGV4dC5nZXQoKTsgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgICAgT2Zm
U2NyZWVuUm9vdFdpbmRvdyBtX29mZlNjcmVlbldpbmRvdzsKKyAgICBJbnRTaXplIG1fc2l6ZTsK
KyAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7CisgICAgUGl4bWFwIG1feFBpeG1hcDsKKyAgICBHTFhQ
aXhtYXAgbV9nbHhQaXhtYXA7CisjaWYgUExBVEZPUk0oUVQpCisgICAgT3duUHRyPFFXaW5kb3c+
IG1fc3VyZmFjZTsKKyAgICBPd25QdHI8UU9wZW5HTENvbnRleHQ+IG1fZ2xDb250ZXh0OworICAg
IFFPcGVuR0xDb250ZXh0KiBtX2RldGFjaGVkQ29udGV4dDsKKyAgICBRU3VyZmFjZSogbV9kZXRh
Y2hlZFN1cmZhY2U7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgV2luZG93IG1fc3VyZmFjZTsK
KyAgICBHTFhDb250ZXh0IG1fZ2xDb250ZXh0OworICAgIEdMWENvbnRleHQgbV9kZXRhY2hlZENv
bnRleHQ7CisgICAgR0xYRHJhd2FibGUgbV9kZXRhY2hlZFN1cmZhY2U7CisgICAgR0xYRkJDb25m
aWcqIG1fZmJDb25maWdzOworI2VuZGlmCisgICAgYm9vbCBtX3RleHR1cmVJc1lJbnZlcnRlZDsK
KyAgICBib29sIG1faGFzQWxwaGE7Cit9OworCitzdGF0aWMgYm9vbCByZXNvbHZlR0xNZXRob2Rz
KEdyYXBoaWNzU3VyZmFjZVByaXZhdGUqIHApCit7CisgICAgc3RhdGljIGJvb2wgcmVzb2x2ZWQg
PSBmYWxzZTsKKyAgICBpZiAocmVzb2x2ZWQpCisgICAgICAgIHJldHVybiB0cnVlOworCisjaWYg
UExBVEZPUk0oUVQpCisgICAgUU9wZW5HTENvbnRleHQqIGdsQ29udGV4dCA9IHAtPmdsQ29udGV4
dCgpOworICAgIHBHbFhCaW5kVGV4SW1hZ2VFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMWEJJ
TkRURVhJTUFHRUVYVFBST0M+KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsWEJpbmRUZXhJ
bWFnZUVYVCIpKTsKKyAgICBwR2xYUmVsZWFzZVRleEltYWdlRVhUID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTFhSRUxFQVNFVEVYSU1BR0VFWFRQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRyZXNz
KCJnbFhSZWxlYXNlVGV4SW1hZ2VFWFQiKSk7CisgICAgcEdsQmluZEZyYW1lYnVmZmVyID0gcmVp
bnRlcnByZXRfY2FzdDxQRk5HTEJJTkRGUkFNRUJVRkZFUlBST0M+KGdsQ29udGV4dC0+Z2V0UHJv
Y0FkZHJlc3MoImdsQmluZEZyYW1lYnVmZmVyIikpOworICAgIHBHbEJsaXRGcmFtZWJ1ZmZlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTElURlJBTUVCVUZGRVJQUk9DPihnbENvbnRleHQtPmdl
dFByb2NBZGRyZXNzKCJnbEJsaXRGcmFtZWJ1ZmZlciIpKTsKKworICAgIHBHbEdlbkZyYW1lYnVm
ZmVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRU5GUkFNRUJVRkZFUlNQUk9DPihnbENvbnRl
eHQtPmdldFByb2NBZGRyZXNzKCJnbEdlbkZyYW1lYnVmZmVycyIpKTsKKyAgICBwR2xEZWxldGVG
cmFtZWJ1ZmZlcnMgPSByZWludGVycHJldF9jYXN0PFBGTkdMREVMRVRFRlJBTUVCVUZGRVJTUFJP
Qz4oZ2xDb250ZXh0LT5nZXRQcm9jQWRkcmVzcygiZ2xEZWxldGVGcmFtZWJ1ZmZlcnMiKSk7Cisg
ICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdMRlJBTUVC
VUZGRVJURVhUVVJFMkRQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRyZXNzKCJnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEIikpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHBHbFhCaW5kVGV4SW1h
Z2VFWFQgPSAoUEZOR0xYQklORFRFWElNQUdFRVhUUFJPQylnbFhHZXRQcm9jQWRkcmVzcygoR0x1
Ynl0ZSAqKSAiZ2xYQmluZFRleEltYWdlRVhUIik7CisgICAgcEdsWFJlbGVhc2VUZXhJbWFnZUVY
VCA9IChQRk5HTFhSRUxFQVNFVEVYSU1BR0VFWFRQUk9DKShnbFhHZXRQcm9jQWRkcmVzcygoR0x1
Ynl0ZSAqKSAiZ2xYUmVsZWFzZVRleEltYWdlRVhUIikpOworICAgIHBHbEJpbmRGcmFtZWJ1ZmZl
ciA9IChQRk5HTEJJTkRGUkFNRUJVRkZFUlBST0MpKGdsWEdldFByb2NBZGRyZXNzKChHTHVieXRl
ICopICJnbEJpbmRGcmFtZWJ1ZmZlciIpKTsKKyAgICBwR2xCbGl0RnJhbWVidWZmZXIgPSAoUEZO
R0xCTElURlJBTUVCVUZGRVJQUk9DKShnbFhHZXRQcm9jQWRkcmVzcygoR0x1Ynl0ZSAqKSAiZ2xC
bGl0RnJhbWVidWZmZXIiKSk7CisKKyAgICBwR2xHZW5GcmFtZWJ1ZmZlcnMgPSAoUEZOR0xHRU5G
UkFNRUJVRkZFUlNQUk9DKShnbFhHZXRQcm9jQWRkcmVzcygoR0x1Ynl0ZSAqKSAiZ2xHZW5GcmFt
ZWJ1ZmZlcnMiKSk7CisgICAgcEdsRGVsZXRlRnJhbWVidWZmZXJzID0gKFBGTkdMREVMRVRFRlJB
TUVCVUZGRVJTUFJPQykoZ2xYR2V0UHJvY0FkZHJlc3MoKEdMdWJ5dGUgKikgImdsRGVsZXRlRnJh
bWVidWZmZXJzIikpOworICAgIHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEID0gKFBGTkdMRlJBTUVC
VUZGRVJURVhUVVJFMkRQUk9DKShnbFhHZXRQcm9jQWRkcmVzcygoR0x1Ynl0ZSAqKSAiZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRCIpKTsKKyNlbmRpZgorCisgICAgcmVzb2x2ZWQgPSBwR2xCbGl0RnJh
bWVidWZmZXIgJiYgcEdsQmluZEZyYW1lYnVmZmVyICYmIHBHbFhCaW5kVGV4SW1hZ2VFWFQgJiYg
cEdsWFJlbGVhc2VUZXhJbWFnZUVYVDsKKworICAgIHJldHVybiByZXNvbHZlZDsKK30KKworfQor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHAJKHJldmlz
aW9uIDEzMjA1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTIw
IEBACiAjaW5jbHVkZSA8UVBpeG1hcD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitRV2luZG93
KiBPZmZTY3JlZW5Sb290V2luZG93OjpPZmZTY3JlZW5Sb290V2luZG93OjpnZXQoRGlzcGxheSog
ZHB5KQoreworICAgIGlmICghd2luZG93KSB7CisgICAgICAgIHdpbmRvdyA9IG5ldyBRV2luZG93
OworICAgICAgICB3aW5kb3ctPnNldEdlb21ldHJ5KFFSZWN0KC0xLCAtMSwgMSwgMSkpOworICAg
ICAgICB3aW5kb3ctPmNyZWF0ZSgpOworICAgICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhdHRy
aWJ1dGVzOworICAgICAgICBhdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gdHJ1ZTsKKyAg
ICAgICAgWENoYW5nZVdpbmRvd0F0dHJpYnV0ZXMoZHB5LCB3aW5kb3ctPmhhbmRsZSgpLT53aW5J
ZCgpLCBYMTFPdmVycmlkZVJlZGlyZWN0LCAmYXR0cmlidXRlcyk7CisgICAgICAgIHdpbmRvdy0+
c2hvdygpOworICAgIH0KKworICAgIHJldHVybiB3aW5kb3c7Cit9CisKK09mZlNjcmVlblJvb3RX
aW5kb3c6On5PZmZTY3JlZW5Sb290V2luZG93KCkKK3sKKyAgICBpZiAoIS0tcmVmQ291bnQpIHsK
KyAgICAgICAgZGVsZXRlIHdpbmRvdzsKKyAgICAgICAgd2luZG93ID0gMDsKKyAgICB9Cit9CisK
K2ludCBPZmZTY3JlZW5Sb290V2luZG93OjpyZWZDb3VudCA9IDA7CitRV2luZG93KiBPZmZTY3Jl
ZW5Sb290V2luZG93Ojp3aW5kb3cgPSAwOworCitHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpHcmFw
aGljc1N1cmZhY2VQcml2YXRlKGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0Qgc2hhcmVD
b250ZXh0KQorICAgIDogbV9kaXNwbGF5KDApCisgICAgLCBtX3hQaXhtYXAoMCkKKyAgICAsIG1f
Z2x4UGl4bWFwKDApCisgICAgLCBtX2dsQ29udGV4dChhZG9wdFB0cihuZXcgUU9wZW5HTENvbnRl
eHQpKQorICAgICwgbV9kZXRhY2hlZENvbnRleHQoMCkKKyAgICAsIG1fZGV0YWNoZWRTdXJmYWNl
KDApCisgICAgLCBtX3RleHR1cmVJc1lJbnZlcnRlZChmYWxzZSkKKyAgICAsIG1faGFzQWxwaGEo
ZmFsc2UpCit7CisgICAgUVN1cmZhY2UqIGN1cnJlbnRTdXJmYWNlID0gMDsKKyAgICBRT3BlbkdM
Q29udGV4dCogY3VycmVudENvbnRleHQgPSBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQo
KTsKKyAgICBpZiAoY3VycmVudENvbnRleHQpCisgICAgICAgIGN1cnJlbnRTdXJmYWNlID0gY3Vy
cmVudENvbnRleHQtPnN1cmZhY2UoKTsKKworICAgIG1fZGlzcGxheSA9IFhPcGVuRGlzcGxheSgw
KTsKKworICAgIG1fZ2xDb250ZXh0LT5zZXRTaGFyZUNvbnRleHQoc2hhcmVDb250ZXh0KTsKKyAg
ICBtX2dsQ29udGV4dC0+Y3JlYXRlKCk7CisKKyAgICAvLyBUaGUgR0xYIGltcGxlbWVudGF0aW9u
IG9mIFFPcGVuR0xDb250ZXh0IHdpbGwgcmVzZXQgdGhlIGN1cnJlbnQgY29udGV4dCB3aGVuIGNy
ZWF0ZSBpcyBiZWluZyBjYWxsZWQuCisgICAgLy8gVGhlcmVmb3JlIHdlIGhhdmUgdG8gbWFrZSB0
aGUgcHJldmlvdXMgY29udGV4dCBjdXJyZW50IGFnYWluLgorICAgIGlmIChjdXJyZW50Q29udGV4
dCkKKyAgICAgICAgY3VycmVudENvbnRleHQtPm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsK
K30KKwordWludDMyX3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZShjb25z
dCBJbnRTaXplJiBzaXplKQoreworICAgIG1fc3VyZmFjZSA9IGFkb3B0UHRyKG5ldyBRV2luZG93
KG1fb2ZmU2NyZWVuV2luZG93LmdldChtX2Rpc3BsYXkpKSk7CisgICAgbV9zdXJmYWNlLT5zZXRT
dXJmYWNlVHlwZShRU3VyZmFjZTo6T3BlbkdMU3VyZmFjZSk7CisgICAgbV9zdXJmYWNlLT5zZXRH
ZW9tZXRyeSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIG1fc3VyZmFj
ZS0+Y3JlYXRlKCk7CisgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KG1fZGlzcGxheSwgbV9z
dXJmYWNlLT5oYW5kbGUoKS0+d2luSWQoKSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworCisg
ICAgLy8gTWFrZSBzdXJlIHRoZSBYUmVuZGVyIEV4dGVuc2lvbiBpcyBhdmFpbGFibGUuCisgICAg
aW50IGV2ZW50QmFzZXAsIGVycm9yQmFzZXA7CisgICAgaWYgKCFYUmVuZGVyUXVlcnlFeHRlbnNp
b24obV9kaXNwbGF5LCAmZXZlbnRCYXNlcCwgJmVycm9yQmFzZXApKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIG1fc3VyZmFjZS0+c2hvdygpOworCisgICAgcmV0dXJuIG1fc3VyZmFjZS0+aGFu
ZGxlKCktPndpbklkKCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1
cnJlbnQoKQoreworICAgIG1fZGV0YWNoZWRDb250ZXh0ID0gUU9wZW5HTENvbnRleHQ6OmN1cnJl
bnRDb250ZXh0KCk7CisgICAgaWYgKG1fZGV0YWNoZWRDb250ZXh0KQorICAgICAgICBtX2RldGFj
aGVkU3VyZmFjZSA9IG1fZGV0YWNoZWRDb250ZXh0LT5zdXJmYWNlKCk7CisKKyAgICBpZiAobV9z
dXJmYWNlICYmIG1fZ2xDb250ZXh0KQorICAgICAgICBtX2dsQ29udGV4dC0+bWFrZUN1cnJlbnQo
bV9zdXJmYWNlLmdldCgpKTsKK30KKwordm9pZCBHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpkb25l
Q3VycmVudCgpCit7CisgICAgaWYgKG1fZGV0YWNoZWRDb250ZXh0KQorICAgICAgICBtX2RldGFj
aGVkQ29udGV4dC0+bWFrZUN1cnJlbnQobV9kZXRhY2hlZFN1cmZhY2UpOworfQorCit2b2lkIEdy
YXBoaWNzU3VyZmFjZVByaXZhdGU6OnN3YXBCdWZmZXJzKCkKK3sKKyAgICAvLyBJZiB0aGVyZSBp
cyBhIHhwaXhtYXAsIHdlIGFyZSBvbiB0aGUgcmVhZGluZyBzaWRlIGFuZCBkbyBub3Qgd2FudCB0
byBzd2FwIGFueSBidWZmZXJzLgorICAgIC8vIFRoZSBidWZmZXJzIGFyZSBiZWluZyBzd2l0Y2hl
ZCBvbiB0aGUgd3JpdGluZyBzaWRlLCB0aGUgcmVhZGluZyBzaWRlIGp1c3QgcmVhZHMKKyAgICAv
LyB3aGF0ZXZlciB0ZXh0dXJlIHRoZSBYV2luZG93IGNvbnRhaW5zLgorICAgIGlmIChtX3hQaXht
YXApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9zdXJmYWNlLT5pc1Zpc2libGUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ3JlYXRpbmcgYW5kIGV4cG9zaW5nIHRoZSBzdXJm
YWNlIGlzIGFzeW5jaHJvbm91cy4gVGhlcmVmb3JlIHdlIGhhdmUgdG8gd2FpdCBoZXJlCisgICAg
Ly8gYmVmb3JlIHN3YXBwaW5nIHRoZSBidWZmZXJzLiBUaGlzIHNob3VsZCBvbmx5IGJlIHRoZSBj
YXNlIGZvciB0aGUgdmVyeSBmaXJzdCBmcmFtZS4KKyAgICB3aGlsZSAoIW1fc3VyZmFjZS0+aXNF
eHBvc2VkKCkpCisgICAgICAgIFFDb3JlQXBwbGljYXRpb246OnByb2Nlc3NFdmVudHMoKTsKKwor
ICAgIFFPcGVuR0xDb250ZXh0KiBnbENvbnRleHQgPSBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENv
bnRleHQoKTsKKworICAgIGlmIChtX3N1cmZhY2UgJiYgZ2xDb250ZXh0KSB7CisgICAgICAgIEdM
aW50IG9sZEZCTzsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9GUkFNRUJVRkZFUl9CSU5ESU5H
LCAmb2xkRkJPKTsKKyAgICAgICAgcEdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBn
bENvbnRleHQtPmRlZmF1bHRGcmFtZWJ1ZmZlck9iamVjdCgpKTsKKyAgICAgICAgZ2xDb250ZXh0
LT5zd2FwQnVmZmVycyhtX3N1cmZhY2UuZ2V0KCkpOworICAgICAgICBwR2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG9sZEZCTyk7CisgICAgfQorfQorCiB2b2lkIEdyYXBoaWNzU3Vy
ZmFjZTo6ZGlkUmVsZWFzZUltYWdlKHZvaWQqIGRhdGEpCiB7CiAgICAgR3JhcGhpY3NTdXJmYWNl
KiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NTdXJmYWNlKj4oZGF0YSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMzIwNTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yMiAgUmVnaW5hIENodW5nICA8
aGVlamluLnIuY2h1bmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBFbmFibGUg
V2ViR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0
IFdlYkdMRW5hYmxlZCB0byB0cnVlIHdoZW4gV2ViR0wgaXMgZW5hYmxlZC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19pbml0
aWFsaXplKToKKwogMjAxMi0xMC0yMiAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290
dGVAZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4ICJBU1NFUlRJT04gRkFJTEVEOiAhZG9j
dW1lbnQtPmluUGFnZUNhY2hlKCkiIHdoZW4gbG9hZGluZyBhIHBhZ2UKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDEzMjA1
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODE3LDYgKzgxNyw5IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19pbml0
aWFsaXplKEV2YXNfT2IKICAgICBwcml2LT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJl
bmNlcygpLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKICAgICBwcml2
LT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0
aW5nTW9kZSh0cnVlKTsKICAgICBwcml2LT5wYWdlUHJveHktPnNldFVzZUZpeGVkTGF5b3V0KHRy
dWUpOworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBwcml2LT5wYWdlUHJveHktPnBhZ2VHcm91cCgp
LT5wcmVmZXJlbmNlcygpLT5zZXRXZWJHTEVuYWJsZWQodHJ1ZSk7CisjZW5kaWYKICNlbmRpZgog
ICAgIHByaXYtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIApJbmRleDogU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlv
bnNFZmwuY21ha2UJKHJldmlzaW9uIDEzMjA1OSkKKysrIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZs
LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDEwIEBAIElGIChXVEZfVVNFX1RJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiAgIFNFVChXVEZfVVNFXzNEX0dSQVBISUNTIDEpCiAgIEFERF9E
RUZJTklUSU9OUygtRFdURl9VU0VfM0RfR1JBUEhJQ1M9MSkKIAorICBTRVQgKFdURl9VU0VfR1JB
UEhJQ1NfU1VSRkFDRSAxKQorICBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0dSQVBISUNTX1NV
UkZBQ0U9MSkKKyAgQUREX0RFRklOSVRJT05TKC1ESEFWRV9HTFgpCisKICAgRklORF9QQUNLQUdF
KE9wZW5HTCBSRVFVSVJFRCkKIEVORElGKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170334</attachid>
            <date>2012-10-24 00:22:32 -0700</date>
            <delta_ts>2012-10-24 00:51:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97652-20121024162202.patch</filename>
            <type>text/plain</type>
            <size>25524</size>
            <attacher name="Regina Chung">heejin.r.chung</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjI4
OCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEw
LTIzICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgR3JhcGhpY3MgU3VyZmFjZSB0byBlbmFibGUgV2ViR0wgZm9y
IFdlYktpdDIgRUZMLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6
CisKIDIwMTItMTAtMjMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZXNvbHV0aW9uIG1lZGlhIHF1ZXJ5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NiBAQAorMjAxMi0xMC0yMyAgUmVnaW5h
IENodW5nICA8aGVlamluLnIuY2h1bmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBFbmFibGUgV2ViR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk3NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50ZWQgR3JhcGhpY3NTdXJmYWNlIGZvciBFRkwgdG8gZW5hYmxlIFdlYkdM
IGZvciBXZWJLaXQyLgorICAgICAgICBEZXBlbmRzIG9uIEdMWCBzaW5jZSBFdmFzIGRvZXNuJ3Qg
cHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzU3Vy
ZmFjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVHcmFwaGljc1N1cmZhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y29weVRvR3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAg
KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZmw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2VmbC9HcmFwaGljc1N1cmZhY2VFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6On5PZmZTY3JlZW5Sb290V2luZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OkdyYXBoaWNzU3VyZmFj
ZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3Jl
YXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpt
YWtlQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpk
b25lQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpz
d2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3Jt
QmVnaW5QYWludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZVJl
YWRPbmx5SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dy
YXBoaWNzU3VyZmFjZUdMWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChPZmZTY3JlZW5Sb290V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVl
blJvb3RXaW5kb3c6Ok9mZlNjcmVlblJvb3RXaW5kb3cpOgorICAgICAgICAoR3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjp+
R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6Y29weUZyb21UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZVByaXZhdGU6OmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6Z2x4UGl4bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVByaXZhdGU6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0
ZTo6Z2xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHTE1ldGhvZHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdp
bmRvdzo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNj
cmVlblJvb3RXaW5kb3c6On5PZmZTY3JlZW5Sb290V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjptYWtlQ3VycmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpkb25lQ3VycmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpzd2FwQnVmZmVycyk6CisKIDIw
MTItMTAtMjMgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNo
cmluayBpbW11dGFibGUgRWxlbWVudEF0dHJpYnV0ZURhdGEgYW5kIFN0eWxlUHJvcGVydHlTZXQg
Ynkgb25lIHBvaW50ZXIgZWFjaC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZp
c2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICIke1dFQkNPUkVfRElSfS9wYWdlL2VmbCIKICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2VmbCIKICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2VmbCIKKyAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzIgogICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbGludXgiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAi
CkBAIC0yOTQsNiArMjk1LDkgQEAgSUYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3JhcGhpY3NTdXJmYWNlRWZsLmNwcAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKICAgKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3
Miw3IEBAIHR5cGVkZWYgUU9wZW5HTENvbnRleHQqIFBsYXRmb3JtR3JhcGhpY3MKIHR5cGVkZWYg
UVN1cmZhY2UqIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlM0Q7CiAjZWxzZQogdHlwZWRlZiB2b2lk
KiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEOwordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUdyYXBo
aWNzU3VyZmFjZTNEOwogI2VuZGlmCiAKICNpZiAoUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRG
T1JNKEJMQUNLQkVSUlkpKSAmJiBVU0UoU0tJQSkKQEAgLTk0Nyw3ICs5NDgsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHJlc29s
dmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoY29uc3QgSW50UmVjdCYgPSBJbnRSZWN0KCkpOwot
I2lmIFBMQVRGT1JNKFFUKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpZiAoUExBVEZPUk0o
UVQpIHx8IFBMQVRGT1JNKEVGTCkpICYmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZvaWQg
Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRTaXplJik7CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFp
bnRUb0NhbnZhcyhjbwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRTaXplJiBzaXplKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wcml2YXRlLT5jcmVhdGVHcmFwaGljc1N1cmZh
Y2VzKHNpemUpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhv
c3RXaW5kb3cuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2
YXNfR0wuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KQEAgLTg3LDYgKzg4LDEzIEBA
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXgKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKKyAgICBJbnRTaXplIHN1cmZhY2VTaXplKG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1f
Y29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsKKyAgICBtX3N1cmZhY2VGbGFncyA9IEdyYXBoaWNz
U3VyZmFjZTo6U3VwcG9ydHNUZXh0dXJlVGFyZ2V0IHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0
c1NoYXJpbmc7CisgICAgaWYgKCFzdXJmYWNlU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZ3Jh
cGhpY3NTdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc3VyZmFjZVNpemUsIG1fc3Vy
ZmFjZUZsYWdzKTsKKyNlbmRpZgogfQogCiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6On5HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUoKQpAQCAtMTAxLDggKzEwOSwxMSBAQCBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRlCiAgICAgICAgIGV2YXNfZ2xfY29udGV4dF9kZXN0
cm95KG1fZXZhc0dMLCBtX2V2YXNHTENvbnRleHQpOwogCiAgICAgZXZhc19nbF9mcmVlKG1fZXZh
c0dMKTsKLX0KIAorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIG1fZ3JhcGhpY3NTdXJm
YWNlLmNsZWFyKCk7CisjZW5kaWYKK30KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNyZWF0ZVN1cmZhY2UoUGFnZUNsaWVudEVmbCogcGFnZUNsaWVudCwgYm9vbCByZW5kZXJEaXJl
Y3RseVRvSG9zdFdpbmRvdykKIHsKQEAgLTE2OSw2ICsxODAsMzIgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnBhaW50VG9UZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAjZW5k
aWYKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLmNsZWFyKCk7
CisgICAgZWxzZQorICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6
Y3JlYXRlKHNpemUsIG1fc3VyZmFjZUZsYWdzKTsKK30KKwordWludDMyX3QgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjb3B5VG9HcmFwaGljc1N1cmZhY2UoKQoreworICAgIGlmICghbV9ncmFw
aGljc1N1cmZhY2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9ncmFwaGljc1N1cmZhY2UtPmNvcHlGcm9tVGV4dHVyZShtX2NvbnRleHQtPm1f
dGV4dHVyZSwgSW50UmVjdCgwLCAwLCBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRl
eHQtPm1fY3VycmVudEhlaWdodCkpOworICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+c3dh
cEJ1ZmZlcnMoKTsKK30KKworR3JhcGhpY3NTdXJmYWNlVG9rZW4gR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3Jh
cGhpY3NTdXJmYWNlLT5leHBvcnRUb2tlbigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRSgzRF9HUkFQSElDUykgfHwgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAkocmV2aXNp
b24gMTMyMjg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiwxMCBAQAog
I2luY2x1ZGUgPHRleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oPgogI2VuZGlmCiAK
KyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIK
KyNlbmRpZgorCiB0eXBlZGVmIHN0cnVjdCBfRXZhc19HTCAgICAgICAgICAgICAgIEV2YXNfR0w7
CiB0eXBlZGVmIHN0cnVjdCBfRXZhc19HTF9TdXJmYWNlICAgICAgIEV2YXNfR0xfU3VyZmFjZTsK
IHR5cGVkZWYgc3RydWN0IF9FdmFzX0dMX0NvbnRleHQgICAgICAgRXZhc19HTF9Db250ZXh0OwpA
QCAtNTIsNiArNTYsMTIgQEAgcHVibGljOgogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOwogI2VuZGlmCisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCisgICAgdmlydHVhbCB1aW50MzJfdCBjb3B5VG9HcmFwaGljc1N1cmZhY2UoKTsKKyAg
ICB2aXJ0dWFsIEdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29u
c3Q7CisgICAgdm9pZCBjcmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0IEludFNpemUmKTsKKyNl
bmRpZgorCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBib29sIGNyZWF0ZVN1
cmZhY2UoUGFnZUNsaWVudEVmbCosIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCk7
CiAgICAgdm9pZCBzZXRDdXJyZW50R0xDb250ZXh0KHZvaWQqLCB2b2lkKik7CkBAIC01OSw2ICs2
OSwxMCBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRy
aWJ1dGVzOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAgICAgSG9zdFdpbmRv
dyogbV9ob3N0V2luZG93OworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIEdyYXBoaWNz
U3VyZmFjZTo6RmxhZ3MgbV9zdXJmYWNlRmxhZ3M7CisgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFj
ZT4gbV9ncmFwaGljc1N1cmZhY2U7CisjZW5kaWYKIAogICAgIExpc3RIYXNoU2V0PEdDM0RlbnVt
PiBtX3N5bnRoZXRpY0Vycm9yczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6cmVzaGFwZShpbnQgd2lkdAogICAgIGlmICh3aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCAm
JiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFU
Rk9STShRVCkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaWYgKFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShFRkwpKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICA6OmdsRmx1c2goKTsg
Ly8gTWFrZSBzdXJlIGFsbCBHTCBjYWxscyBoYXZlIGJlZW4gY29tbWl0dGVkIGJlZm9yZSByZXNp
emluZy4KICAgICBjcmVhdGVHcmFwaGljc1N1cmZhY2VzKEludFNpemUod2lkdGgsIGhlaWdodCkp
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZmwvR3JhcGhpY3NTdXJmYWNlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3JhcGhpY3NTdXJmYWNlRWZsLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2VmbC9HcmFwaGljc1N1cmZhY2VFZmwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgorCisjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpICYmIFBMQVRGT1JNKEVGTCkKKworI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK1Bhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQmVnaW5QYWludChjb25zdCBJbnRT
aXplJiBzaXplLCBjaGFyKiBiaXRzLCBpbnQgc3RyaWRlKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bhc3NSZWZQdHI8SW1hZ2U+IEdyYXBoaWNz
U3VyZmFjZTo6Y3JlYXRlUmVhZE9ubHlJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworI2VuZGlmCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZmwvR3JhcGhpY3NTdXJmYWNlRWZsLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0
YWJsZQogICArICoKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAJ
KHJldmlzaW9uIDEzMjI4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEy
ICsyMywxOCBAQAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlckdMLmgiCisKKyNpZiBQTEFURk9STShRVCkKIC8vIFF0IGhlYWRlcnMgbXVzdCBiZSBp
bmNsdWRlZCBiZWZvcmUgZ2x4IGhlYWRlcnMuCiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4K
ICNpbmNsdWRlIDxRT3BlbkdMQ29udGV4dD4KICNpbmNsdWRlIDxRVmVjdG9yPgogI2luY2x1ZGUg
PFFXaW5kb3c+CiAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXdpbmRvdy5oPgorI2VsaWYgUExBVEZP
Uk0oRUZMKQorI2luY2x1ZGUgPEdML2dsLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPEdML2dsZXh0
Lmg+CiAjaW5jbHVkZSA8R0wvZ2x4Lmg+CiAjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBv
c2l0ZS5oPgpAQCAtNTMsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgICsrcmVmQ291bnQ7CiAg
ICAgfQogCisjaWYgUExBVEZPUk0oUVQpIAogICAgIFFXaW5kb3cqIGdldChEaXNwbGF5KiBkcHkp
CiAgICAgewogICAgICAgICBpZiAoIXdpbmRvdykgewpAQCAtNjcsMjIgKzc0LDUzIEBAIHB1Ymxp
YzoKIAogICAgICAgICByZXR1cm4gd2luZG93OwogICAgIH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkg
CisKKyAgICBXaW5kb3cqIGdldChEaXNwbGF5KiBkcHkpCisgICAgeworICAgICAgICBpZiAoIXdp
bmRvdykgeworICAgICAgICAgICAgd2luZG93ID0gWENyZWF0ZVNpbXBsZVdpbmRvdyhkcHksIFhE
ZWZhdWx0Um9vdFdpbmRvdyhkcHkpLCAtMSwgLTEsIDEsIDEsIDAsIEJsYWNrUGl4ZWwoZHB5LCAw
KSwgV2hpdGVQaXhlbChkcHksIDApKTsKKyAgICAgICAgICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXM7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0g
dHJ1ZTsKKyAgICAgICAgICAgIFhDaGFuZ2VXaW5kb3dBdHRyaWJ1dGVzKGRweSwgd2luZG93LCBY
MTFPdmVycmlkZVJlZGlyZWN0LCAmYXR0cmlidXRlcyk7CisgICAgICAgICAgICBkaXNwbGF5ID0g
ZHB5OworICAgICAgICAgICAgLy8gTWFwIHdpbmRvdyB0byB0aGUgc2NyZWVuCisgICAgICAgICAg
ICBYTWFwV2luZG93KGRweSwgd2luZG93KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAm
d2luZG93OworICAgIH0KKyNlbmRpZgogCiAgICAgfk9mZlNjcmVlblJvb3RXaW5kb3coKQogICAg
IHsKICAgICAgICAgaWYgKCEtLXJlZkNvdW50KSB7CisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAg
ICAgICBkZWxldGUgd2luZG93OwogICAgICAgICAgICAgd2luZG93ID0gMDsKKyNlbGlmIFBMQVRG
T1JNKEVGTCkKKyAgICAgICAgICAgIFhVbm1hcFdpbmRvdyhkaXNwbGF5LCB3aW5kb3cpOworICAg
ICAgICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgd2luZG93KTsKKyNlbmRpZgogICAgICAg
ICB9CiAgICAgfQogCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgcmVmQ291bnQ7CisjaWYgUExB
VEZPUk0oUVQpCiAgICAgc3RhdGljIFFXaW5kb3cqIHdpbmRvdzsKKyNlbGlmIFBMQVRGT1JNKEVG
TCkKKyAgICBzdGF0aWMgV2luZG93IHdpbmRvdzsgCisgICAgRGlzcGxheSogZGlzcGxheTsKKyNl
bmRpZgogfTsKIAogaW50IE9mZlNjcmVlblJvb3RXaW5kb3c6OnJlZkNvdW50ID0gMDsKKyNpZiBQ
TEFURk9STShRVCkKIFFXaW5kb3cqIE9mZlNjcmVlblJvb3RXaW5kb3c6OndpbmRvdyA9IDA7Cisj
ZWxpZiBQTEFURk9STShFRkwpCitXaW5kb3cgT2ZmU2NyZWVuUm9vdFdpbmRvdzo6d2luZG93ID0g
MDsKKyNlbmRpZgogCiBzdGF0aWMgY29uc3QgaW50IGdseFNwZWNbXSA9IHsKICAgICAvLyBUaGUg
c3BlY2lmaWNhdGlvbiBpcyBhIHNldCBrZXkgdmFsdWUgcGFpcnMgc3RvcmVkIGluIGEgc2ltcGxl
IGFycmF5LgpAQCAtMTA2LDEyICsxNDQsMTcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZh
dGUgewogICAgICAgICA6IG1fZGlzcGxheSgwKQogICAgICAgICAsIG1feFBpeG1hcCgwKQogICAg
ICAgICAsIG1fZ2x4UGl4bWFwKDApCisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICwgbV9nbENv
bnRleHQoYWRvcHRQdHIobmV3IFFPcGVuR0xDb250ZXh0KSkKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyAgICAgICAgLCBtX2dsQ29udGV4dCgwKQorI2VuZGlmCiAgICAgICAgICwgbV9kZXRhY2hlZENv
bnRleHQoMCkKICAgICAgICAgLCBtX2RldGFjaGVkU3VyZmFjZSgwKQogICAgICAgICAsIG1fdGV4
dHVyZUlzWUludmVydGVkKGZhbHNlKQogICAgICAgICAsIG1faGFzQWxwaGEoZmFsc2UpCiAgICAg
eworI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBRU3VyZmFjZSogY3VycmVudFN1cmZhY2UgPSAw
OwogICAgICAgICBRT3BlbkdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBRT3BlbkdMQ29udGV4
dDo6Y3VycmVudENvbnRleHQoKTsKICAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KQpAQCAtMTI1
LDYgKzE2OCwyNSBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIC8v
IFRoZXJlZm9yZSB3ZSBoYXZlIHRvIG1ha2UgdGhlIHByZXZpb3VzIGNvbnRleHQgY3VycmVudCBh
Z2Fpbi4KICAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KQogICAgICAgICAgICAgY3VycmVudENv
bnRleHQtPm1ha2VDdXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyAgICAgICAgbV9kaXNwbGF5ID0gWE9wZW5EaXNwbGF5KDApOworCisgICAgICAgIGludCBhdHRy
aWJ1dGVzW10gPSB7CisgICAgICAgICAgICBHTFhfTEVWRUwsIDAsCisgICAgICAgICAgICBHTFhf
RFJBV0FCTEVfVFlQRSwgR0xYX1dJTkRPV19CSVQsCisgICAgICAgICAgICBHTFhfUkVOREVSX1RZ
UEUsICAgR0xYX1JHQkFfQklULAorICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsICAg
ICAvKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgYml0cyBwZXIgY29tcG9uZW50ICAgICovCisgICAg
ICAgICAgICBHTFhfR1JFRU5fU0laRSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9CTFVFX1NJWkUs
ICAgICAxLAorICAgICAgICAgICAgR0xYX0RPVUJMRUJVRkZFUiwgIFRydWUsICAvKiBSZXF1ZXN0
IGEgZG91YmxlLWJ1ZmZlcmVkIGNvbG9yIGJ1ZmZlciAqLworICAgICAgICAgICAgTm9uZQorICAg
ICAgICB9OworCisgICAgICAgIGludCBudW1SZXR1cm5lZDsKKyAgICAgICAgbV9mYkNvbmZpZ3Mg
PSBnbFhDaG9vc2VGQkNvbmZpZyhtX2Rpc3BsYXksIERlZmF1bHRTY3JlZW4obV9kaXNwbGF5KSwg
YXR0cmlidXRlcywgJm51bVJldHVybmVkKTsKKyAgICAgICAgLy8gQ3JlYXRlIGEgR0xYIGNvbnRl
eHQgZm9yIE9wZW5HTCByZW5kZXJpbmcKKyAgICAgICAgbV9nbENvbnRleHQgPSBnbFhDcmVhdGVO
ZXdDb250ZXh0KG1fZGlzcGxheSwgbV9mYkNvbmZpZ3NbMF0sIEdMWF9SR0JBX1RZUEUsIDAsIHRy
dWUpOworI2VuZGlmCiAgICAgfQogCiAgICAgfkdyYXBoaWNzU3VyZmFjZVByaXZhdGUoKQpAQCAt
MTQ0LDYgKzIwNiw3IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKIAogICAgIHVp
bnQzMl90IGNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICB7CisjaWYgUExB
VEZPUk0oUVQpCiAgICAgICAgIG1fc3VyZmFjZSA9IGFkb3B0UHRyKG5ldyBRV2luZG93KG1fb2Zm
U2NyZWVuV2luZG93LmdldChtX2Rpc3BsYXkpKSk7CiAgICAgICAgIG1fc3VyZmFjZS0+c2V0U3Vy
ZmFjZVR5cGUoUVN1cmZhY2U6Ok9wZW5HTFN1cmZhY2UpOwogICAgICAgICBtX3N1cmZhY2UtPnNl
dEdlb21ldHJ5KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CkBAIC0xNTgsNiAr
MjIxLDMwIEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgbV9zdXJm
YWNlLT5zaG93KCk7CiAKICAgICAgICAgcmV0dXJuIG1fc3VyZmFjZS0+aGFuZGxlKCktPndpbklk
KCk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgICAgIFhWaXN1YWxJbmZvKiB2aXN1YWxJbmZv
ID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fZGlzcGxheSwgbV9mYkNvbmZpZ3NbMF0pOwor
ICAgICAgICBpZiAoIXZpc3VhbEluZm8pCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAg
ICBDb2xvcm1hcCBjbWFwID0gWENyZWF0ZUNvbG9ybWFwKG1fZGlzcGxheSwgKm1fb2ZmU2NyZWVu
V2luZG93LmdldChtX2Rpc3BsYXkpLCB2aXN1YWxJbmZvLT52aXN1YWwsIEFsbG9jTm9uZSk7Cisg
ICAgICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIGE7CisgICAgICAgIGEuYmFja2dyb3VuZF9waXhl
bCA9IFdoaXRlUGl4ZWwobV9kaXNwbGF5LCAwKTsKKyAgICAgICAgYS5ib3JkZXJfcGl4ZWwgPSBC
bGFja1BpeGVsKG1fZGlzcGxheSwgMCk7CisgICAgICAgIGEuY29sb3JtYXAgPSBjbWFwOworICAg
ICAgICBtX3N1cmZhY2UgPSBYQ3JlYXRlV2luZG93KG1fZGlzcGxheSwgKm1fb2ZmU2NyZWVuV2lu
ZG93LmdldChtX2Rpc3BsYXkpLCAwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgdmlzdWFsSW5mby0+ZGVwdGgsIElu
cHV0T3V0cHV0LCB2aXN1YWxJbmZvLT52aXN1YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1dCYWNrUGl4ZWwgfCBDV0JvcmRlclBpeGVsIHwgQ1dDb2xvcm1hcCwgJmEpOwor
ICAgICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcChtX2Rpc3BsYXksIG1fc3VyZmFjZSwg
MCk7CisgICAgICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rpc3BsYXksIG1fc3VyZmFj
ZSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUg
WFJlbmRlciBFeHRlbnNpb24gaXMgYXZhaWxhYmxlLgorICAgICAgICBpbnQgZXZlbnRCYXNlcCwg
ZXJyb3JCYXNlcDsKKyAgICAgICAgaWYgKCFYUmVuZGVyUXVlcnlFeHRlbnNpb24obV9kaXNwbGF5
LCAmZXZlbnRCYXNlcCwgJmVycm9yQmFzZXApKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICAgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgIHJldHVybiBt
X3N1cmZhY2U7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGNyZWF0ZVBpeG1hcCh1aW50MzJf
dCB3aW5JZCkKQEAgLTE4NCwxOCArMjcxLDMwIEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2
YXRlIHsKIAogICAgIHZvaWQgbWFrZUN1cnJlbnQoKQogICAgIHsKKyNpZiBQTEFURk9STShRVCkK
ICAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRl
eHQoKTsKICAgICAgICAgaWYgKG1fZGV0YWNoZWRDb250ZXh0KQogICAgICAgICAgICAgbV9kZXRh
Y2hlZFN1cmZhY2UgPSBtX2RldGFjaGVkQ29udGV4dC0+c3VyZmFjZSgpOwogCiAgICAgICAgIGlm
IChtX3N1cmZhY2UgJiYgbV9nbENvbnRleHQpCiAgICAgICAgICAgICBtX2dsQ29udGV4dC0+bWFr
ZUN1cnJlbnQobV9zdXJmYWNlLmdldCgpKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAg
bV9kZXRhY2hlZENvbnRleHQgPSBnbFhHZXRDdXJyZW50Q29udGV4dCgpOworICAgICAgICBtX2Rl
dGFjaGVkU3VyZmFjZSA9IGdsWEdldEN1cnJlbnREcmF3YWJsZSgpOworICAgICAgICBpZiAobV9z
dXJmYWNlICYmIG1fZ2xDb250ZXh0KQorICAgICAgICAgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNw
bGF5LCBtX3N1cmZhY2UsIG1fZ2xDb250ZXh0KTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQg
ZG9uZUN1cnJlbnQoKQogICAgIHsKICAgICAgICAgaWYgKG1fZGV0YWNoZWRDb250ZXh0KQorI2lm
IFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgbV9kZXRhY2hlZENvbnRleHQtPm1ha2VDdXJyZW50
KG1fZGV0YWNoZWRTdXJmYWNlKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgICAgIGds
WE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9kZXRhY2hlZFN1cmZhY2UsIG1fZGV0YWNoZWRDb250
ZXh0KTsgICAgCisjZW5kaWYKKyAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSAwOwogICAgIH0K
IAogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKQpAQCAtMjA2LDYgKzMwNSw3IEBAIHN0cnVjdCBHcmFw
aGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgaWYgKG1feFBpeG1hcCkKICAgICAgICAgICAg
IHJldHVybjsKIAorI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBpZiAoIW1fc3VyZmFjZS0+aXNW
aXNpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIyMiw2ICszMjIsMTcgQEAgc3Ry
dWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICAgICAgZ2xDb250ZXh0LT5zd2Fw
QnVmZmVycyhtX3N1cmZhY2UuZ2V0KCkpOwogICAgICAgICAgICAgcEdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBvbGRGQk8pOwogICAgICAgICB9CisjZWxpZiBQTEFURk9STShFRkwp
CisgICAgICAgIEdMWENvbnRleHQgZ2xDb250ZXh0ID0gZ2xYR2V0Q3VycmVudENvbnRleHQoKTsK
KworICAgICAgICBpZiAobV9zdXJmYWNlICYmIGdsQ29udGV4dCkgeworICAgICAgICAgICAgR0xp
bnQgb2xkRkJPOworICAgICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9GUkFNRUJVRkZFUl9CSU5E
SU5HLCAmb2xkRkJPKTsKKyAgICAgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgMCk7CisgICAgICAgICAgICBnbFhTd2FwQnVmZmVycyhtX2Rpc3BsYXksIG1fc3VyZmFj
ZSk7CisgICAgICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG9sZEZC
Tyk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgY29weUZyb21UZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCkBAIC0yNDIsNyAr
MzUzLDExIEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKICAgICAgICAgcEdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RF
WFRVUkVfMkQsIHRleHR1cmUsIDApOwogCisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIHBHbEJp
bmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBnbENvbnRleHQoKS0+ZGVmYXVsdEZy
YW1lYnVmZmVyT2JqZWN0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgICAgICBwR2xCaW5k
RnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgMCk7CisjZW5kaWYKICAgICAgICAgcEds
QmxpdEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQsIHgsIHksIHdpZHRoLCBoZWlnaHQs
IEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CiAKICAgICAgICAgcEdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIDAsIDApOwpAQCAtMjU0LDE0ICszNjksMTUgQEAgc3RydWN0IEdyYXBoaWNz
U3VyZmFjZVByaXZhdGUgewogICAgICAgICBkb25lQ3VycmVudCgpOwogICAgIH0KIAotCiAgICAg
RGlzcGxheSogZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQogCiAgICAgR0xY
UGl4bWFwIGdseFBpeG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2x4UGl4bWFwOyB9CiAKICAgICBJ
bnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAorI2lmIFBMQVRGT1JNKFFU
KQogICAgIFFPcGVuR0xDb250ZXh0KiBnbENvbnRleHQoKSB7IHJldHVybiBtX2dsQ29udGV4dC5n
ZXQoKTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgT2ZmU2NyZWVuUm9vdFdpbmRvdyBtX29m
ZlNjcmVlbldpbmRvdzsKQEAgLTI2OSwxMCArMzg1LDE4IEBAIHByaXZhdGU6CiAgICAgRGlzcGxh
eSogbV9kaXNwbGF5OwogICAgIFBpeG1hcCBtX3hQaXhtYXA7CiAgICAgR0xYUGl4bWFwIG1fZ2x4
UGl4bWFwOworI2lmIFBMQVRGT1JNKFFUKQogICAgIE93blB0cjxRV2luZG93PiBtX3N1cmZhY2U7
CiAgICAgT3duUHRyPFFPcGVuR0xDb250ZXh0PiBtX2dsQ29udGV4dDsKICAgICBRT3BlbkdMQ29u
dGV4dCogbV9kZXRhY2hlZENvbnRleHQ7CiAgICAgUVN1cmZhY2UqIG1fZGV0YWNoZWRTdXJmYWNl
OworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIFdpbmRvdyBtX3N1cmZhY2U7CisgICAgR0xYQ29u
dGV4dCBtX2dsQ29udGV4dDsKKyAgICBHTFhDb250ZXh0IG1fZGV0YWNoZWRDb250ZXh0OworICAg
IEdMWERyYXdhYmxlIG1fZGV0YWNoZWRTdXJmYWNlOworICAgIEdMWEZCQ29uZmlnKiBtX2ZiQ29u
ZmlnczsKKyNlbmRpZgogICAgIGJvb2wgbV90ZXh0dXJlSXNZSW52ZXJ0ZWQ7CiAgICAgYm9vbCBt
X2hhc0FscGhhOwogfTsKQEAgLTI4Miw3ICs0MDYsNyBAQCBzdGF0aWMgYm9vbCByZXNvbHZlR0xN
ZXRob2RzKEdyYXBoaWNzU3VyCiAgICAgc3RhdGljIGJvb2wgcmVzb2x2ZWQgPSBmYWxzZTsKICAg
ICBpZiAocmVzb2x2ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwotCisjaWYgUExBVEZPUk0oUVQp
CiAgICAgUU9wZW5HTENvbnRleHQqIGdsQ29udGV4dCA9IHAtPmdsQ29udGV4dCgpOwogICAgIHBH
bFhCaW5kVGV4SW1hZ2VFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMWEJJTkRURVhJTUFHRUVY
VFBST0M+KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsWEJpbmRUZXhJbWFnZUVYVCIpKTsK
ICAgICBwR2xYUmVsZWFzZVRleEltYWdlRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFhSRUxF
QVNFVEVYSU1BR0VFWFRQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRyZXNzKCJnbFhSZWxlYXNl
VGV4SW1hZ2VFWFQiKSk7CkBAIC0yOTIsNyArNDE2LDE3IEBAIHN0YXRpYyBib29sIHJlc29sdmVH
TE1ldGhvZHMoR3JhcGhpY3NTdXIKICAgICBwR2xHZW5GcmFtZWJ1ZmZlcnMgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMR0VORlJBTUVCVUZGRVJTUFJPQz4oZ2xDb250ZXh0LT5nZXRQcm9jQWRkcmVz
cygiZ2xHZW5GcmFtZWJ1ZmZlcnMiKSk7CiAgICAgcEdsRGVsZXRlRnJhbWVidWZmZXJzID0gcmVp
bnRlcnByZXRfY2FzdDxQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0M+KGdsQ29udGV4dC0+Z2V0
UHJvY0FkZHJlc3MoImdsRGVsZXRlRnJhbWVidWZmZXJzIikpOwogICAgIHBHbEZyYW1lYnVmZmVy
VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJEUFJP
Qz4oZ2xDb250ZXh0LT5nZXRQcm9jQWRkcmVzcygiZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCIpKTsK
KyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBwR2xYQmluZFRleEltYWdlRVhUID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTFhCSU5EVEVYSU1BR0VFWFRQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xYQmluZFRleEltYWdlRVhUIikpKTsKKyAg
ICBwR2xYUmVsZWFzZVRleEltYWdlRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFhSRUxFQVNF
VEVYSU1BR0VFWFRQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNvbnN0
IEdMdWJ5dGUqPigiZ2xYUmVsZWFzZVRleEltYWdlRVhUIikpKTsKKyAgICBwR2xCaW5kRnJhbWVi
dWZmZXIgPSByZWludGVycHJldF9jYXN0PFBGTkdMQklOREZSQU1FQlVGRkVSUFJPQz4oZ2xYR2V0
UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImdsQmluZEZyYW1l
YnVmZmVyIikpKTsKKyAgICBwR2xCbGl0RnJhbWVidWZmZXIgPSByZWludGVycHJldF9jYXN0PFBG
TkdMQkxJVEZSQU1FQlVGRkVSUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHTHVieXRlKj4oImdsQmxpdEZyYW1lYnVmZmVyIikpKTsKKworICAgIHBHbEdlbkZy
YW1lYnVmZmVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRU5GUkFNRUJVRkZFUlNQUk9DPihn
bFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xHZW5G
cmFtZWJ1ZmZlcnMiKSkpOworICAgIHBHbERlbGV0ZUZyYW1lYnVmZmVycyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xERUxFVEVGUkFNRUJVRkZFUlNQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xEZWxldGVGcmFtZWJ1ZmZlcnMiKSkpOwor
ICAgIHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEZSQU1F
QlVGRkVSVEVYVFVSRTJEUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHTHVieXRlKj4oImdsRnJhbWVidWZmZXJUZXh0dXJlMkQiKSkpOwogCisjZW5kaWYKICAg
ICByZXNvbHZlZCA9IHBHbEJsaXRGcmFtZWJ1ZmZlciAmJiBwR2xCaW5kRnJhbWVidWZmZXIgJiYg
cEdsWEJpbmRUZXhJbWFnZUVYVCAmJiBwR2xYUmVsZWFzZVRleEltYWdlRVhUOwogCiAgICAgcmV0
dXJuIHJlc29sdmVkOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTMyMjg4KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MTAtMjMgIFJlZ2luYSBDaHVuZyAgPGhlZWppbi5yLmNodW5nQHNhbXN1bmcuY29tPgorCisgICAg
ICAgIFtFRkxdW1dLMl0gRW5hYmxlIFdlYkdMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzY1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNldCBXZWJHTEVuYWJsZWQgdG8gdHJ1ZSB3aGVuIFdlYkdMIGlz
IGVuYWJsZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6Cisg
ICAgICAgIChfZXdrX3ZpZXdfaW5pdGlhbGl6ZSk6CisKIDIwMTItMTAtMjMgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1NvdXBdIEltcGxl
bWVudCB0aGUgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiBkaWFsb2cgdmlhIFdlYkNvcmVTdXBwb3J0
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxMCw2ICs5MTAsOSBAQCBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfaW5pdGlhbGl6ZShFdmFzX09iCiAgICAgcHJpdi0+cGFnZVByb3h5LT5wYWdl
R3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
dHJ1ZSk7CiAgICAgcHJpdi0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+
c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CiAgICAgcHJpdi0+cGFnZVByb3h5LT5zZXRV
c2VGaXhlZExheW91dCh0cnVlKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgcHJpdi0+cGFnZVBy
b3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0V2ViR0xFbmFibGVkKHRydWUpOwor
I2VuZGlmCiAjZW5kaWYKICAgICBwcml2LT5wYWdlUHJveHktPmluaXRpYWxpemVXZWJQYWdlKCk7
CiAKSW5kZXg6IFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2Uv
Y21ha2UvT3B0aW9uc0VmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTgzLDYgKzE4MywxMCBA
QCBJRiAoV1RGX1VTRV9USUxFRF9CQUNLSU5HX1NUT1JFKQogICBTRVQoV1RGX1VTRV8zRF9HUkFQ
SElDUyAxKQogICBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFXzNEX0dSQVBISUNTPTEpCiAKKyAg
U0VUIChXVEZfVVNFX0dSQVBISUNTX1NVUkZBQ0UgMSkKKyAgQUREX0RFRklOSVRJT05TKC1EV1RG
X1VTRV9HUkFQSElDU19TVVJGQUNFPTEpCisgIEFERF9ERUZJTklUSU9OUygtREhBVkVfR0xYKQor
CiAgIEZJTkRfUEFDS0FHRShPcGVuR0wgUkVRVUlSRUQpCiBFTkRJRigpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170337</attachid>
            <date>2012-10-24 00:51:29 -0700</date>
            <delta_ts>2012-10-25 19:04:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97652-20121024165059.patch</filename>
            <type>text/plain</type>
            <size>25376</size>
            <attacher name="Regina Chung">heejin.r.chung</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjI4
OCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEw
LTIzICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgR3JhcGhpY3MgU3VyZmFjZSB0byBlbmFibGUgV2ViR0wgZm9y
IFdlYktpdDIgRUZMLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2U6
CisKIDIwMTItMTAtMjMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciByZXNvbHV0aW9uIG1lZGlhIHF1ZXJ5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NiBAQAorMjAxMi0xMC0yMyAgUmVnaW5h
IENodW5nICA8aGVlamluLnIuY2h1bmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0sy
XSBFbmFibGUgV2ViR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk3NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50ZWQgR3JhcGhpY3NTdXJmYWNlIGZvciBFRkwgdG8gZW5hYmxlIFdlYkdM
IGZvciBXZWJLaXQyLgorICAgICAgICBEZXBlbmRzIG9uIEdMWCBzaW5jZSBFdmFzIGRvZXNuJ3Qg
cHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzU3Vy
ZmFjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVh
dGVHcmFwaGljc1N1cmZhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6Y29weVRvR3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAg
KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZmw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2VmbC9HcmFwaGljc1N1cmZhY2VFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6Z2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6On5PZmZTY3JlZW5Sb290V2luZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OkdyYXBoaWNzU3VyZmFj
ZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3Jl
YXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpt
YWtlQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpk
b25lQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpz
d2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3Jt
QmVnaW5QYWludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZVJl
YWRPbmx5SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dy
YXBoaWNzU3VyZmFjZUdMWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChPZmZTY3JlZW5Sb290V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVl
blJvb3RXaW5kb3c6Ok9mZlNjcmVlblJvb3RXaW5kb3cpOgorICAgICAgICAoR3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjp+
R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6Y29weUZyb21UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZVByaXZhdGU6OmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6Z2x4UGl4bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVByaXZhdGU6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0
ZTo6Z2xDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHTE1ldGhvZHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdp
bmRvdzo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNj
cmVlblJvb3RXaW5kb3c6On5PZmZTY3JlZW5Sb290V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjptYWtlQ3VycmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpkb25lQ3VycmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpzd2FwQnVmZmVycyk6CisKIDIw
MTItMTAtMjMgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNo
cmluayBpbW11dGFibGUgRWxlbWVudEF0dHJpYnV0ZURhdGEgYW5kIFN0eWxlUHJvcGVydHlTZXQg
Ynkgb25lIHBvaW50ZXIgZWFjaC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZp
c2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICIke1dFQkNPUkVfRElSfS9wYWdlL2VmbCIKICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2VmbCIKICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2VmbCIKKyAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzIgogICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vbGludXgiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAi
CkBAIC0yOTQsNiArMjk1LDkgQEAgSUYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3JhcGhpY3NTdXJmYWNlRWZsLmNwcAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKICAgKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3
Miw3IEBAIHR5cGVkZWYgUU9wZW5HTENvbnRleHQqIFBsYXRmb3JtR3JhcGhpY3MKIHR5cGVkZWYg
UVN1cmZhY2UqIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNlM0Q7CiAjZWxzZQogdHlwZWRlZiB2b2lk
KiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEOwordHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUdyYXBo
aWNzU3VyZmFjZTNEOwogI2VuZGlmCiAKICNpZiAoUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRG
T1JNKEJMQUNLQkVSUlkpKSAmJiBVU0UoU0tJQSkKQEAgLTk0Nyw3ICs5NDgsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmKTsKICAgICB2b2lkIHJlc29s
dmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoY29uc3QgSW50UmVjdCYgPSBJbnRSZWN0KCkpOwot
I2lmIFBMQVRGT1JNKFFUKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpZiAoUExBVEZPUk0o
UVQpIHx8IFBMQVRGT1JNKEVGTCkpICYmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHZvaWQg
Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRTaXplJik7CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwv
R3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFp
bnRUb0NhbnZhcyhjbwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRTaXplJiBzaXplKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wcml2YXRlLT5jcmVhdGVHcmFwaGljc1N1cmZh
Y2VzKHNpemUpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhv
c3RXaW5kb3cuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2
YXNfR0wuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KQEAgLTg3LDYgKzg4LDEzIEBA
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXgKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKKyAgICBJbnRTaXplIHN1cmZhY2VTaXplKG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1f
Y29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsKKyAgICBtX3N1cmZhY2VGbGFncyA9IEdyYXBoaWNz
U3VyZmFjZTo6U3VwcG9ydHNUZXh0dXJlVGFyZ2V0IHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0
c1NoYXJpbmc7CisgICAgaWYgKCFzdXJmYWNlU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZ3Jh
cGhpY3NTdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc3VyZmFjZVNpemUsIG1fc3Vy
ZmFjZUZsYWdzKTsKKyNlbmRpZgogfQogCiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6On5HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUoKQpAQCAtMTAxLDggKzEwOSwxMSBAQCBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRlCiAgICAgICAgIGV2YXNfZ2xfY29udGV4dF9kZXN0
cm95KG1fZXZhc0dMLCBtX2V2YXNHTENvbnRleHQpOwogCiAgICAgZXZhc19nbF9mcmVlKG1fZXZh
c0dMKTsKLX0KIAorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIG1fZ3JhcGhpY3NTdXJm
YWNlLmNsZWFyKCk7CisjZW5kaWYKK30KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmNyZWF0ZVN1cmZhY2UoUGFnZUNsaWVudEVmbCogcGFnZUNsaWVudCwgYm9vbCByZW5kZXJEaXJl
Y3RseVRvSG9zdFdpbmRvdykKIHsKQEAgLTE2OSw2ICsxODAsMzIgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OnBhaW50VG9UZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAjZW5k
aWYKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLmNsZWFyKCk7
CisgICAgZWxzZQorICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6
Y3JlYXRlKHNpemUsIG1fc3VyZmFjZUZsYWdzKTsKK30KKwordWludDMyX3QgR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjb3B5VG9HcmFwaGljc1N1cmZhY2UoKQoreworICAgIGlmICghbV9ncmFw
aGljc1N1cmZhY2UpCisgICAgICAgIHJldHVybiAwOworCisgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CisgICAgbV9ncmFwaGljc1N1cmZhY2UtPmNvcHlGcm9tVGV4dHVyZShtX2NvbnRleHQtPm1f
dGV4dHVyZSwgSW50UmVjdCgwLCAwLCBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRl
eHQtPm1fY3VycmVudEhlaWdodCkpOworICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+c3dh
cEJ1ZmZlcnMoKTsKK30KKworR3JhcGhpY3NTdXJmYWNlVG9rZW4gR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3Jh
cGhpY3NTdXJmYWNlLT5leHBvcnRUb2tlbigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRSgzRF9HUkFQSElDUykgfHwgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAkocmV2aXNp
b24gMTMyMjg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiwxMCBAQAog
I2luY2x1ZGUgPHRleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oPgogI2VuZGlmCiAK
KyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIK
KyNlbmRpZgorCiB0eXBlZGVmIHN0cnVjdCBfRXZhc19HTCAgICAgICAgICAgICAgIEV2YXNfR0w7
CiB0eXBlZGVmIHN0cnVjdCBfRXZhc19HTF9TdXJmYWNlICAgICAgIEV2YXNfR0xfU3VyZmFjZTsK
IHR5cGVkZWYgc3RydWN0IF9FdmFzX0dMX0NvbnRleHQgICAgICAgRXZhc19HTF9Db250ZXh0OwpA
QCAtNTIsNiArNTYsMTIgQEAgcHVibGljOgogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOwogI2VuZGlmCisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCisgICAgdmlydHVhbCB1aW50MzJfdCBjb3B5VG9HcmFwaGljc1N1cmZhY2UoKTsKKyAg
ICB2aXJ0dWFsIEdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29u
c3Q7CisgICAgdm9pZCBjcmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0IEludFNpemUmKTsKKyNl
bmRpZgorCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBib29sIGNyZWF0ZVN1
cmZhY2UoUGFnZUNsaWVudEVmbCosIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0V2YXNHTE9iamVjdCk7
CiAgICAgdm9pZCBzZXRDdXJyZW50R0xDb250ZXh0KHZvaWQqLCB2b2lkKik7CkBAIC01OSw2ICs2
OSwxMCBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRy
aWJ1dGVzOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAgICAgSG9zdFdpbmRv
dyogbV9ob3N0V2luZG93OworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIEdyYXBoaWNz
U3VyZmFjZTo6RmxhZ3MgbV9zdXJmYWNlRmxhZ3M7CisgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFj
ZT4gbV9ncmFwaGljc1N1cmZhY2U7CisjZW5kaWYKIAogICAgIExpc3RIYXNoU2V0PEdDM0RlbnVt
PiBtX3N5bnRoZXRpY0Vycm9yczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6cmVzaGFwZShpbnQgd2lkdAogICAgIGlmICh3aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCAm
JiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSNpZiBQTEFU
Rk9STShRVCkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaWYgKFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShFRkwpKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICA6OmdsRmx1c2goKTsg
Ly8gTWFrZSBzdXJlIGFsbCBHTCBjYWxscyBoYXZlIGJlZW4gY29tbWl0dGVkIGJlZm9yZSByZXNp
emluZy4KICAgICBjcmVhdGVHcmFwaGljc1N1cmZhY2VzKEludFNpemUod2lkdGgsIGhlaWdodCkp
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZmwvR3JhcGhpY3NTdXJmYWNlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3JhcGhpY3NTdXJmYWNlRWZsLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2VmbC9HcmFwaGljc1N1cmZhY2VFZmwuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgorCisjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpICYmIFBMQVRGT1JNKEVGTCkKKworI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK1Bhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQmVnaW5QYWludChjb25zdCBJbnRT
aXplJiBzaXplLCBjaGFyKiBiaXRzLCBpbnQgc3RyaWRlKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bhc3NSZWZQdHI8SW1hZ2U+IEdyYXBoaWNz
U3VyZmFjZTo6Y3JlYXRlUmVhZE9ubHlJbWFnZShjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30KKworI2VuZGlmCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZmwvR3JhcGhpY3NTdXJmYWNlRWZsLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0
YWJsZQogICArICoKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAJ
KHJldmlzaW9uIDEzMjI4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEy
ICsyMywxOCBAQAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlckdMLmgiCisKKyNpZiBQTEFURk9STShRVCkKIC8vIFF0IGhlYWRlcnMgbXVzdCBiZSBp
bmNsdWRlZCBiZWZvcmUgZ2x4IGhlYWRlcnMuCiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4K
ICNpbmNsdWRlIDxRT3BlbkdMQ29udGV4dD4KICNpbmNsdWRlIDxRVmVjdG9yPgogI2luY2x1ZGUg
PFFXaW5kb3c+CiAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXdpbmRvdy5oPgorI2VsaWYgUExBVEZP
Uk0oRUZMKQorI2luY2x1ZGUgPEdML2dsLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPEdML2dsZXh0
Lmg+CiAjaW5jbHVkZSA8R0wvZ2x4Lmg+CiAjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBv
c2l0ZS5oPgpAQCAtNTMsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgICsrcmVmQ291bnQ7CiAg
ICAgfQogCisjaWYgUExBVEZPUk0oUVQpIAogICAgIFFXaW5kb3cqIGdldChEaXNwbGF5KiBkcHkp
CiAgICAgewogICAgICAgICBpZiAoIXdpbmRvdykgewpAQCAtNjcsMjIgKzc0LDUyIEBAIHB1Ymxp
YzoKIAogICAgICAgICByZXR1cm4gd2luZG93OwogICAgIH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyAgICBXaW5kb3cqIGdldChEaXNwbGF5KiBkcHkpCisgICAgeworICAgICAgICBpZiAoIXdpbmRv
dykgeworICAgICAgICAgICAgd2luZG93ID0gWENyZWF0ZVNpbXBsZVdpbmRvdyhkcHksIFhEZWZh
dWx0Um9vdFdpbmRvdyhkcHkpLCAtMSwgLTEsIDEsIDEsIDAsIEJsYWNrUGl4ZWwoZHB5LCAwKSwg
V2hpdGVQaXhlbChkcHksIDApKTsKKyAgICAgICAgICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXM7CisgICAgICAgICAgICBhdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gdHJ1
ZTsKKyAgICAgICAgICAgIFhDaGFuZ2VXaW5kb3dBdHRyaWJ1dGVzKGRweSwgd2luZG93LCBYMTFP
dmVycmlkZVJlZGlyZWN0LCAmYXR0cmlidXRlcyk7CisgICAgICAgICAgICBkaXNwbGF5ID0gZHB5
OworICAgICAgICAgICAgLy8gTWFwIHdpbmRvdyB0byB0aGUgc2NyZWVuCisgICAgICAgICAgICBY
TWFwV2luZG93KGRweSwgd2luZG93KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAmd2lu
ZG93OworICAgIH0KKyNlbmRpZgogCiAgICAgfk9mZlNjcmVlblJvb3RXaW5kb3coKQogICAgIHsK
ICAgICAgICAgaWYgKCEtLXJlZkNvdW50KSB7CisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICAg
ICBkZWxldGUgd2luZG93OwogICAgICAgICAgICAgd2luZG93ID0gMDsKKyNlbGlmIFBMQVRGT1JN
KEVGTCkKKyAgICAgICAgICAgIFhVbm1hcFdpbmRvdyhkaXNwbGF5LCB3aW5kb3cpOworICAgICAg
ICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgd2luZG93KTsKKyNlbmRpZgogICAgICAgICB9
CiAgICAgfQogCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgcmVmQ291bnQ7CisjaWYgUExBVEZP
Uk0oUVQpCiAgICAgc3RhdGljIFFXaW5kb3cqIHdpbmRvdzsKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyAgICBzdGF0aWMgV2luZG93IHdpbmRvdzsKKyAgICBEaXNwbGF5KiBkaXNwbGF5OworI2VuZGlm
CiB9OwogCiBpbnQgT2ZmU2NyZWVuUm9vdFdpbmRvdzo6cmVmQ291bnQgPSAwOworI2lmIFBMQVRG
T1JNKFFUKQogUVdpbmRvdyogT2ZmU2NyZWVuUm9vdFdpbmRvdzo6d2luZG93ID0gMDsKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKK1dpbmRvdyBPZmZTY3JlZW5Sb290V2luZG93Ojp3aW5kb3cgPSAwOwor
I2VuZGlmCiAKIHN0YXRpYyBjb25zdCBpbnQgZ2x4U3BlY1tdID0gewogICAgIC8vIFRoZSBzcGVj
aWZpY2F0aW9uIGlzIGEgc2V0IGtleSB2YWx1ZSBwYWlycyBzdG9yZWQgaW4gYSBzaW1wbGUgYXJy
YXkuCkBAIC0xMDYsMTIgKzE0MywxNyBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7
CiAgICAgICAgIDogbV9kaXNwbGF5KDApCiAgICAgICAgICwgbV94UGl4bWFwKDApCiAgICAgICAg
ICwgbV9nbHhQaXhtYXAoMCkKKyNpZiBQTEFURk9STShRVCkKICAgICAgICAgLCBtX2dsQ29udGV4
dChhZG9wdFB0cihuZXcgUU9wZW5HTENvbnRleHQpKQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAg
ICAgICAsIG1fZ2xDb250ZXh0KDApCisjZW5kaWYKICAgICAgICAgLCBtX2RldGFjaGVkQ29udGV4
dCgwKQogICAgICAgICAsIG1fZGV0YWNoZWRTdXJmYWNlKDApCiAgICAgICAgICwgbV90ZXh0dXJl
SXNZSW52ZXJ0ZWQoZmFsc2UpCiAgICAgICAgICwgbV9oYXNBbHBoYShmYWxzZSkKICAgICB7Cisj
aWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFTdXJmYWNlKiBjdXJyZW50U3VyZmFjZSA9IDA7CiAg
ICAgICAgIFFPcGVuR0xDb250ZXh0KiBjdXJyZW50Q29udGV4dCA9IFFPcGVuR0xDb250ZXh0Ojpj
dXJyZW50Q29udGV4dCgpOwogICAgICAgICBpZiAoY3VycmVudENvbnRleHQpCkBAIC0xMjUsNiAr
MTY3LDI1IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgLy8gVGhl
cmVmb3JlIHdlIGhhdmUgdG8gbWFrZSB0aGUgcHJldmlvdXMgY29udGV4dCBjdXJyZW50IGFnYWlu
LgogICAgICAgICBpZiAoY3VycmVudENvbnRleHQpCiAgICAgICAgICAgICBjdXJyZW50Q29udGV4
dC0+bWFrZUN1cnJlbnQoY3VycmVudFN1cmZhY2UpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAg
ICAgICBtX2Rpc3BsYXkgPSBYT3BlbkRpc3BsYXkoMCk7CisKKyAgICAgICAgaW50IGF0dHJpYnV0
ZXNbXSA9IHsKKyAgICAgICAgICAgIEdMWF9MRVZFTCwgMCwKKyAgICAgICAgICAgIEdMWF9EUkFX
QUJMRV9UWVBFLCBHTFhfV0lORE9XX0JJVCwKKyAgICAgICAgICAgIEdMWF9SRU5ERVJfVFlQRSwg
ICBHTFhfUkdCQV9CSVQsCisgICAgICAgICAgICBHTFhfUkVEX1NJWkUsICAgICAgMSwKKyAgICAg
ICAgICAgIEdMWF9HUkVFTl9TSVpFLCAgICAxLAorICAgICAgICAgICAgR0xYX0JMVUVfU0laRSwg
ICAgIDEsCisgICAgICAgICAgICBHTFhfRE9VQkxFQlVGRkVSLCAgVHJ1ZSwKKyAgICAgICAgICAg
IE5vbmUKKyAgICAgICAgfTsKKworICAgICAgICBpbnQgbnVtUmV0dXJuZWQ7CisgICAgICAgIG1f
ZmJDb25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcobV9kaXNwbGF5LCBEZWZhdWx0U2NyZWVuKG1f
ZGlzcGxheSksIGF0dHJpYnV0ZXMsICZudW1SZXR1cm5lZCk7CisgICAgICAgIC8vIENyZWF0ZSBh
IEdMWCBjb250ZXh0IGZvciBPcGVuR0wgcmVuZGVyaW5nCisgICAgICAgIG1fZ2xDb250ZXh0ID0g
Z2xYQ3JlYXRlTmV3Q29udGV4dChtX2Rpc3BsYXksIG1fZmJDb25maWdzWzBdLCBHTFhfUkdCQV9U
WVBFLCAwLCB0cnVlKTsKKyNlbmRpZgogICAgIH0KIAogICAgIH5HcmFwaGljc1N1cmZhY2VQcml2
YXRlKCkKQEAgLTE0NCw2ICsyMDUsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7
CiAKICAgICB1aW50MzJfdCBjcmVhdGVTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAg
eworI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBtX3N1cmZhY2UgPSBhZG9wdFB0cihuZXcgUVdp
bmRvdyhtX29mZlNjcmVlbldpbmRvdy5nZXQobV9kaXNwbGF5KSkpOwogICAgICAgICBtX3N1cmZh
Y2UtPnNldFN1cmZhY2VUeXBlKFFTdXJmYWNlOjpPcGVuR0xTdXJmYWNlKTsKICAgICAgICAgbV9z
dXJmYWNlLT5zZXRHZW9tZXRyeSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwpA
QCAtMTU4LDYgKzIyMCwzMCBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAg
ICAgIG1fc3VyZmFjZS0+c2hvdygpOwogCiAgICAgICAgIHJldHVybiBtX3N1cmZhY2UtPmhhbmRs
ZSgpLT53aW5JZCgpOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgICAgICBYVmlzdWFsSW5mbyog
dmlzdWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX2Rpc3BsYXksIG1fZmJDb25m
aWdzWzBdKTsKKyAgICAgICAgaWYgKCF2aXN1YWxJbmZvKQorICAgICAgICAgICAgcmV0dXJuIDA7
CisKKyAgICAgICAgQ29sb3JtYXAgY21hcCA9IFhDcmVhdGVDb2xvcm1hcChtX2Rpc3BsYXksICpt
X29mZlNjcmVlbldpbmRvdy5nZXQobV9kaXNwbGF5KSwgdmlzdWFsSW5mby0+dmlzdWFsLCBBbGxv
Y05vbmUpOworICAgICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhOworICAgICAgICBhLmJhY2tn
cm91bmRfcGl4ZWwgPSBXaGl0ZVBpeGVsKG1fZGlzcGxheSwgMCk7CisgICAgICAgIGEuYm9yZGVy
X3BpeGVsID0gQmxhY2tQaXhlbChtX2Rpc3BsYXksIDApOworICAgICAgICBhLmNvbG9ybWFwID0g
Y21hcDsKKyAgICAgICAgbV9zdXJmYWNlID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksICptX29m
ZlNjcmVlbldpbmRvdy5nZXQobV9kaXNwbGF5KSwgMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpLAorICAgICAgICAgICAgMCwgdmlzdWFsSW5mby0+ZGVwdGgsIElucHV0T3V0cHV0LCB2
aXN1YWxJbmZvLT52aXN1YWwsCisgICAgICAgICAgICBDV0JhY2tQaXhlbCB8IENXQm9yZGVyUGl4
ZWwgfCBDV0NvbG9ybWFwLCAmYSk7CisgICAgICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFw
KG1fZGlzcGxheSwgbV9zdXJmYWNlLCAwKTsKKyAgICAgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2lu
ZG93KG1fZGlzcGxheSwgbV9zdXJmYWNlLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7CisKKyAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoZSBYUmVuZGVyIEV4dGVuc2lvbiBpcyBhdmFpbGFibGUuCisg
ICAgICAgIGludCBldmVudEJhc2VwLCBlcnJvckJhc2VwOworICAgICAgICBpZiAoIVhSZW5kZXJR
dWVyeUV4dGVuc2lvbihtX2Rpc3BsYXksICZldmVudEJhc2VwLCAmZXJyb3JCYXNlcCkpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV9zdXJm
YWNlKTsKKyAgICAgICAgcmV0dXJuIG1fc3VyZmFjZTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZv
aWQgY3JlYXRlUGl4bWFwKHVpbnQzMl90IHdpbklkKQpAQCAtMTg0LDE4ICsyNzAsMzAgQEAgc3Ry
dWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogCiAgICAgdm9pZCBtYWtlQ3VycmVudCgpCiAg
ICAgeworI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBtX2RldGFjaGVkQ29udGV4dCA9IFFPcGVu
R0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpOwogICAgICAgICBpZiAobV9kZXRhY2hlZENvbnRl
eHQpCiAgICAgICAgICAgICBtX2RldGFjaGVkU3VyZmFjZSA9IG1fZGV0YWNoZWRDb250ZXh0LT5z
dXJmYWNlKCk7CiAKICAgICAgICAgaWYgKG1fc3VyZmFjZSAmJiBtX2dsQ29udGV4dCkKICAgICAg
ICAgICAgIG1fZ2xDb250ZXh0LT5tYWtlQ3VycmVudChtX3N1cmZhY2UuZ2V0KCkpOworI2VsaWYg
UExBVEZPUk0oRUZMKQorICAgICAgICBtX2RldGFjaGVkQ29udGV4dCA9IGdsWEdldEN1cnJlbnRD
b250ZXh0KCk7CisgICAgICAgIG1fZGV0YWNoZWRTdXJmYWNlID0gZ2xYR2V0Q3VycmVudERyYXdh
YmxlKCk7CisgICAgICAgIGlmIChtX3N1cmZhY2UgJiYgbV9nbENvbnRleHQpCisgICAgICAgICAg
ICBnbFhNYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fc3VyZmFjZSwgbV9nbENvbnRleHQpOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgdm9pZCBkb25lQ3VycmVudCgpCiAgICAgewogICAgICAgICBpZiAo
bV9kZXRhY2hlZENvbnRleHQpCisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICAgICBtX2RldGFj
aGVkQ29udGV4dC0+bWFrZUN1cnJlbnQobV9kZXRhY2hlZFN1cmZhY2UpOworI2VsaWYgUExBVEZP
Uk0oRUZMKQorICAgICAgICAgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBtX2RldGFjaGVk
U3VyZmFjZSwgbV9kZXRhY2hlZENvbnRleHQpOyAgICAKKyNlbmRpZgorICAgICAgICBtX2RldGFj
aGVkQ29udGV4dCA9IDA7CiAgICAgfQogCiAgICAgdm9pZCBzd2FwQnVmZmVycygpCkBAIC0yMDYs
NiArMzA0LDcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICBpZiAo
bV94UGl4bWFwKQogICAgICAgICAgICAgcmV0dXJuOwogCisjaWYgUExBVEZPUk0oUVQpCiAgICAg
ICAgIGlmICghbV9zdXJmYWNlLT5pc1Zpc2libGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMjIyLDYgKzMyMSwxNyBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAg
ICAgICAgICBnbENvbnRleHQtPnN3YXBCdWZmZXJzKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgICAg
ICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG9sZEZCTyk7CiAgICAgICAg
IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgR0xYQ29udGV4dCBnbENvbnRleHQgPSBn
bFhHZXRDdXJyZW50Q29udGV4dCgpOworCisgICAgICAgIGlmIChtX3N1cmZhY2UgJiYgZ2xDb250
ZXh0KSB7CisgICAgICAgICAgICBHTGludCBvbGRGQk87CisgICAgICAgICAgICBnbEdldEludGVn
ZXJ2KEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkcsICZvbGRGQk8pOworICAgICAgICAgICAgcEdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAgICAgICAgICAgIGdsWFN3YXBCdWZm
ZXJzKG1fZGlzcGxheSwgbV9zdXJmYWNlKTsKKyAgICAgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgb2xkRkJPKTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogCiAg
ICAgdm9pZCBjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCkKQEAgLTI0Miw3ICszNTIsMTEgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVBy
aXZhdGUgewogICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwog
ICAgICAgICBwR2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9SRUFEX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7CiAKKyNpZiBQTEFU
Rk9STShRVCkKICAgICAgICAgcEdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIs
IGdsQ29udGV4dCgpLT5kZWZhdWx0RnJhbWVidWZmZXJPYmplY3QoKSk7CisjZWxpZiBQTEFURk9S
TShFRkwpCisgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCAw
KTsKKyNlbmRpZgogICAgICAgICBwR2xCbGl0RnJhbWVidWZmZXIoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsK
IAogICAgICAgICBwR2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9SRUFEX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgMCwgMCk7CkBAIC0yNTQsMTQgKzM2
OCwxNSBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIGRvbmVDdXJy
ZW50KCk7CiAgICAgfQogCi0KICAgICBEaXNwbGF5KiBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5OyB9CiAKICAgICBHTFhQaXhtYXAgZ2x4UGl4bWFwKCkgY29uc3QgeyByZXR1cm4g
bV9nbHhQaXhtYXA7IH0KIAogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQogCisjaWYgUExBVEZPUk0oUVQpCiAgICAgUU9wZW5HTENvbnRleHQqIGdsQ29udGV4dCgp
IHsgcmV0dXJuIG1fZ2xDb250ZXh0LmdldCgpOyB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBP
ZmZTY3JlZW5Sb290V2luZG93IG1fb2ZmU2NyZWVuV2luZG93OwpAQCAtMjY5LDEwICszODQsMTgg
QEAgcHJpdmF0ZToKICAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7CiAgICAgUGl4bWFwIG1feFBpeG1h
cDsKICAgICBHTFhQaXhtYXAgbV9nbHhQaXhtYXA7CisjaWYgUExBVEZPUk0oUVQpCiAgICAgT3du
UHRyPFFXaW5kb3c+IG1fc3VyZmFjZTsKICAgICBPd25QdHI8UU9wZW5HTENvbnRleHQ+IG1fZ2xD
b250ZXh0OwogICAgIFFPcGVuR0xDb250ZXh0KiBtX2RldGFjaGVkQ29udGV4dDsKICAgICBRU3Vy
ZmFjZSogbV9kZXRhY2hlZFN1cmZhY2U7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgV2luZG93
IG1fc3VyZmFjZTsKKyAgICBHTFhDb250ZXh0IG1fZ2xDb250ZXh0OworICAgIEdMWENvbnRleHQg
bV9kZXRhY2hlZENvbnRleHQ7CisgICAgR0xYRHJhd2FibGUgbV9kZXRhY2hlZFN1cmZhY2U7Cisg
ICAgR0xYRkJDb25maWcqIG1fZmJDb25maWdzOworI2VuZGlmCiAgICAgYm9vbCBtX3RleHR1cmVJ
c1lJbnZlcnRlZDsKICAgICBib29sIG1faGFzQWxwaGE7CiB9OwpAQCAtMjgyLDcgKzQwNSw3IEBA
IHN0YXRpYyBib29sIHJlc29sdmVHTE1ldGhvZHMoR3JhcGhpY3NTdXIKICAgICBzdGF0aWMgYm9v
bCByZXNvbHZlZCA9IGZhbHNlOwogICAgIGlmIChyZXNvbHZlZCkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KKyNpZiBQTEFURk9STShRVCkKICAgICBRT3BlbkdMQ29udGV4dCogZ2xDb250ZXh0ID0g
cC0+Z2xDb250ZXh0KCk7CiAgICAgcEdsWEJpbmRUZXhJbWFnZUVYVCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xYQklORFRFWElNQUdFRVhUUFJPQz4oZ2xDb250ZXh0LT5nZXRQcm9jQWRkcmVzcygi
Z2xYQmluZFRleEltYWdlRVhUIikpOwogICAgIHBHbFhSZWxlYXNlVGV4SW1hZ2VFWFQgPSByZWlu
dGVycHJldF9jYXN0PFBGTkdMWFJFTEVBU0VURVhJTUFHRUVYVFBST0M+KGdsQ29udGV4dC0+Z2V0
UHJvY0FkZHJlc3MoImdsWFJlbGVhc2VUZXhJbWFnZUVYVCIpKTsKQEAgLTI5Miw3ICs0MTUsMTYg
QEAgc3RhdGljIGJvb2wgcmVzb2x2ZUdMTWV0aG9kcyhHcmFwaGljc1N1cgogICAgIHBHbEdlbkZy
YW1lYnVmZmVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRU5GUkFNRUJVRkZFUlNQUk9DPihn
bENvbnRleHQtPmdldFByb2NBZGRyZXNzKCJnbEdlbkZyYW1lYnVmZmVycyIpKTsKICAgICBwR2xE
ZWxldGVGcmFtZWJ1ZmZlcnMgPSByZWludGVycHJldF9jYXN0PFBGTkdMREVMRVRFRlJBTUVCVUZG
RVJTUFJPQz4oZ2xDb250ZXh0LT5nZXRQcm9jQWRkcmVzcygiZ2xEZWxldGVGcmFtZWJ1ZmZlcnMi
KSk7CiAgICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQgPSByZWludGVycHJldF9jYXN0PFBGTkdM
RlJBTUVCVUZGRVJURVhUVVJFMkRQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRyZXNzKCJnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEIikpOwotCisjZWxpZiBQTEFURk9STShFRkwpCisgICAgcEdsWEJp
bmRUZXhJbWFnZUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xYQklORFRFWElNQUdFRVhUUFJP
Qz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImds
WEJpbmRUZXhJbWFnZUVYVCIpKSk7CisgICAgcEdsWFJlbGVhc2VUZXhJbWFnZUVYVCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xYUkVMRUFTRVRFWElNQUdFRVhUUFJPQz4oZ2xYR2V0UHJvY0FkZHJl
c3MocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImdsWFJlbGVhc2VUZXhJbWFnZUVY
VCIpKSk7CisgICAgcEdsQmluZEZyYW1lYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJJ
TkRGUkFNRUJVRkZFUlBST0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0x1Ynl0ZSo+KCJnbEJpbmRGcmFtZWJ1ZmZlciIpKSk7CisgICAgcEdsQmxpdEZyYW1lYnVm
ZmVyID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJMSVRGUkFNRUJVRkZFUlBST0M+KGdsWEdldFBy
b2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbEJsaXRGcmFtZWJ1
ZmZlciIpKSk7CisKKyAgICBwR2xHZW5GcmFtZWJ1ZmZlcnMgPSByZWludGVycHJldF9jYXN0PFBG
TkdMR0VORlJBTUVCVUZGRVJTUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBHTHVieXRlKj4oImdsR2VuRnJhbWVidWZmZXJzIikpKTsKKyAgICBwR2xEZWxldGVG
cmFtZWJ1ZmZlcnMgPSByZWludGVycHJldF9jYXN0PFBGTkdMREVMRVRFRlJBTUVCVUZGRVJTUFJP
Qz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImds
RGVsZXRlRnJhbWVidWZmZXJzIikpKTsKKyAgICBwR2xGcmFtZWJ1ZmZlclRleHR1cmUyRCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xGUkFNRUJVRkZFUlRFWFRVUkUyRFBST0M+KGdsWEdldFByb2NB
ZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEIikpKTsKKyNlbmRpZgogICAgIHJlc29sdmVkID0gcEdsQmxpdEZyYW1lYnVmZmVyICYm
IHBHbEJpbmRGcmFtZWJ1ZmZlciAmJiBwR2xYQmluZFRleEltYWdlRVhUICYmIHBHbFhSZWxlYXNl
VGV4SW1hZ2VFWFQ7CiAKICAgICByZXR1cm4gcmVzb2x2ZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMzIyODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yMyAgUmVnaW5hIENodW5nICA8aGVlamluLnIuY2h1
bmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBFbmFibGUgV2ViR0wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NjUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IFdlYkdMRW5hYmxl
ZCB0byB0cnVlIHdoZW4gV2ViR0wgaXMgZW5hYmxlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19pbml0aWFsaXplKToKKwog
MjAxMi0xMC0yMyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bU291cF0gSW1wbGVtZW50IHRoZSBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIGRp
YWxvZyB2aWEgV2ViQ29yZVN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDEzMjI4OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEw
LDYgKzkxMCw5IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19pbml0aWFsaXplKEV2YXNfT2IKICAg
ICBwcml2LT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5wYWdlUHJveHktPnBhZ2VH
cm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKICAg
ICBwcml2LT5wYWdlUHJveHktPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOworI2lmIEVOQUJMRShX
RUJHTCkKKyAgICBwcml2LT5wYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5z
ZXRXZWJHTEVuYWJsZWQodHJ1ZSk7CisjZW5kaWYKICNlbmRpZgogICAgIHByaXYtPnBhZ2VQcm94
eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKIApJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNFZmwu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UJKHJldmlz
aW9uIDEzMjI4OCkKKysrIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC0xODMsNiArMTgzLDEwIEBAIElGIChXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUp
CiAgIFNFVChXVEZfVVNFXzNEX0dSQVBISUNTIDEpCiAgIEFERF9ERUZJTklUSU9OUygtRFdURl9V
U0VfM0RfR1JBUEhJQ1M9MSkKIAorICBTRVQgKFdURl9VU0VfR1JBUEhJQ1NfU1VSRkFDRSAxKQor
ICBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0dSQVBISUNTX1NVUkZBQ0U9MSkKKyAgQUREX0RF
RklOSVRJT05TKC1ESEFWRV9HTFgpCisKICAgRklORF9QQUNLQUdFKE9wZW5HTCBSRVFVSVJFRCkK
IEVORElGKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170786</attachid>
            <date>2012-10-25 19:04:55 -0700</date>
            <delta_ts>2012-10-25 19:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97652-20121026110427.patch</filename>
            <type>text/plain</type>
            <size>25378</size>
            <attacher name="Regina Chung">heejin.r.chung</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjU1
NCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEw
LTI1ICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBL
aW0uCisKKyAgICAgICAgVXNlIEdyYXBoaWNzIFN1cmZhY2UgdG8gZW5hYmxlIFdlYkdMIGZvciBX
ZWJLaXQyIEVGTC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOgor
CiAyMDEyLTEwLTI1ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRl
bC5jb20+CiAKICAgICAgICAgQWRkaW5nIGZlYXR1cmUgZm9yIFhIUl9USU1FT1VUCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMzI1NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw2NiBAQAorMjAxMi0xMC0yNSAgUmVnaW5hIENodW5nICA8
aGVlamluLnIuY2h1bmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBFbmFibGUg
V2ViR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAgIEltcGxl
bWVudGVkIEdyYXBoaWNzU3VyZmFjZSBmb3IgRUZMIHRvIGVuYWJsZSBXZWJHTCBmb3IgV2ViS2l0
Mi4KKyAgICAgICAgRGVwZW5kcyBvbiBHTFggc2luY2UgRXZhcyBkb2Vzbid0IHByb3ZpZGUgdGhl
IG5lY2Vzc2FyeSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc1N1cmZhY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NT
dXJmYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNv
cHlUb0dyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgIChHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZWZsOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwv
R3JhcGhpY3NTdXJmYWNlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6OmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpPZmZTY3JlZW5Sb290V2luZG93Ojp+T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUJlZ2luUGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpjcmVhdGVSZWFkT25seUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZh
Y2VHTFguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBo
aWNzU3VyZmFjZUdMWC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoT2Zm
U2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpPZmZTY3JlZW5Sb290V2luZG93
OjpPZmZTY3JlZW5Sb290V2luZG93KToKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6fkdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6
Y3JlYXRlUGl4bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OmNvcHlGcm9tVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2
YXRlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OmdseFBpeG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpz
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmdsQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR0xNZXRob2RzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6Ok9mZlNj
cmVlblJvb3RXaW5kb3c6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZTY3JlZW5Sb290V2lu
ZG93Ojp+T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMpOgorCiAyMDEyLTEwLTI1ICBL
ZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIEhpZGUgcG9wdXAg
d2hpbGUgdHJhbnNpdGlvbmluZyBmcm9tIHRoZSBzdWdnZXN0aW9uIHBpY2tlciB0byB0aGUgY2Fs
ZW5kYXIgcGlja2VyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTMy
NTU0KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTMsNiArMyw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9lZmwiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9l
ZmwiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwiCisgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcyIKICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2xpbnV4IgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyIgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgpAQCAtMjk0
LDYgKzI5NSw5IEBAIElGIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUVmbC5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCiAgICkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCB0
eXBlZGVmIFFPcGVuR0xDb250ZXh0KiBQbGF0Zm9ybUdyYXBoaWNzCiB0eXBlZGVmIFFTdXJmYWNl
KiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTNEOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRDsKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFwaGljc1N1cmZh
Y2UzRDsKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShCTEFD
S0JFUlJZKSkgJiYgVVNFKFNLSUEpCkBAIC05NDcsNyArOTQ4LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCByZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCByZXNvbHZlTXVsdGlz
YW1wbGluZ0lmTmVjZXNzYXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKLSNpZiBQTEFU
Rk9STShRVCkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaWYgKFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShFRkwpKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2b2lkIGNyZWF0ZUdy
YXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNERWZsLmNwcAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52
YXMoY28KICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIG1fcHJpdmF0ZS0+Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhzaXpl
KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAko
cmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRl
eHRDYWlyby5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzX0dMLmg+
CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CkBAIC04Nyw2ICs4OCwxMyBAQCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4CiAgICAgICAgIHJldHVybjsKIAogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAg
SW50U2l6ZSBzdXJmYWNlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQt
Pm1fY3VycmVudEhlaWdodCk7CisgICAgbV9zdXJmYWNlRmxhZ3MgPSBHcmFwaGljc1N1cmZhY2U6
OlN1cHBvcnRzVGV4dHVyZVRhcmdldCB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFyaW5n
OworICAgIGlmICghc3VyZmFjZVNpemUuaXNFbXB0eSgpKQorICAgICAgICBtX2dyYXBoaWNzU3Vy
ZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHN1cmZhY2VTaXplLCBtX3N1cmZhY2VGbGFn
cyk7CisjZW5kaWYKIH0KIAogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKCkKQEAgLTEwMSw4ICsxMDksMTEgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjp+R3JhcGhpY3NDb250ZQogICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveShtX2V2
YXNHTCwgbV9ldmFzR0xDb250ZXh0KTsKIAogICAgIGV2YXNfZ2xfZnJlZShtX2V2YXNHTCk7Ci19
CiAKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBtX2dyYXBoaWNzU3VyZmFjZS5jbGVh
cigpOworI2VuZGlmCit9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVT
dXJmYWNlKFBhZ2VDbGllbnRFZmwqIHBhZ2VDbGllbnQsIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpCiB7CkBAIC0xNjksNiArMTgwLDMyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpwYWludFRvVGUKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogI2VuZGlmCisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQorICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS5jbGVhcigpOworICAgIGVs
c2UKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShz
aXplLCBtX3N1cmZhY2VGbGFncyk7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y29weVRvR3JhcGhpY3NTdXJmYWNlKCkKK3sKKyAgICBpZiAoIW1fZ3JhcGhpY3NTdXJm
YWNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fZ3JhcGhpY3NTdXJmYWNlLT5jb3B5RnJvbVRleHR1cmUobV9jb250ZXh0LT5tX3RleHR1cmUs
IEludFJlY3QoMCwgMCwgbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5tX2N1
cnJlbnRIZWlnaHQpKTsKKyAgICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZmZXJz
KCk7Cit9CisKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzU3Vy
ZmFjZS0+ZXhwb3J0VG9rZW4oKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBVU0UoM0RfR1JBUEhJQ1MpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgJKHJldmlzaW9uIDEzMjU1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTAgQEAKICNpbmNsdWRl
IDx0ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaD4KICNlbmRpZgogCisjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCisjZW5kaWYK
KwogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfR0wgICAgICAgICAgICAgICBFdmFzX0dMOwogdHlwZWRl
ZiBzdHJ1Y3QgX0V2YXNfR0xfU3VyZmFjZSAgICAgICBFdmFzX0dMX1N1cmZhY2U7CiB0eXBlZGVm
IHN0cnVjdCBfRXZhc19HTF9Db250ZXh0ICAgICAgIEV2YXNfR0xfQ29udGV4dDsKQEAgLTUyLDYg
KzU2LDEyIEBAIHB1YmxpYzoKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBC
aXRtYXBUZXh0dXJlKiBtYXNrKTsKICNlbmRpZgorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQor
ICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCk7CisgICAgdmlydHVh
bCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0OworICAg
IHZvaWQgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRTaXplJik7CisjZW5kaWYKKwog
ICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgYm9vbCBjcmVhdGVTdXJmYWNlKFBh
Z2VDbGllbnRFZmwqLCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpOwogICAgIHZv
aWQgc2V0Q3VycmVudEdMQ29udGV4dCh2b2lkKiwgdm9pZCopOwpAQCAtNTksNiArNjksMTAgQEAg
cHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsK
ICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEhvc3RXaW5kb3cqIG1faG9z
dFdpbmRvdzsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBHcmFwaGljc1N1cmZhY2U6
OkZsYWdzIG1fc3VyZmFjZUZsYWdzOworICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IG1fZ3Jh
cGhpY3NTdXJmYWNlOworI2VuZGlmCiAKICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT4gbV9zeW50
aGV0aWNFcnJvcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJl
c2hhcGUoaW50IHdpZHQKICAgICBpZiAod2lkdGggPT0gbV9jdXJyZW50V2lkdGggJiYgaGVpZ2h0
ID09IG1fY3VycmVudEhlaWdodCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oUVQp
ICYmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2lmIChQTEFURk9STShRVCkgfHwgUExBVEZPUk0o
RUZMKSkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgOjpnbEZsdXNoKCk7IC8vIE1ha2Ug
c3VyZSBhbGwgR0wgY2FsbHMgaGF2ZSBiZWVuIGNvbW1pdHRlZCBiZWZvcmUgcmVzaXppbmcuCiAg
ICAgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dy
YXBoaWNzU3VyZmFjZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUVmbC5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3Jh
cGhpY3NTdXJmYWNlRWZsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKKworI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKSAmJiBQTEFURk9STShFRkwpCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dD4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUJlZ2luUGFpbnQoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY2hhciogYml0cywgaW50IHN0cmlkZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitQYXNzUmVmUHRyPEltYWdlPiBHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZVJlYWRPbmx5SW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9CisKKyNlbmRpZgoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dy
YXBoaWNzU3VyZmFjZUVmbC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAg
KyAqCgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQv
R3JhcGhpY3NTdXJmYWNlR0xYLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCShyZXZpc2lv
biAxMzI1NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9x
dC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTgg
QEAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJH
TC5oIgorCisjaWYgUExBVEZPUk0oUVQpCiAvLyBRdCBoZWFkZXJzIG11c3QgYmUgaW5jbHVkZWQg
YmVmb3JlIGdseCBoZWFkZXJzLgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UU9wZW5HTENvbnRleHQ+CiAjaW5jbHVkZSA8UVZlY3Rvcj4KICNpbmNsdWRlIDxRV2luZG93
PgogI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm13aW5kb3cuaD4KKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyNpbmNsdWRlIDxHTC9nbC5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxHTC9nbGV4dC5oPgogI2lu
Y2x1ZGUgPEdML2dseC5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4K
QEAgLTUzLDYgKzU5LDcgQEAgcHVibGljOgogICAgICAgICArK3JlZkNvdW50OwogICAgIH0KIAor
I2lmIFBMQVRGT1JNKFFUKSAKICAgICBRV2luZG93KiBnZXQoRGlzcGxheSogZHB5KQogICAgIHsK
ICAgICAgICAgaWYgKCF3aW5kb3cpIHsKQEAgLTY3LDIyICs3NCw1MiBAQCBwdWJsaWM6CiAKICAg
ICAgICAgcmV0dXJuIHdpbmRvdzsKICAgICB9CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgV2lu
ZG93KiBnZXQoRGlzcGxheSogZHB5KQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cpIHsKKyAg
ICAgICAgICAgIHdpbmRvdyA9IFhDcmVhdGVTaW1wbGVXaW5kb3coZHB5LCBYRGVmYXVsdFJvb3RX
aW5kb3coZHB5KSwgLTEsIC0xLCAxLCAxLCAwLCBCbGFja1BpeGVsKGRweSwgMCksIFdoaXRlUGl4
ZWwoZHB5LCAwKSk7CisgICAgICAgICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OworICAgICAgICAgICAgYXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IHRydWU7CisgICAg
ICAgICAgICBYQ2hhbmdlV2luZG93QXR0cmlidXRlcyhkcHksIHdpbmRvdywgWDExT3ZlcnJpZGVS
ZWRpcmVjdCwgJmF0dHJpYnV0ZXMpOworICAgICAgICAgICAgZGlzcGxheSA9IGRweTsKKyAgICAg
ICAgICAgIC8vIE1hcCB3aW5kb3cgdG8gdGhlIHNjcmVlbgorICAgICAgICAgICAgWE1hcFdpbmRv
dyhkcHksIHdpbmRvdyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gJndpbmRvdzsKKyAg
ICB9CisjZW5kaWYKIAogICAgIH5PZmZTY3JlZW5Sb290V2luZG93KCkKICAgICB7CiAgICAgICAg
IGlmICghLS1yZWZDb3VudCkgeworI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgZGVsZXRl
IHdpbmRvdzsKICAgICAgICAgICAgIHdpbmRvdyA9IDA7CisjZWxpZiBQTEFURk9STShFRkwpCisg
ICAgICAgICAgICBYVW5tYXBXaW5kb3coZGlzcGxheSwgd2luZG93KTsKKyAgICAgICAgICAgIFhE
ZXN0cm95V2luZG93KGRpc3BsYXksIHdpbmRvdyk7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0K
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IHJlZkNvdW50OworI2lmIFBMQVRGT1JNKFFUKQog
ICAgIHN0YXRpYyBRV2luZG93KiB3aW5kb3c7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgc3Rh
dGljIFdpbmRvdyB3aW5kb3c7CisgICAgRGlzcGxheSogZGlzcGxheTsKKyNlbmRpZgogfTsKIAog
aW50IE9mZlNjcmVlblJvb3RXaW5kb3c6OnJlZkNvdW50ID0gMDsKKyNpZiBQTEFURk9STShRVCkK
IFFXaW5kb3cqIE9mZlNjcmVlblJvb3RXaW5kb3c6OndpbmRvdyA9IDA7CisjZWxpZiBQTEFURk9S
TShFRkwpCitXaW5kb3cgT2ZmU2NyZWVuUm9vdFdpbmRvdzo6d2luZG93ID0gMDsKKyNlbmRpZgog
CiBzdGF0aWMgY29uc3QgaW50IGdseFNwZWNbXSA9IHsKICAgICAvLyBUaGUgc3BlY2lmaWNhdGlv
biBpcyBhIHNldCBrZXkgdmFsdWUgcGFpcnMgc3RvcmVkIGluIGEgc2ltcGxlIGFycmF5LgpAQCAt
MTA2LDEyICsxNDMsMTcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAg
ICA6IG1fZGlzcGxheSgwKQogICAgICAgICAsIG1feFBpeG1hcCgwKQogICAgICAgICAsIG1fZ2x4
UGl4bWFwKDApCisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICwgbV9nbENvbnRleHQoYWRvcHRQ
dHIobmV3IFFPcGVuR0xDb250ZXh0KSkKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgLCBt
X2dsQ29udGV4dCgwKQorI2VuZGlmCiAgICAgICAgICwgbV9kZXRhY2hlZENvbnRleHQoMCkKICAg
ICAgICAgLCBtX2RldGFjaGVkU3VyZmFjZSgwKQogICAgICAgICAsIG1fdGV4dHVyZUlzWUludmVy
dGVkKGZhbHNlKQogICAgICAgICAsIG1faGFzQWxwaGEoZmFsc2UpCiAgICAgeworI2lmIFBMQVRG
T1JNKFFUKQogICAgICAgICBRU3VyZmFjZSogY3VycmVudFN1cmZhY2UgPSAwOwogICAgICAgICBR
T3BlbkdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENv
bnRleHQoKTsKICAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KQpAQCAtMTI1LDYgKzE2NywyNSBA
QCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIC8vIFRoZXJlZm9yZSB3
ZSBoYXZlIHRvIG1ha2UgdGhlIHByZXZpb3VzIGNvbnRleHQgY3VycmVudCBhZ2Fpbi4KICAgICAg
ICAgaWYgKGN1cnJlbnRDb250ZXh0KQogICAgICAgICAgICAgY3VycmVudENvbnRleHQtPm1ha2VD
dXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgbV9k
aXNwbGF5ID0gWE9wZW5EaXNwbGF5KDApOworCisgICAgICAgIGludCBhdHRyaWJ1dGVzW10gPSB7
CisgICAgICAgICAgICBHTFhfTEVWRUwsIDAsCisgICAgICAgICAgICBHTFhfRFJBV0FCTEVfVFlQ
RSwgR0xYX1dJTkRPV19CSVQsCisgICAgICAgICAgICBHTFhfUkVOREVSX1RZUEUsICAgR0xYX1JH
QkFfQklULAorICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsCisgICAgICAgICAgICBH
TFhfR1JFRU5fU0laRSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9CTFVFX1NJWkUsICAgICAxLAor
ICAgICAgICAgICAgR0xYX0RPVUJMRUJVRkZFUiwgIFRydWUsCisgICAgICAgICAgICBOb25lCisg
ICAgICAgIH07CisKKyAgICAgICAgaW50IG51bVJldHVybmVkOworICAgICAgICBtX2ZiQ29uZmln
cyA9IGdsWENob29zZUZCQ29uZmlnKG1fZGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX2Rpc3BsYXkp
LCBhdHRyaWJ1dGVzLCAmbnVtUmV0dXJuZWQpOworICAgICAgICAvLyBDcmVhdGUgYSBHTFggY29u
dGV4dCBmb3IgT3BlbkdMIHJlbmRlcmluZworICAgICAgICBtX2dsQ29udGV4dCA9IGdsWENyZWF0
ZU5ld0NvbnRleHQobV9kaXNwbGF5LCBtX2ZiQ29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgMCwg
dHJ1ZSk7CisjZW5kaWYKICAgICB9CiAKICAgICB+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSgpCkBA
IC0xNDQsNiArMjA1LDcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogCiAgICAg
dWludDMyX3QgY3JlYXRlU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKKyNpZiBQ
TEFURk9STShRVCkKICAgICAgICAgbV9zdXJmYWNlID0gYWRvcHRQdHIobmV3IFFXaW5kb3cobV9v
ZmZTY3JlZW5XaW5kb3cuZ2V0KG1fZGlzcGxheSkpKTsKICAgICAgICAgbV9zdXJmYWNlLT5zZXRT
dXJmYWNlVHlwZShRU3VyZmFjZTo6T3BlbkdMU3VyZmFjZSk7CiAgICAgICAgIG1fc3VyZmFjZS0+
c2V0R2VvbWV0cnkoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKQEAgLTE1OCw2
ICsyMjAsMzAgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICBtX3N1
cmZhY2UtPnNob3coKTsKIAogICAgICAgICByZXR1cm4gbV9zdXJmYWNlLT5oYW5kbGUoKS0+d2lu
SWQoKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgWFZpc3VhbEluZm8qIHZpc3VhbElu
Zm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9kaXNwbGF5LCBtX2ZiQ29uZmlnc1swXSk7
CisgICAgICAgIGlmICghdmlzdWFsSW5mbykKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAg
ICAgIENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCAqbV9vZmZTY3Jl
ZW5XaW5kb3cuZ2V0KG1fZGlzcGxheSksIHZpc3VhbEluZm8tPnZpc3VhbCwgQWxsb2NOb25lKTsK
KyAgICAgICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMgYTsKKyAgICAgICAgYS5iYWNrZ3JvdW5kX3Bp
eGVsID0gV2hpdGVQaXhlbChtX2Rpc3BsYXksIDApOworICAgICAgICBhLmJvcmRlcl9waXhlbCA9
IEJsYWNrUGl4ZWwobV9kaXNwbGF5LCAwKTsKKyAgICAgICAgYS5jb2xvcm1hcCA9IGNtYXA7Cisg
ICAgICAgIG1fc3VyZmFjZSA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LCAqbV9vZmZTY3JlZW5X
aW5kb3cuZ2V0KG1fZGlzcGxheSksIDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwK
KyAgICAgICAgICAgIDAsIHZpc3VhbEluZm8tPmRlcHRoLCBJbnB1dE91dHB1dCwgdmlzdWFsSW5m
by0+dmlzdWFsLAorICAgICAgICAgICAgQ1dCYWNrUGl4ZWwgfCBDV0JvcmRlclBpeGVsIHwgQ1dD
b2xvcm1hcCwgJmEpOworICAgICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcChtX2Rpc3Bs
YXksIG1fc3VyZmFjZSwgMCk7CisgICAgICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rp
c3BsYXksIG1fc3VyZmFjZSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworCisgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGUgWFJlbmRlciBFeHRlbnNpb24gaXMgYXZhaWxhYmxlLgorICAgICAgICBp
bnQgZXZlbnRCYXNlcCwgZXJyb3JCYXNlcDsKKyAgICAgICAgaWYgKCFYUmVuZGVyUXVlcnlFeHRl
bnNpb24obV9kaXNwbGF5LCAmZXZlbnRCYXNlcCwgJmVycm9yQmFzZXApKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7Cisg
ICAgICAgIHJldHVybiBtX3N1cmZhY2U7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGNyZWF0
ZVBpeG1hcCh1aW50MzJfdCB3aW5JZCkKQEAgLTE4NCwxOCArMjcwLDMwIEBAIHN0cnVjdCBHcmFw
aGljc1N1cmZhY2VQcml2YXRlIHsKIAogICAgIHZvaWQgbWFrZUN1cnJlbnQoKQogICAgIHsKKyNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSBRT3BlbkdMQ29udGV4
dDo6Y3VycmVudENvbnRleHQoKTsKICAgICAgICAgaWYgKG1fZGV0YWNoZWRDb250ZXh0KQogICAg
ICAgICAgICAgbV9kZXRhY2hlZFN1cmZhY2UgPSBtX2RldGFjaGVkQ29udGV4dC0+c3VyZmFjZSgp
OwogCiAgICAgICAgIGlmIChtX3N1cmZhY2UgJiYgbV9nbENvbnRleHQpCiAgICAgICAgICAgICBt
X2dsQ29udGV4dC0+bWFrZUN1cnJlbnQobV9zdXJmYWNlLmdldCgpKTsKKyNlbGlmIFBMQVRGT1JN
KEVGTCkKKyAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSBnbFhHZXRDdXJyZW50Q29udGV4dCgp
OworICAgICAgICBtX2RldGFjaGVkU3VyZmFjZSA9IGdsWEdldEN1cnJlbnREcmF3YWJsZSgpOwor
ICAgICAgICBpZiAobV9zdXJmYWNlICYmIG1fZ2xDb250ZXh0KQorICAgICAgICAgICAgZ2xYTWFr
ZUN1cnJlbnQobV9kaXNwbGF5LCBtX3N1cmZhY2UsIG1fZ2xDb250ZXh0KTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHZvaWQgZG9uZUN1cnJlbnQoKQogICAgIHsKICAgICAgICAgaWYgKG1fZGV0YWNo
ZWRDb250ZXh0KQorI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgbV9kZXRhY2hlZENvbnRl
eHQtPm1ha2VDdXJyZW50KG1fZGV0YWNoZWRTdXJmYWNlKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyAgICAgICAgICAgIGdsWE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9kZXRhY2hlZFN1cmZhY2Us
IG1fZGV0YWNoZWRDb250ZXh0KTsgICAgCisjZW5kaWYKKyAgICAgICAgbV9kZXRhY2hlZENvbnRl
eHQgPSAwOwogICAgIH0KIAogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKQpAQCAtMjA2LDYgKzMwNCw3
IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgaWYgKG1feFBpeG1h
cCkKICAgICAgICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBpZiAo
IW1fc3VyZmFjZS0+aXNWaXNpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIyMiw2
ICszMjEsMTcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICAgICAg
Z2xDb250ZXh0LT5zd2FwQnVmZmVycyhtX3N1cmZhY2UuZ2V0KCkpOwogICAgICAgICAgICAgcEds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBvbGRGQk8pOwogICAgICAgICB9CisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgICAgIEdMWENvbnRleHQgZ2xDb250ZXh0ID0gZ2xYR2V0Q3Vy
cmVudENvbnRleHQoKTsKKworICAgICAgICBpZiAobV9zdXJmYWNlICYmIGdsQ29udGV4dCkgewor
ICAgICAgICAgICAgR0xpbnQgb2xkRkJPOworICAgICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9G
UkFNRUJVRkZFUl9CSU5ESU5HLCAmb2xkRkJPKTsKKyAgICAgICAgICAgIHBHbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgICAgICAgICBnbFhTd2FwQnVmZmVycyhtX2Rp
c3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG9sZEZCTyk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQg
Y29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QpCkBAIC0yNDIsNyArMzUyLDExIEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsK
ICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKICAgICAgICAg
cEdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmUsIDApOwogCisjaWYgUExBVEZPUk0oUVQp
CiAgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBnbENvbnRl
eHQoKS0+ZGVmYXVsdEZyYW1lYnVmZmVyT2JqZWN0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKQor
ICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgMCk7CisjZW5k
aWYKICAgICAgICAgcEdsQmxpdEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CiAKICAgICAg
ICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIDAsIDApOwpAQCAtMjU0LDE0ICszNjgsMTUgQEAg
c3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICBkb25lQ3VycmVudCgpOwog
ICAgIH0KIAotCiAgICAgRGlzcGxheSogZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eTsgfQogCiAgICAgR0xYUGl4bWFwIGdseFBpeG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2x4UGl4
bWFwOyB9CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAor
I2lmIFBMQVRGT1JNKFFUKQogICAgIFFPcGVuR0xDb250ZXh0KiBnbENvbnRleHQoKSB7IHJldHVy
biBtX2dsQ29udGV4dC5nZXQoKTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgT2ZmU2NyZWVu
Um9vdFdpbmRvdyBtX29mZlNjcmVlbldpbmRvdzsKQEAgLTI2OSwxMCArMzg0LDE4IEBAIHByaXZh
dGU6CiAgICAgRGlzcGxheSogbV9kaXNwbGF5OwogICAgIFBpeG1hcCBtX3hQaXhtYXA7CiAgICAg
R0xYUGl4bWFwIG1fZ2x4UGl4bWFwOworI2lmIFBMQVRGT1JNKFFUKQogICAgIE93blB0cjxRV2lu
ZG93PiBtX3N1cmZhY2U7CiAgICAgT3duUHRyPFFPcGVuR0xDb250ZXh0PiBtX2dsQ29udGV4dDsK
ICAgICBRT3BlbkdMQ29udGV4dCogbV9kZXRhY2hlZENvbnRleHQ7CiAgICAgUVN1cmZhY2UqIG1f
ZGV0YWNoZWRTdXJmYWNlOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIFdpbmRvdyBtX3N1cmZh
Y2U7CisgICAgR0xYQ29udGV4dCBtX2dsQ29udGV4dDsKKyAgICBHTFhDb250ZXh0IG1fZGV0YWNo
ZWRDb250ZXh0OworICAgIEdMWERyYXdhYmxlIG1fZGV0YWNoZWRTdXJmYWNlOworICAgIEdMWEZC
Q29uZmlnKiBtX2ZiQ29uZmlnczsKKyNlbmRpZgogICAgIGJvb2wgbV90ZXh0dXJlSXNZSW52ZXJ0
ZWQ7CiAgICAgYm9vbCBtX2hhc0FscGhhOwogfTsKQEAgLTI4Miw3ICs0MDUsNyBAQCBzdGF0aWMg
Ym9vbCByZXNvbHZlR0xNZXRob2RzKEdyYXBoaWNzU3VyCiAgICAgc3RhdGljIGJvb2wgcmVzb2x2
ZWQgPSBmYWxzZTsKICAgICBpZiAocmVzb2x2ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwotCisj
aWYgUExBVEZPUk0oUVQpCiAgICAgUU9wZW5HTENvbnRleHQqIGdsQ29udGV4dCA9IHAtPmdsQ29u
dGV4dCgpOwogICAgIHBHbFhCaW5kVGV4SW1hZ2VFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdM
WEJJTkRURVhJTUFHRUVYVFBST0M+KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsWEJpbmRU
ZXhJbWFnZUVYVCIpKTsKICAgICBwR2xYUmVsZWFzZVRleEltYWdlRVhUID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTFhSRUxFQVNFVEVYSU1BR0VFWFRQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRy
ZXNzKCJnbFhSZWxlYXNlVGV4SW1hZ2VFWFQiKSk7CkBAIC0yOTIsNyArNDE1LDE2IEBAIHN0YXRp
YyBib29sIHJlc29sdmVHTE1ldGhvZHMoR3JhcGhpY3NTdXIKICAgICBwR2xHZW5GcmFtZWJ1ZmZl
cnMgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VORlJBTUVCVUZGRVJTUFJPQz4oZ2xDb250ZXh0
LT5nZXRQcm9jQWRkcmVzcygiZ2xHZW5GcmFtZWJ1ZmZlcnMiKSk7CiAgICAgcEdsRGVsZXRlRnJh
bWVidWZmZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0M+
KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsRGVsZXRlRnJhbWVidWZmZXJzIikpOwogICAg
IHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEZSQU1FQlVG
RkVSVEVYVFVSRTJEUFJPQz4oZ2xDb250ZXh0LT5nZXRQcm9jQWRkcmVzcygiZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRCIpKTsKLQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHBHbFhCaW5kVGV4SW1h
Z2VFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMWEJJTkRURVhJTUFHRUVYVFBST0M+KGdsWEdl
dFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbFhCaW5kVGV4
SW1hZ2VFWFQiKSkpOworICAgIHBHbFhSZWxlYXNlVGV4SW1hZ2VFWFQgPSByZWludGVycHJldF9j
YXN0PFBGTkdMWFJFTEVBU0VURVhJTUFHRUVYVFBST0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbFhSZWxlYXNlVGV4SW1hZ2VFWFQiKSkpOwor
ICAgIHBHbEJpbmRGcmFtZWJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCSU5ERlJBTUVC
VUZGRVJQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5
dGUqPigiZ2xCaW5kRnJhbWVidWZmZXIiKSkpOworICAgIHBHbEJsaXRGcmFtZWJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTElURlJBTUVCVUZGRVJQUk9DPihnbFhHZXRQcm9jQWRkcmVz
cyhyZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xCbGl0RnJhbWVidWZmZXIiKSkp
OworCisgICAgcEdsR2VuRnJhbWVidWZmZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFTkZS
QU1FQlVGRkVSU1BST0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0x1Ynl0ZSo+KCJnbEdlbkZyYW1lYnVmZmVycyIpKSk7CisgICAgcEdsRGVsZXRlRnJhbWVidWZm
ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0M+KGdsWEdl
dFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbERlbGV0ZUZy
YW1lYnVmZmVycyIpKSk7CisgICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFMkRQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCIp
KSk7CisjZW5kaWYKICAgICByZXNvbHZlZCA9IHBHbEJsaXRGcmFtZWJ1ZmZlciAmJiBwR2xCaW5k
RnJhbWVidWZmZXIgJiYgcEdsWEJpbmRUZXhJbWFnZUVYVCAmJiBwR2xYUmVsZWFzZVRleEltYWdl
RVhUOwogCiAgICAgcmV0dXJuIHJlc29sdmVkOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTMy
NTU0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMTAtMjUgIFJlZ2luYSBDaHVuZyAgPGhlZWppbi5yLmNodW5nQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gRW5hYmxlIFdlYkdMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzY1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEd5dXlvdW5nIEtpbS4KKworICAgICAgICBTZXQgV2ViR0xFbmFibGVkIHRvIHRydWUg
d2hlbiBXZWJHTCBpcyBlbmFibGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X2luaXRpYWxpemUpOgorCiAyMDEyLTEwLTI1
ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBV
c2UgcGVyIGRlc3RpbmF0aW9uIElEIG1lc3NhZ2UgcmVjZWl2ZXJzIGZvciBEb3dubG9hZFByb3h5
LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzUsNiArNTc1LDkgQEAgc3RhdGljIHZv
aWQgX2V3a192aWV3X2luaXRpYWxpemUoRXZhc19PYgogICAgIGltcGwtPnBhZ2VQcm94eS0+cGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KHRydWUpOwogICAgIGltcGwtPnBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkt
PnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwogICAgIGltcGwtPnBhZ2VQcm94eS0+c2V0
VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIHByaXYtPnBhZ2VQ
cm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldFdlYkdMRW5hYmxlZCh0cnVlKTsK
KyNlbmRpZgogI2VuZGlmCiAgICAgaW1wbC0+cGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgp
OwogCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksMTEg
QEAgSUYgKFdURl9VU0VfVElMRURfQkFDS0lOR19TVE9SRSkKICAgU0VUKFdURl9VU0VfM0RfR1JB
UEhJQ1MgMSkKICAgQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV8zRF9HUkFQSElDUz0xKQogCisg
IFNFVCAoRU5BQkxFX1dFQkdMIDEpCisgIFNFVCAoV1RGX1VTRV9HUkFQSElDU19TVVJGQUNFIDEp
CisgIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfR1JBUEhJQ1NfU1VSRkFDRT0xKQorICBBRERf
REVGSU5JVElPTlMoLURIQVZFX0dMWCkKKwogICBGSU5EX1BBQ0tBR0UoT3BlbkdMIFJFUVVJUkVE
KQogRU5ESUYoKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170789</attachid>
            <date>2012-10-25 19:40:37 -0700</date>
            <delta_ts>2012-10-25 19:51:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97652-20121026114009.patch</filename>
            <type>text/plain</type>
            <size>25379</size>
            <attacher name="Regina Chung">heejin.r.chung</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjU1
NCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEw
LTI1ICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBL
aW0uCisKKyAgICAgICAgVXNlIEdyYXBoaWNzIFN1cmZhY2UgdG8gZW5hYmxlIFdlYkdMIGZvciBX
ZWJLaXQyIEVGTC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOgor
CiAyMDEyLTEwLTI1ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRl
bC5jb20+CiAKICAgICAgICAgQWRkaW5nIGZlYXR1cmUgZm9yIFhIUl9USU1FT1VUCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMzI1NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw2NiBAQAorMjAxMi0xMC0yNSAgUmVnaW5hIENodW5nICA8
aGVlamluLnIuY2h1bmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBFbmFibGUg
V2ViR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAgIEltcGxl
bWVudGVkIEdyYXBoaWNzU3VyZmFjZSBmb3IgRUZMIHRvIGVuYWJsZSBXZWJHTCBmb3IgV2ViS2l0
Mi4KKyAgICAgICAgRGVwZW5kcyBvbiBHTFggc2luY2UgRXZhcyBkb2Vzbid0IHByb3ZpZGUgdGhl
IG5lY2Vzc2FyeSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc1N1cmZhY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NT
dXJmYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNv
cHlUb0dyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgIChHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZWZsOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwv
R3JhcGhpY3NTdXJmYWNlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6OmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpPZmZTY3JlZW5Sb290V2luZG93Ojp+T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUJlZ2luUGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpjcmVhdGVSZWFkT25seUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZh
Y2VHTFguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBo
aWNzU3VyZmFjZUdMWC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoT2Zm
U2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpPZmZTY3JlZW5Sb290V2luZG93
OjpPZmZTY3JlZW5Sb290V2luZG93KToKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6fkdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6
Y3JlYXRlUGl4bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OmNvcHlGcm9tVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2
YXRlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OmdseFBpeG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpz
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmdsQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR0xNZXRob2RzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6Ok9mZlNj
cmVlblJvb3RXaW5kb3c6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZTY3JlZW5Sb290V2lu
ZG93Ojp+T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMpOgorCiAyMDEyLTEwLTI1ICBL
ZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIEhpZGUgcG9wdXAg
d2hpbGUgdHJhbnNpdGlvbmluZyBmcm9tIHRoZSBzdWdnZXN0aW9uIHBpY2tlciB0byB0aGUgY2Fs
ZW5kYXIgcGlja2VyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTMy
NTU0KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTMsNiArMyw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9lZmwiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9l
ZmwiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwiCisgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcyIKICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2xpbnV4IgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyIgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgpAQCAtMjk0
LDYgKzI5NSw5IEBAIElGIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUVmbC5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCiAgICkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCB0
eXBlZGVmIFFPcGVuR0xDb250ZXh0KiBQbGF0Zm9ybUdyYXBoaWNzCiB0eXBlZGVmIFFTdXJmYWNl
KiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTNEOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRDsKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFwaGljc1N1cmZh
Y2UzRDsKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShCTEFD
S0JFUlJZKSkgJiYgVVNFKFNLSUEpCkBAIC05NDcsNyArOTQ4LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCByZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCByZXNvbHZlTXVsdGlz
YW1wbGluZ0lmTmVjZXNzYXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKLSNpZiBQTEFU
Rk9STShRVCkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaWYgKFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShFRkwpKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2b2lkIGNyZWF0ZUdy
YXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNERWZsLmNwcAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52
YXMoY28KICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIG1fcHJpdmF0ZS0+Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhzaXpl
KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAko
cmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRl
eHRDYWlyby5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzX0dMLmg+
CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CkBAIC04Nyw2ICs4OCwxMyBAQCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4CiAgICAgICAgIHJldHVybjsKIAogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAg
SW50U2l6ZSBzdXJmYWNlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQt
Pm1fY3VycmVudEhlaWdodCk7CisgICAgbV9zdXJmYWNlRmxhZ3MgPSBHcmFwaGljc1N1cmZhY2U6
OlN1cHBvcnRzVGV4dHVyZVRhcmdldCB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFyaW5n
OworICAgIGlmICghc3VyZmFjZVNpemUuaXNFbXB0eSgpKQorICAgICAgICBtX2dyYXBoaWNzU3Vy
ZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHN1cmZhY2VTaXplLCBtX3N1cmZhY2VGbGFn
cyk7CisjZW5kaWYKIH0KIAogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKCkKQEAgLTEwMSw4ICsxMDksMTEgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjp+R3JhcGhpY3NDb250ZQogICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveShtX2V2
YXNHTCwgbV9ldmFzR0xDb250ZXh0KTsKIAogICAgIGV2YXNfZ2xfZnJlZShtX2V2YXNHTCk7Ci19
CiAKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBtX2dyYXBoaWNzU3VyZmFjZS5jbGVh
cigpOworI2VuZGlmCit9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVT
dXJmYWNlKFBhZ2VDbGllbnRFZmwqIHBhZ2VDbGllbnQsIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpCiB7CkBAIC0xNjksNiArMTgwLDMyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpwYWludFRvVGUKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogI2VuZGlmCisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQorICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS5jbGVhcigpOworICAgIGVs
c2UKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShz
aXplLCBtX3N1cmZhY2VGbGFncyk7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y29weVRvR3JhcGhpY3NTdXJmYWNlKCkKK3sKKyAgICBpZiAoIW1fZ3JhcGhpY3NTdXJm
YWNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fZ3JhcGhpY3NTdXJmYWNlLT5jb3B5RnJvbVRleHR1cmUobV9jb250ZXh0LT5tX3RleHR1cmUs
IEludFJlY3QoMCwgMCwgbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5tX2N1
cnJlbnRIZWlnaHQpKTsKKyAgICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZmZXJz
KCk7Cit9CisKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzU3Vy
ZmFjZS0+ZXhwb3J0VG9rZW4oKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBVU0UoM0RfR1JBUEhJQ1MpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgJKHJldmlzaW9uIDEzMjU1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTAgQEAKICNpbmNsdWRl
IDx0ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaD4KICNlbmRpZgogCisjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCisjZW5kaWYK
KwogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfR0wgICAgICAgICAgICAgICBFdmFzX0dMOwogdHlwZWRl
ZiBzdHJ1Y3QgX0V2YXNfR0xfU3VyZmFjZSAgICAgICBFdmFzX0dMX1N1cmZhY2U7CiB0eXBlZGVm
IHN0cnVjdCBfRXZhc19HTF9Db250ZXh0ICAgICAgIEV2YXNfR0xfQ29udGV4dDsKQEAgLTUyLDYg
KzU2LDEyIEBAIHB1YmxpYzoKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBC
aXRtYXBUZXh0dXJlKiBtYXNrKTsKICNlbmRpZgorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQor
ICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCk7CisgICAgdmlydHVh
bCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0OworICAg
IHZvaWQgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRTaXplJik7CisjZW5kaWYKKwog
ICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgYm9vbCBjcmVhdGVTdXJmYWNlKFBh
Z2VDbGllbnRFZmwqLCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpOwogICAgIHZv
aWQgc2V0Q3VycmVudEdMQ29udGV4dCh2b2lkKiwgdm9pZCopOwpAQCAtNTksNiArNjksMTAgQEAg
cHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsK
ICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEhvc3RXaW5kb3cqIG1faG9z
dFdpbmRvdzsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBHcmFwaGljc1N1cmZhY2U6
OkZsYWdzIG1fc3VyZmFjZUZsYWdzOworICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IG1fZ3Jh
cGhpY3NTdXJmYWNlOworI2VuZGlmCiAKICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT4gbV9zeW50
aGV0aWNFcnJvcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJl
c2hhcGUoaW50IHdpZHQKICAgICBpZiAod2lkdGggPT0gbV9jdXJyZW50V2lkdGggJiYgaGVpZ2h0
ID09IG1fY3VycmVudEhlaWdodCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oUVQp
ICYmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2lmIChQTEFURk9STShRVCkgfHwgUExBVEZPUk0o
RUZMKSkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgOjpnbEZsdXNoKCk7IC8vIE1ha2Ug
c3VyZSBhbGwgR0wgY2FsbHMgaGF2ZSBiZWVuIGNvbW1pdHRlZCBiZWZvcmUgcmVzaXppbmcuCiAg
ICAgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dy
YXBoaWNzU3VyZmFjZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUVmbC5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3Jh
cGhpY3NTdXJmYWNlRWZsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKKworI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKSAmJiBQTEFURk9STShFRkwpCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dD4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUJlZ2luUGFpbnQoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY2hhciogYml0cywgaW50IHN0cmlkZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitQYXNzUmVmUHRyPEltYWdlPiBHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZVJlYWRPbmx5SW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9CisKKyNlbmRpZgoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dy
YXBoaWNzU3VyZmFjZUVmbC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAg
KyAqCgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQv
R3JhcGhpY3NTdXJmYWNlR0xYLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCShyZXZpc2lv
biAxMzI1NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9x
dC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTgg
QEAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJH
TC5oIgorCisjaWYgUExBVEZPUk0oUVQpCiAvLyBRdCBoZWFkZXJzIG11c3QgYmUgaW5jbHVkZWQg
YmVmb3JlIGdseCBoZWFkZXJzLgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UU9wZW5HTENvbnRleHQ+CiAjaW5jbHVkZSA8UVZlY3Rvcj4KICNpbmNsdWRlIDxRV2luZG93
PgogI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm13aW5kb3cuaD4KKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyNpbmNsdWRlIDxHTC9nbC5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxHTC9nbGV4dC5oPgogI2lu
Y2x1ZGUgPEdML2dseC5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4K
QEAgLTUzLDYgKzU5LDcgQEAgcHVibGljOgogICAgICAgICArK3JlZkNvdW50OwogICAgIH0KIAor
I2lmIFBMQVRGT1JNKFFUKSAKICAgICBRV2luZG93KiBnZXQoRGlzcGxheSogZHB5KQogICAgIHsK
ICAgICAgICAgaWYgKCF3aW5kb3cpIHsKQEAgLTY3LDIyICs3NCw1MiBAQCBwdWJsaWM6CiAKICAg
ICAgICAgcmV0dXJuIHdpbmRvdzsKICAgICB9CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgV2lu
ZG93KiBnZXQoRGlzcGxheSogZHB5KQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cpIHsKKyAg
ICAgICAgICAgIHdpbmRvdyA9IFhDcmVhdGVTaW1wbGVXaW5kb3coZHB5LCBYRGVmYXVsdFJvb3RX
aW5kb3coZHB5KSwgLTEsIC0xLCAxLCAxLCAwLCBCbGFja1BpeGVsKGRweSwgMCksIFdoaXRlUGl4
ZWwoZHB5LCAwKSk7CisgICAgICAgICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OworICAgICAgICAgICAgYXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IHRydWU7CisgICAg
ICAgICAgICBYQ2hhbmdlV2luZG93QXR0cmlidXRlcyhkcHksIHdpbmRvdywgWDExT3ZlcnJpZGVS
ZWRpcmVjdCwgJmF0dHJpYnV0ZXMpOworICAgICAgICAgICAgZGlzcGxheSA9IGRweTsKKyAgICAg
ICAgICAgIC8vIE1hcCB3aW5kb3cgdG8gdGhlIHNjcmVlbgorICAgICAgICAgICAgWE1hcFdpbmRv
dyhkcHksIHdpbmRvdyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gJndpbmRvdzsKKyAg
ICB9CisjZW5kaWYKIAogICAgIH5PZmZTY3JlZW5Sb290V2luZG93KCkKICAgICB7CiAgICAgICAg
IGlmICghLS1yZWZDb3VudCkgeworI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgZGVsZXRl
IHdpbmRvdzsKICAgICAgICAgICAgIHdpbmRvdyA9IDA7CisjZWxpZiBQTEFURk9STShFRkwpCisg
ICAgICAgICAgICBYVW5tYXBXaW5kb3coZGlzcGxheSwgd2luZG93KTsKKyAgICAgICAgICAgIFhE
ZXN0cm95V2luZG93KGRpc3BsYXksIHdpbmRvdyk7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0K
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IHJlZkNvdW50OworI2lmIFBMQVRGT1JNKFFUKQog
ICAgIHN0YXRpYyBRV2luZG93KiB3aW5kb3c7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgc3Rh
dGljIFdpbmRvdyB3aW5kb3c7CisgICAgRGlzcGxheSogZGlzcGxheTsKKyNlbmRpZgogfTsKIAog
aW50IE9mZlNjcmVlblJvb3RXaW5kb3c6OnJlZkNvdW50ID0gMDsKKyNpZiBQTEFURk9STShRVCkK
IFFXaW5kb3cqIE9mZlNjcmVlblJvb3RXaW5kb3c6OndpbmRvdyA9IDA7CisjZWxpZiBQTEFURk9S
TShFRkwpCitXaW5kb3cgT2ZmU2NyZWVuUm9vdFdpbmRvdzo6d2luZG93ID0gMDsKKyNlbmRpZgog
CiBzdGF0aWMgY29uc3QgaW50IGdseFNwZWNbXSA9IHsKICAgICAvLyBUaGUgc3BlY2lmaWNhdGlv
biBpcyBhIHNldCBrZXkgdmFsdWUgcGFpcnMgc3RvcmVkIGluIGEgc2ltcGxlIGFycmF5LgpAQCAt
MTA2LDEyICsxNDMsMTcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAg
ICA6IG1fZGlzcGxheSgwKQogICAgICAgICAsIG1feFBpeG1hcCgwKQogICAgICAgICAsIG1fZ2x4
UGl4bWFwKDApCisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICwgbV9nbENvbnRleHQoYWRvcHRQ
dHIobmV3IFFPcGVuR0xDb250ZXh0KSkKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgLCBt
X2dsQ29udGV4dCgwKQorI2VuZGlmCiAgICAgICAgICwgbV9kZXRhY2hlZENvbnRleHQoMCkKICAg
ICAgICAgLCBtX2RldGFjaGVkU3VyZmFjZSgwKQogICAgICAgICAsIG1fdGV4dHVyZUlzWUludmVy
dGVkKGZhbHNlKQogICAgICAgICAsIG1faGFzQWxwaGEoZmFsc2UpCiAgICAgeworI2lmIFBMQVRG
T1JNKFFUKQogICAgICAgICBRU3VyZmFjZSogY3VycmVudFN1cmZhY2UgPSAwOwogICAgICAgICBR
T3BlbkdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENv
bnRleHQoKTsKICAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KQpAQCAtMTI1LDYgKzE2NywyNSBA
QCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIC8vIFRoZXJlZm9yZSB3
ZSBoYXZlIHRvIG1ha2UgdGhlIHByZXZpb3VzIGNvbnRleHQgY3VycmVudCBhZ2Fpbi4KICAgICAg
ICAgaWYgKGN1cnJlbnRDb250ZXh0KQogICAgICAgICAgICAgY3VycmVudENvbnRleHQtPm1ha2VD
dXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgbV9k
aXNwbGF5ID0gWE9wZW5EaXNwbGF5KDApOworCisgICAgICAgIGludCBhdHRyaWJ1dGVzW10gPSB7
CisgICAgICAgICAgICBHTFhfTEVWRUwsIDAsCisgICAgICAgICAgICBHTFhfRFJBV0FCTEVfVFlQ
RSwgR0xYX1dJTkRPV19CSVQsCisgICAgICAgICAgICBHTFhfUkVOREVSX1RZUEUsICAgR0xYX1JH
QkFfQklULAorICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsCisgICAgICAgICAgICBH
TFhfR1JFRU5fU0laRSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9CTFVFX1NJWkUsICAgICAxLAor
ICAgICAgICAgICAgR0xYX0RPVUJMRUJVRkZFUiwgIFRydWUsCisgICAgICAgICAgICBOb25lCisg
ICAgICAgIH07CisKKyAgICAgICAgaW50IG51bVJldHVybmVkOworICAgICAgICBtX2ZiQ29uZmln
cyA9IGdsWENob29zZUZCQ29uZmlnKG1fZGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX2Rpc3BsYXkp
LCBhdHRyaWJ1dGVzLCAmbnVtUmV0dXJuZWQpOworICAgICAgICAvLyBDcmVhdGUgYSBHTFggY29u
dGV4dCBmb3IgT3BlbkdMIHJlbmRlcmluZworICAgICAgICBtX2dsQ29udGV4dCA9IGdsWENyZWF0
ZU5ld0NvbnRleHQobV9kaXNwbGF5LCBtX2ZiQ29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgMCwg
dHJ1ZSk7CisjZW5kaWYKICAgICB9CiAKICAgICB+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSgpCkBA
IC0xNDQsNiArMjA1LDcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogCiAgICAg
dWludDMyX3QgY3JlYXRlU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKKyNpZiBQ
TEFURk9STShRVCkKICAgICAgICAgbV9zdXJmYWNlID0gYWRvcHRQdHIobmV3IFFXaW5kb3cobV9v
ZmZTY3JlZW5XaW5kb3cuZ2V0KG1fZGlzcGxheSkpKTsKICAgICAgICAgbV9zdXJmYWNlLT5zZXRT
dXJmYWNlVHlwZShRU3VyZmFjZTo6T3BlbkdMU3VyZmFjZSk7CiAgICAgICAgIG1fc3VyZmFjZS0+
c2V0R2VvbWV0cnkoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKQEAgLTE1OCw2
ICsyMjAsMzAgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICBtX3N1
cmZhY2UtPnNob3coKTsKIAogICAgICAgICByZXR1cm4gbV9zdXJmYWNlLT5oYW5kbGUoKS0+d2lu
SWQoKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgWFZpc3VhbEluZm8qIHZpc3VhbElu
Zm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9kaXNwbGF5LCBtX2ZiQ29uZmlnc1swXSk7
CisgICAgICAgIGlmICghdmlzdWFsSW5mbykKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAg
ICAgIENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCAqbV9vZmZTY3Jl
ZW5XaW5kb3cuZ2V0KG1fZGlzcGxheSksIHZpc3VhbEluZm8tPnZpc3VhbCwgQWxsb2NOb25lKTsK
KyAgICAgICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMgYTsKKyAgICAgICAgYS5iYWNrZ3JvdW5kX3Bp
eGVsID0gV2hpdGVQaXhlbChtX2Rpc3BsYXksIDApOworICAgICAgICBhLmJvcmRlcl9waXhlbCA9
IEJsYWNrUGl4ZWwobV9kaXNwbGF5LCAwKTsKKyAgICAgICAgYS5jb2xvcm1hcCA9IGNtYXA7Cisg
ICAgICAgIG1fc3VyZmFjZSA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LCAqbV9vZmZTY3JlZW5X
aW5kb3cuZ2V0KG1fZGlzcGxheSksIDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwK
KyAgICAgICAgICAgIDAsIHZpc3VhbEluZm8tPmRlcHRoLCBJbnB1dE91dHB1dCwgdmlzdWFsSW5m
by0+dmlzdWFsLAorICAgICAgICAgICAgQ1dCYWNrUGl4ZWwgfCBDV0JvcmRlclBpeGVsIHwgQ1dD
b2xvcm1hcCwgJmEpOworICAgICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcChtX2Rpc3Bs
YXksIG1fc3VyZmFjZSwgMCk7CisgICAgICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rp
c3BsYXksIG1fc3VyZmFjZSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworCisgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGUgWFJlbmRlciBFeHRlbnNpb24gaXMgYXZhaWxhYmxlLgorICAgICAgICBp
bnQgZXZlbnRCYXNlcCwgZXJyb3JCYXNlcDsKKyAgICAgICAgaWYgKCFYUmVuZGVyUXVlcnlFeHRl
bnNpb24obV9kaXNwbGF5LCAmZXZlbnRCYXNlcCwgJmVycm9yQmFzZXApKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7Cisg
ICAgICAgIHJldHVybiBtX3N1cmZhY2U7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGNyZWF0
ZVBpeG1hcCh1aW50MzJfdCB3aW5JZCkKQEAgLTE4NCwxOCArMjcwLDMwIEBAIHN0cnVjdCBHcmFw
aGljc1N1cmZhY2VQcml2YXRlIHsKIAogICAgIHZvaWQgbWFrZUN1cnJlbnQoKQogICAgIHsKKyNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSBRT3BlbkdMQ29udGV4
dDo6Y3VycmVudENvbnRleHQoKTsKICAgICAgICAgaWYgKG1fZGV0YWNoZWRDb250ZXh0KQogICAg
ICAgICAgICAgbV9kZXRhY2hlZFN1cmZhY2UgPSBtX2RldGFjaGVkQ29udGV4dC0+c3VyZmFjZSgp
OwogCiAgICAgICAgIGlmIChtX3N1cmZhY2UgJiYgbV9nbENvbnRleHQpCiAgICAgICAgICAgICBt
X2dsQ29udGV4dC0+bWFrZUN1cnJlbnQobV9zdXJmYWNlLmdldCgpKTsKKyNlbGlmIFBMQVRGT1JN
KEVGTCkKKyAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSBnbFhHZXRDdXJyZW50Q29udGV4dCgp
OworICAgICAgICBtX2RldGFjaGVkU3VyZmFjZSA9IGdsWEdldEN1cnJlbnREcmF3YWJsZSgpOwor
ICAgICAgICBpZiAobV9zdXJmYWNlICYmIG1fZ2xDb250ZXh0KQorICAgICAgICAgICAgZ2xYTWFr
ZUN1cnJlbnQobV9kaXNwbGF5LCBtX3N1cmZhY2UsIG1fZ2xDb250ZXh0KTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHZvaWQgZG9uZUN1cnJlbnQoKQogICAgIHsKICAgICAgICAgaWYgKG1fZGV0YWNo
ZWRDb250ZXh0KQorI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgbV9kZXRhY2hlZENvbnRl
eHQtPm1ha2VDdXJyZW50KG1fZGV0YWNoZWRTdXJmYWNlKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyAgICAgICAgICAgIGdsWE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9kZXRhY2hlZFN1cmZhY2Us
IG1fZGV0YWNoZWRDb250ZXh0KTsgICAgCisjZW5kaWYKKyAgICAgICAgbV9kZXRhY2hlZENvbnRl
eHQgPSAwOwogICAgIH0KIAogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKQpAQCAtMjA2LDYgKzMwNCw3
IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgaWYgKG1feFBpeG1h
cCkKICAgICAgICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBpZiAo
IW1fc3VyZmFjZS0+aXNWaXNpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIyMiw2
ICszMjEsMTcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICAgICAg
Z2xDb250ZXh0LT5zd2FwQnVmZmVycyhtX3N1cmZhY2UuZ2V0KCkpOwogICAgICAgICAgICAgcEds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBvbGRGQk8pOwogICAgICAgICB9CisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgICAgIEdMWENvbnRleHQgZ2xDb250ZXh0ID0gZ2xYR2V0Q3Vy
cmVudENvbnRleHQoKTsKKworICAgICAgICBpZiAobV9zdXJmYWNlICYmIGdsQ29udGV4dCkgewor
ICAgICAgICAgICAgR0xpbnQgb2xkRkJPOworICAgICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9G
UkFNRUJVRkZFUl9CSU5ESU5HLCAmb2xkRkJPKTsKKyAgICAgICAgICAgIHBHbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgICAgICAgICBnbFhTd2FwQnVmZmVycyhtX2Rp
c3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG9sZEZCTyk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQg
Y29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QpCkBAIC0yNDIsNyArMzUyLDExIEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsK
ICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKICAgICAgICAg
cEdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmUsIDApOwogCisjaWYgUExBVEZPUk0oUVQp
CiAgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBnbENvbnRl
eHQoKS0+ZGVmYXVsdEZyYW1lYnVmZmVyT2JqZWN0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKQor
ICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgMCk7CisjZW5k
aWYKICAgICAgICAgcEdsQmxpdEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CiAKICAgICAg
ICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIDAsIDApOwpAQCAtMjU0LDE0ICszNjgsMTUgQEAg
c3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICBkb25lQ3VycmVudCgpOwog
ICAgIH0KIAotCiAgICAgRGlzcGxheSogZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eTsgfQogCiAgICAgR0xYUGl4bWFwIGdseFBpeG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2x4UGl4
bWFwOyB9CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAor
I2lmIFBMQVRGT1JNKFFUKQogICAgIFFPcGVuR0xDb250ZXh0KiBnbENvbnRleHQoKSB7IHJldHVy
biBtX2dsQ29udGV4dC5nZXQoKTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgT2ZmU2NyZWVu
Um9vdFdpbmRvdyBtX29mZlNjcmVlbldpbmRvdzsKQEAgLTI2OSwxMCArMzg0LDE4IEBAIHByaXZh
dGU6CiAgICAgRGlzcGxheSogbV9kaXNwbGF5OwogICAgIFBpeG1hcCBtX3hQaXhtYXA7CiAgICAg
R0xYUGl4bWFwIG1fZ2x4UGl4bWFwOworI2lmIFBMQVRGT1JNKFFUKQogICAgIE93blB0cjxRV2lu
ZG93PiBtX3N1cmZhY2U7CiAgICAgT3duUHRyPFFPcGVuR0xDb250ZXh0PiBtX2dsQ29udGV4dDsK
ICAgICBRT3BlbkdMQ29udGV4dCogbV9kZXRhY2hlZENvbnRleHQ7CiAgICAgUVN1cmZhY2UqIG1f
ZGV0YWNoZWRTdXJmYWNlOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIFdpbmRvdyBtX3N1cmZh
Y2U7CisgICAgR0xYQ29udGV4dCBtX2dsQ29udGV4dDsKKyAgICBHTFhDb250ZXh0IG1fZGV0YWNo
ZWRDb250ZXh0OworICAgIEdMWERyYXdhYmxlIG1fZGV0YWNoZWRTdXJmYWNlOworICAgIEdMWEZC
Q29uZmlnKiBtX2ZiQ29uZmlnczsKKyNlbmRpZgogICAgIGJvb2wgbV90ZXh0dXJlSXNZSW52ZXJ0
ZWQ7CiAgICAgYm9vbCBtX2hhc0FscGhhOwogfTsKQEAgLTI4Miw3ICs0MDUsNyBAQCBzdGF0aWMg
Ym9vbCByZXNvbHZlR0xNZXRob2RzKEdyYXBoaWNzU3VyCiAgICAgc3RhdGljIGJvb2wgcmVzb2x2
ZWQgPSBmYWxzZTsKICAgICBpZiAocmVzb2x2ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwotCisj
aWYgUExBVEZPUk0oUVQpCiAgICAgUU9wZW5HTENvbnRleHQqIGdsQ29udGV4dCA9IHAtPmdsQ29u
dGV4dCgpOwogICAgIHBHbFhCaW5kVGV4SW1hZ2VFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdM
WEJJTkRURVhJTUFHRUVYVFBST0M+KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsWEJpbmRU
ZXhJbWFnZUVYVCIpKTsKICAgICBwR2xYUmVsZWFzZVRleEltYWdlRVhUID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTFhSRUxFQVNFVEVYSU1BR0VFWFRQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRy
ZXNzKCJnbFhSZWxlYXNlVGV4SW1hZ2VFWFQiKSk7CkBAIC0yOTIsNyArNDE1LDE2IEBAIHN0YXRp
YyBib29sIHJlc29sdmVHTE1ldGhvZHMoR3JhcGhpY3NTdXIKICAgICBwR2xHZW5GcmFtZWJ1ZmZl
cnMgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VORlJBTUVCVUZGRVJTUFJPQz4oZ2xDb250ZXh0
LT5nZXRQcm9jQWRkcmVzcygiZ2xHZW5GcmFtZWJ1ZmZlcnMiKSk7CiAgICAgcEdsRGVsZXRlRnJh
bWVidWZmZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0M+
KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsRGVsZXRlRnJhbWVidWZmZXJzIikpOwogICAg
IHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEZSQU1FQlVG
RkVSVEVYVFVSRTJEUFJPQz4oZ2xDb250ZXh0LT5nZXRQcm9jQWRkcmVzcygiZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRCIpKTsKLQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHBHbFhCaW5kVGV4SW1h
Z2VFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMWEJJTkRURVhJTUFHRUVYVFBST0M+KGdsWEdl
dFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbFhCaW5kVGV4
SW1hZ2VFWFQiKSkpOworICAgIHBHbFhSZWxlYXNlVGV4SW1hZ2VFWFQgPSByZWludGVycHJldF9j
YXN0PFBGTkdMWFJFTEVBU0VURVhJTUFHRUVYVFBST0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbFhSZWxlYXNlVGV4SW1hZ2VFWFQiKSkpOwor
ICAgIHBHbEJpbmRGcmFtZWJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCSU5ERlJBTUVC
VUZGRVJQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5
dGUqPigiZ2xCaW5kRnJhbWVidWZmZXIiKSkpOworICAgIHBHbEJsaXRGcmFtZWJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTElURlJBTUVCVUZGRVJQUk9DPihnbFhHZXRQcm9jQWRkcmVz
cyhyZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xCbGl0RnJhbWVidWZmZXIiKSkp
OworCisgICAgcEdsR2VuRnJhbWVidWZmZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFTkZS
QU1FQlVGRkVSU1BST0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0x1Ynl0ZSo+KCJnbEdlbkZyYW1lYnVmZmVycyIpKSk7CisgICAgcEdsRGVsZXRlRnJhbWVidWZm
ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0M+KGdsWEdl
dFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbERlbGV0ZUZy
YW1lYnVmZmVycyIpKSk7CisgICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFMkRQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCIp
KSk7CisjZW5kaWYKICAgICByZXNvbHZlZCA9IHBHbEJsaXRGcmFtZWJ1ZmZlciAmJiBwR2xCaW5k
RnJhbWVidWZmZXIgJiYgcEdsWEJpbmRUZXhJbWFnZUVYVCAmJiBwR2xYUmVsZWFzZVRleEltYWdl
RVhUOwogCiAgICAgcmV0dXJuIHJlc29sdmVkOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTMy
NTU0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMTAtMjUgIFJlZ2luYSBDaHVuZyAgPGhlZWppbi5yLmNodW5nQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gRW5hYmxlIFdlYkdMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzY1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEd5dXlvdW5nIEtpbS4KKworICAgICAgICBTZXQgV2ViR0xFbmFibGVkIHRvIHRydWUg
d2hlbiBXZWJHTCBpcyBlbmFibGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X2luaXRpYWxpemUpOgorCiAyMDEyLTEwLTI1
ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBV
c2UgcGVyIGRlc3RpbmF0aW9uIElEIG1lc3NhZ2UgcmVjZWl2ZXJzIGZvciBEb3dubG9hZFByb3h5
LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzUsNiArNTc1LDkgQEAgc3RhdGljIHZv
aWQgX2V3a192aWV3X2luaXRpYWxpemUoRXZhc19PYgogICAgIGltcGwtPnBhZ2VQcm94eS0+cGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KHRydWUpOwogICAgIGltcGwtPnBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkt
PnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwogICAgIGltcGwtPnBhZ2VQcm94eS0+c2V0
VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGltcGxlLT5wYWdl
UHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRXZWJHTEVuYWJsZWQodHJ1ZSk7
CisjZW5kaWYKICNlbmRpZgogICAgIGltcGwtPnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2Uo
KTsKIApJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UJKHJldmlzaW9uIDEzMjU1NCkKKysrIFNvdXJj
ZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDEx
IEBAIElGIChXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgIFNFVChXVEZfVVNFXzNEX0dS
QVBISUNTIDEpCiAgIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfM0RfR1JBUEhJQ1M9MSkKIAor
ICBTRVQgKEVOQUJMRV9XRUJHTCAxKQorICBTRVQgKFdURl9VU0VfR1JBUEhJQ1NfU1VSRkFDRSAx
KQorICBBRERfREVGSU5JVElPTlMoLURXVEZfVVNFX0dSQVBISUNTX1NVUkZBQ0U9MSkKKyAgQURE
X0RFRklOSVRJT05TKC1ESEFWRV9HTFgpCisKICAgRklORF9QQUNLQUdFKE9wZW5HTCBSRVFVSVJF
RCkKIEVORElGKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170790</attachid>
            <date>2012-10-25 19:43:50 -0700</date>
            <delta_ts>2012-10-26 01:49:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97652-20121026114322.patch</filename>
            <type>text/plain</type>
            <size>25378</size>
            <attacher name="Regina Chung">heejin.r.chung</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjU1
NCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEw
LTI1ICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBL
aW0uCisKKyAgICAgICAgVXNlIEdyYXBoaWNzIFN1cmZhY2UgdG8gZW5hYmxlIFdlYkdMIGZvciBX
ZWJLaXQyIEVGTC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOgor
CiAyMDEyLTEwLTI1ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRl
bC5jb20+CiAKICAgICAgICAgQWRkaW5nIGZlYXR1cmUgZm9yIFhIUl9USU1FT1VUCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMzI1NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw2NiBAQAorMjAxMi0xMC0yNSAgUmVnaW5hIENodW5nICA8
aGVlamluLnIuY2h1bmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBFbmFibGUg
V2ViR0wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAgIEltcGxl
bWVudGVkIEdyYXBoaWNzU3VyZmFjZSBmb3IgRUZMIHRvIGVuYWJsZSBXZWJHTCBmb3IgV2ViS2l0
Mi4KKyAgICAgICAgRGVwZW5kcyBvbiBHTFggc2luY2UgRXZhcyBkb2Vzbid0IHByb3ZpZGUgdGhl
IG5lY2Vzc2FyeSBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHcmFwaGljc1N1cmZhY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NT
dXJmYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNv
cHlUb0dyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgIChHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZWZsOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwv
R3JhcGhpY3NTdXJmYWNlRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6OmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpPZmZTY3JlZW5Sb290V2luZG93Ojp+T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUJlZ2luUGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpjcmVhdGVSZWFkT25seUltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZh
Y2VHTFguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBo
aWNzU3VyZmFjZUdMWC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoT2Zm
U2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpPZmZTY3JlZW5Sb290V2luZG93
OjpPZmZTY3JlZW5Sb290V2luZG93KToKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6fkdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6
Y3JlYXRlUGl4bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OmNvcHlGcm9tVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2
YXRlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OmdseFBpeG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpz
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmdsQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlR0xNZXRob2RzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6Ok9mZlNj
cmVlblJvb3RXaW5kb3c6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZTY3JlZW5Sb290V2lu
ZG93Ojp+T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMpOgorCiAyMDEyLTEwLTI1ICBL
ZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIEhpZGUgcG9wdXAg
d2hpbGUgdHJhbnNpdGlvbmluZyBmcm9tIHRoZSBzdWdnZXN0aW9uIHBpY2tlciB0byB0aGUgY2Fs
ZW5kYXIgcGlja2VyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTMy
NTU0KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTMsNiArMyw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9lZmwiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9l
ZmwiCiAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwiCisgICIke1dFQkNP
UkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcyIKICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2xpbnV4IgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyIgogICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vbmV0d29yay9zb3VwIgpAQCAtMjk0
LDYgKzI5NSw5IEBAIElGIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUVmbC5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCiAgICkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCB0
eXBlZGVmIFFPcGVuR0xDb250ZXh0KiBQbGF0Zm9ybUdyYXBoaWNzCiB0eXBlZGVmIFFTdXJmYWNl
KiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTNEOwogI2Vsc2UKIHR5cGVkZWYgdm9pZCogUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRDsKK3R5cGVkZWYgdm9pZCogUGxhdGZvcm1HcmFwaGljc1N1cmZh
Y2UzRDsKICNlbmRpZgogCiAjaWYgKFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShCTEFD
S0JFUlJZKSkgJiYgVVNFKFNLSUEpCkBAIC05NDcsNyArOTQ4LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCByZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCByZXNvbHZlTXVsdGlz
YW1wbGluZ0lmTmVjZXNzYXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKLSNpZiBQTEFU
Rk9STShRVCkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaWYgKFBMQVRGT1JNKFFUKSB8fCBQ
TEFURk9STShFRkwpKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2b2lkIGNyZWF0ZUdy
YXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNERWZsLmNwcAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52
YXMoY28KICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIG1fcHJpdmF0ZS0+Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhzaXpl
KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAko
cmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRl
eHRDYWlyby5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFdmFzX0dMLmg+
CiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CkBAIC04Nyw2ICs4OCwxMyBAQCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4CiAgICAgICAgIHJldHVybjsKIAogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAg
SW50U2l6ZSBzdXJmYWNlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQt
Pm1fY3VycmVudEhlaWdodCk7CisgICAgbV9zdXJmYWNlRmxhZ3MgPSBHcmFwaGljc1N1cmZhY2U6
OlN1cHBvcnRzVGV4dHVyZVRhcmdldCB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFyaW5n
OworICAgIGlmICghc3VyZmFjZVNpemUuaXNFbXB0eSgpKQorICAgICAgICBtX2dyYXBoaWNzU3Vy
ZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHN1cmZhY2VTaXplLCBtX3N1cmZhY2VGbGFn
cyk7CisjZW5kaWYKIH0KIAogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlKCkKQEAgLTEwMSw4ICsxMDksMTEgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjp+R3JhcGhpY3NDb250ZQogICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveShtX2V2
YXNHTCwgbV9ldmFzR0xDb250ZXh0KTsKIAogICAgIGV2YXNfZ2xfZnJlZShtX2V2YXNHTCk7Ci19
CiAKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBtX2dyYXBoaWNzU3VyZmFjZS5jbGVh
cigpOworI2VuZGlmCit9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVT
dXJmYWNlKFBhZ2VDbGllbnRFZmwqIHBhZ2VDbGllbnQsIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpCiB7CkBAIC0xNjksNiArMTgwLDMyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpwYWludFRvVGUKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogI2VuZGlmCisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpj
cmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQorICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS5jbGVhcigpOworICAgIGVs
c2UKKyAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShz
aXplLCBtX3N1cmZhY2VGbGFncyk7Cit9CisKK3VpbnQzMl90IEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Y29weVRvR3JhcGhpY3NTdXJmYWNlKCkKK3sKKyAgICBpZiAoIW1fZ3JhcGhpY3NTdXJm
YWNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAg
IG1fZ3JhcGhpY3NTdXJmYWNlLT5jb3B5RnJvbVRleHR1cmUobV9jb250ZXh0LT5tX3RleHR1cmUs
IEludFJlY3QoMCwgMCwgbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5tX2N1
cnJlbnRIZWlnaHQpKTsKKyAgICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZmZXJz
KCk7Cit9CisKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoaWNzU3Vy
ZmFjZS0+ZXhwb3J0VG9rZW4oKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBVU0UoM0RfR1JBUEhJQ1MpIHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgJKHJldmlzaW9uIDEzMjU1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsMTAgQEAKICNpbmNsdWRl
IDx0ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaD4KICNlbmRpZgogCisjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCisjZW5kaWYK
KwogdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfR0wgICAgICAgICAgICAgICBFdmFzX0dMOwogdHlwZWRl
ZiBzdHJ1Y3QgX0V2YXNfR0xfU3VyZmFjZSAgICAgICBFdmFzX0dMX1N1cmZhY2U7CiB0eXBlZGVm
IHN0cnVjdCBfRXZhc19HTF9Db250ZXh0ICAgICAgIEV2YXNfR0xfQ29udGV4dDsKQEAgLTUyLDYg
KzU2LDEyIEBAIHB1YmxpYzoKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBC
aXRtYXBUZXh0dXJlKiBtYXNrKTsKICNlbmRpZgorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQor
ICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCk7CisgICAgdmlydHVh
bCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0OworICAg
IHZvaWQgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRTaXplJik7CisjZW5kaWYKKwog
ICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgYm9vbCBjcmVhdGVTdXJmYWNlKFBh
Z2VDbGllbnRFZmwqLCBib29sIHJlbmRlckRpcmVjdGx5VG9FdmFzR0xPYmplY3QpOwogICAgIHZv
aWQgc2V0Q3VycmVudEdMQ29udGV4dCh2b2lkKiwgdm9pZCopOwpAQCAtNTksNiArNjksMTAgQEAg
cHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsK
ICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEhvc3RXaW5kb3cqIG1faG9z
dFdpbmRvdzsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBHcmFwaGljc1N1cmZhY2U6
OkZsYWdzIG1fc3VyZmFjZUZsYWdzOworICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IG1fZ3Jh
cGhpY3NTdXJmYWNlOworI2VuZGlmCiAKICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT4gbV9zeW50
aGV0aWNFcnJvcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJl
c2hhcGUoaW50IHdpZHQKICAgICBpZiAod2lkdGggPT0gbV9jdXJyZW50V2lkdGggJiYgaGVpZ2h0
ID09IG1fY3VycmVudEhlaWdodCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgUExBVEZPUk0oUVQp
ICYmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2lmIChQTEFURk9STShRVCkgfHwgUExBVEZPUk0o
RUZMKSkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgOjpnbEZsdXNoKCk7IC8vIE1ha2Ug
c3VyZSBhbGwgR0wgY2FsbHMgaGF2ZSBiZWVuIGNvbW1pdHRlZCBiZWZvcmUgcmVzaXppbmcuCiAg
ICAgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dy
YXBoaWNzU3VyZmFjZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUVmbC5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3Jh
cGhpY3NTdXJmYWNlRWZsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKKworI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKSAmJiBQTEFURk9STShFRkwpCisKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dD4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUJlZ2luUGFpbnQoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY2hhciogYml0cywgaW50IHN0cmlkZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBudWxscHRyOworfQorCitQYXNzUmVmUHRyPEltYWdlPiBHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZVJlYWRPbmx5SW1hZ2UoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiAwOworfQorCit9CisKKyNlbmRpZgoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dy
YXBoaWNzU3VyZmFjZUVmbC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAg
KyAqCgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQv
R3JhcGhpY3NTdXJmYWNlR0xYLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCShyZXZpc2lv
biAxMzI1NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9x
dC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTgg
QEAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJH
TC5oIgorCisjaWYgUExBVEZPUk0oUVQpCiAvLyBRdCBoZWFkZXJzIG11c3QgYmUgaW5jbHVkZWQg
YmVmb3JlIGdseCBoZWFkZXJzLgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UU9wZW5HTENvbnRleHQ+CiAjaW5jbHVkZSA8UVZlY3Rvcj4KICNpbmNsdWRlIDxRV2luZG93
PgogI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm13aW5kb3cuaD4KKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyNpbmNsdWRlIDxHTC9nbC5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxHTC9nbGV4dC5oPgogI2lu
Y2x1ZGUgPEdML2dseC5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4K
QEAgLTUzLDYgKzU5LDcgQEAgcHVibGljOgogICAgICAgICArK3JlZkNvdW50OwogICAgIH0KIAor
I2lmIFBMQVRGT1JNKFFUKSAKICAgICBRV2luZG93KiBnZXQoRGlzcGxheSogZHB5KQogICAgIHsK
ICAgICAgICAgaWYgKCF3aW5kb3cpIHsKQEAgLTY3LDIyICs3NCw1MiBAQCBwdWJsaWM6CiAKICAg
ICAgICAgcmV0dXJuIHdpbmRvdzsKICAgICB9CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgV2lu
ZG93KiBnZXQoRGlzcGxheSogZHB5KQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cpIHsKKyAg
ICAgICAgICAgIHdpbmRvdyA9IFhDcmVhdGVTaW1wbGVXaW5kb3coZHB5LCBYRGVmYXVsdFJvb3RX
aW5kb3coZHB5KSwgLTEsIC0xLCAxLCAxLCAwLCBCbGFja1BpeGVsKGRweSwgMCksIFdoaXRlUGl4
ZWwoZHB5LCAwKSk7CisgICAgICAgICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OworICAgICAgICAgICAgYXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IHRydWU7CisgICAg
ICAgICAgICBYQ2hhbmdlV2luZG93QXR0cmlidXRlcyhkcHksIHdpbmRvdywgWDExT3ZlcnJpZGVS
ZWRpcmVjdCwgJmF0dHJpYnV0ZXMpOworICAgICAgICAgICAgZGlzcGxheSA9IGRweTsKKyAgICAg
ICAgICAgIC8vIE1hcCB3aW5kb3cgdG8gdGhlIHNjcmVlbgorICAgICAgICAgICAgWE1hcFdpbmRv
dyhkcHksIHdpbmRvdyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gJndpbmRvdzsKKyAg
ICB9CisjZW5kaWYKIAogICAgIH5PZmZTY3JlZW5Sb290V2luZG93KCkKICAgICB7CiAgICAgICAg
IGlmICghLS1yZWZDb3VudCkgeworI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgZGVsZXRl
IHdpbmRvdzsKICAgICAgICAgICAgIHdpbmRvdyA9IDA7CisjZWxpZiBQTEFURk9STShFRkwpCisg
ICAgICAgICAgICBYVW5tYXBXaW5kb3coZGlzcGxheSwgd2luZG93KTsKKyAgICAgICAgICAgIFhE
ZXN0cm95V2luZG93KGRpc3BsYXksIHdpbmRvdyk7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0K
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IHJlZkNvdW50OworI2lmIFBMQVRGT1JNKFFUKQog
ICAgIHN0YXRpYyBRV2luZG93KiB3aW5kb3c7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgc3Rh
dGljIFdpbmRvdyB3aW5kb3c7CisgICAgRGlzcGxheSogZGlzcGxheTsKKyNlbmRpZgogfTsKIAog
aW50IE9mZlNjcmVlblJvb3RXaW5kb3c6OnJlZkNvdW50ID0gMDsKKyNpZiBQTEFURk9STShRVCkK
IFFXaW5kb3cqIE9mZlNjcmVlblJvb3RXaW5kb3c6OndpbmRvdyA9IDA7CisjZWxpZiBQTEFURk9S
TShFRkwpCitXaW5kb3cgT2ZmU2NyZWVuUm9vdFdpbmRvdzo6d2luZG93ID0gMDsKKyNlbmRpZgog
CiBzdGF0aWMgY29uc3QgaW50IGdseFNwZWNbXSA9IHsKICAgICAvLyBUaGUgc3BlY2lmaWNhdGlv
biBpcyBhIHNldCBrZXkgdmFsdWUgcGFpcnMgc3RvcmVkIGluIGEgc2ltcGxlIGFycmF5LgpAQCAt
MTA2LDEyICsxNDMsMTcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAg
ICA6IG1fZGlzcGxheSgwKQogICAgICAgICAsIG1feFBpeG1hcCgwKQogICAgICAgICAsIG1fZ2x4
UGl4bWFwKDApCisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICwgbV9nbENvbnRleHQoYWRvcHRQ
dHIobmV3IFFPcGVuR0xDb250ZXh0KSkKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgLCBt
X2dsQ29udGV4dCgwKQorI2VuZGlmCiAgICAgICAgICwgbV9kZXRhY2hlZENvbnRleHQoMCkKICAg
ICAgICAgLCBtX2RldGFjaGVkU3VyZmFjZSgwKQogICAgICAgICAsIG1fdGV4dHVyZUlzWUludmVy
dGVkKGZhbHNlKQogICAgICAgICAsIG1faGFzQWxwaGEoZmFsc2UpCiAgICAgeworI2lmIFBMQVRG
T1JNKFFUKQogICAgICAgICBRU3VyZmFjZSogY3VycmVudFN1cmZhY2UgPSAwOwogICAgICAgICBR
T3BlbkdMQ29udGV4dCogY3VycmVudENvbnRleHQgPSBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENv
bnRleHQoKTsKICAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KQpAQCAtMTI1LDYgKzE2NywyNSBA
QCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIC8vIFRoZXJlZm9yZSB3
ZSBoYXZlIHRvIG1ha2UgdGhlIHByZXZpb3VzIGNvbnRleHQgY3VycmVudCBhZ2Fpbi4KICAgICAg
ICAgaWYgKGN1cnJlbnRDb250ZXh0KQogICAgICAgICAgICAgY3VycmVudENvbnRleHQtPm1ha2VD
dXJyZW50KGN1cnJlbnRTdXJmYWNlKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgbV9k
aXNwbGF5ID0gWE9wZW5EaXNwbGF5KDApOworCisgICAgICAgIGludCBhdHRyaWJ1dGVzW10gPSB7
CisgICAgICAgICAgICBHTFhfTEVWRUwsIDAsCisgICAgICAgICAgICBHTFhfRFJBV0FCTEVfVFlQ
RSwgR0xYX1dJTkRPV19CSVQsCisgICAgICAgICAgICBHTFhfUkVOREVSX1RZUEUsICAgR0xYX1JH
QkFfQklULAorICAgICAgICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsCisgICAgICAgICAgICBH
TFhfR1JFRU5fU0laRSwgICAgMSwKKyAgICAgICAgICAgIEdMWF9CTFVFX1NJWkUsICAgICAxLAor
ICAgICAgICAgICAgR0xYX0RPVUJMRUJVRkZFUiwgIFRydWUsCisgICAgICAgICAgICBOb25lCisg
ICAgICAgIH07CisKKyAgICAgICAgaW50IG51bVJldHVybmVkOworICAgICAgICBtX2ZiQ29uZmln
cyA9IGdsWENob29zZUZCQ29uZmlnKG1fZGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX2Rpc3BsYXkp
LCBhdHRyaWJ1dGVzLCAmbnVtUmV0dXJuZWQpOworICAgICAgICAvLyBDcmVhdGUgYSBHTFggY29u
dGV4dCBmb3IgT3BlbkdMIHJlbmRlcmluZworICAgICAgICBtX2dsQ29udGV4dCA9IGdsWENyZWF0
ZU5ld0NvbnRleHQobV9kaXNwbGF5LCBtX2ZiQ29uZmlnc1swXSwgR0xYX1JHQkFfVFlQRSwgMCwg
dHJ1ZSk7CisjZW5kaWYKICAgICB9CiAKICAgICB+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSgpCkBA
IC0xNDQsNiArMjA1LDcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogCiAgICAg
dWludDMyX3QgY3JlYXRlU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKKyNpZiBQ
TEFURk9STShRVCkKICAgICAgICAgbV9zdXJmYWNlID0gYWRvcHRQdHIobmV3IFFXaW5kb3cobV9v
ZmZTY3JlZW5XaW5kb3cuZ2V0KG1fZGlzcGxheSkpKTsKICAgICAgICAgbV9zdXJmYWNlLT5zZXRT
dXJmYWNlVHlwZShRU3VyZmFjZTo6T3BlbkdMU3VyZmFjZSk7CiAgICAgICAgIG1fc3VyZmFjZS0+
c2V0R2VvbWV0cnkoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKQEAgLTE1OCw2
ICsyMjAsMzAgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICBtX3N1
cmZhY2UtPnNob3coKTsKIAogICAgICAgICByZXR1cm4gbV9zdXJmYWNlLT5oYW5kbGUoKS0+d2lu
SWQoKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgWFZpc3VhbEluZm8qIHZpc3VhbElu
Zm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9kaXNwbGF5LCBtX2ZiQ29uZmlnc1swXSk7
CisgICAgICAgIGlmICghdmlzdWFsSW5mbykKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAg
ICAgIENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCAqbV9vZmZTY3Jl
ZW5XaW5kb3cuZ2V0KG1fZGlzcGxheSksIHZpc3VhbEluZm8tPnZpc3VhbCwgQWxsb2NOb25lKTsK
KyAgICAgICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMgYTsKKyAgICAgICAgYS5iYWNrZ3JvdW5kX3Bp
eGVsID0gV2hpdGVQaXhlbChtX2Rpc3BsYXksIDApOworICAgICAgICBhLmJvcmRlcl9waXhlbCA9
IEJsYWNrUGl4ZWwobV9kaXNwbGF5LCAwKTsKKyAgICAgICAgYS5jb2xvcm1hcCA9IGNtYXA7Cisg
ICAgICAgIG1fc3VyZmFjZSA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LCAqbV9vZmZTY3JlZW5X
aW5kb3cuZ2V0KG1fZGlzcGxheSksIDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwK
KyAgICAgICAgICAgIDAsIHZpc3VhbEluZm8tPmRlcHRoLCBJbnB1dE91dHB1dCwgdmlzdWFsSW5m
by0+dmlzdWFsLAorICAgICAgICAgICAgQ1dCYWNrUGl4ZWwgfCBDV0JvcmRlclBpeGVsIHwgQ1dD
b2xvcm1hcCwgJmEpOworICAgICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcChtX2Rpc3Bs
YXksIG1fc3VyZmFjZSwgMCk7CisgICAgICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRvdyhtX2Rp
c3BsYXksIG1fc3VyZmFjZSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworCisgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGUgWFJlbmRlciBFeHRlbnNpb24gaXMgYXZhaWxhYmxlLgorICAgICAgICBp
bnQgZXZlbnRCYXNlcCwgZXJyb3JCYXNlcDsKKyAgICAgICAgaWYgKCFYUmVuZGVyUXVlcnlFeHRl
bnNpb24obV9kaXNwbGF5LCAmZXZlbnRCYXNlcCwgJmVycm9yQmFzZXApKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7Cisg
ICAgICAgIHJldHVybiBtX3N1cmZhY2U7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGNyZWF0
ZVBpeG1hcCh1aW50MzJfdCB3aW5JZCkKQEAgLTE4NCwxOCArMjcwLDMwIEBAIHN0cnVjdCBHcmFw
aGljc1N1cmZhY2VQcml2YXRlIHsKIAogICAgIHZvaWQgbWFrZUN1cnJlbnQoKQogICAgIHsKKyNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSBRT3BlbkdMQ29udGV4
dDo6Y3VycmVudENvbnRleHQoKTsKICAgICAgICAgaWYgKG1fZGV0YWNoZWRDb250ZXh0KQogICAg
ICAgICAgICAgbV9kZXRhY2hlZFN1cmZhY2UgPSBtX2RldGFjaGVkQ29udGV4dC0+c3VyZmFjZSgp
OwogCiAgICAgICAgIGlmIChtX3N1cmZhY2UgJiYgbV9nbENvbnRleHQpCiAgICAgICAgICAgICBt
X2dsQ29udGV4dC0+bWFrZUN1cnJlbnQobV9zdXJmYWNlLmdldCgpKTsKKyNlbGlmIFBMQVRGT1JN
KEVGTCkKKyAgICAgICAgbV9kZXRhY2hlZENvbnRleHQgPSBnbFhHZXRDdXJyZW50Q29udGV4dCgp
OworICAgICAgICBtX2RldGFjaGVkU3VyZmFjZSA9IGdsWEdldEN1cnJlbnREcmF3YWJsZSgpOwor
ICAgICAgICBpZiAobV9zdXJmYWNlICYmIG1fZ2xDb250ZXh0KQorICAgICAgICAgICAgZ2xYTWFr
ZUN1cnJlbnQobV9kaXNwbGF5LCBtX3N1cmZhY2UsIG1fZ2xDb250ZXh0KTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHZvaWQgZG9uZUN1cnJlbnQoKQogICAgIHsKICAgICAgICAgaWYgKG1fZGV0YWNo
ZWRDb250ZXh0KQorI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgbV9kZXRhY2hlZENvbnRl
eHQtPm1ha2VDdXJyZW50KG1fZGV0YWNoZWRTdXJmYWNlKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkK
KyAgICAgICAgICAgIGdsWE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9kZXRhY2hlZFN1cmZhY2Us
IG1fZGV0YWNoZWRDb250ZXh0KTsgICAgCisjZW5kaWYKKyAgICAgICAgbV9kZXRhY2hlZENvbnRl
eHQgPSAwOwogICAgIH0KIAogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKQpAQCAtMjA2LDYgKzMwNCw3
IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgaWYgKG1feFBpeG1h
cCkKICAgICAgICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBpZiAo
IW1fc3VyZmFjZS0+aXNWaXNpYmxlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIyMiw2
ICszMjEsMTcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICAgICAg
Z2xDb250ZXh0LT5zd2FwQnVmZmVycyhtX3N1cmZhY2UuZ2V0KCkpOwogICAgICAgICAgICAgcEds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBvbGRGQk8pOwogICAgICAgICB9CisjZWxp
ZiBQTEFURk9STShFRkwpCisgICAgICAgIEdMWENvbnRleHQgZ2xDb250ZXh0ID0gZ2xYR2V0Q3Vy
cmVudENvbnRleHQoKTsKKworICAgICAgICBpZiAobV9zdXJmYWNlICYmIGdsQ29udGV4dCkgewor
ICAgICAgICAgICAgR0xpbnQgb2xkRkJPOworICAgICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9G
UkFNRUJVRkZFUl9CSU5ESU5HLCAmb2xkRkJPKTsKKyAgICAgICAgICAgIHBHbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgICAgICAgICBnbFhTd2FwQnVmZmVycyhtX2Rp
c3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG9sZEZCTyk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQg
Y29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QpCkBAIC0yNDIsNyArMzUyLDExIEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsK
ICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKICAgICAgICAg
cEdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmUsIDApOwogCisjaWYgUExBVEZPUk0oUVQp
CiAgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBnbENvbnRl
eHQoKS0+ZGVmYXVsdEZyYW1lYnVmZmVyT2JqZWN0KCkpOworI2VsaWYgUExBVEZPUk0oRUZMKQor
ICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgMCk7CisjZW5k
aWYKICAgICAgICAgcEdsQmxpdEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQsIHgsIHks
IHdpZHRoLCBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CiAKICAgICAg
ICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIDAsIDApOwpAQCAtMjU0LDE0ICszNjgsMTUgQEAg
c3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICBkb25lQ3VycmVudCgpOwog
ICAgIH0KIAotCiAgICAgRGlzcGxheSogZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxh
eTsgfQogCiAgICAgR0xYUGl4bWFwIGdseFBpeG1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2x4UGl4
bWFwOyB9CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAor
I2lmIFBMQVRGT1JNKFFUKQogICAgIFFPcGVuR0xDb250ZXh0KiBnbENvbnRleHQoKSB7IHJldHVy
biBtX2dsQ29udGV4dC5nZXQoKTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgT2ZmU2NyZWVu
Um9vdFdpbmRvdyBtX29mZlNjcmVlbldpbmRvdzsKQEAgLTI2OSwxMCArMzg0LDE4IEBAIHByaXZh
dGU6CiAgICAgRGlzcGxheSogbV9kaXNwbGF5OwogICAgIFBpeG1hcCBtX3hQaXhtYXA7CiAgICAg
R0xYUGl4bWFwIG1fZ2x4UGl4bWFwOworI2lmIFBMQVRGT1JNKFFUKQogICAgIE93blB0cjxRV2lu
ZG93PiBtX3N1cmZhY2U7CiAgICAgT3duUHRyPFFPcGVuR0xDb250ZXh0PiBtX2dsQ29udGV4dDsK
ICAgICBRT3BlbkdMQ29udGV4dCogbV9kZXRhY2hlZENvbnRleHQ7CiAgICAgUVN1cmZhY2UqIG1f
ZGV0YWNoZWRTdXJmYWNlOworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIFdpbmRvdyBtX3N1cmZh
Y2U7CisgICAgR0xYQ29udGV4dCBtX2dsQ29udGV4dDsKKyAgICBHTFhDb250ZXh0IG1fZGV0YWNo
ZWRDb250ZXh0OworICAgIEdMWERyYXdhYmxlIG1fZGV0YWNoZWRTdXJmYWNlOworICAgIEdMWEZC
Q29uZmlnKiBtX2ZiQ29uZmlnczsKKyNlbmRpZgogICAgIGJvb2wgbV90ZXh0dXJlSXNZSW52ZXJ0
ZWQ7CiAgICAgYm9vbCBtX2hhc0FscGhhOwogfTsKQEAgLTI4Miw3ICs0MDUsNyBAQCBzdGF0aWMg
Ym9vbCByZXNvbHZlR0xNZXRob2RzKEdyYXBoaWNzU3VyCiAgICAgc3RhdGljIGJvb2wgcmVzb2x2
ZWQgPSBmYWxzZTsKICAgICBpZiAocmVzb2x2ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwotCisj
aWYgUExBVEZPUk0oUVQpCiAgICAgUU9wZW5HTENvbnRleHQqIGdsQ29udGV4dCA9IHAtPmdsQ29u
dGV4dCgpOwogICAgIHBHbFhCaW5kVGV4SW1hZ2VFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdM
WEJJTkRURVhJTUFHRUVYVFBST0M+KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsWEJpbmRU
ZXhJbWFnZUVYVCIpKTsKICAgICBwR2xYUmVsZWFzZVRleEltYWdlRVhUID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTFhSRUxFQVNFVEVYSU1BR0VFWFRQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRy
ZXNzKCJnbFhSZWxlYXNlVGV4SW1hZ2VFWFQiKSk7CkBAIC0yOTIsNyArNDE1LDE2IEBAIHN0YXRp
YyBib29sIHJlc29sdmVHTE1ldGhvZHMoR3JhcGhpY3NTdXIKICAgICBwR2xHZW5GcmFtZWJ1ZmZl
cnMgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VORlJBTUVCVUZGRVJTUFJPQz4oZ2xDb250ZXh0
LT5nZXRQcm9jQWRkcmVzcygiZ2xHZW5GcmFtZWJ1ZmZlcnMiKSk7CiAgICAgcEdsRGVsZXRlRnJh
bWVidWZmZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0M+
KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsRGVsZXRlRnJhbWVidWZmZXJzIikpOwogICAg
IHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEZSQU1FQlVG
RkVSVEVYVFVSRTJEUFJPQz4oZ2xDb250ZXh0LT5nZXRQcm9jQWRkcmVzcygiZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRCIpKTsKLQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIHBHbFhCaW5kVGV4SW1h
Z2VFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMWEJJTkRURVhJTUFHRUVYVFBST0M+KGdsWEdl
dFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbFhCaW5kVGV4
SW1hZ2VFWFQiKSkpOworICAgIHBHbFhSZWxlYXNlVGV4SW1hZ2VFWFQgPSByZWludGVycHJldF9j
YXN0PFBGTkdMWFJFTEVBU0VURVhJTUFHRUVYVFBST0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbFhSZWxlYXNlVGV4SW1hZ2VFWFQiKSkpOwor
ICAgIHBHbEJpbmRGcmFtZWJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xCSU5ERlJBTUVC
VUZGRVJQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5
dGUqPigiZ2xCaW5kRnJhbWVidWZmZXIiKSkpOworICAgIHBHbEJsaXRGcmFtZWJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xCTElURlJBTUVCVUZGRVJQUk9DPihnbFhHZXRQcm9jQWRkcmVz
cyhyZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xCbGl0RnJhbWVidWZmZXIiKSkp
OworCisgICAgcEdsR2VuRnJhbWVidWZmZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFTkZS
QU1FQlVGRkVSU1BST0M+KGdsWEdldFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
R0x1Ynl0ZSo+KCJnbEdlbkZyYW1lYnVmZmVycyIpKSk7CisgICAgcEdsRGVsZXRlRnJhbWVidWZm
ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0M+KGdsWEdl
dFByb2NBZGRyZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbERlbGV0ZUZy
YW1lYnVmZmVycyIpKSk7CisgICAgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFMkRQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCIp
KSk7CisjZW5kaWYKICAgICByZXNvbHZlZCA9IHBHbEJsaXRGcmFtZWJ1ZmZlciAmJiBwR2xCaW5k
RnJhbWVidWZmZXIgJiYgcEdsWEJpbmRUZXhJbWFnZUVYVCAmJiBwR2xYUmVsZWFzZVRleEltYWdl
RVhUOwogCiAgICAgcmV0dXJuIHJlc29sdmVkOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTMy
NTU0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMTAtMjUgIFJlZ2luYSBDaHVuZyAgPGhlZWppbi5yLmNodW5nQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gRW5hYmxlIFdlYkdMCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzY1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IEd5dXlvdW5nIEtpbS4KKworICAgICAgICBTZXQgV2ViR0xFbmFibGVkIHRvIHRydWUg
d2hlbiBXZWJHTCBpcyBlbmFibGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X2luaXRpYWxpemUpOgorCiAyMDEyLTEwLTI1
ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBV
c2UgcGVyIGRlc3RpbmF0aW9uIElEIG1lc3NhZ2UgcmVjZWl2ZXJzIGZvciBEb3dubG9hZFByb3h5
LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cAkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzUsNiArNTc1LDkgQEAgc3RhdGljIHZv
aWQgX2V3a192aWV3X2luaXRpYWxpemUoRXZhc19PYgogICAgIGltcGwtPnBhZ2VQcm94eS0+cGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KHRydWUpOwogICAgIGltcGwtPnBhZ2VQcm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCkt
PnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwogICAgIGltcGwtPnBhZ2VQcm94eS0+c2V0
VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGltcGwtPnBhZ2VQ
cm94eS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldFdlYkdMRW5hYmxlZCh0cnVlKTsK
KyNlbmRpZgogI2VuZGlmCiAgICAgaW1wbC0+cGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgp
OwogCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQkocmV2aXNpb24gMTMyNTU0KQorKysgU291cmNl
L2NtYWtlL09wdGlvbnNFZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksMTEg
QEAgSUYgKFdURl9VU0VfVElMRURfQkFDS0lOR19TVE9SRSkKICAgU0VUKFdURl9VU0VfM0RfR1JB
UEhJQ1MgMSkKICAgQUREX0RFRklOSVRJT05TKC1EV1RGX1VTRV8zRF9HUkFQSElDUz0xKQogCisg
IFNFVCAoRU5BQkxFX1dFQkdMIDEpCisgIFNFVCAoV1RGX1VTRV9HUkFQSElDU19TVVJGQUNFIDEp
CisgIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfR1JBUEhJQ1NfU1VSRkFDRT0xKQorICBBRERf
REVGSU5JVElPTlMoLURIQVZFX0dMWCkKKwogICBGSU5EX1BBQ0tBR0UoT3BlbkdMIFJFUVVJUkVE
KQogRU5ESUYoKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170851</attachid>
            <date>2012-10-26 01:46:58 -0700</date>
            <delta_ts>2012-10-26 03:22:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97652-20121026174630.patch</filename>
            <type>text/plain</type>
            <size>24538</size>
            <attacher name="Regina Chung">heejin.r.chung</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjU3
NSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEw
LTI2ICBSZWdpbmEgQ2h1bmcgIDxoZWVqaW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJHTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBL
aW0uCisKKyAgICAgICAgVXNlIEdyYXBoaWNzIFN1cmZhY2UgdG8gZW5hYmxlIFdlYkdMIGZvciBX
ZWJLaXQyIEVGTC4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zRWZsLmNtYWtlOgor
CiAyMDEyLTEwLTI1ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KIAogICAg
ICAgICBbRUZMXVtXSzJdW0FDXSBFbmFibGUgM0RfUkVOREVSSU5HIGZsYWcKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEzMjU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDEyLTEwLTI2ICBSZWdpbmEgQ2h1bmcgIDxoZWVq
aW4uci5jaHVuZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEVuYWJsZSBXZWJH
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2NTIK
KworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCisKKyAgICAgICAgSW1wbGVtZW50
ZWQgR3JhcGhpY3NTdXJmYWNlIGZvciBFRkwgdG8gZW5hYmxlIFdlYkdMIGZvciBXZWJLaXQyLgor
ICAgICAgICBEZXBlbmRzIG9uIEdMWCBzaW5jZSBFdmFzIGRvZXNuJ3QgcHJvdmlkZSB0aGUgbmVj
ZXNzYXJ5IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Ojp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc1N1cmZh
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y29weVRv
R3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9l
Zmw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VmbC9HcmFw
aGljc1N1cmZhY2VFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9m
ZlNjcmVlblJvb3RXaW5kb3c6On5PZmZTY3JlZW5Sb290V2luZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjptYWtlQ3VycmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpkb25lQ3VycmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpzd2FwQnVmZmVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQmVnaW5QYWludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZVJlYWRPbmx5SW1hZ2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdM
WC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NT
dXJmYWNlR0xYLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChPZmZTY3Jl
ZW5Sb290V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6Ok9m
ZlNjcmVlblJvb3RXaW5kb3cpOgorICAgICAgICAoR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjp+R3JhcGhpY3NTdXJmYWNl
UHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVh
dGVQaXhtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y29w
eUZyb21UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Z2x4
UGl4bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Z2xDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVHTE1ldGhvZHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6T2ZmU2NyZWVu
Um9vdFdpbmRvdzo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6
On5PZmZTY3JlZW5Sb290V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVByaXZhdGU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2VQcml2YXRlOjptYWtlQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2VQcml2YXRlOjpkb25lQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2VQcml2YXRlOjpzd2FwQnVmZmVycyk6CisKIDIwMTItMTAtMjYgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1Y4XSBSRUdSRVNTSU9O
KDEzMjU0MCkgQXNzZXJ0aW9uIGZhaWx1cmUgb24gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJG
b3JET01Ob2RlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCShyZXZpc2lvbiAxMzI1
NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpA
QCAtMjgzLDYgKzI4Myw3IEBAIElGIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICBMSVNUKEFQUEVO
RCBXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbCIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcCIKICAgKQogICBM
SVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKQEAgLTI5NCw2ICsyOTUsOCBAQCBJRiAoV1RGX1VT
RV8zRF9HUkFQSElDUykKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMQ29tbW9uLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
R3JhcGhpY3NTdXJmYWNlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dy
YXBoaWNzU3VyZmFjZUdMWC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyTWFuYWdlci5jcHAKICAgKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiAxMzI1NzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHR5cGVkZWYgUU9wZW5HTENvbnRleHQqIFBs
YXRmb3JtR3JhcGhpY3MKIHR5cGVkZWYgUVN1cmZhY2UqIFBsYXRmb3JtR3JhcGhpY3NTdXJmYWNl
M0Q7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEOwordHlw
ZWRlZiB2b2lkKiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTNEOwogI2VuZGlmCiAKICNpZiAoUExB
VEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpKSAmJiBVU0UoU0tJQSkKQEAg
LTk0Nyw3ICs5NDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHJlc2hhcGVGQk9zKGNvbnN0IElu
dFNpemUmKTsKICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoY29uc3Qg
SW50UmVjdCYgPSBJbnRSZWN0KCkpOwotI2lmIFBMQVRGT1JNKFFUKSAmJiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKKyNpZiAoUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkpICYmIFVTRShHUkFQ
SElDU19TVVJGQUNFKQogICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhjb25zdCBJbnRT
aXplJik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCShyZXZpc2lv
biAxMzI1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhp
Y3NDb250ZXh0M0RFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjbwogI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JhcGhpY3NTdXJmYWNlcyhj
b25zdCBJbnRTaXplJiBzaXplKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wcml2
YXRlLT5jcmVhdGVHcmFwaGljc1N1cmZhY2VzKHNpemUpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCShyZXZpc2lvbiAxMzI1NzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8RWNv
cmVfRXZhcy5oPgogI2luY2x1ZGUgPEV2YXNfR0wuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQ
dHIuaD4KQEAgLTg3LDYgKzg4LDEzIEBAIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhp
Y3NDb250ZXgKICAgICAgICAgcmV0dXJuOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisK
KyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBJbnRTaXplIHN1cmZhY2VTaXplKG1fY29u
dGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsKKyAgICBt
X3N1cmZhY2VGbGFncyA9IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNUZXh0dXJlVGFyZ2V0IHwg
R3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1NoYXJpbmc7CisgICAgaWYgKCFzdXJmYWNlU2l6ZS5p
c0VtcHR5KCkpCisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpj
cmVhdGUoc3VyZmFjZVNpemUsIG1fc3VyZmFjZUZsYWdzKTsKKyNlbmRpZgogfQogCiBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKQpAQCAtMTAxLDgg
KzEwOSwxMSBAQCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRlCiAgICAg
ICAgIGV2YXNfZ2xfY29udGV4dF9kZXN0cm95KG1fZXZhc0dMLCBtX2V2YXNHTENvbnRleHQpOwog
CiAgICAgZXZhc19nbF9mcmVlKG1fZXZhc0dMKTsKLX0KIAorI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQorICAgIG1fZ3JhcGhpY3NTdXJmYWNlLmNsZWFyKCk7CisjZW5kaWYKK30KIAogYm9vbCBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZVN1cmZhY2UoUGFnZUNsaWVudEVmbCogcGFn
ZUNsaWVudCwgYm9vbCByZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykKIHsKQEAgLTE2OSw2ICsx
ODAsMzIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAjZW5kaWYKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZXMoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1f
Z3JhcGhpY3NTdXJmYWNlLmNsZWFyKCk7CisgICAgZWxzZQorICAgICAgICBtX2dyYXBoaWNzU3Vy
ZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHNpemUsIG1fc3VyZmFjZUZsYWdzKTsKK30K
KwordWludDMyX3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VG9HcmFwaGljc1N1cmZh
Y2UoKQoreworICAgIGlmICghbV9ncmFwaGljc1N1cmZhY2UpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgbV9ncmFwaGljc1N1cmZhY2UtPmNvcHlG
cm9tVGV4dHVyZShtX2NvbnRleHQtPm1fdGV4dHVyZSwgSW50UmVjdCgwLCAwLCBtX2NvbnRleHQt
Pm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCkpOworICAgIHJldHVy
biBtX2dyYXBoaWNzU3VyZmFjZS0+c3dhcEJ1ZmZlcnMoKTsKK30KKworR3JhcGhpY3NTdXJmYWNl
VG9rZW4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpncmFwaGljc1N1cmZhY2VUb2tlbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlLT5leHBvcnRUb2tlbigpOworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRSgzRF9HUkFQ
SElDUykgfHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaAkocmV2aXNpb24gMTMyNTc1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiwxMCBAQAogI2luY2x1ZGUgPHRleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oPgogI2VuZGlmCiAKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNs
dWRlICJHcmFwaGljc1N1cmZhY2UuaCIKKyNlbmRpZgorCiB0eXBlZGVmIHN0cnVjdCBfRXZhc19H
TCAgICAgICAgICAgICAgIEV2YXNfR0w7CiB0eXBlZGVmIHN0cnVjdCBfRXZhc19HTF9TdXJmYWNl
ICAgICAgIEV2YXNfR0xfU3VyZmFjZTsKIHR5cGVkZWYgc3RydWN0IF9FdmFzX0dMX0NvbnRleHQg
ICAgICAgRXZhc19HTF9Db250ZXh0OwpAQCAtNTIsNiArNTYsMTIgQEAgcHVibGljOgogI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOwogI2Vu
ZGlmCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgdmlydHVhbCB1aW50MzJfdCBjb3B5
VG9HcmFwaGljc1N1cmZhY2UoKTsKKyAgICB2aXJ0dWFsIEdyYXBoaWNzU3VyZmFjZVRva2VuIGdy
YXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVHcmFwaGljc1N1cmZh
Y2VzKGNvbnN0IEludFNpemUmKTsKKyNlbmRpZgorCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBib29sIGNyZWF0ZVN1cmZhY2UoUGFnZUNsaWVudEVmbCosIGJvb2wgcmVuZGVy
RGlyZWN0bHlUb0V2YXNHTE9iamVjdCk7CiAgICAgdm9pZCBzZXRDdXJyZW50R0xDb250ZXh0KHZv
aWQqLCB2b2lkKik7CkBAIC01OSw2ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBt
X2NvbnRleHQ7CiAgICAgSG9zdFdpbmRvdyogbV9ob3N0V2luZG93OworI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQorICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3MgbV9zdXJmYWNlRmxhZ3M7Cisg
ICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7CisjZW5kaWYKIAog
ICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPiBtX3N5bnRoZXRpY0Vycm9yczsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCShyZXZpc2lvbiAx
MzI1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIy
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdAogICAgIGlmICh3
aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0KQogICAg
ICAgICByZXR1cm47CiAKLSNpZiBQTEFURk9STShRVCkgJiYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
CisjaWYgKFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShFRkwpKSAmJiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKICAgICA6OmdsRmx1c2goKTsgLy8gTWFrZSBzdXJlIGFsbCBHTCBjYWxscyBoYXZlIGJl
ZW4gY29tbWl0dGVkIGJlZm9yZSByZXNpemluZy4KICAgICBjcmVhdGVHcmFwaGljc1N1cmZhY2Vz
KEludFNpemUod2lkdGgsIGhlaWdodCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dy
YXBoaWNzU3VyZmFjZUdMWC5jcHAJKHJldmlzaW9uIDEzMjU3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDEzICsyMiwyMCBAQAogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZB
Q0UpCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJHTC5oIgorCisjaWYgUExBVEZPUk0oUVQpCiAvLyBRdCBoZWFkZXJzIG11c3QgYmUgaW5jbHVk
ZWQgYmVmb3JlIGdseCBoZWFkZXJzLgogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5j
bHVkZSA8UU9wZW5HTENvbnRleHQ+CiAjaW5jbHVkZSA8UVZlY3Rvcj4KICNpbmNsdWRlIDxRV2lu
ZG93PgogI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm13aW5kb3cuaD4KKyNlbGlmIFBMQVRGT1JNKEVG
TCkKKyNpbmNsdWRlIDxHTC9nbC5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxHTC9nbGV4dC5oPgog
I2luY2x1ZGUgPEdML2dseC5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUu
aD4KQEAgLTUzLDYgKzYwLDcgQEAgcHVibGljOgogICAgICAgICArK3JlZkNvdW50OwogICAgIH0K
IAorI2lmIFBMQVRGT1JNKFFUKSAKICAgICBRV2luZG93KiBnZXQoRGlzcGxheSogZHB5KQogICAg
IHsKICAgICAgICAgaWYgKCF3aW5kb3cpIHsKQEAgLTY3LDIyICs3NSw1MiBAQCBwdWJsaWM6CiAK
ICAgICAgICAgcmV0dXJuIHdpbmRvdzsKICAgICB9CisjZWxpZiBQTEFURk9STShFRkwpCisgICAg
V2luZG93KiBnZXQoRGlzcGxheSogZHB5KQorICAgIHsKKyAgICAgICAgaWYgKCF3aW5kb3cpIHsK
KyAgICAgICAgICAgIHdpbmRvdyA9IFhDcmVhdGVTaW1wbGVXaW5kb3coZHB5LCBYRGVmYXVsdFJv
b3RXaW5kb3coZHB5KSwgLTEsIC0xLCAxLCAxLCAwLCBCbGFja1BpeGVsKGRweSwgMCksIFdoaXRl
UGl4ZWwoZHB5LCAwKSk7CisgICAgICAgICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhdHRyaWJ1
dGVzOworICAgICAgICAgICAgYXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IHRydWU7Cisg
ICAgICAgICAgICBYQ2hhbmdlV2luZG93QXR0cmlidXRlcyhkcHksIHdpbmRvdywgWDExT3ZlcnJp
ZGVSZWRpcmVjdCwgJmF0dHJpYnV0ZXMpOworICAgICAgICAgICAgZGlzcGxheSA9IGRweTsKKyAg
ICAgICAgICAgIC8vIE1hcCB3aW5kb3cgdG8gdGhlIHNjcmVlbgorICAgICAgICAgICAgWE1hcFdp
bmRvdyhkcHksIHdpbmRvdyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gJndpbmRvdzsK
KyAgICB9CisjZW5kaWYKIAogICAgIH5PZmZTY3JlZW5Sb290V2luZG93KCkKICAgICB7CiAgICAg
ICAgIGlmICghLS1yZWZDb3VudCkgeworI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAgICAgZGVs
ZXRlIHdpbmRvdzsKICAgICAgICAgICAgIHdpbmRvdyA9IDA7CisjZWxpZiBQTEFURk9STShFRkwp
CisgICAgICAgICAgICBYVW5tYXBXaW5kb3coZGlzcGxheSwgd2luZG93KTsKKyAgICAgICAgICAg
IFhEZXN0cm95V2luZG93KGRpc3BsYXksIHdpbmRvdyk7CisjZW5kaWYKICAgICAgICAgfQogICAg
IH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IHJlZkNvdW50OworI2lmIFBMQVRGT1JNKFFU
KQogICAgIHN0YXRpYyBRV2luZG93KiB3aW5kb3c7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAg
c3RhdGljIFdpbmRvdyB3aW5kb3c7CisgICAgRGlzcGxheSogZGlzcGxheTsKKyNlbmRpZgogfTsK
IAogaW50IE9mZlNjcmVlblJvb3RXaW5kb3c6OnJlZkNvdW50ID0gMDsKKyNpZiBQTEFURk9STShR
VCkKIFFXaW5kb3cqIE9mZlNjcmVlblJvb3RXaW5kb3c6OndpbmRvdyA9IDA7CisjZWxpZiBQTEFU
Rk9STShFRkwpCitXaW5kb3cgT2ZmU2NyZWVuUm9vdFdpbmRvdzo6d2luZG93ID0gMDsKKyNlbmRp
ZgogCiBzdGF0aWMgY29uc3QgaW50IGdseFNwZWNbXSA9IHsKICAgICAvLyBUaGUgc3BlY2lmaWNh
dGlvbiBpcyBhIHNldCBrZXkgdmFsdWUgcGFpcnMgc3RvcmVkIGluIGEgc2ltcGxlIGFycmF5LgpA
QCAtMTA2LDE4ICsxNDQsMjAgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAg
ICAgICA6IG1fZGlzcGxheSgwKQogICAgICAgICAsIG1feFBpeG1hcCgwKQogICAgICAgICAsIG1f
Z2x4UGl4bWFwKDApCi0gICAgICAgICwgbV9nbENvbnRleHQoYWRvcHRQdHIobmV3IFFPcGVuR0xD
b250ZXh0KSkKKyAgICAgICAgLCBtX2dsQ29udGV4dCgwKQogICAgICAgICAsIG1fZGV0YWNoZWRD
b250ZXh0KDApCiAgICAgICAgICwgbV9kZXRhY2hlZFN1cmZhY2UoMCkKICAgICAgICAgLCBtX3Rl
eHR1cmVJc1lJbnZlcnRlZChmYWxzZSkKICAgICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQogICAg
IHsKKyNpZiBQTEFURk9STShRVCkKICAgICAgICAgUVN1cmZhY2UqIGN1cnJlbnRTdXJmYWNlID0g
MDsKICAgICAgICAgUU9wZW5HTENvbnRleHQqIGN1cnJlbnRDb250ZXh0ID0gUU9wZW5HTENvbnRl
eHQ6OmN1cnJlbnRDb250ZXh0KCk7CiAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCkKICAgICAg
ICAgICAgIGN1cnJlbnRTdXJmYWNlID0gY3VycmVudENvbnRleHQtPnN1cmZhY2UoKTsKIAogICAg
ICAgICBtX2Rpc3BsYXkgPSBYT3BlbkRpc3BsYXkoMCk7CisgICAgICAgIG1fZ2xDb250ZXh0ID0g
YWRvcHRQdHIobmV3IFFPcGVuR0xDb250ZXh0KTsKICAgICAgICAgbV9nbENvbnRleHQtPnNldFNo
YXJlQ29udGV4dChzaGFyZUNvbnRleHQpOwogICAgICAgICBtX2dsQ29udGV4dC0+Y3JlYXRlKCk7
CiAKQEAgLTEyNSw2ICsxNjUsMjUgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewog
ICAgICAgICAvLyBUaGVyZWZvcmUgd2UgaGF2ZSB0byBtYWtlIHRoZSBwcmV2aW91cyBjb250ZXh0
IGN1cnJlbnQgYWdhaW4uCiAgICAgICAgIGlmIChjdXJyZW50Q29udGV4dCkKICAgICAgICAgICAg
IGN1cnJlbnRDb250ZXh0LT5tYWtlQ3VycmVudChjdXJyZW50U3VyZmFjZSk7CisjZWxpZiBQTEFU
Rk9STShFRkwpCisgICAgICAgIG1fZGlzcGxheSA9IFhPcGVuRGlzcGxheSgwKTsKKworICAgICAg
ICBpbnQgYXR0cmlidXRlc1tdID0geworICAgICAgICAgICAgR0xYX0xFVkVMLCAwLAorICAgICAg
ICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULAorICAgICAgICAgICAgR0xY
X1JFTkRFUl9UWVBFLCAgIEdMWF9SR0JBX0JJVCwKKyAgICAgICAgICAgIEdMWF9SRURfU0laRSwg
ICAgICAxLAorICAgICAgICAgICAgR0xYX0dSRUVOX1NJWkUsICAgIDEsCisgICAgICAgICAgICBH
TFhfQkxVRV9TSVpFLCAgICAgMSwKKyAgICAgICAgICAgIEdMWF9ET1VCTEVCVUZGRVIsICBUcnVl
LAorICAgICAgICAgICAgTm9uZQorICAgICAgICB9OworCisgICAgICAgIGludCBudW1SZXR1cm5l
ZDsKKyAgICAgICAgbV9mYkNvbmZpZ3MgPSBnbFhDaG9vc2VGQkNvbmZpZyhtX2Rpc3BsYXksIERl
ZmF1bHRTY3JlZW4obV9kaXNwbGF5KSwgYXR0cmlidXRlcywgJm51bVJldHVybmVkKTsKKyAgICAg
ICAgLy8gQ3JlYXRlIGEgR0xYIGNvbnRleHQgZm9yIE9wZW5HTCByZW5kZXJpbmcKKyAgICAgICAg
bV9nbENvbnRleHQgPSBnbFhDcmVhdGVOZXdDb250ZXh0KG1fZGlzcGxheSwgbV9mYkNvbmZpZ3Nb
MF0sIEdMWF9SR0JBX1RZUEUsIDAsIHRydWUpOworI2VuZGlmCiAgICAgfQogCiAgICAgfkdyYXBo
aWNzU3VyZmFjZVByaXZhdGUoKQpAQCAtMTQ0LDYgKzIwMyw3IEBAIHN0cnVjdCBHcmFwaGljc1N1
cmZhY2VQcml2YXRlIHsKIAogICAgIHVpbnQzMl90IGNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKICAgICB7CisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIG1fc3VyZmFjZSA9IGFk
b3B0UHRyKG5ldyBRV2luZG93KG1fb2ZmU2NyZWVuV2luZG93LmdldChtX2Rpc3BsYXkpKSk7CiAg
ICAgICAgIG1fc3VyZmFjZS0+c2V0U3VyZmFjZVR5cGUoUVN1cmZhY2U6Ok9wZW5HTFN1cmZhY2Up
OwogICAgICAgICBtX3N1cmZhY2UtPnNldEdlb21ldHJ5KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7CkBAIC0xNTgsNiArMjE4LDMwIEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQ
cml2YXRlIHsKICAgICAgICAgbV9zdXJmYWNlLT5zaG93KCk7CiAKICAgICAgICAgcmV0dXJuIG1f
c3VyZmFjZS0+aGFuZGxlKCktPndpbklkKCk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgICAg
IFhWaXN1YWxJbmZvKiB2aXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKG1fZGlz
cGxheSwgbV9mYkNvbmZpZ3NbMF0pOworICAgICAgICBpZiAoIXZpc3VhbEluZm8pCisgICAgICAg
ICAgICByZXR1cm4gMDsKKworICAgICAgICBDb2xvcm1hcCBjbWFwID0gWENyZWF0ZUNvbG9ybWFw
KG1fZGlzcGxheSwgKm1fb2ZmU2NyZWVuV2luZG93LmdldChtX2Rpc3BsYXkpLCB2aXN1YWxJbmZv
LT52aXN1YWwsIEFsbG9jTm9uZSk7CisgICAgICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIGE7Cisg
ICAgICAgIGEuYmFja2dyb3VuZF9waXhlbCA9IFdoaXRlUGl4ZWwobV9kaXNwbGF5LCAwKTsKKyAg
ICAgICAgYS5ib3JkZXJfcGl4ZWwgPSBCbGFja1BpeGVsKG1fZGlzcGxheSwgMCk7CisgICAgICAg
IGEuY29sb3JtYXAgPSBjbWFwOworICAgICAgICBtX3N1cmZhY2UgPSBYQ3JlYXRlV2luZG93KG1f
ZGlzcGxheSwgKm1fb2ZmU2NyZWVuV2luZG93LmdldChtX2Rpc3BsYXkpLCAwLCAwLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCksCisgICAgICAgICAgICAwLCB2aXN1YWxJbmZvLT5kZXB0aCwg
SW5wdXRPdXRwdXQsIHZpc3VhbEluZm8tPnZpc3VhbCwKKyAgICAgICAgICAgIENXQmFja1BpeGVs
IHwgQ1dCb3JkZXJQaXhlbCB8IENXQ29sb3JtYXAsICZhKTsKKyAgICAgICAgWFNldFdpbmRvd0Jh
Y2tncm91bmRQaXhtYXAobV9kaXNwbGF5LCBtX3N1cmZhY2UsIDApOworICAgICAgICBYQ29tcG9z
aXRlUmVkaXJlY3RXaW5kb3cobV9kaXNwbGF5LCBtX3N1cmZhY2UsIENvbXBvc2l0ZVJlZGlyZWN0
TWFudWFsKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIFhSZW5kZXIgRXh0ZW5zaW9uIGlz
IGF2YWlsYWJsZS4KKyAgICAgICAgaW50IGV2ZW50QmFzZXAsIGVycm9yQmFzZXA7CisgICAgICAg
IGlmICghWFJlbmRlclF1ZXJ5RXh0ZW5zaW9uKG1fZGlzcGxheSwgJmV2ZW50QmFzZXAsICZlcnJv
ckJhc2VwKSkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIFhNYXBXaW5kb3cobV9k
aXNwbGF5LCBtX3N1cmZhY2UpOworICAgICAgICByZXR1cm4gbV9zdXJmYWNlOworI2VuZGlmCiAg
ICAgfQogCiAgICAgdm9pZCBjcmVhdGVQaXhtYXAodWludDMyX3Qgd2luSWQpCkBAIC0xODQsMTgg
KzI2OCwzMCBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAKICAgICB2b2lkIG1h
a2VDdXJyZW50KCkKICAgICB7CisjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIG1fZGV0YWNoZWRD
b250ZXh0ID0gUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCk7CiAgICAgICAgIGlmICht
X2RldGFjaGVkQ29udGV4dCkKICAgICAgICAgICAgIG1fZGV0YWNoZWRTdXJmYWNlID0gbV9kZXRh
Y2hlZENvbnRleHQtPnN1cmZhY2UoKTsKIAogICAgICAgICBpZiAobV9zdXJmYWNlICYmIG1fZ2xD
b250ZXh0KQogICAgICAgICAgICAgbV9nbENvbnRleHQtPm1ha2VDdXJyZW50KG1fc3VyZmFjZS5n
ZXQoKSk7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgICAgIG1fZGV0YWNoZWRDb250ZXh0ID0g
Z2xYR2V0Q3VycmVudENvbnRleHQoKTsKKyAgICAgICAgbV9kZXRhY2hlZFN1cmZhY2UgPSBnbFhH
ZXRDdXJyZW50RHJhd2FibGUoKTsKKyAgICAgICAgaWYgKG1fc3VyZmFjZSAmJiBtX2dsQ29udGV4
dCkKKyAgICAgICAgICAgIGdsWE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9zdXJmYWNlLCBtX2ds
Q29udGV4dCk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGRvbmVDdXJyZW50KCkKICAgICB7
CiAgICAgICAgIGlmIChtX2RldGFjaGVkQ29udGV4dCkKKyNpZiBQTEFURk9STShRVCkKICAgICAg
ICAgICAgIG1fZGV0YWNoZWRDb250ZXh0LT5tYWtlQ3VycmVudChtX2RldGFjaGVkU3VyZmFjZSk7
CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgICAgICAgICBnbFhNYWtlQ3VycmVudChtX2Rpc3Bs
YXksIG1fZGV0YWNoZWRTdXJmYWNlLCBtX2RldGFjaGVkQ29udGV4dCk7ICAgIAorI2VuZGlmCisg
ICAgICAgIG1fZGV0YWNoZWRDb250ZXh0ID0gMDsKICAgICB9CiAKICAgICB2b2lkIHN3YXBCdWZm
ZXJzKCkKQEAgLTIwNiw2ICszMDIsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7
CiAgICAgICAgIGlmIChtX3hQaXhtYXApCiAgICAgICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFU
Rk9STShRVCkKICAgICAgICAgaWYgKCFtX3N1cmZhY2UtPmlzVmlzaWJsZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yMjIsNiArMzE5LDE3IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQ
cml2YXRlIHsKICAgICAgICAgICAgIGdsQ29udGV4dC0+c3dhcEJ1ZmZlcnMobV9zdXJmYWNlLmdl
dCgpKTsKICAgICAgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgb2xk
RkJPKTsKICAgICAgICAgfQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgICAgICBHTFhDb250ZXh0
IGdsQ29udGV4dCA9IGdsWEdldEN1cnJlbnRDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKG1fc3Vy
ZmFjZSAmJiBnbENvbnRleHQpIHsKKyAgICAgICAgICAgIEdMaW50IG9sZEZCTzsKKyAgICAgICAg
ICAgIGdsR2V0SW50ZWdlcnYoR0xfRlJBTUVCVUZGRVJfQklORElORywgJm9sZEZCTyk7CisgICAg
ICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworICAgICAgICAg
ICAgZ2xYU3dhcEJ1ZmZlcnMobV9kaXNwbGF5LCBtX3N1cmZhY2UpOworICAgICAgICAgICAgcEds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBvbGRGQk8pOworICAgICAgICB9CisjZW5k
aWYKICAgICB9CiAKICAgICB2b2lkIGNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQpAQCAtMjQyLDcgKzM1MCwxMSBAQCBzdHJ1Y3QgR3Jh
cGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgdGV4dHVyZSk7CiAgICAgICAgIHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX1JFQURfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAw
KTsKIAorI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRFJB
V19GUkFNRUJVRkZFUiwgZ2xDb250ZXh0KCktPmRlZmF1bHRGcmFtZWJ1ZmZlck9iamVjdCgpKTsK
KyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICAgICAgcEdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdf
RlJBTUVCVUZGRVIsIDApOworI2VuZGlmCiAgICAgICAgIHBHbEJsaXRGcmFtZWJ1ZmZlcih4LCB5
LCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklU
LCBHTF9MSU5FQVIpOwogCiAgICAgICAgIHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX1JFQURf
RlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCAwLCAwKTsK
QEAgLTI1NCwxNCArMzY2LDE1IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAg
ICAgICAgZG9uZUN1cnJlbnQoKTsKICAgICB9CiAKLQogICAgIERpc3BsYXkqIGRpc3BsYXkoKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KIAogICAgIEdMWFBpeG1hcCBnbHhQaXhtYXAoKSBj
b25zdCB7IHJldHVybiBtX2dseFBpeG1hcDsgfQogCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9CiAKKyNpZiBQTEFURk9STShRVCkKICAgICBRT3BlbkdMQ29udGV4
dCogZ2xDb250ZXh0KCkgeyByZXR1cm4gbV9nbENvbnRleHQuZ2V0KCk7IH0KKyNlbmRpZgogCiBw
cml2YXRlOgogICAgIE9mZlNjcmVlblJvb3RXaW5kb3cgbV9vZmZTY3JlZW5XaW5kb3c7CkBAIC0y
NjksMTAgKzM4MiwxOCBAQCBwcml2YXRlOgogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKICAgICBQ
aXhtYXAgbV94UGl4bWFwOwogICAgIEdMWFBpeG1hcCBtX2dseFBpeG1hcDsKKyNpZiBQTEFURk9S
TShRVCkKICAgICBPd25QdHI8UVdpbmRvdz4gbV9zdXJmYWNlOwogICAgIE93blB0cjxRT3BlbkdM
Q29udGV4dD4gbV9nbENvbnRleHQ7CiAgICAgUU9wZW5HTENvbnRleHQqIG1fZGV0YWNoZWRDb250
ZXh0OwogICAgIFFTdXJmYWNlKiBtX2RldGFjaGVkU3VyZmFjZTsKKyNlbGlmIFBMQVRGT1JNKEVG
TCkKKyAgICBXaW5kb3cgbV9zdXJmYWNlOworICAgIEdMWENvbnRleHQgbV9nbENvbnRleHQ7Cisg
ICAgR0xYQ29udGV4dCBtX2RldGFjaGVkQ29udGV4dDsKKyAgICBHTFhEcmF3YWJsZSBtX2RldGFj
aGVkU3VyZmFjZTsKKyAgICBHTFhGQkNvbmZpZyogbV9mYkNvbmZpZ3M7CisjZW5kaWYKICAgICBi
b29sIG1fdGV4dHVyZUlzWUludmVydGVkOwogICAgIGJvb2wgbV9oYXNBbHBoYTsKIH07CkBAIC0y
ODIsNyArNDAzLDcgQEAgc3RhdGljIGJvb2wgcmVzb2x2ZUdMTWV0aG9kcyhHcmFwaGljc1N1cgog
ICAgIHN0YXRpYyBib29sIHJlc29sdmVkID0gZmFsc2U7CiAgICAgaWYgKHJlc29sdmVkKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQorI2lmIFBMQVRGT1JNKFFUKQogICAgIFFPcGVuR0xDb250ZXh0
KiBnbENvbnRleHQgPSBwLT5nbENvbnRleHQoKTsKICAgICBwR2xYQmluZFRleEltYWdlRVhUID0g
cmVpbnRlcnByZXRfY2FzdDxQRk5HTFhCSU5EVEVYSU1BR0VFWFRQUk9DPihnbENvbnRleHQtPmdl
dFByb2NBZGRyZXNzKCJnbFhCaW5kVGV4SW1hZ2VFWFQiKSk7CiAgICAgcEdsWFJlbGVhc2VUZXhJ
bWFnZUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xYUkVMRUFTRVRFWElNQUdFRVhUUFJPQz4o
Z2xDb250ZXh0LT5nZXRQcm9jQWRkcmVzcygiZ2xYUmVsZWFzZVRleEltYWdlRVhUIikpOwpAQCAt
MjkyLDcgKzQxMywxNiBAQCBzdGF0aWMgYm9vbCByZXNvbHZlR0xNZXRob2RzKEdyYXBoaWNzU3Vy
CiAgICAgcEdsR2VuRnJhbWVidWZmZXJzID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFTkZSQU1F
QlVGRkVSU1BST0M+KGdsQ29udGV4dC0+Z2V0UHJvY0FkZHJlc3MoImdsR2VuRnJhbWVidWZmZXJz
IikpOwogICAgIHBHbERlbGV0ZUZyYW1lYnVmZmVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xE
RUxFVEVGUkFNRUJVRkZFUlNQUk9DPihnbENvbnRleHQtPmdldFByb2NBZGRyZXNzKCJnbERlbGV0
ZUZyYW1lYnVmZmVycyIpKTsKICAgICBwR2xGcmFtZWJ1ZmZlclRleHR1cmUyRCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xGUkFNRUJVRkZFUlRFWFRVUkUyRFBST0M+KGdsQ29udGV4dC0+Z2V0UHJv
Y0FkZHJlc3MoImdsRnJhbWVidWZmZXJUZXh0dXJlMkQiKSk7Ci0KKyNlbGlmIFBMQVRGT1JNKEVG
TCkKKyAgICBwR2xYQmluZFRleEltYWdlRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFhCSU5E
VEVYSU1BR0VFWFRQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNvbnN0
IEdMdWJ5dGUqPigiZ2xYQmluZFRleEltYWdlRVhUIikpKTsKKyAgICBwR2xYUmVsZWFzZVRleElt
YWdlRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFhSRUxFQVNFVEVYSU1BR0VFWFRQUk9DPihn
bFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xYUmVs
ZWFzZVRleEltYWdlRVhUIikpKTsKKyAgICBwR2xCaW5kRnJhbWVidWZmZXIgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMQklOREZSQU1FQlVGRkVSUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImdsQmluZEZyYW1lYnVmZmVyIikpKTsKKyAgICBw
R2xCbGl0RnJhbWVidWZmZXIgPSByZWludGVycHJldF9jYXN0PFBGTkdMQkxJVEZSQU1FQlVGRkVS
UFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4o
ImdsQmxpdEZyYW1lYnVmZmVyIikpKTsKKworICAgIHBHbEdlbkZyYW1lYnVmZmVycyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xHRU5GUkFNRUJVRkZFUlNQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUqPigiZ2xHZW5GcmFtZWJ1ZmZlcnMiKSkpOwor
ICAgIHBHbERlbGV0ZUZyYW1lYnVmZmVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xERUxFVEVG
UkFNRUJVRkZFUlNQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJldF9jYXN0PGNvbnN0
IEdMdWJ5dGUqPigiZ2xEZWxldGVGcmFtZWJ1ZmZlcnMiKSkpOworICAgIHBHbEZyYW1lYnVmZmVy
VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJEUFJP
Qz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImds
RnJhbWVidWZmZXJUZXh0dXJlMkQiKSkpOworI2VuZGlmCiAgICAgcmVzb2x2ZWQgPSBwR2xCbGl0
RnJhbWVidWZmZXIgJiYgcEdsQmluZEZyYW1lYnVmZmVyICYmIHBHbFhCaW5kVGV4SW1hZ2VFWFQg
JiYgcEdsWFJlbGVhc2VUZXhJbWFnZUVYVDsKIAogICAgIHJldHVybiByZXNvbHZlZDsKQEAgLTQx
MCw1ICs1NDAsMTggQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJveSgpCiAg
ICAgbV9wcml2YXRlID0gMDsKIH0KIAorI2lmICFQTEFURk9STShRVCkKK1Bhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQmVnaW5QYWludChjb25zdCBJ
bnRTaXplJiwgY2hhciosIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitQYXNzUmVmUHRyPEltYWdlPiBHcmFwaGljc1N1cmZhY2U6OmNyZWF0
ZVJlYWRPbmx5SW1hZ2UoY29uc3QgSW50UmVjdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMzI1NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yNiAgUmVnaW5hIENodW5nICA8aGVlamluLnIuY2h1
bmdAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBFbmFibGUgV2ViR0wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NjUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAgIFNldCBXZWJHTEVuYWJsZWQg
dG8gdHJ1ZSB3aGVuIFdlYkdMIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfaW5pdGlhbGl6ZSk6CisKIDIw
MTItMTAtMjUgIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtXSzJdIFVzZSBwZXIgZGVzdGluYXRpb24gSUQgbWVzc2FnZSByZWNlaXZlcnMgZm9yIERvd25s
b2FkUHJveHkuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwCShyZXZpc2lvbiAxMzI1NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3NSw2ICs1NzUsOSBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW5pdGlhbGl6ZShFdmFzX09iCiAgICAgaW1wbC0+cGFnZVBy
b3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQodHJ1ZSk7CiAgICAgaW1wbC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVy
ZW5jZXMoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CiAgICAgaW1wbC0+cGFnZVBy
b3h5LT5zZXRVc2VGaXhlZExheW91dCh0cnVlKTsKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgaW1w
bC0+cGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0V2ViR0xFbmFibGVk
KHRydWUpOworI2VuZGlmCiAjZW5kaWYKICAgICBpbXBsLT5wYWdlUHJveHktPmluaXRpYWxpemVX
ZWJQYWdlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTMyNTc1
KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAt
ODAsNiArODAsNyBAQCBFTkRJRiAoKQogCiBJRiAoV1RGX1VTRV9URVhUVVJFX01BUFBFUl9HTCkK
ICAgTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcCIKICAgICAiJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvaW5j
bHVkZS9HTFNMQU5HIgogICApCkluZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZQkocmV2aXNpb24gMTMy
NTc1KQorKysgU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTE5Miw2ICsxOTIsMTEgQEAgSUYgKFdURl9VU0VfVElMRURfQkFDS0lOR19TVE9SRSkKICAgU0VU
KEVOQUJMRV8zRF9SRU5ERVJJTkcgMSkKICAgQUREX0RFRklOSVRJT05TKC1ERU5BQkxFXzNEX1JF
TkRFUklORz0xKQogCisgIFNFVCAoRU5BQkxFX1dFQkdMIDEpCisgIFNFVCAoV1RGX1VTRV9HUkFQ
SElDU19TVVJGQUNFIDEpCisgIEFERF9ERUZJTklUSU9OUygtRFdURl9VU0VfR1JBUEhJQ1NfU1VS
RkFDRT0xKQorICBBRERfREVGSU5JVElPTlMoLURIQVZFX0dMWCkKKwogICBGSU5EX1BBQ0tBR0Uo
T3BlbkdMIFJFUVVJUkVEKQogRU5ESUYoKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>