<?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>95832</bug_id>
          
          <creation_ts>2012-09-05 02:12:27 -0700</creation_ts>
          <short_desc>[EFL] Fuzzy load the Edje theme for HTML forms</short_desc>
          <delta_ts>2012-09-06 14:41:16 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>95844</dependson>
          <blocked>94670</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Rohde Christiansen">kenneth</reporter>
          <assigned_to name="Kenneth Rohde Christiansen">kenneth</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>711853</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 02:12:27 -0700</bug_when>
    <thetext>The Edje theme is being loaded twice when launching MiniBrowser. First the default theme until the MiniBrowser sets its own theme.

Most web sites don&apos;t even expose native forms anymore, so for many cases (hybrid apps etc) there is no need in loading the theme at all.

Patch coming...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711855</commentid>
    <comment_count>1</comment_count>
      <attachid>162193</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 02:13:51 -0700</bug_when>
    <thetext>Created attachment 162193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711902</commentid>
    <comment_count>2</comment_count>
      <attachid>162193</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-05 03:31:57 -0700</bug_when>
    <thetext>Comment on attachment 162193
Patch

Looks fine. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711914</commentid>
    <comment_count>3</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-05 03:48:01 -0700</bug_when>
    <thetext>This is what I really want.

Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711923</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 04:02:42 -0700</bug_when>
    <thetext>Landed in 127573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711975</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 05:29:32 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 95844</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712005</commentid>
    <comment_count>6</comment_count>
      <attachid>162234</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 06:27:21 -0700</bug_when>
    <thetext>Created attachment 162234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712009</commentid>
    <comment_count>7</comment_count>
      <attachid>162234</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-09-05 06:48:45 -0700</bug_when>
    <thetext>Comment on attachment 162234
Patch

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

&gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:468
&gt; +Evas_Object* RenderThemeEfl::edje()
&gt;  {

What about making this RenderThemeEfl::edje() an small inline like:

ALWAYS_INLINE Evas_Object* RenderThemeEfl::edje() {
   return m_edje ? m_edje : createEdje();
}

The rationale here is this function will be called very often and we might get some performance improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712016</commentid>
    <comment_count>8</comment_count>
      <attachid>162234</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-05 07:01:00 -0700</bug_when>
    <thetext>Comment on attachment 162234
Patch

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

I think that it looks almost fine.

But I want to test one more thing. (to check activeSelectionColor)
I am not sure whether we should call edje() in platformActiveSelectionForegroundColor() and similar functions.

&gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:89
&gt; +    ASSERT(m_partDescs);

As a nit,
m_partDescs is array so this ASSERT is always fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712073</commentid>
    <comment_count>9</comment_count>
      <attachid>162255</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 08:16:52 -0700</bug_when>
    <thetext>Created attachment 162255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712078</commentid>
    <comment_count>10</comment_count>
      <attachid>162255</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-05 08:24:01 -0700</bug_when>
    <thetext>Comment on attachment 162255
Patch

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

&gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:460
&gt; +    Evas_Object* o = edje_object_add(ecore_evas_get(m_canvas));

Please use meaningful parameter name. EFL port follows webkit coding style except for public API.

&gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:502
&gt; +void RenderThemeEfl::applyEdjeColorsFrom(Evas_Object* o)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712083</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 08:32:04 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 162255 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162255&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:460
&gt; &gt; +    Evas_Object* o = edje_object_add(ecore_evas_get(m_canvas));
&gt; 
&gt; Please use meaningful parameter name. EFL port follows webkit coding style except for public API.
&gt; 
&gt; &gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:502
&gt; &gt; +void RenderThemeEfl::applyEdjeColorsFrom(Evas_Object* o)
&gt; 
&gt; ditto.

o is used all over the layouting code in WebKit and in this file as well. It is better for consistency</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712089</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 08:40:46 -0700</bug_when>
    <thetext>&gt; &gt; Please use meaningful parameter name. EFL port follows webkit coding style except for public API.

object itself is a very meaning less word but sometimes it makes sense. o is use all over the Rendering code (see WebCore/rendering) and I think it is fine, unless a better replacement than &quot;object&quot; can be found.

But that actually requires someone to go thru all the objects in that file and figure out what exactly they represent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712610</commentid>
    <comment_count>13</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-05 15:48:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 162234 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162234&amp;action=review
&gt; 
&gt; I think that it looks almost fine.
&gt; 
&gt; But I want to test one more thing. (to check activeSelectionColor)
&gt; I am not sure whether we should call edje() in platformActiveSelectionForegroundColor() and similar functions.
&gt; 

Unfortunately, I can not get correct output without adding edje() in platformActiveSelectionBackgroundColor and similar functions.

Simple test scenario is below.
1) change color of webkit/selection/active in Source/WebKit/efl/DefaultTheme/default.edc
   for exameple, &quot;color: 255 0 0 255; /* foreground */&quot;
2) load webkit.org and drag some text to select.

forground text should be red.(default is white)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712629</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 16:06:02 -0700</bug_when>
    <thetext>
&gt; Unfortunately, I can not get correct output without adding edje() in platformActiveSelectionBackgroundColor and similar functions.
&gt; 
&gt; Simple test scenario is below.
&gt; 1) change color of webkit/selection/active in Source/WebKit/efl/DefaultTheme/default.edc
&gt;    for exameple, &quot;color: 255 0 0 255; /* foreground */&quot;
&gt; 2) load webkit.org and drag some text to select.
&gt; 
&gt; forground text should be red.(default is white)

OK, I will look into that tomorrow. Thanks for the feedback. With that change all your tests are working?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712645</commentid>
    <comment_count>15</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-05 16:18:48 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Unfortunately, I can not get correct output without adding edje() in platformActiveSelectionBackgroundColor and similar functions.
&gt; &gt; 
&gt; &gt; Simple test scenario is below.
&gt; &gt; 1) change color of webkit/selection/active in Source/WebKit/efl/DefaultTheme/default.edc
&gt; &gt;    for exameple, &quot;color: 255 0 0 255; /* foreground */&quot;
&gt; &gt; 2) load webkit.org and drag some text to select.
&gt; &gt; 
&gt; &gt; forground text should be red.(default is white)
&gt; 
&gt; OK, I will look into that tomorrow. Thanks for the feedback. With that change all your tests are working?

Hopefully yes, All tests which I can guess are passed with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713134</commentid>
    <comment_count>16</comment_count>
      <attachid>162468</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-06 03:38:59 -0700</bug_when>
    <thetext>Created attachment 162468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713144</commentid>
    <comment_count>17</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-09-06 03:53:27 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=162468) [details]
&gt; Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713173</commentid>
    <comment_count>18</comment_count>
      <attachid>162477</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-06 04:51:25 -0700</bug_when>
    <thetext>Created attachment 162477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713179</commentid>
    <comment_count>19</comment_count>
      <attachid>162477</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-06 05:01:58 -0700</bug_when>
    <thetext>Comment on attachment 162477
Patch

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

Looks sane but this is not really my area.

&gt; Source/WebCore/platform/efl/RenderThemeEfl.h:214
&gt; +        return !!m_edje || const_cast&lt;RenderThemeEfl*&gt;(this)-&gt;loadTheme();

Do we really need the !! here? We are converting it to a bool anyway, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713181</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 05:05:06 -0700</bug_when>
    <thetext>Attachment 162477 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/efl/RenderThemeEfl.cpp:83:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/platform/efl/RenderThemeEfl.cpp:83:  More than one command on the same line in if  [whitespace/parens] [4]
Source/WebCore/platform/efl/RenderThemeEfl.cpp:85:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/platform/efl/RenderThemeEfl.cpp:85:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 4 in 3 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>713250</commentid>
    <comment_count>21</comment_count>
      <attachid>162497</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-06 06:38:26 -0700</bug_when>
    <thetext>Created attachment 162497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713251</commentid>
    <comment_count>22</comment_count>
      <attachid>162497</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-06 06:39:12 -0700</bug_when>
    <thetext>Comment on attachment 162497
Patch

Wrong patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713254</commentid>
    <comment_count>23</comment_count>
      <attachid>162498</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-06 06:41:56 -0700</bug_when>
    <thetext>Created attachment 162498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713255</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 06:43:38 -0700</bug_when>
    <thetext>Attachment 162498 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/efl/RenderThemeEfl.cpp:83:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/platform/efl/RenderThemeEfl.cpp:83:  More than one command on the same line in if  [whitespace/parens] [4]
Source/WebCore/platform/efl/RenderThemeEfl.cpp:85:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/platform/efl/RenderThemeEfl.cpp:85:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 4 in 3 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>713723</commentid>
    <comment_count>25</comment_count>
      <attachid>162498</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 14:41:10 -0700</bug_when>
    <thetext>Comment on attachment 162498
Patch

Clearing flags on attachment: 162498

Committed r127786: &lt;http://trac.webkit.org/changeset/127786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713724</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 14:41:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162193</attachid>
            <date>2012-09-05 02:13:51 -0700</date>
            <delta_ts>2012-09-05 06:27:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95832-20120905111333.patch</filename>
            <type>text/plain</type>
            <size>7731</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwOGJmYmEzYzQyZGJk
YWNhZTUwMDg2ZGQ5OTVjZDcyOTIyYWFkMS4uYmMyMThhMjIwNjk2YmJmYWY1YTYwMTEwODJjYTUy
NGMwNmFhMzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA5LTA1ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBb
RUZMXSBGdXp6eSBsb2FkIHRoZSBFZGplIHRoZW1lIGZvciBIVE1MIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTgzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgdGhlbWUgc28g
dGhhdCBpdCBpcyBmaXJzdCBsb2FkZWQgd2hlbiBhY3R1YWxseSB1c2VkLgorCisgICAgICAgIFRl
c3RlZCBieSBjdXJyZW50IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRo
ZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjp0aGVtZVBhcnRD
YWNoZUVudHJ5UmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmNhY2hl
VGhlbWVQYXJ0TmV3KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludFRo
ZW1lUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6c2V0VGhlbWVQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjplZGplKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlvbnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oOgorICAgICAgICAoUmVuZGVyVGhlbWVFZmwp
OgorCiAyMDEyLTA5LTAzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9r
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxMjc0MjEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IDk4
YzgxYzI5YTM5N2M0MDk5MjQ5YzZiYjU1MTQ3MTI4ZTBhYTNkZTEuLjM3YjZhMzU3MTNiMjI2OWNj
MDBlNjgxMWM4NDk2YTUwZTZhYTc1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtMTAzLDkgKzEwMyw2IEBAIGJvb2wgUmVuZGVyVGhl
bWVFZmw6OnRoZW1lUGFydENhY2hlRW50cnlSZXNldChzdHJ1Y3QgVGhlbWVQYXJ0Q2FjaGVFbnRy
eSogZW50cnksCiB7CiAgICAgY29uc3QgY2hhciAqZmlsZSwgKmdyb3VwOwogCi0gICAgQVNTRVJU
KGVudHJ5KTsKLSAgICBBU1NFUlQobV9lZGplKTsKLQogICAgIGVkamVfb2JqZWN0X2ZpbGVfZ2V0
KG1fZWRqZSwgJmZpbGUsIDApOwogICAgIGdyb3VwID0gZWRqZUdyb3VwRnJvbUZvcm1UeXBlKHR5
cGUpOwogICAgIEFTU0VSVChmaWxlKTsKQEAgLTE1OSw3ICsxNTYsNyBAQCBib29sIFJlbmRlclRo
ZW1lRWZsOjppc0Zvcm1FbGVtZW50VG9vTGFyZ2VUb0Rpc3BsYXkoY29uc3QgSW50U2l6ZSYgZWxl
bWVudFNpemUpCiBzdHJ1Y3QgUmVuZGVyVGhlbWVFZmw6OlRoZW1lUGFydENhY2hlRW50cnkqIFJl
bmRlclRoZW1lRWZsOjpjYWNoZVRoZW1lUGFydE5ldyhGb3JtVHlwZSB0eXBlLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewogICAgIGlmIChpc0Zvcm1FbGVtZW50VG9vTGFyZ2VUb0Rpc3BsYXkoc2l6
ZSkpIHsKLSAgICAgICAgRUlOQV9MT0dfRVJSKCJjYW5ub3QgcmVuZGVyIGFuIGVsZW1lbnQgb2Yg
c2l6ZSAlZHglZCIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIEVJTkFf
TE9HX0VSUigiQ2Fubm90IHJlbmRlciBhbiBlbGVtZW50IG9mIHNpemUgJWR4JWQuIiwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0z
MTEsMTMgKzMwOCwxNSBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0ZUZyb21G
b3JtKEV2YXNfT2JqZWN0KiBvYmplY3QsIENvbnRyb2xTdGF0ZXMgcwogCiBib29sIFJlbmRlclRo
ZW1lRWZsOjpwYWludFRoZW1lUGFydChSZW5kZXJPYmplY3QqIG9iamVjdCwgRm9ybVR5cGUgdHlw
ZSwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogeworICAgIGlm
ICghZWRqZSgpKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHBhaW50IG5hdGl2
ZSBIVE1MIHBhcnQgZHVlIHRvIG1pc3NpbmcgdGhlbWUuIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKICAgICBUaGVtZVBhcnRDYWNoZUVudHJ5KiBlbnRyeTsKICAgICBFaW5hX0xp
c3QqIHVwZGF0ZXM7CiAgICAgY2Fpcm9fdCogY2Fpcm87CiAKLSAgICBBU1NFUlQobV9jYW52YXMp
OwotICAgIEFTU0VSVChtX2VkamUpOwotCiAgICAgZW50cnkgPSBjYWNoZVRoZW1lUGFydEdldCh0
eXBlLCByZWN0LnNpemUoKSk7CiAgICAgaWYgKCFlbnRyeSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNDM4LDQ0ICs0MzcsNTkgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6c2V0VGhlbWVQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV90aGVtZVBhdGgg
PSBwYXRoOwotICAgIHRoZW1lQ2hhbmdlZCgpOwotfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjpj
cmVhdGVDYW52YXMoKQotewotICAgIEFTU0VSVCghbV9jYW52YXMpOwotICAgIG1fY2FudmFzID0g
ZWNvcmVfZXZhc19idWZmZXJfbmV3KDEsIDEpOwotICAgIEFTU0VSVChtX2NhbnZhcyk7CisgICAg
aWYgKG1fdGhlbWVQYXRoLmlzRW1wdHkoKSkgeworICAgICAgICBFSU5BX0xPR19FUlIoIk5vIHRo
ZW1lIGRlZmluZWQsIHVuYWJsZSB0byBzZXQgdGhlbWUgZm9yIEhUTUwgRm9ybXMuIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fY2FudmFzKSB7CisgICAgICAgIG1fY2Fu
dmFzID0gZWNvcmVfZXZhc19idWZmZXJfbmV3KDEsIDEpOworICAgICAgICBpZiAoIW1fY2FudmFz
KQorICAgICAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgY3JlYXRlIGNhbnZhcy4iKTsK
KyAgICB9CisKKyAgICBpZiAobV9lZGplKSB7CisgICAgICAgIC8vIEdldCByaWQgb2YgY3VycmVu
dCB0aGVtZS4KKyAgICAgICAgY2FjaGVUaGVtZVBhcnRGbHVzaCgpOworICAgICAgICBldmFzX29i
amVjdF9kZWwobV9lZGplKTsKKyAgICAgICAgbV9lZGplID0gMDsKKyAgICB9CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVFZmw6OmNyZWF0ZUVkamUoKQorRXZhc19PYmplY3QqIFJlbmRlclRoZW1lRWZs
OjplZGplKCkKIHsKLSAgICBBU1NFUlQoIW1fZWRqZSk7Ci0gICAgaWYgKG1fdGhlbWVQYXRoLmlz
RW1wdHkoKSkKLSAgICAgICAgRUlOQV9MT0dfRVJSKCJObyB0aGVtZSBkZWZpbmVkLCB1bmFibGUg
dG8gc2V0IFJlbmRlclRoZW1lRWZsLiIpOwotICAgIGVsc2UgeworICAgIGlmICghbV9lZGplKSB7
CiAgICAgICAgIG1fZWRqZSA9IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZh
cykpOwotICAgICAgICBpZiAoIW1fZWRqZSkKLSAgICAgICAgICAgIEVJTkFfTE9HX0VSUigiQ291
bGQgbm90IGNyZWF0ZSBiYXNlIGVkamUgb2JqZWN0LiIpOwotICAgICAgICBlbHNlIGlmICghZWRq
ZV9vYmplY3RfZmlsZV9zZXQobV9lZGplLCBtX3RoZW1lUGF0aC51dGY4KCkuZGF0YSgpLCAid2Vi
a2l0L2Jhc2UiKSkgeworICAgICAgICBpZiAoIW1fZWRqZSkgeworICAgICAgICAgICAgRUlOQV9M
T0dfQ1JJVCgiQ291bGQgbm90IGNyZWF0ZSBiYXNlIEVkamUgb2JqZWN0LiIpOworICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVkamVfb2JqZWN0X2ZpbGVf
c2V0KG1fZWRqZSwgbV90aGVtZVBhdGgudXRmOCgpLmRhdGEoKSwgIndlYmtpdC9iYXNlIikpIHsK
ICAgICAgICAgICAgIEVkamVfTG9hZF9FcnJvciBlcnIgPSBlZGplX29iamVjdF9sb2FkX2Vycm9y
X2dldChtX2VkamUpOwogICAgICAgICAgICAgY29uc3QgY2hhciogZXJybXNnID0gZWRqZV9sb2Fk
X2Vycm9yX3N0cihlcnIpOwotICAgICAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3Qgc2V0
IGZpbGU6ICVzIiwgZXJybXNnKTsKKyAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQoIkNvdWxkIG5v
dCBzZXQgZmlsZSAnJXMnOiAlcyIsIG1fdGhlbWVQYXRoLnV0ZjgoKS5kYXRhKCksICBlcnJtc2cp
OworCiAgICAgICAgICAgICBldmFzX29iamVjdF9kZWwobV9lZGplKTsKICAgICAgICAgICAgIG1f
ZWRqZSA9IDA7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgfQorCiAjZGVmaW5lIENPTk5FQ1QoY2MsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBlZGplX29iamVjdF9zaWduYWxf
Y2FsbGJhY2tfYWRkKG1fZWRqZSwgImNvbG9yX2NsYXNzLHNldCIsICBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZWJraXQvImNjLCBmdW5jLCB0aGlzKQog
Ci0gICAgICAgICAgICBDT05ORUNUKCJzZWxlY3Rpb24vYWN0aXZlIiwKLSAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzU2VsZWN0aW9uQWN0aXZlKTsKLSAgICAgICAg
ICAgIENPTk5FQ1QoInNlbGVjdGlvbi9pbmFjdGl2ZSIsCi0gICAgICAgICAgICAgICAgICAgIHJl
bmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkluYWN0aXZlKTsKLSAgICAgICAgICAgIENP
Tk5FQ1QoImZvY3VzX3JpbmciLCByZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NGb2N1c1JpbmcpOwor
ICAgICAgICBDT05ORUNUKCJzZWxlY3Rpb24vYWN0aXZlIiwgcmVuZGVyVGhlbWVFZmxDb2xvckNs
YXNzU2VsZWN0aW9uQWN0aXZlKTsKKyAgICAgICAgQ09OTkVDVCgic2VsZWN0aW9uL2luYWN0aXZl
IiwgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzU2VsZWN0aW9uSW5hY3RpdmUpOworICAgICAgICBD
T05ORUNUKCJmb2N1c19yaW5nIiwgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzRm9jdXNSaW5nKTsK
ICN1bmRlZiBDT05ORUNUCi0gICAgICAgIH0KKworICAgICAgICBhcHBseUVkamVDb2xvcnMoKTsK
KyAgICAgICAgYXBwbHlQYXJ0RGVzY3JpcHRpb25zKCk7CiAgICAgfQorCisgICAgcmV0dXJuIG1f
ZWRqZTsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplQ29sb3JzKCkKQEAgLTYx
MSwxMSArNjI1LDE0IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9u
cygpCiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgY29uc3QgY2hhciogZmlsZTsKIAotICAgIEFT
U0VSVChtX2NhbnZhcyk7CiAgICAgQVNTRVJUKG1fZWRqZSk7CiAKICAgICBlZGplX29iamVjdF9m
aWxlX2dldChtX2VkamUsICZmaWxlLCAwKTsKICAgICBBU1NFUlQoZmlsZSk7CisgICAgaWYgKCFm
aWxlKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHJldHJpZXZlIEVkamUgdGhl
bWUgZmlsZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG9iamVjdCA9IGVkamVf
b2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZhcykpOwogICAgIGlmICghb2JqZWN0KSB7
CkBAIC02NDAsMjYgKzY1Nyw2IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2Ny
aXB0aW9ucygpCiAgICAgZXZhc19vYmplY3RfZGVsKG9iamVjdCk7CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVFZmw6OnRoZW1lQ2hhbmdlZCgpCi17Ci0gICAgY2FjaGVUaGVtZVBhcnRGbHVzaCgpOwot
Ci0gICAgaWYgKCFtX2NhbnZhcykgewotICAgICAgICBjcmVhdGVDYW52YXMoKTsKLSAgICAgICAg
aWYgKCFtX2NhbnZhcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1f
ZWRqZSkgewotICAgICAgICBjcmVhdGVFZGplKCk7Ci0gICAgICAgIGlmICghbV9lZGplKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFwcGx5RWRqZUNvbG9ycygpOwotICAgIGFw
cGx5UGFydERlc2NyaXB0aW9ucygpOwotfQotCiBSZW5kZXJUaGVtZUVmbDo6UmVuZGVyVGhlbWVF
ZmwoUGFnZSogcGFnZSkKICAgICA6IFJlbmRlclRoZW1lKCkKICAgICAsIG1fcGFnZShwYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAppbmRleCBlZDQy
ZjM3ZDBjZjliNTAxNmNjMzcyZGI5NzhmZjMzOWVmM2ZjMGQ0Li5kZmE1MzY1NmE4N2JkZDU2YTZk
ZDk1NTM4NzkxZWQ3ZDZiNTE5NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvUmVuZGVyVGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UmVuZGVyVGhlbWVFZmwuaApAQCAtMTAyLDggKzEwMiw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOyB9CiAgICAgdmlydHVh
bCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9mb2N1c1Jp
bmdDb2xvcjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgpOwotCiAgICAgLy8g
U2V0IHBsYXRmb3JtIGNvbG9ycyBhbmQgbm90aWZ5IHRoZXkgY2hhbmdlZAogICAgIHZvaWQgc2V0
QWN0aXZlU2VsZWN0aW9uQ29sb3IoaW50IGZvcmVSLCBpbnQgZm9yZUcsIGludCBmb3JlQiwgaW50
IGZvcmVBLCBpbnQgYmFja1IsIGludCBiYWNrRywgaW50IGJhY2tCLCBpbnQgYmFja0EpOwogICAg
IHZvaWQgc2V0SW5hY3RpdmVTZWxlY3Rpb25Db2xvcihpbnQgZm9yZVIsIGludCBmb3JlRywgaW50
IGZvcmVCLCBpbnQgZm9yZUEsIGludCBiYWNrUiwgaW50IGJhY2tHLCBpbnQgYmFja0IsIGludCBi
YWNrQSk7CkBAIC0yMTIsMTAgKzIxMCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGZsb2F0
IGRlZmF1bHRGb250U2l6ZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNyZWF0ZUNhbnZhcygpOwot
ICAgIHZvaWQgY3JlYXRlRWRqZSgpOworICAgIEV2YXNfT2JqZWN0KiBlZGplKCk7CisKICAgICB2
b2lkIGFwcGx5RWRqZUNvbG9ycygpOwogICAgIHZvaWQgYXBwbHlQYXJ0RGVzY3JpcHRpb25zKCk7
CisKICAgICBjb25zdCBjaGFyKiBlZGplR3JvdXBGcm9tRm9ybVR5cGUoRm9ybVR5cGUpIGNvbnN0
OwogICAgIHZvaWQgYXBwbHlFZGplU3RhdGVGcm9tRm9ybShFdmFzX09iamVjdCosIENvbnRyb2xT
dGF0ZXMpOwogICAgIGJvb2wgcGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0KiwgRm9ybVR5cGUs
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162234</attachid>
            <date>2012-09-05 06:27:21 -0700</date>
            <delta_ts>2012-09-05 08:16:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95832-20120905152702.patch</filename>
            <type>text/plain</type>
            <size>10141</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYjU2ZGVjY2E3ZTlm
MmQxNjIxMmFhYzI0MWNhZjNlZjA1ODE5NC4uMjFlNmIyYzBhY2FjNmFhNTZmZDg5YzM3NTY1ZmRk
OWU1MTIwYTJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA5LTA1ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBb
RUZMXSBGdXp6eSBsb2FkIHRoZSBFZGplIHRoZW1lIGZvciBIVE1MIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTgzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgdGhlbWUgc28g
dGhhdCBpdCBpcyBmaXJzdCBsb2FkZWQgd2hlbiBhY3R1YWxseSB1c2VkLgorICAgICAgICBUaGlz
IGFsc28gZml4ZWQgdGhlIGNhc2UgdGhhdCBpdCB3YXMgaW1wb3NzaWJsZSB0byBjaGFuZ2UgdGhl
bWUKKyAgICAgICAgYSBzZWNvbmQgdGltZS4KKworICAgICAgICBUZXN0ZWQgYnkgY3VycmVudCB0
ZXN0cy4gQVBJIHVuaXQgdGVzdCBjb21pbmcgaW4gc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVFZmw6OnRoZW1lUGFydENhY2hlRW50cnlSZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUVmbDo6Y2FjaGVUaGVtZVBhcnROZXcpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVFZmw6OnBhaW50VGhlbWVQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lRWZsOjpzZXRUaGVtZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVF
Zmw6OmVkamUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERl
c2NyaXB0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmg6Cisg
ICAgICAgIChSZW5kZXJUaGVtZUVmbCk6CisKIDIwMTItMDktMDUgIENocmlzIEd1YW4gIDxjaHJp
cy5ndWFuQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tiZXJyeV0gQWRkIGRv
Y3VtZW50IHVybCBhbmQgc2VjdXJpdHlPcmlnaW4gdG8gcGxhdGZvcm0gcmVxdWVzdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IDk4Yzgx
YzI5YTM5N2M0MDk5MjQ5YzZiYjU1MTQ3MTI4ZTBhYTNkZTEuLmJmM2UyMzllOTlhNTkyZjAzNDY4
MDg1NWE2YTlmMmY3MzYwNDQ5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1JlbmRlclRoZW1lRWZsLmNwcApAQCAtODEsNiArODEsMTMgQEAgc3RhdGljIGNvbnN0IGludCBt
ZWRpYVNsaWRlclRodW1iSGVpZ2h0ID0gMTI7CiAKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVz
dFNpemVDb25zdHJhaW50cyhSZW5kZXJTdHlsZSogc3R5bGUsIEZvcm1UeXBlIHR5cGUpIGNvbnN0
CiB7CisgICAgaWYgKCFjb25zdF9jYXN0PFJlbmRlclRoZW1lRWZsKj4odGhpcyktPmVkamUoKSkg
eworICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBwYWludCBuYXRpdmUgSFRNTCBwYXJ0
IGR1ZSB0byBtaXNzaW5nIHRoZW1lLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUKG1fcGFydERlc2NzKTsKKwogICAgIGNvbnN0IHN0cnVjdCBUaGVtZVBhcnREZXNjKiBk
ZXNjID0gbV9wYXJ0RGVzY3MgKyAoc2l6ZV90KXR5cGU7CiAKICAgICBpZiAoc3R5bGUtPm1pbldp
ZHRoKCkuaXNJbnRyaW5zaWMoKSkKQEAgLTEwMywxMCArMTEwLDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUVmbDo6dGhlbWVQYXJ0Q2FjaGVFbnRyeVJlc2V0KHN0cnVjdCBUaGVtZVBhcnRDYWNoZUVudHJ5
KiBlbnRyeSwKIHsKICAgICBjb25zdCBjaGFyICpmaWxlLCAqZ3JvdXA7CiAKLSAgICBBU1NFUlQo
ZW50cnkpOwotICAgIEFTU0VSVChtX2VkamUpOwotCi0gICAgZWRqZV9vYmplY3RfZmlsZV9nZXQo
bV9lZGplLCAmZmlsZSwgMCk7CisgICAgZWRqZV9vYmplY3RfZmlsZV9nZXQoZWRqZSgpLCAmZmls
ZSwgMCk7CiAgICAgZ3JvdXAgPSBlZGplR3JvdXBGcm9tRm9ybVR5cGUodHlwZSk7CiAgICAgQVNT
RVJUKGZpbGUpOwogICAgIEFTU0VSVChncm91cCk7CkBAIC0xNTksNyArMTYzLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUVmbDo6aXNGb3JtRWxlbWVudFRvb0xhcmdlVG9EaXNwbGF5KGNvbnN0IEludFNp
emUmIGVsZW1lbnRTaXplKQogc3RydWN0IFJlbmRlclRoZW1lRWZsOjpUaGVtZVBhcnRDYWNoZUVu
dHJ5KiBSZW5kZXJUaGVtZUVmbDo6Y2FjaGVUaGVtZVBhcnROZXcoRm9ybVR5cGUgdHlwZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoaXNGb3JtRWxlbWVudFRvb0xhcmdlVG9EaXNw
bGF5KHNpemUpKSB7Ci0gICAgICAgIEVJTkFfTE9HX0VSUigiY2Fubm90IHJlbmRlciBhbiBlbGVt
ZW50IG9mIHNpemUgJWR4JWQiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAg
ICBFSU5BX0xPR19FUlIoIkNhbm5vdCByZW5kZXIgYW4gZWxlbWVudCBvZiBzaXplICVkeCVkLiIs
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IApAQCAtMzExLDEzICszMTUsMTUgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3Rh
dGVGcm9tRm9ybShFdmFzX09iamVjdCogb2JqZWN0LCBDb250cm9sU3RhdGVzIHMKIAogYm9vbCBS
ZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIEZvcm1U
eXBlIHR5cGUsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
KyAgICBpZiAoIWVkamUoKSkgeworICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBwYWlu
dCBuYXRpdmUgSFRNTCBwYXJ0IGR1ZSB0byBtaXNzaW5nIHRoZW1lLiIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCiAgICAgVGhlbWVQYXJ0Q2FjaGVFbnRyeSogZW50cnk7CiAgICAg
RWluYV9MaXN0KiB1cGRhdGVzOwogICAgIGNhaXJvX3QqIGNhaXJvOwogCi0gICAgQVNTRVJUKG1f
Y2FudmFzKTsKLSAgICBBU1NFUlQobV9lZGplKTsKLQogICAgIGVudHJ5ID0gY2FjaGVUaGVtZVBh
cnRHZXQodHlwZSwgcmVjdC5zaXplKCkpOwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQzOCw1MiArNDQ0LDY3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OnNldFRo
ZW1lUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdGhl
bWVQYXRoID0gcGF0aDsKLSAgICB0aGVtZUNoYW5nZWQoKTsKLX0KIAotdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6Y3JlYXRlQ2FudmFzKCkKLXsKLSAgICBBU1NFUlQoIW1fY2FudmFzKTsKLSAgICBtX2Nh
bnZhcyA9IGVjb3JlX2V2YXNfYnVmZmVyX25ldygxLCAxKTsKLSAgICBBU1NFUlQobV9jYW52YXMp
OworICAgIGlmIChtX3RoZW1lUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgRUlOQV9MT0dfRVJS
KCJObyB0aGVtZSBkZWZpbmVkLCB1bmFibGUgdG8gc2V0IHRoZW1lIGZvciBIVE1MIEZvcm1zLiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtX2NhbnZhcykgeworICAgICAg
ICBtX2NhbnZhcyA9IGVjb3JlX2V2YXNfYnVmZmVyX25ldygxLCAxKTsKKyAgICAgICAgaWYgKCFt
X2NhbnZhcykKKyAgICAgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IGNyZWF0ZSBjYW52
YXMuIik7CisgICAgfQorCisgICAgaWYgKG1fZWRqZSkgeworICAgICAgICAvLyBHZXQgcmlkIG9m
IGN1cnJlbnQgdGhlbWUuCisgICAgICAgIGNhY2hlVGhlbWVQYXJ0Rmx1c2goKTsKKyAgICAgICAg
ZXZhc19vYmplY3RfZGVsKG1fZWRqZSk7CisgICAgICAgIG1fZWRqZSA9IDA7CisgICAgfQogfQog
Ci12b2lkIFJlbmRlclRoZW1lRWZsOjpjcmVhdGVFZGplKCkKK0V2YXNfT2JqZWN0KiBSZW5kZXJU
aGVtZUVmbDo6ZWRqZSgpCiB7Ci0gICAgQVNTRVJUKCFtX2VkamUpOwotICAgIGlmIChtX3RoZW1l
UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIEVJTkFfTE9HX0VSUigiTm8gdGhlbWUgZGVmaW5lZCwg
dW5hYmxlIHRvIHNldCBSZW5kZXJUaGVtZUVmbC4iKTsKLSAgICBlbHNlIHsKKyAgICBpZiAoIW1f
ZWRqZSkgewogICAgICAgICBtX2VkamUgPSBlZGplX29iamVjdF9hZGQoZWNvcmVfZXZhc19nZXQo
bV9jYW52YXMpKTsKLSAgICAgICAgaWYgKCFtX2VkamUpCi0gICAgICAgICAgICBFSU5BX0xPR19F
UlIoIkNvdWxkIG5vdCBjcmVhdGUgYmFzZSBlZGplIG9iamVjdC4iKTsKLSAgICAgICAgZWxzZSBp
ZiAoIWVkamVfb2JqZWN0X2ZpbGVfc2V0KG1fZWRqZSwgbV90aGVtZVBhdGgudXRmOCgpLmRhdGEo
KSwgIndlYmtpdC9iYXNlIikpIHsKKyAgICAgICAgaWYgKCFtX2VkamUpIHsKKyAgICAgICAgICAg
IEVJTkFfTE9HX0NSSVQoIkNvdWxkIG5vdCBjcmVhdGUgYmFzZSBFZGplIG9iamVjdC4iKTsKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlZGplX29iamVj
dF9maWxlX3NldChtX2VkamUsIG1fdGhlbWVQYXRoLnV0ZjgoKS5kYXRhKCksICJ3ZWJraXQvYmFz
ZSIpKSB7CiAgICAgICAgICAgICBFZGplX0xvYWRfRXJyb3IgZXJyID0gZWRqZV9vYmplY3RfbG9h
ZF9lcnJvcl9nZXQobV9lZGplKTsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm1zZyA9IGVk
amVfbG9hZF9lcnJvcl9zdHIoZXJyKTsKLSAgICAgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQg
bm90IHNldCBmaWxlOiAlcyIsIGVycm1zZyk7CisgICAgICAgICAgICBFSU5BX0xPR19DUklUKCJD
b3VsZCBub3Qgc2V0IGZpbGUgJyVzJzogJXMiLCBtX3RoZW1lUGF0aC51dGY4KCkuZGF0YSgpLCAg
ZXJybXNnKTsKKwogICAgICAgICAgICAgZXZhc19vYmplY3RfZGVsKG1fZWRqZSk7CiAgICAgICAg
ICAgICBtX2VkamUgPSAwOwotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0KKwogI2RlZmluZSBDT05ORUNUKGNjLCBmdW5jKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgZWRqZV9vYmplY3Rf
c2lnbmFsX2NhbGxiYWNrX2FkZChtX2VkamUsICJjb2xvcl9jbGFzcyxzZXQiLCAgXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2Via2l0LyJjYywgZnVuYywg
dGhpcykKIAotICAgICAgICAgICAgQ09OTkVDVCgic2VsZWN0aW9uL2FjdGl2ZSIsCi0gICAgICAg
ICAgICAgICAgICAgIHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkFjdGl2ZSk7Ci0g
ICAgICAgICAgICBDT05ORUNUKCJzZWxlY3Rpb24vaW5hY3RpdmUiLAotICAgICAgICAgICAgICAg
ICAgICByZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NTZWxlY3Rpb25JbmFjdGl2ZSk7Ci0gICAgICAg
ICAgICBDT05ORUNUKCJmb2N1c19yaW5nIiwgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzRm9jdXNS
aW5nKTsKKyAgICAgICAgQ09OTkVDVCgic2VsZWN0aW9uL2FjdGl2ZSIsIHJlbmRlclRoZW1lRWZs
Q29sb3JDbGFzc1NlbGVjdGlvbkFjdGl2ZSk7CisgICAgICAgIENPTk5FQ1QoInNlbGVjdGlvbi9p
bmFjdGl2ZSIsIHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkluYWN0aXZlKTsKKyAg
ICAgICAgQ09OTkVDVCgiZm9jdXNfcmluZyIsIHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc0ZvY3Vz
UmluZyk7CiAjdW5kZWYgQ09OTkVDVAotICAgICAgICB9CisKKyAgICAgICAgYXBwbHlFZGplQ29s
b3JzRnJvbShtX2VkamUpOworICAgICAgICBhcHBseVBhcnREZXNjcmlwdGlvbnNGcm9tKG1fZWRq
ZSk7CiAgICAgfQorCisgICAgcmV0dXJuIG1fZWRqZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVm
bDo6YXBwbHlFZGplQ29sb3JzKCkKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5RWRqZUNvbG9y
c0Zyb20oRXZhc19PYmplY3QqIG8pCiB7CiAgICAgaW50IGZyLCBmZywgZmIsIGZhLCBiciwgYmcs
IGJiLCBiYTsKLSAgICBBU1NFUlQobV9lZGplKTsKKyAgICBBU1NFUlQobyk7CiAjZGVmaW5lIENP
TE9SX0dFVChjbHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0KG1fZWRqZSwgIndlYmtpdC8i
Y2xzLCAgICAgICAgICAgICAgICAgICBcCisgICAgZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0
KG8sICJ3ZWJraXQvImNscywgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZmciwgJmZnLCAmZmIsICZmYSwgJmJyLCAmYmcsICZiYiwgJmJh
LCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDApCiAKQEAgLTYw
NSwxNyArNjI2LDIwIEBAIGNvbnN0IGNoYXIqIFJlbmRlclRoZW1lRWZsOjplZGplR3JvdXBGcm9t
Rm9ybVR5cGUoRm9ybVR5cGUgdHlwZSkgY29uc3QKICAgICByZXR1cm4gZ3JvdXBzW3R5cGVdOwog
fQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlvbnMoKQordm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YXBwbHlQYXJ0RGVzY3JpcHRpb25zRnJvbShFdmFzX09iamVjdCogbykK
IHsKICAgICBFdmFzX09iamVjdCogb2JqZWN0OwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGNv
bnN0IGNoYXIqIGZpbGU7CiAKLSAgICBBU1NFUlQobV9jYW52YXMpOwotICAgIEFTU0VSVChtX2Vk
amUpOworICAgIEFTU0VSVChvKTsKIAotICAgIGVkamVfb2JqZWN0X2ZpbGVfZ2V0KG1fZWRqZSwg
JmZpbGUsIDApOworICAgIGVkamVfb2JqZWN0X2ZpbGVfZ2V0KG8sICZmaWxlLCAwKTsKICAgICBB
U1NFUlQoZmlsZSk7CisgICAgaWYgKCFmaWxlKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291
bGQgbm90IHJldHJpZXZlIEVkamUgdGhlbWUgZmlsZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIG9iamVjdCA9IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZh
cykpOwogICAgIGlmICghb2JqZWN0KSB7CkBAIC02NDAsMjYgKzY2NCw2IEBAIHZvaWQgUmVuZGVy
VGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9ucygpCiAgICAgZXZhc19vYmplY3RfZGVsKG9i
amVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OnRoZW1lQ2hhbmdlZCgpCi17Ci0gICAg
Y2FjaGVUaGVtZVBhcnRGbHVzaCgpOwotCi0gICAgaWYgKCFtX2NhbnZhcykgewotICAgICAgICBj
cmVhdGVDYW52YXMoKTsKLSAgICAgICAgaWYgKCFtX2NhbnZhcykKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fZWRqZSkgewotICAgICAgICBjcmVhdGVFZGplKCk7Ci0g
ICAgICAgIGlmICghbV9lZGplKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFw
cGx5RWRqZUNvbG9ycygpOwotICAgIGFwcGx5UGFydERlc2NyaXB0aW9ucygpOwotfQotCiBSZW5k
ZXJUaGVtZUVmbDo6UmVuZGVyVGhlbWVFZmwoUGFnZSogcGFnZSkKICAgICA6IFJlbmRlclRoZW1l
KCkKICAgICAsIG1fcGFnZShwYWdlKQpAQCAtODQyLDcgKzg0NiwxMCBAQCB2b2lkIFJlbmRlclRo
ZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIs
IFJlbmRlclN0eQogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQt
PmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdENoZWNrYm94U3R5bGUoc3R5bGVS
ZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAg
YWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBDaGVja0JveCk7CisgICAgQVNTRVJUKG1fcGFy
dERlc2NzKTsKKwogICAgIHN0eWxlLT5yZXNldEJvcmRlcigpOwogCiAgICAgY29uc3Qgc3RydWN0
IFRoZW1lUGFydERlc2MgKmRlc2MgPSBtX3BhcnREZXNjcyArIChzaXplX3QpQ2hlY2tCb3g7CkBA
IC04NjMsNyArODcwLDEwIEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFJhZGlvU3R5bGUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUqCiAgICAgICAgIHN0YXRp
Y19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVt
ZSgpKS0+YWRqdXN0UmFkaW9TdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUs
IFJhZGlvQnV0dG9uKTsKKyAgICBBU1NFUlQobV9wYXJ0RGVzY3MpOworCiAgICAgc3R5bGUtPnJl
c2V0Qm9yZGVyKCk7CiAKICAgICBjb25zdCBzdHJ1Y3QgVGhlbWVQYXJ0RGVzYyAqZGVzYyA9IG1f
cGFydERlc2NzICsgKHNpemVfdClSYWRpb0J1dHRvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1JlbmRlclRoZW1lRWZsLmgKaW5kZXggZWQ0MmYzN2QwY2Y5YjUwMTZjYzM3MmRiOTc4
ZmYzMzllZjNmYzBkNC4uODg3M2RjNmNiMGQ4OGFhZGJjMzIxNTQxZjUxOWFmYjE2NmU5OGI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmgKQEAgLTEw
Miw4ICsxMDIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZl
U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbmFjdGl2ZVNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcjsgfQogICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1Gb2N1c1Jp
bmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNSaW5nQ29sb3I7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCB0aGVtZUNoYW5nZWQoKTsKLQogICAgIC8vIFNldCBwbGF0Zm9ybSBjb2xvcnMgYW5k
IG5vdGlmeSB0aGV5IGNoYW5nZWQKICAgICB2b2lkIHNldEFjdGl2ZVNlbGVjdGlvbkNvbG9yKGlu
dCBmb3JlUiwgaW50IGZvcmVHLCBpbnQgZm9yZUIsIGludCBmb3JlQSwgaW50IGJhY2tSLCBpbnQg
YmFja0csIGludCBiYWNrQiwgaW50IGJhY2tBKTsKICAgICB2b2lkIHNldEluYWN0aXZlU2VsZWN0
aW9uQ29sb3IoaW50IGZvcmVSLCBpbnQgZm9yZUcsIGludCBmb3JlQiwgaW50IGZvcmVBLCBpbnQg
YmFja1IsIGludCBiYWNrRywgaW50IGJhY2tCLCBpbnQgYmFja0EpOwpAQCAtMjEyLDEwICsyMTAs
MTEgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBmbG9hdCBkZWZhdWx0Rm9udFNpemU7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVDYW52YXMoKTsKLSAgICB2b2lkIGNyZWF0ZUVkamUoKTsK
LSAgICB2b2lkIGFwcGx5RWRqZUNvbG9ycygpOwotICAgIHZvaWQgYXBwbHlQYXJ0RGVzY3JpcHRp
b25zKCk7CisgICAgRXZhc19PYmplY3QqIGVkamUoKTsKKworICAgIHZvaWQgYXBwbHlFZGplQ29s
b3JzRnJvbShFdmFzX09iamVjdCopOworICAgIHZvaWQgYXBwbHlQYXJ0RGVzY3JpcHRpb25zRnJv
bShFdmFzX09iamVjdCopOworCiAgICAgY29uc3QgY2hhciogZWRqZUdyb3VwRnJvbUZvcm1UeXBl
KEZvcm1UeXBlKSBjb25zdDsKICAgICB2b2lkIGFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19P
YmplY3QqLCBDb250cm9sU3RhdGVzKTsKICAgICBib29sIHBhaW50VGhlbWVQYXJ0KFJlbmRlck9i
amVjdCosIEZvcm1UeXBlLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162255</attachid>
            <date>2012-09-05 08:16:52 -0700</date>
            <delta_ts>2012-09-06 03:38:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95832-20120905171633.patch</filename>
            <type>text/plain</type>
            <size>11099</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYjU2ZGVjY2E3ZTlm
MmQxNjIxMmFhYzI0MWNhZjNlZjA1ODE5NC4uMzAyYmY3ZDVmMzdkZTZmNDViN2Y0N2RlMDY1Y2Q2
MDZhMGFhNjY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA5LTA1ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBb
RUZMXSBGdXp6eSBsb2FkIHRoZSBFZGplIHRoZW1lIGZvciBIVE1MIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTgzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgdGhlbWUgc28g
dGhhdCBpdCBpcyBmaXJzdCBsb2FkZWQgd2hlbiBhY3R1YWxseSB1c2VkLgorICAgICAgICBUaGlz
IGFsc28gZml4ZWQgdGhlIGNhc2UgdGhhdCBpdCB3YXMgaW1wb3NzaWJsZSB0byBjaGFuZ2UgdGhl
bWUKKyAgICAgICAgYSBzZWNvbmQgdGltZS4KKworICAgICAgICBUZXN0ZWQgYnkgY3VycmVudCB0
ZXN0cy4gQVBJIHVuaXQgdGVzdCBjb21pbmcgaW4gc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVFZmw6OmFkanVzdFNpemVDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVFbnRyeVJlc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lRWZsOjpjYWNoZVRoZW1lUGFydE5ldyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVFZmw6OnNldFRoZW1lUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUVmbDo6cmVsb2FkVGhlbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmNv
bm5lY3RFZGplU2lnbmFsc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6
OmFwcGx5RWRqZUNvbG9yc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6
OmFwcGx5UGFydERlc2NyaXB0aW9uc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OmFkanVzdENoZWNrYm94U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OmFkanVzdFJhZGlvU3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9SZW5kZXJU
aGVtZUVmbC5oOgorICAgICAgICAoUmVuZGVyVGhlbWVFZmwpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVFZmw6OmVkamUpOgorCiAyMDEyLTA5LTA1ICBDaHJpcyBHdWFuICA8Y2hyaXMu
Z3VhbkB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrYmVycnldIEFkZCBkb2N1
bWVudCB1cmwgYW5kIHNlY3VyaXR5T3JpZ2luIHRvIHBsYXRmb3JtIHJlcXVlc3QuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCA5OGM4MWMy
OWEzOTdjNDA5OTI0OWM2YmI1NTE0NzEyOGUwYWEzZGUxLi45NGVmMTNhNDAxNTQ5MDU0NjkyZWQz
ZDE4MDI4MzAyMWU5Y2M4OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9S
ZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTgxLDYgKzgxLDExIEBAIHN0YXRpYyBjb25zdCBpbnQgbWVk
aWFTbGlkZXJUaHVtYkhlaWdodCA9IDEyOwogCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RT
aXplQ29uc3RyYWludHMoUmVuZGVyU3R5bGUqIHN0eWxlLCBGb3JtVHlwZSB0eXBlKSBjb25zdAog
eworICAgIGlmICghZWRqZSgpKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHBh
aW50IG5hdGl2ZSBIVE1MIHBhcnQgZHVlIHRvIG1pc3NpbmcgdGhlbWUuIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBjb25zdCBzdHJ1Y3QgVGhlbWVQYXJ0RGVzYyogZGVzYyA9IG1f
cGFydERlc2NzICsgKHNpemVfdCl0eXBlOwogCiAgICAgaWYgKHN0eWxlLT5taW5XaWR0aCgpLmlz
SW50cmluc2ljKCkpCkBAIC0xMDMsMTAgKzEwOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnRo
ZW1lUGFydENhY2hlRW50cnlSZXNldChzdHJ1Y3QgVGhlbWVQYXJ0Q2FjaGVFbnRyeSogZW50cnks
CiB7CiAgICAgY29uc3QgY2hhciAqZmlsZSwgKmdyb3VwOwogCi0gICAgQVNTRVJUKGVudHJ5KTsK
LSAgICBBU1NFUlQobV9lZGplKTsKLQotICAgIGVkamVfb2JqZWN0X2ZpbGVfZ2V0KG1fZWRqZSwg
JmZpbGUsIDApOworICAgIGVkamVfb2JqZWN0X2ZpbGVfZ2V0KGVkamUoKSwgJmZpbGUsIDApOwog
ICAgIGdyb3VwID0gZWRqZUdyb3VwRnJvbUZvcm1UeXBlKHR5cGUpOwogICAgIEFTU0VSVChmaWxl
KTsKICAgICBBU1NFUlQoZ3JvdXApOwpAQCAtMTU5LDcgKzE2MSw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVFZmw6OmlzRm9ybUVsZW1lbnRUb29MYXJnZVRvRGlzcGxheShjb25zdCBJbnRTaXplJiBlbGVt
ZW50U2l6ZSkKIHN0cnVjdCBSZW5kZXJUaGVtZUVmbDo6VGhlbWVQYXJ0Q2FjaGVFbnRyeSogUmVu
ZGVyVGhlbWVFZmw6OmNhY2hlVGhlbWVQYXJ0TmV3KEZvcm1UeXBlIHR5cGUsIGNvbnN0IEludFNp
emUmIHNpemUpCiB7CiAgICAgaWYgKGlzRm9ybUVsZW1lbnRUb29MYXJnZVRvRGlzcGxheShzaXpl
KSkgewotICAgICAgICBFSU5BX0xPR19FUlIoImNhbm5vdCByZW5kZXIgYW4gZWxlbWVudCBvZiBz
aXplICVkeCVkIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAgICAgICAgRUlOQV9M
T0dfRVJSKCJDYW5ub3QgcmVuZGVyIGFuIGVsZW1lbnQgb2Ygc2l6ZSAlZHglZC4iLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTMx
MSwxMyArMzEzLDE1IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5RWRqZVN0YXRlRnJvbUZv
cm0oRXZhc19PYmplY3QqIG9iamVjdCwgQ29udHJvbFN0YXRlcyBzCiAKIGJvb2wgUmVuZGVyVGhl
bWVFZmw6OnBhaW50VGhlbWVQYXJ0KFJlbmRlck9iamVjdCogb2JqZWN0LCBGb3JtVHlwZSB0eXBl
LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CisgICAgaWYg
KCFlZGplKCkpIHsKKyAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgcGFpbnQgbmF0aXZl
IEhUTUwgcGFydCBkdWUgdG8gbWlzc2luZyB0aGVtZS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKwogICAgIFRoZW1lUGFydENhY2hlRW50cnkqIGVudHJ5OwogICAgIEVpbmFfTGlz
dCogdXBkYXRlczsKICAgICBjYWlyb190KiBjYWlybzsKIAotICAgIEFTU0VSVChtX2NhbnZhcyk7
Ci0gICAgQVNTRVJUKG1fZWRqZSk7Ci0KICAgICBlbnRyeSA9IGNhY2hlVGhlbWVQYXJ0R2V0KHR5
cGUsIHJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIWVudHJ5KQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00MzgsNTIgKzQ0Miw2OSBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjpzZXRUaGVtZVBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3RoZW1lUGF0aCA9
IHBhdGg7Ci0gICAgdGhlbWVDaGFuZ2VkKCk7CisKKyAgICBpZiAobV90aGVtZVBhdGguaXNFbXB0
eSgpKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiTm8gdGhlbWUgZGVmaW5lZCwgdW5hYmxlIHRv
IHNldCB0aGVtZSBmb3IgSFRNTCBGb3Jtcy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghbV9jYW52YXMpIHsKKyAgICAgICAgbV9jYW52YXMgPSBlY29yZV9ldmFzX2J1ZmZl
cl9uZXcoMSwgMSk7CisgICAgICAgIGlmICghbV9jYW52YXMpCisgICAgICAgICAgICBFSU5BX0xP
R19FUlIoIkNvdWxkIG5vdCBjcmVhdGUgY2FudmFzLiIpOworICAgIH0KIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZUVmbDo6Y3JlYXRlQ2FudmFzKCkKK0V2YXNfT2JqZWN0KiBSZW5kZXJUaGVtZUVmbDo6
cmVsb2FkVGhlbWUoKQogewotICAgIEFTU0VSVCghbV9jYW52YXMpOwotICAgIG1fY2FudmFzID0g
ZWNvcmVfZXZhc19idWZmZXJfbmV3KDEsIDEpOwotICAgIEFTU0VSVChtX2NhbnZhcyk7CisgICAg
RXZhc19PYmplY3QqIG8gPSBlZGplX29iamVjdF9hZGQoZWNvcmVfZXZhc19nZXQobV9jYW52YXMp
KTsKKyAgICBpZiAoIW8pIHsKKyAgICAgICAgRUlOQV9MT0dfQ1JJVCgiQ291bGQgbm90IGNyZWF0
ZSBuZXcgYmFzZSBFZGplIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIG1fZWRqZTsgLy8gS2Vl
cCBjdXJyZW50IHRoZW1lLgorICAgIH0KKworICAgIGlmICghZWRqZV9vYmplY3RfZmlsZV9zZXQo
bywgbV90aGVtZVBhdGgudXRmOCgpLmRhdGEoKSwgIndlYmtpdC9iYXNlIikpIHsKKyAgICAgICAg
RWRqZV9Mb2FkX0Vycm9yIGVyciA9IGVkamVfb2JqZWN0X2xvYWRfZXJyb3JfZ2V0KG8pOworICAg
ICAgICBjb25zdCBjaGFyKiBlcnJtc2cgPSBlZGplX2xvYWRfZXJyb3Jfc3RyKGVycik7CisgICAg
ICAgIEVJTkFfTE9HX0NSSVQoIkNvdWxkIG5vdCBzZXQgZmlsZSAnJXMnOiAlcyIsIG1fdGhlbWVQ
YXRoLnV0ZjgoKS5kYXRhKCksICBlcnJtc2cpOworCisgICAgICAgIGV2YXNfb2JqZWN0X2RlbChv
KTsKKyAgICAgICAgcmV0dXJuIG1fZWRqZTsgLy8gS2VlcCBjdXJyZW50IHRoZW1lLgorICAgIH0K
KworICAgIGlmIChtX2VkamUpIHsKKyAgICAgICAgLy8gR2V0IHJpZCBvZiBleGlzdGluZyB0aGVt
ZS4KKyAgICAgICAgY2FjaGVUaGVtZVBhcnRGbHVzaCgpOworICAgICAgICBldmFzX29iamVjdF9k
ZWwobV9lZGplKTsKKyAgICB9CisKKyAgICBjb25uZWN0RWRqZVNpZ25hbHNGcm9tKG8pOworICAg
IGFwcGx5RWRqZUNvbG9yc0Zyb20obyk7CisgICAgYXBwbHlQYXJ0RGVzY3JpcHRpb25zRnJvbShv
KTsKKworICAgIG1fZWRqZSA9IG87CisgICAgcmV0dXJuIG1fZWRqZTsKIH0KIAotdm9pZCBSZW5k
ZXJUaGVtZUVmbDo6Y3JlYXRlRWRqZSgpCit2b2lkIFJlbmRlclRoZW1lRWZsOjpjb25uZWN0RWRq
ZVNpZ25hbHNGcm9tKEV2YXNfT2JqZWN0KiBvKQogewotICAgIEFTU0VSVCghbV9lZGplKTsKLSAg
ICBpZiAobV90aGVtZVBhdGguaXNFbXB0eSgpKQotICAgICAgICBFSU5BX0xPR19FUlIoIk5vIHRo
ZW1lIGRlZmluZWQsIHVuYWJsZSB0byBzZXQgUmVuZGVyVGhlbWVFZmwuIik7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIG1fZWRqZSA9IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZh
cykpOwotICAgICAgICBpZiAoIW1fZWRqZSkKLSAgICAgICAgICAgIEVJTkFfTE9HX0VSUigiQ291
bGQgbm90IGNyZWF0ZSBiYXNlIGVkamUgb2JqZWN0LiIpOwotICAgICAgICBlbHNlIGlmICghZWRq
ZV9vYmplY3RfZmlsZV9zZXQobV9lZGplLCBtX3RoZW1lUGF0aC51dGY4KCkuZGF0YSgpLCAid2Vi
a2l0L2Jhc2UiKSkgewotICAgICAgICAgICAgRWRqZV9Mb2FkX0Vycm9yIGVyciA9IGVkamVfb2Jq
ZWN0X2xvYWRfZXJyb3JfZ2V0KG1fZWRqZSk7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJt
c2cgPSBlZGplX2xvYWRfZXJyb3Jfc3RyKGVycik7Ci0gICAgICAgICAgICBFSU5BX0xPR19FUlIo
IkNvdWxkIG5vdCBzZXQgZmlsZTogJXMiLCBlcnJtc2cpOwotICAgICAgICAgICAgZXZhc19vYmpl
Y3RfZGVsKG1fZWRqZSk7Ci0gICAgICAgICAgICBtX2VkamUgPSAwOwotICAgICAgICB9IGVsc2Ug
ewotI2RlZmluZSBDT05ORUNUKGNjLCBmdW5jKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZWRqZV9vYmplY3Rfc2lnbmFsX2NhbGxi
YWNrX2FkZChtX2VkamUsICJjb2xvcl9jbGFzcyxzZXQiLCAgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAid2Via2l0LyJjYywgZnVuYywgdGhpcykKLQotICAg
ICAgICAgICAgQ09OTkVDVCgic2VsZWN0aW9uL2FjdGl2ZSIsCi0gICAgICAgICAgICAgICAgICAg
IHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkFjdGl2ZSk7Ci0gICAgICAgICAgICBD
T05ORUNUKCJzZWxlY3Rpb24vaW5hY3RpdmUiLAotICAgICAgICAgICAgICAgICAgICByZW5kZXJU
aGVtZUVmbENvbG9yQ2xhc3NTZWxlY3Rpb25JbmFjdGl2ZSk7Ci0gICAgICAgICAgICBDT05ORUNU
KCJmb2N1c19yaW5nIiwgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzRm9jdXNSaW5nKTsKKyAgICBB
U1NFUlQobyk7CisjZGVmaW5lIENPTk5FQ1QoY2MsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVkamVfb2JqZWN0X3NpZ25hbF9jYWxsYmFja19h
ZGQobywgImNvbG9yX2NsYXNzLHNldCIsICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIndlYmtpdC8iY2MsIGZ1bmMsIHRoaXMpCisKKyAgICBDT05ORUNUKCJzZWxl
Y3Rpb24vYWN0aXZlIiwgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzU2VsZWN0aW9uQWN0aXZlKTsK
KyAgICBDT05ORUNUKCJzZWxlY3Rpb24vaW5hY3RpdmUiLCByZW5kZXJUaGVtZUVmbENvbG9yQ2xh
c3NTZWxlY3Rpb25JbmFjdGl2ZSk7CisgICAgQ09OTkVDVCgiZm9jdXNfcmluZyIsIHJlbmRlclRo
ZW1lRWZsQ29sb3JDbGFzc0ZvY3VzUmluZyk7CiAjdW5kZWYgQ09OTkVDVAotICAgICAgICB9Ci0g
ICAgfQogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVDb2xvcnMoKQordm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplQ29sb3JzRnJvbShFdmFzX09iamVjdCogbykKIHsKICAg
ICBpbnQgZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhOwotICAgIEFTU0VSVChtX2VkamUp
OworICAgIEFTU0VSVChvKTsKICNkZWZpbmUgQ09MT1JfR0VUKGNscykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlZGplX29iamVjdF9jb2xv
cl9jbGFzc19nZXQobV9lZGplLCAid2Via2l0LyJjbHMsICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBlZGplX29iamVjdF9jb2xvcl9jbGFzc19nZXQobywgIndlYmtpdC8iY2xzLCAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyLCAmZmcs
ICZmYiwgJmZhLCAmYnIsICZiZywgJmJiLCAmYmEsIFwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgMCwgMCkKIApAQCAtNjA1LDE3ICs2MjYsMjAgQEAgY29uc3QgY2hhciog
UmVuZGVyVGhlbWVFZmw6OmVkamVHcm91cEZyb21Gb3JtVHlwZShGb3JtVHlwZSB0eXBlKSBjb25z
dAogICAgIHJldHVybiBncm91cHNbdHlwZV07CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFw
cGx5UGFydERlc2NyaXB0aW9ucygpCit2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNj
cmlwdGlvbnNGcm9tKEV2YXNfT2JqZWN0KiBvKQogewogICAgIEV2YXNfT2JqZWN0KiBvYmplY3Q7
CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgY29uc3QgY2hhciogZmlsZTsKIAotICAgIEFTU0VS
VChtX2NhbnZhcyk7Ci0gICAgQVNTRVJUKG1fZWRqZSk7CisgICAgQVNTRVJUKG8pOwogCi0gICAg
ZWRqZV9vYmplY3RfZmlsZV9nZXQobV9lZGplLCAmZmlsZSwgMCk7CisgICAgZWRqZV9vYmplY3Rf
ZmlsZV9nZXQobywgJmZpbGUsIDApOwogICAgIEFTU0VSVChmaWxlKTsKKyAgICBpZiAoIWZpbGUp
IHsKKyAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgcmV0cmlldmUgRWRqZSB0aGVtZSBm
aWxlLiIpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgb2JqZWN0ID0gZWRqZV9vYmpl
Y3RfYWRkKGVjb3JlX2V2YXNfZ2V0KG1fY2FudmFzKSk7CiAgICAgaWYgKCFvYmplY3QpIHsKQEAg
LTY0MCwyNiArNjY0LDYgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlQYXJ0RGVzY3JpcHRp
b25zKCkKICAgICBldmFzX29iamVjdF9kZWwob2JqZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6dGhlbWVDaGFuZ2VkKCkKLXsKLSAgICBjYWNoZVRoZW1lUGFydEZsdXNoKCk7Ci0KLSAg
ICBpZiAoIW1fY2FudmFzKSB7Ci0gICAgICAgIGNyZWF0ZUNhbnZhcygpOwotICAgICAgICBpZiAo
IW1fY2FudmFzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9lZGpl
KSB7Ci0gICAgICAgIGNyZWF0ZUVkamUoKTsKLSAgICAgICAgaWYgKCFtX2VkamUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXBwbHlFZGplQ29sb3JzKCk7Ci0gICAgYXBwbHlQ
YXJ0RGVzY3JpcHRpb25zKCk7Ci19Ci0KIFJlbmRlclRoZW1lRWZsOjpSZW5kZXJUaGVtZUVmbChQ
YWdlKiBwYWdlKQogICAgIDogUmVuZGVyVGhlbWUoKQogICAgICwgbV9wYWdlKHBhZ2UpCkBAIC04
NDIsNyArODQ2LDEwIEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdENoZWNrYm94U3R5bGUo
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5CiAgICAgICAgIHN0YXRpY19j
YXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgp
KS0+YWRqdXN0Q2hlY2tib3hTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUs
IENoZWNrQm94KTsKKyAgICBBU1NFUlQobV9lZGplKTsKKwogICAgIHN0eWxlLT5yZXNldEJvcmRl
cigpOwogCiAgICAgY29uc3Qgc3RydWN0IFRoZW1lUGFydERlc2MgKmRlc2MgPSBtX3BhcnREZXNj
cyArIChzaXplX3QpQ2hlY2tCb3g7CkBAIC04NjMsNyArODcwLDEwIEBAIHZvaWQgUmVuZGVyVGhl
bWVFZmw6OmFkanVzdFJhZGlvU3R5bGUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgUmVu
ZGVyU3R5bGUqCiAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+
ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0UmFkaW9TdHlsZShzdHlsZVJlc29s
dmVyLCBzdHlsZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBhZGp1
c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIFJhZGlvQnV0dG9uKTsKKyAgICBBU1NFUlQobV9lZGpl
KTsKKwogICAgIHN0eWxlLT5yZXNldEJvcmRlcigpOwogCiAgICAgY29uc3Qgc3RydWN0IFRoZW1l
UGFydERlc2MgKmRlc2MgPSBtX3BhcnREZXNjcyArIChzaXplX3QpUmFkaW9CdXR0b247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCmluZGV4IGVkNDJmMzdk
MGNmOWI1MDE2Y2MzNzJkYjk3OGZmMzM5ZWYzZmMwZDQuLmE5ZDIyMzA3M2E3ZDQ4NDRhY2U5MTgw
OWNlOWI5NGQwOWE2YWUzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9SZW5kZXJUaGVtZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5k
ZXJUaGVtZUVmbC5oCkBAIC0xMDIsOCArMTAyLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQ29s
b3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7IH0KICAgICB2aXJ0dWFsIENv
bG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzUmluZ0Nv
bG9yOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCk7Ci0KICAgICAvLyBTZXQg
cGxhdGZvcm0gY29sb3JzIGFuZCBub3RpZnkgdGhleSBjaGFuZ2VkCiAgICAgdm9pZCBzZXRBY3Rp
dmVTZWxlY3Rpb25Db2xvcihpbnQgZm9yZVIsIGludCBmb3JlRywgaW50IGZvcmVCLCBpbnQgZm9y
ZUEsIGludCBiYWNrUiwgaW50IGJhY2tHLCBpbnQgYmFja0IsIGludCBiYWNrQSk7CiAgICAgdm9p
ZCBzZXRJbmFjdGl2ZVNlbGVjdGlvbkNvbG9yKGludCBmb3JlUiwgaW50IGZvcmVHLCBpbnQgZm9y
ZUIsIGludCBmb3JlQSwgaW50IGJhY2tSLCBpbnQgYmFja0csIGludCBiYWNrQiwgaW50IGJhY2tB
KTsKQEAgLTIxMiwxMCArMjEwLDE2IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgZmxvYXQgZGVm
YXVsdEZvbnRTaXplOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlQ2FudmFzKCk7Ci0gICAg
dm9pZCBjcmVhdGVFZGplKCk7Ci0gICAgdm9pZCBhcHBseUVkamVDb2xvcnMoKTsKLSAgICB2b2lk
IGFwcGx5UGFydERlc2NyaXB0aW9ucygpOworICAgIEV2YXNfT2JqZWN0KiByZWxvYWRUaGVtZSgp
OworICAgIEFMV0FZU19JTkxJTkUgRXZhc19PYmplY3QqIGVkamUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZWRqZSA/IG1fZWRqZSA6IGNvbnN0X2Nhc3Q8UmVuZGVyVGhlbWVFZmwq
Pih0aGlzKS0+cmVsb2FkVGhlbWUoKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbm5lY3RFZGplU2ln
bmFsc0Zyb20oRXZhc19PYmplY3QqKTsKKyAgICB2b2lkIGFwcGx5RWRqZUNvbG9yc0Zyb20oRXZh
c19PYmplY3QqKTsKKyAgICB2b2lkIGFwcGx5UGFydERlc2NyaXB0aW9uc0Zyb20oRXZhc19PYmpl
Y3QqKTsKKwogICAgIGNvbnN0IGNoYXIqIGVkamVHcm91cEZyb21Gb3JtVHlwZShGb3JtVHlwZSkg
Y29uc3Q7CiAgICAgdm9pZCBhcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiwgQ29u
dHJvbFN0YXRlcyk7CiAgICAgYm9vbCBwYWludFRoZW1lUGFydChSZW5kZXJPYmplY3QqLCBGb3Jt
VHlwZSwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162468</attachid>
            <date>2012-09-06 03:38:59 -0700</date>
            <delta_ts>2012-09-06 04:51:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95832-20120906123839.patch</filename>
            <type>text/plain</type>
            <size>19132</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYjU2ZGVjY2E3ZTlm
MmQxNjIxMmFhYzI0MWNhZjNlZjA1ODE5NC4uMzAyYmY3ZDVmMzdkZTZmNDViN2Y0N2RlMDY1Y2Q2
MDZhMGFhNjY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA5LTA1ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBb
RUZMXSBGdXp6eSBsb2FkIHRoZSBFZGplIHRoZW1lIGZvciBIVE1MIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTgzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgdGhlbWUgc28g
dGhhdCBpdCBpcyBmaXJzdCBsb2FkZWQgd2hlbiBhY3R1YWxseSB1c2VkLgorICAgICAgICBUaGlz
IGFsc28gZml4ZWQgdGhlIGNhc2UgdGhhdCBpdCB3YXMgaW1wb3NzaWJsZSB0byBjaGFuZ2UgdGhl
bWUKKyAgICAgICAgYSBzZWNvbmQgdGltZS4KKworICAgICAgICBUZXN0ZWQgYnkgY3VycmVudCB0
ZXN0cy4gQVBJIHVuaXQgdGVzdCBjb21pbmcgaW4gc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVFZmw6OmFkanVzdFNpemVDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVFbnRyeVJlc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lRWZsOjpjYWNoZVRoZW1lUGFydE5ldyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVFZmw6OnNldFRoZW1lUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUVmbDo6cmVsb2FkVGhlbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmNv
bm5lY3RFZGplU2lnbmFsc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6
OmFwcGx5RWRqZUNvbG9yc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6
OmFwcGx5UGFydERlc2NyaXB0aW9uc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OmFkanVzdENoZWNrYm94U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OmFkanVzdFJhZGlvU3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9SZW5kZXJU
aGVtZUVmbC5oOgorICAgICAgICAoUmVuZGVyVGhlbWVFZmwpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVFZmw6OmVkamUpOgorCiAyMDEyLTA5LTA1ICBDaHJpcyBHdWFuICA8Y2hyaXMu
Z3VhbkB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrYmVycnldIEFkZCBkb2N1
bWVudCB1cmwgYW5kIHNlY3VyaXR5T3JpZ2luIHRvIHBsYXRmb3JtIHJlcXVlc3QuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCA5OGM4MWMy
OWEzOTdjNDA5OTI0OWM2YmI1NTE0NzEyOGUwYWEzZGUxLi5jNTg4NmRmNzA0ZTc5NTgwYzkzYjg5
Mzk3ZTI5NmEyYzUyNGZlZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9S
ZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTgxLDYgKzgxLDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgbWVk
aWFTbGlkZXJUaHVtYkhlaWdodCA9IDEyOwogCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RT
aXplQ29uc3RyYWludHMoUmVuZGVyU3R5bGUqIHN0eWxlLCBGb3JtVHlwZSB0eXBlKSBjb25zdAog
eworICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CisKKyAgICBpZiAoIW1fZWRqZSkgeworICAgICAg
ICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBwYWludCBuYXRpdmUgSFRNTCBwYXJ0IGR1ZSB0byBt
aXNzaW5nIHRoZW1lLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY29uc3Qgc3Ry
dWN0IFRoZW1lUGFydERlc2MqIGRlc2MgPSBtX3BhcnREZXNjcyArIChzaXplX3QpdHlwZTsKIAog
ICAgIGlmIChzdHlsZS0+bWluV2lkdGgoKS5pc0ludHJpbnNpYygpKQpAQCAtMTAzLDkgKzExMCw2
IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnRoZW1lUGFydENhY2hlRW50cnlSZXNldChzdHJ1Y3Qg
VGhlbWVQYXJ0Q2FjaGVFbnRyeSogZW50cnksCiB7CiAgICAgY29uc3QgY2hhciAqZmlsZSwgKmdy
b3VwOwogCi0gICAgQVNTRVJUKGVudHJ5KTsKLSAgICBBU1NFUlQobV9lZGplKTsKLQogICAgIGVk
amVfb2JqZWN0X2ZpbGVfZ2V0KG1fZWRqZSwgJmZpbGUsIDApOwogICAgIGdyb3VwID0gZWRqZUdy
b3VwRnJvbUZvcm1UeXBlKHR5cGUpOwogICAgIEFTU0VSVChmaWxlKTsKQEAgLTE1OSw3ICsxNjMs
NyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjppc0Zvcm1FbGVtZW50VG9vTGFyZ2VUb0Rpc3BsYXko
Y29uc3QgSW50U2l6ZSYgZWxlbWVudFNpemUpCiBzdHJ1Y3QgUmVuZGVyVGhlbWVFZmw6OlRoZW1l
UGFydENhY2hlRW50cnkqIFJlbmRlclRoZW1lRWZsOjpjYWNoZVRoZW1lUGFydE5ldyhGb3JtVHlw
ZSB0eXBlLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGlmIChpc0Zvcm1FbGVtZW50VG9v
TGFyZ2VUb0Rpc3BsYXkoc2l6ZSkpIHsKLSAgICAgICAgRUlOQV9MT0dfRVJSKCJjYW5ub3QgcmVu
ZGVyIGFuIGVsZW1lbnQgb2Ygc2l6ZSAlZHglZCIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSk7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ2Fubm90IHJlbmRlciBhbiBlbGVtZW50IG9mIHNp
emUgJWR4JWQuIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCkBAIC0zMTEsMTMgKzMxNSwxNyBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjph
cHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiBvYmplY3QsIENvbnRyb2xTdGF0ZXMg
cwogCiBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFRoZW1lUGFydChSZW5kZXJPYmplY3QqIG9i
amVjdCwgRm9ybVR5cGUgdHlwZSwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogeworICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CisKKyAgICBpZiAoIW1fZWRqZSkg
eworICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBwYWludCBuYXRpdmUgSFRNTCBwYXJ0
IGR1ZSB0byBtaXNzaW5nIHRoZW1lLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CiAgICAgVGhlbWVQYXJ0Q2FjaGVFbnRyeSogZW50cnk7CiAgICAgRWluYV9MaXN0KiB1cGRhdGVz
OwogICAgIGNhaXJvX3QqIGNhaXJvOwogCi0gICAgQVNTRVJUKG1fY2FudmFzKTsKLSAgICBBU1NF
UlQobV9lZGplKTsKLQogICAgIGVudHJ5ID0gY2FjaGVUaGVtZVBhcnRHZXQodHlwZSwgcmVjdC5z
aXplKCkpOwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM5OSwz
NyArNDA3LDQ1IEBAIFBhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1lOjp0aGVtZUZv
clBhZ2UoUGFnZSogcGFnZSkKICAgICByZXR1cm4gZmFsbGJhY2s7CiB9CiAKLXN0YXRpYyB2b2lk
IHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkFjdGl2ZSh2b2lkKiBkYXRhLCBFdmFz
X09iamVjdCogb2JqZWN0LCBjb25zdCBjaGFyKiBzaWduYWwsIGNvbnN0IGNoYXIqIHNvdXJjZSkK
K3N0YXRpYyB2b2lkIGFwcGx5Q29sb3JDYWxsYmFjayh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCos
IGNvbnN0IGNoYXIqIC8qIHNpZ25hbCAqLywgY29uc3QgY2hhciogY29sb3JDbGFzcykKIHsKLSAg
ICBSZW5kZXJUaGVtZUVmbCogdGhhdCA9IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsICo+KGRh
dGEpOwotICAgIGludCBmciwgZmcsIGZiLCBmYSwgYnIsIGJnLCBiYiwgYmE7Ci0KLSAgICBpZiAo
IWVkamVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldChvYmplY3QsIHNvdXJjZSwgJmZyLCAmZmcsICZm
YiwgJmZhLCAmYnIsICZiZywgJmJiLCAmYmEsIDAsIDAsIDAsIDApKQotICAgICAgICByZXR1cm47
Ci0KLSAgICB0aGF0LT5zZXRBY3RpdmVTZWxlY3Rpb25Db2xvcihmciwgZmcsIGZiLCBmYSwgYnIs
IGJnLCBiYiwgYmEpOworICAgIFJlbmRlclRoZW1lRWZsKiB0aGF0ID0gc3RhdGljX2Nhc3Q8UmVu
ZGVyVGhlbWVFZmwqPihkYXRhKTsKKyAgICB0aGF0LT5zZXRDb2xvckZyb21UaGVtZUNsYXNzKGNv
bG9yQ2xhc3MpOworICAgIHRoYXQtPnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7IC8vIFRyaWdn
ZXJzIHJlbGF5b3V0LgogfQogCi1zdGF0aWMgdm9pZCByZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NT
ZWxlY3Rpb25JbmFjdGl2ZSh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogb2JqZWN0LCBjb25zdCBj
aGFyKiBzaWduYWwsIGNvbnN0IGNoYXIqIHNvdXJjZSkKK3N0YXRpYyB2b2lkIGZpbGxDb2xvcnNG
cm9tRWRqZUNsYXNzKEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBjb2xvckNsYXNzLCBDb2xv
ciogY29sb3IxLCBDb2xvciogY29sb3IyID0gMCwgQ29sb3IqIGNvbG9yMyA9IDApCiB7Ci0gICAg
UmVuZGVyVGhlbWVFZmwqIHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCAqPihkYXRh
KTsKLSAgICBpbnQgZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhOworICAgIGludCByMSwg
ZzEsIGIxLCBhMTsKKyAgICBpbnQgcjIsIGcyLCBiMiwgYTI7CisgICAgaW50IHIzLCBnMywgYjMs
IGEzOwogCi0gICAgaWYgKCFlZGplX29iamVjdF9jb2xvcl9jbGFzc19nZXQob2JqZWN0LCBzb3Vy
Y2UsICZmciwgJmZnLCAmZmIsICZmYSwgJmJyLCAmYmcsICZiYiwgJmJhLCAwLCAwLCAwLCAwKSkK
KyAgICBib29sIG9rID0gZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0KG8sIGNvbG9yQ2xhc3Ms
ICZyMSwgJmcxLCAmYjEsICZhMSwgJnIyLCAmZzIsICZiMiwgJmEyLCAmcjMsICZnMywgJmIzLCAm
YTMpOworICAgIGlmICghb2spCiAgICAgICAgIHJldHVybjsKIAotICAgIHRoYXQtPnNldEluYWN0
aXZlU2VsZWN0aW9uQ29sb3IoZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhKTsKKyAgICBp
ZiAoY29sb3IxKQorICAgICAgICBjb2xvcjEtPnNldFJHQihtYWtlUkdCQShyMSwgZzEsIGIxLCBh
MSkpOworICAgIGlmIChjb2xvcjIpCisgICAgICAgIGNvbG9yMi0+c2V0UkdCKG1ha2VSR0JBKHIy
LCBnMiwgYjIsIGEyKSk7CisgICAgaWYgKGNvbG9yMykKKyAgICAgICAgY29sb3IzLT5zZXRSR0Io
bWFrZVJHQkEocjMsIGczLCBiMywgYTMpKTsKIH0KIAotc3RhdGljIHZvaWQgcmVuZGVyVGhlbWVF
ZmxDb2xvckNsYXNzRm9jdXNSaW5nKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvYmplY3QsIGNv
bnN0IGNoYXIqIHNpZ25hbCwgY29uc3QgY2hhciogc291cmNlKQordm9pZCBSZW5kZXJUaGVtZUVm
bDo6c2V0Q29sb3JGcm9tVGhlbWVDbGFzcyhjb25zdCBjaGFyKiBjb2xvckNsYXNzKQogewotICAg
IFJlbmRlclRoZW1lRWZsKiB0aGF0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwgKj4oZGF0
YSk7Ci0gICAgaW50IGZyLCBmZywgZmIsIGZhOwotCi0gICAgaWYgKCFlZGplX29iamVjdF9jb2xv
cl9jbGFzc19nZXQob2JqZWN0LCBzb3VyY2UsICZmciwgJmZnLCAmZmIsICZmYSwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCkpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9lZGplKTsKIAot
ICAgIHRoYXQtPnNldEZvY3VzUmluZ0NvbG9yKGZyLCBmZywgZmIsIGZhKTsKKyAgICBpZiAoIXN0
cmNtcCgid2Via2l0L3NlbGVjdGlvbi9hY3RpdmUiLCBjb2xvckNsYXNzKSkKKyAgICAgICAgZmls
bENvbG9yc0Zyb21FZGplQ2xhc3MobV9lZGplLCBjb2xvckNsYXNzLCAmbV9hY3RpdmVTZWxlY3Rp
b25Gb3JlZ3JvdW5kQ29sb3IsICZtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik7Cisg
ICAgZWxzZSBpZiAoIXN0cmNtcCgid2Via2l0L3NlbGVjdGlvbi9pbmFjdGl2ZSIsIGNvbG9yQ2xh
c3MpKQorICAgICAgICBmaWxsQ29sb3JzRnJvbUVkamVDbGFzcyhtX2VkamUsIGNvbG9yQ2xhc3Ms
ICZtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yLCAmbV9pbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcik7CisgICAgZWxzZSBpZiAoIXN0cmNtcCgid2Via2l0L2ZvY3VzX3Jp
bmciLCBjb2xvckNsYXNzKSkgeworICAgICAgICBmaWxsQ29sb3JzRnJvbUVkamVDbGFzcyhtX2Vk
amUsIGNvbG9yQ2xhc3MsICZtX2ZvY3VzUmluZ0NvbG9yKTsKKyAgICAgICAgLy8gcGxhdGZvcm1G
b2N1c1JpbmdDb2xvcigpIGlzIG9ubHkgdXNlZCBmb3IgdGhlIGRlZmF1bHQgdGhlbWUgKHdpdGhv
dXQgcGFnZSkKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyB1Z2x5LCBidXQgbm8gb3RoZXIg
d2F5IHRvIGRvIGl0IHVubGVzcyB3ZSBjaGFuZ2UgaXQgdG8gdXNlIHBhZ2UgdGhlbWVzIGFzIG11
Y2ggYXMgcG9zc2libGUuCisgICAgICAgIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdD
b2xvcihtX2ZvY3VzUmluZ0NvbG9yKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVFZmw6
OnNldFRoZW1lUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCkBAIC00MzgsNzIgKzQ1NCw1OSBAQCB2
b2lkIFJlbmRlclRoZW1lRWZsOjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3RoZW1lUGF0aCA9IHBhdGg7Ci0gICAgdGhlbWVDaGFuZ2Vk
KCk7Ci19CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmNyZWF0ZUNhbnZhcygpCi17Ci0gICAgQVNT
RVJUKCFtX2NhbnZhcyk7Ci0gICAgbV9jYW52YXMgPSBlY29yZV9ldmFzX2J1ZmZlcl9uZXcoMSwg
MSk7Ci0gICAgQVNTRVJUKG1fY2FudmFzKTsKLX0KKyAgICBpZiAobV90aGVtZVBhdGguaXNFbXB0
eSgpKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiTm8gdGhlbWUgZGVmaW5lZCwgdW5hYmxlIHRv
IHNldCB0aGVtZSBmb3IgSFRNTCBGb3Jtcy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAot
dm9pZCBSZW5kZXJUaGVtZUVmbDo6Y3JlYXRlRWRqZSgpCi17Ci0gICAgQVNTRVJUKCFtX2VkamUp
OwotICAgIGlmIChtX3RoZW1lUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIEVJTkFfTE9HX0VSUigi
Tm8gdGhlbWUgZGVmaW5lZCwgdW5hYmxlIHRvIHNldCBSZW5kZXJUaGVtZUVmbC4iKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgbV9lZGplID0gZWRqZV9vYmplY3RfYWRkKGVjb3JlX2V2YXNfZ2V0KG1f
Y2FudmFzKSk7Ci0gICAgICAgIGlmICghbV9lZGplKQotICAgICAgICAgICAgRUlOQV9MT0dfRVJS
KCJDb3VsZCBub3QgY3JlYXRlIGJhc2UgZWRqZSBvYmplY3QuIik7Ci0gICAgICAgIGVsc2UgaWYg
KCFlZGplX29iamVjdF9maWxlX3NldChtX2VkamUsIG1fdGhlbWVQYXRoLnV0ZjgoKS5kYXRhKCks
ICJ3ZWJraXQvYmFzZSIpKSB7Ci0gICAgICAgICAgICBFZGplX0xvYWRfRXJyb3IgZXJyID0gZWRq
ZV9vYmplY3RfbG9hZF9lcnJvcl9nZXQobV9lZGplKTsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGVycm1zZyA9IGVkamVfbG9hZF9lcnJvcl9zdHIoZXJyKTsKLSAgICAgICAgICAgIEVJTkFfTE9H
X0VSUigiQ291bGQgbm90IHNldCBmaWxlOiAlcyIsIGVycm1zZyk7Ci0gICAgICAgICAgICBldmFz
X29iamVjdF9kZWwobV9lZGplKTsKLSAgICAgICAgICAgIG1fZWRqZSA9IDA7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0jZGVmaW5lIENPTk5FQ1QoY2MsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBlZGplX29iamVjdF9zaWduYWxf
Y2FsbGJhY2tfYWRkKG1fZWRqZSwgImNvbG9yX2NsYXNzLHNldCIsICBcCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZWJraXQvImNjLCBmdW5jLCB0aGlzKQot
Ci0gICAgICAgICAgICBDT05ORUNUKCJzZWxlY3Rpb24vYWN0aXZlIiwKLSAgICAgICAgICAgICAg
ICAgICAgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzU2VsZWN0aW9uQWN0aXZlKTsKLSAgICAgICAg
ICAgIENPTk5FQ1QoInNlbGVjdGlvbi9pbmFjdGl2ZSIsCi0gICAgICAgICAgICAgICAgICAgIHJl
bmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkluYWN0aXZlKTsKLSAgICAgICAgICAgIENP
Tk5FQ1QoImZvY3VzX3JpbmciLCByZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NGb2N1c1JpbmcpOwot
I3VuZGVmIENPTk5FQ1QKLSAgICAgICAgfQorICAgIGlmICghbV9jYW52YXMpIHsKKyAgICAgICAg
bV9jYW52YXMgPSBlY29yZV9ldmFzX2J1ZmZlcl9uZXcoMSwgMSk7CisgICAgICAgIGlmICghbV9j
YW52YXMpCisgICAgICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBjcmVhdGUgY2FudmFz
LiIpOwogICAgIH0KKworICAgIGxvYWRUaGVtZSgpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZs
OjphcHBseUVkamVDb2xvcnMoKQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6bG9hZFRoZW1lKCkKIHsK
LSAgICBpbnQgZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhOwotICAgIEFTU0VSVChtX2Vk
amUpOwotI2RlZmluZSBDT0xPUl9HRVQoY2xzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVkamVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldCht
X2VkamUsICJ3ZWJraXQvImNscywgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwg
XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwKQotCi0gICAgaWYg
KENPTE9SX0dFVCgic2VsZWN0aW9uL2FjdGl2ZSIpKSB7Ci0gICAgICAgIG1fYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yID0gQ29sb3IoZnIsIGZnLCBmYiwgZmEpOwotICAgICAgICBtX2Fj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yKGJyLCBiZywgYmIsIGJhKTsKKyAg
ICBFdmFzX09iamVjdCogbyA9IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZh
cykpOworICAgIGlmICghbykgeworICAgICAgICBFSU5BX0xPR19DUklUKCJDb3VsZCBub3QgY3Jl
YXRlIG5ldyBiYXNlIEVkamUgb2JqZWN0LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEtl
ZXAgY3VycmVudCB0aGVtZS4KICAgICB9Ci0gICAgaWYgKENPTE9SX0dFVCgic2VsZWN0aW9uL2lu
YWN0aXZlIikpIHsKLSAgICAgICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9
IENvbG9yKGZyLCBmZywgZmIsIGZhKTsKLSAgICAgICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvciA9IENvbG9yKGJyLCBiZywgYmIsIGJhKTsKKworICAgIGlmICghZWRqZV9vYmpl
Y3RfZmlsZV9zZXQobywgbV90aGVtZVBhdGgudXRmOCgpLmRhdGEoKSwgIndlYmtpdC9iYXNlIikp
IHsKKyAgICAgICAgRWRqZV9Mb2FkX0Vycm9yIGVyciA9IGVkamVfb2JqZWN0X2xvYWRfZXJyb3Jf
Z2V0KG8pOworICAgICAgICBjb25zdCBjaGFyKiBlcnJtc2cgPSBlZGplX2xvYWRfZXJyb3Jfc3Ry
KGVycik7CisgICAgICAgIEVJTkFfTE9HX0NSSVQoIkNvdWxkIG5vdCBzZXQgZmlsZSAnJXMnOiAl
cyIsIG1fdGhlbWVQYXRoLnV0ZjgoKS5kYXRhKCksICBlcnJtc2cpOworICAgICAgICBldmFzX29i
amVjdF9kZWwobyk7CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gS2VlcCBjdXJyZW50IHRoZW1l
LgogICAgIH0KLSAgICBpZiAoQ09MT1JfR0VUKCJmb2N1c19yaW5nIikpIHsKLSAgICAgICAgbV9m
b2N1c1JpbmdDb2xvciA9IENvbG9yKGZyLCBmZywgZmIsIGZhKTsKLSAgICAgICAgLy8gd2Via2l0
IGp1c3QgdXNlIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBmb3IgZGVmYXVsdCB0aGVtZSAod2l0
aG91dCBwYWdlKQotICAgICAgICAvLyB0aGlzIGlzIHVnbHksIGJ1dCBubyBvdGhlciB3YXkgdG8g
ZG8gaXQgdW5sZXNzIHdlIGNoYW5nZQotICAgICAgICAvLyBpdCB0byB1c2UgcGFnZSB0aGVtZXMg
YXMgbXVjaCBhcyBwb3NzaWJsZS4KLSAgICAgICAgUmVuZGVyVGhlbWU6OnNldEN1c3RvbUZvY3Vz
UmluZ0NvbG9yKG1fZm9jdXNSaW5nQ29sb3IpOworCisgICAgLy8gR2V0IHJpZCBvZiBleGlzdGlu
ZyB0aGVtZS4KKyAgICBpZiAobV9lZGplKSB7CisgICAgICAgIGNhY2hlVGhlbWVQYXJ0Rmx1c2go
KTsKKyAgICAgICAgZXZhc19vYmplY3RfZGVsKG1fZWRqZSk7CiAgICAgfQotI3VuZGVmIENPTE9S
X0dFVAotICAgIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7CisKKyAgICAvLyBTZXQgbmV3IGxv
YWRlZCB0aGVtZSwgYW5kIGFwcGx5IGl0LgorICAgIG1fZWRqZSA9IG87CisKKyAgICBlZGplX29i
amVjdF9zaWduYWxfY2FsbGJhY2tfYWRkKG1fZWRqZSwgImNvbG9yX2NsYXNzLHNldCIsICJ3ZWJr
aXQvc2VsZWN0aW9uL2FjdGl2ZSIsIGFwcGx5Q29sb3JDYWxsYmFjaywgdGhpcyk7CisgICAgZWRq
ZV9vYmplY3Rfc2lnbmFsX2NhbGxiYWNrX2FkZChtX2VkamUsICJjb2xvcl9jbGFzcyxzZXQiLCAi
d2Via2l0L3NlbGVjdGlvbi9pbmFjdGl2ZSIsIGFwcGx5Q29sb3JDYWxsYmFjaywgdGhpcyk7Cisg
ICAgZWRqZV9vYmplY3Rfc2lnbmFsX2NhbGxiYWNrX2FkZChtX2VkamUsICJjb2xvcl9jbGFzcyxz
ZXQiLCAid2Via2l0L2ZvY3VzX3JpbmciLCBhcHBseUNvbG9yQ2FsbGJhY2ssIHRoaXMpOworCisg
ICAgYXBwbHlQYXJ0RGVzY3JpcHRpb25zRnJvbShtX2VkamUpOworCisgICAgc2V0Q29sb3JGcm9t
VGhlbWVDbGFzcygid2Via2l0L3NlbGVjdGlvbi9hY3RpdmUiKTsKKyAgICBzZXRDb2xvckZyb21U
aGVtZUNsYXNzKCJ3ZWJraXQvc2VsZWN0aW9uL2luYWN0aXZlIik7CisgICAgc2V0Q29sb3JGcm9t
VGhlbWVDbGFzcygid2Via2l0L2ZvY3VzX3JpbmciKTsKKworICAgIHBsYXRmb3JtQ29sb3JzRGlk
Q2hhbmdlKCk7IC8vIFNjaGVkdWxlcyBhIHJlbGF5b3V0LCBkbyBsYXN0LgorCisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9uRmFs
bGJhY2soc3RydWN0IFRoZW1lUGFydERlc2MqIGRlc2MpCkBAIC02MDUsMTcgKzYwOCwyMCBAQCBj
b25zdCBjaGFyKiBSZW5kZXJUaGVtZUVmbDo6ZWRqZUdyb3VwRnJvbUZvcm1UeXBlKEZvcm1UeXBl
IHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIGdyb3Vwc1t0eXBlXTsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZUVmbDo6YXBwbHlQYXJ0RGVzY3JpcHRpb25zKCkKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFw
cGx5UGFydERlc2NyaXB0aW9uc0Zyb20oRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRXZhc19PYmpl
Y3QqIG9iamVjdDsKICAgICB1bnNpZ25lZCBpbnQgaTsKICAgICBjb25zdCBjaGFyKiBmaWxlOwog
Ci0gICAgQVNTRVJUKG1fY2FudmFzKTsKLSAgICBBU1NFUlQobV9lZGplKTsKKyAgICBBU1NFUlQo
byk7CiAKLSAgICBlZGplX29iamVjdF9maWxlX2dldChtX2VkamUsICZmaWxlLCAwKTsKKyAgICBl
ZGplX29iamVjdF9maWxlX2dldChvLCAmZmlsZSwgMCk7CiAgICAgQVNTRVJUKGZpbGUpOworICAg
IGlmICghZmlsZSkgeworICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCByZXRyaWV2ZSBF
ZGplIHRoZW1lIGZpbGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBvYmplY3Qg
PSBlZGplX29iamVjdF9hZGQoZWNvcmVfZXZhc19nZXQobV9jYW52YXMpKTsKICAgICBpZiAoIW9i
amVjdCkgewpAQCAtNjQwLDI2ICs2NDYsNiBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseVBh
cnREZXNjcmlwdGlvbnMoKQogICAgIGV2YXNfb2JqZWN0X2RlbChvYmplY3QpOwogfQogCi12b2lk
IFJlbmRlclRoZW1lRWZsOjp0aGVtZUNoYW5nZWQoKQotewotICAgIGNhY2hlVGhlbWVQYXJ0Rmx1
c2goKTsKLQotICAgIGlmICghbV9jYW52YXMpIHsKLSAgICAgICAgY3JlYXRlQ2FudmFzKCk7Ci0g
ICAgICAgIGlmICghbV9jYW52YXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKCFtX2VkamUpIHsKLSAgICAgICAgY3JlYXRlRWRqZSgpOwotICAgICAgICBpZiAoIW1fZWRq
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhcHBseUVkamVDb2xvcnMoKTsK
LSAgICBhcHBseVBhcnREZXNjcmlwdGlvbnMoKTsKLX0KLQogUmVuZGVyVGhlbWVFZmw6OlJlbmRl
clRoZW1lRWZsKFBhZ2UqIHBhZ2UpCiAgICAgOiBSZW5kZXJUaGVtZSgpCiAgICAgLCBtX3BhZ2Uo
cGFnZSkKQEAgLTY4OSwzMCArNjc1LDYgQEAgUmVuZGVyVGhlbWVFZmw6On5SZW5kZXJUaGVtZUVm
bCgpCiAgICAgfQogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjpzZXRBY3RpdmVTZWxlY3Rpb25D
b2xvcihpbnQgZm9yZVIsIGludCBmb3JlRywgaW50IGZvcmVCLCBpbnQgZm9yZUEsIGludCBiYWNr
UiwgaW50IGJhY2tHLCBpbnQgYmFja0IsIGludCBiYWNrQSkKLXsKLSAgICBtX2FjdGl2ZVNlbGVj
dGlvbkZvcmVncm91bmRDb2xvciA9IENvbG9yKGZvcmVSLCBmb3JlRywgZm9yZUIsIGZvcmVBKTsK
LSAgICBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yKGJhY2tSLCBiYWNr
RywgYmFja0IsIGJhY2tBKTsKLSAgICBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwotfQotCi12
b2lkIFJlbmRlclRoZW1lRWZsOjpzZXRJbmFjdGl2ZVNlbGVjdGlvbkNvbG9yKGludCBmb3JlUiwg
aW50IGZvcmVHLCBpbnQgZm9yZUIsIGludCBmb3JlQSwgaW50IGJhY2tSLCBpbnQgYmFja0csIGlu
dCBiYWNrQiwgaW50IGJhY2tBKQotewotICAgIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3IgPSBDb2xvcihmb3JlUiwgZm9yZUcsIGZvcmVCLCBmb3JlQSk7Ci0gICAgbV9pbmFjdGl2
ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yKGJhY2tSLCBiYWNrRywgYmFja0IsIGJh
Y2tBKTsKLSAgICBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwotfQotCi12b2lkIFJlbmRlclRo
ZW1lRWZsOjpzZXRGb2N1c1JpbmdDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKLXsK
LSAgICBtX2ZvY3VzUmluZ0NvbG9yID0gQ29sb3IociwgZywgYiwgYSk7Ci0gICAgLy8gd2Via2l0
IGp1c3QgdXNlIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBmb3IgZGVmYXVsdCB0aGVtZSAod2l0
aG91dCBwYWdlKQotICAgIC8vIHRoaXMgaXMgdWdseSwgYnV0IG5vIG90aGVyIHdheSB0byBkbyBp
dCB1bmxlc3Mgd2UgY2hhbmdlCi0gICAgLy8gaXQgdG8gdXNlIHBhZ2UgdGhlbWVzIGFzIG11Y2gg
YXMgcG9zc2libGUuCi0gICAgUmVuZGVyVGhlbWU6OnNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKG1f
Zm9jdXNSaW5nQ29sb3IpOwotICAgIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7Ci19Ci0KIHN0
YXRpYyBib29sIHN1cHBvcnRzRm9jdXMoQ29udHJvbFBhcnQgYXBwZWFyYW5jZSkKIHsKICAgICBz
d2l0Y2ggKGFwcGVhcmFuY2UpIHsKQEAgLTc1NCw2ICs3MTYsMzYgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJUaGVtZUVmbDo6YmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkg
Y29uc3QKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmJhc2VsaW5lUG9zaXRpb24ob2JqZWN0KTsK
IH0KIAorQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworICAgIHJldHVy
biBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsKK30KKworQ29sb3IgUmVuZGVyVGhl
bWVFZmw6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAor
eworICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CisgICAgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3I7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgbG9hZFRoZW1lSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Cit9
CisKK0NvbG9yIFJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworICAgIHJldHVy
biBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOworfQorCitDb2xvciBSZW5kZXJU
aGVtZUVmbDo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0Cit7CisgICAgbG9hZFRoZW1l
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbV9mb2N1c1JpbmdDb2xvcjsKK30KKwogYm9vbCBSZW5k
ZXJUaGVtZUVmbDo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3Qg
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChvYmplY3Qt
PnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJIb3Jpem9udGFsUGFydCkKQEAgLTg0Miw3
ICs4MzQsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0Q2hlY2tib3hTdHlsZShTdHls
ZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHkKICAgICAgICAgc3RhdGljX2Nhc3Q8
UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5h
ZGp1c3RDaGVja2JveFN0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKwogICAgIGFkanVzdFNpemVDb25zdHJhaW50cyhzdHlsZSwgQ2hl
Y2tCb3gpOworICAgIEFTU0VSVChtX2VkamUpOworCiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7
CiAKICAgICBjb25zdCBzdHJ1Y3QgVGhlbWVQYXJ0RGVzYyAqZGVzYyA9IG1fcGFydERlc2NzICsg
KHNpemVfdClDaGVja0JveDsKQEAgLTg2Myw3ICs4NTgsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUVm
bDo6YWRqdXN0UmFkaW9TdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJT
dHlsZSoKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1
bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RSYWRpb1N0eWxlKHN0eWxlUmVzb2x2ZXIs
IHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIGFkanVzdFNp
emVDb25zdHJhaW50cyhzdHlsZSwgUmFkaW9CdXR0b24pOworICAgIEFTU0VSVChtX2VkamUpOwor
CiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CiAKICAgICBjb25zdCBzdHJ1Y3QgVGhlbWVQYXJ0
RGVzYyAqZGVzYyA9IG1fcGFydERlc2NzICsgKHNpemVfdClSYWRpb0J1dHRvbjsKQEAgLTEwODYs
NiArMTA4NCwxMyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFByb2dyZXNzQmFyKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZgogI2lmIEVOQUJMRShWSURFTykK
IGJvb2wgUmVuZGVyVGhlbWVFZmw6OmVtaXRNZWRpYUJ1dHRvblNpZ25hbChGb3JtVHlwZSBmb3Jt
VHlwZSwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbWVkaWFFbGVtZW50VHlwZSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworCisgICAgaWYgKCFtX2Vk
amUpIHsKKyAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgcGFpbnQgbmF0aXZlIEhUTUwg
cGFydCBkdWUgdG8gbWlzc2luZyB0aGVtZS4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKwogICAgIFRoZW1lUGFydENhY2hlRW50cnkqIGVudHJ5OwogCiAgICAgZW50cnkgPSBjYWNo
ZVRoZW1lUGFydEdldChmb3JtVHlwZSwgcmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAppbmRleCBlZDQyZjM3ZDBjZjliNTAxNmNjMzcy
ZGI5NzhmZjMzOWVmM2ZjMGQ0Li41NjViZTY1YWE0ODg4OWMxMjMzMjQxMGI4ZTMzYjczNmZiYzFk
MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaApA
QCAtOTYsMTggKzk2LDE0IEBAIHB1YmxpYzoKICAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8g
ZG8gdGhpcy4KICAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihjb25zdCBS
ZW5kZXJPYmplY3QqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcjsgfQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3I7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2luYWN0aXZlU2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yOyB9Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0Nv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9mb2N1c1JpbmdDb2xvcjsgfQorICAgIHZpcnR1YWwgQ29s
b3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZv
Y3VzUmluZ0NvbG9yKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCk7
Ci0KLSAgICAvLyBTZXQgcGxhdGZvcm0gY29sb3JzIGFuZCBub3RpZnkgdGhleSBjaGFuZ2VkCi0g
ICAgdm9pZCBzZXRBY3RpdmVTZWxlY3Rpb25Db2xvcihpbnQgZm9yZVIsIGludCBmb3JlRywgaW50
IGZvcmVCLCBpbnQgZm9yZUEsIGludCBiYWNrUiwgaW50IGJhY2tHLCBpbnQgYmFja0IsIGludCBi
YWNrQSk7Ci0gICAgdm9pZCBzZXRJbmFjdGl2ZVNlbGVjdGlvbkNvbG9yKGludCBmb3JlUiwgaW50
IGZvcmVHLCBpbnQgZm9yZUIsIGludCBmb3JlQSwgaW50IGJhY2tSLCBpbnQgYmFja0csIGludCBi
YWNrQiwgaW50IGJhY2tBKTsKLSAgICB2b2lkIHNldEZvY3VzUmluZ0NvbG9yKGludCByLCBpbnQg
ZywgaW50IGIsIGludCBhKTsKKyAgICAvLyBTZXQgcGxhdGZvcm0gY29sb3JzOyByZW1lbWJlciB0
byBjYWxsIHBsYXRmb3JtQ29sb3JEaWRDaGFuZ2UgYWZ0ZXIuCisgICAgdm9pZCBzZXRDb2xvckZy
b21UaGVtZUNsYXNzKGNvbnN0IGNoYXIqIGNvbG9yQ2xhc3MpOwogCiAgICAgdm9pZCBzZXRCdXR0
b25UZXh0Q29sb3IoaW50IGZvcmVSLCBpbnQgZm9yZUcsIGludCBmb3JlQiwgaW50IGZvcmVBLCBp
bnQgYmFja1IsIGludCBiYWNrRywgaW50IGJhY2tCLCBpbnQgYmFja0EpOwogICAgIHZvaWQgc2V0
Q29tYm9UZXh0Q29sb3IoaW50IGZvcmVSLCBpbnQgZm9yZUcsIGludCBmb3JlQiwgaW50IGZvcmVB
LCBpbnQgYmFja1IsIGludCBiYWNrRywgaW50IGJhY2tCLCBpbnQgYmFja0EpOwpAQCAtMTE2LDcg
KzExMiw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKFJlbmRl
clN0eWxlKiwgRm9ybVR5cGUpIGNvbnN0OwogCi0KICAgICAvLyBTeXN0ZW0gZm9udHMuCiAgICAg
dmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoaW50IHByb3BJZCwgRm9udERlc2NyaXB0aW9uJikgY29u
c3Q7CiAKQEAgLTIwOCwxNCArMjAzLDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VGhlbWVQ
YXRoKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyB0aGVtZVBhdGgoKSB7IHJldHVybiBtX3Ro
ZW1lUGF0aDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGZsb2F0IGRlZmF1bHRGb250U2l6
ZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNyZWF0ZUNhbnZhcygpOwotICAgIHZvaWQgY3JlYXRl
RWRqZSgpOwotICAgIHZvaWQgYXBwbHlFZGplQ29sb3JzKCk7Ci0gICAgdm9pZCBhcHBseVBhcnRE
ZXNjcmlwdGlvbnMoKTsKKyAgICBib29sIGxvYWRUaGVtZSgpOworICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBsb2FkVGhlbWVJZk5lZWRlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISFt
X2VkamUgfCBjb25zdF9jYXN0PFJlbmRlclRoZW1lRWZsKj4odGhpcyktPmxvYWRUaGVtZSgpOwor
ICAgIH0KKworICAgIHZvaWQgYXBwbHlQYXJ0RGVzY3JpcHRpb25zRnJvbShFdmFzX09iamVjdCop
OworCiAgICAgY29uc3QgY2hhciogZWRqZUdyb3VwRnJvbUZvcm1UeXBlKEZvcm1UeXBlKSBjb25z
dDsKICAgICB2b2lkIGFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3QqLCBDb250cm9s
U3RhdGVzKTsKICAgICBib29sIHBhaW50VGhlbWVQYXJ0KFJlbmRlck9iamVjdCosIEZvcm1UeXBl
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162477</attachid>
            <date>2012-09-06 04:51:25 -0700</date>
            <delta_ts>2012-09-06 06:38:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95832-20120906135105.patch</filename>
            <type>text/plain</type>
            <size>21461</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYjU2ZGVjY2E3ZTlm
MmQxNjIxMmFhYzI0MWNhZjNlZjA1ODE5NC4uOWZiNmFiYWQ0OWJmMzczNmJhN2MzNDVjZTQ3MTQ5
NzI1MWU3OTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA5LTA1ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBb
RUZMXSBGdXp6eSBsb2FkIHRoZSBFZGplIHRoZW1lIGZvciBIVE1MIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTgzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgdGhlbWUgc28g
dGhhdCBpdCBpcyBmaXJzdCBsb2FkZWQgd2hlbiBhY3R1YWxseSB1c2VkLgorICAgICAgICBUaGlz
IGFsc28gZml4ZWQgdGhlIGNhc2UgdGhhdCBpdCB3YXMgaW1wb3NzaWJsZSB0byBjaGFuZ2UgdGhl
bWUKKyAgICAgICAgYSBzZWNvbmQgdGltZS4KKworICAgICAgICBUZXN0ZWQgYnkgY3VycmVudCB0
ZXN0cy4gQVBJIHVuaXQgdGVzdCBjb21pbmcgaW4gc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisK
KyAgICAgICAgICAgIEFkZCBzb21lIGNvbnZlbmllbmNlIG1hY3Jvcy4KKworICAgICAgIChXZWJD
b3JlOjphcHBseUNvbG9yQ2FsbGJhY2spOgorCisgICAgICAgICAgICBVc2UganVzdCBvbmUgY2Fs
bGJhY2sgZnJvbSB0aGUgZWRqZSB0aGVtZSwgd2hpY2gganVzdCBjYWxscworICAgICAgICAgICAg
c2V0Q29sb3JGcm9tVGhlbWVDbGFzcy4KKworICAgICAgICAoV2ViQ29yZTo6ZmlsbENvbG9yc0Zy
b21FZGplQ2xhc3MpOgorCisgICAgICAgICAgICBBZGQgY29udmVuaWVuY2UgbWV0aG9kIGZvciBy
ZWNlaXZpbmcgY29sb3JzIGZyb20gRWRqZSBhbmQKKyAgICAgICAgICAgIHN0b3JpbmcgdGhlbSBp
biBDb2xvcidzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6c2V0Q29sb3JG
cm9tVGhlbWVDbGFzcyk6CisKKyAgICAgICAgICAgIFNldCB0aGUgY2xhc3MgQ29sb3IgdmFyaWFi
bGVkIHdpdGggdGhlIHZhbHVlcyBmcm9tIHRoZSB0aGVtZQorICAgICAgICAgICAgY29sb3IgY2xh
c3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpzZXRUaGVtZVBhdGgpOgor
CisgICAgICAgICAgICBEb24ndCBhcHBseSB0aGUgdGhlbWUgaW1tZWRpYXRlbHkuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpsb2FkVGhlbWUpOgorCisgICAgICAgICAgICBM
b2FkIHRoZSBuZXcgdGhlbWUgYW5kIGZyZWUgdGhlIGN1cnJlbnQgb25lLiBJZiBpdCBmYWlscywK
KyAgICAgICAgICAgIGl0IHdpbGwgY29udGludWUgdXNpbmcgdGhlIG9sZCBvbmUsIGlmIGV4aXN0
cy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNpemVDb25zdHJh
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVF
bnRyeVJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpjYWNoZVRoZW1l
UGFydE5ldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0
aW9uc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0
aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lRWZsOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGxhdGZvcm1J
bmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUVmbDo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcik6CisKKyAgICAgICAgICAgIEVuc3Vy
ZSB0aGUgdGhlbWUgaXMgbG9hZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVm
bDo6YWRqdXN0Q2hlY2tib3hTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVm
bDo6YWRqdXN0UmFkaW9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6
ZW1pdE1lZGlhQnV0dG9uU2lnbmFsKToKKworICAgICAgICAgICAgRW5zdXJlIHRoZSB0aGVtZSBp
cyBsb2FkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDoKKyAg
ICAgICAgKFJlbmRlclRoZW1lRWZsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZs
Ojpsb2FkVGhlbWVJZk5lZWRlZCk6CisKKyAgICAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBtZXRo
b2RzIGFuZCBhZGQgYSBtZXRob2QgZm9yIGxvYWRpbmcgYSB0aGVtZQorICAgICAgICAgICAgaW4g
dGhlIGNhc2UgaXQgaXMgbm90IGxvYWRlZCB5ZXQuCisKIDIwMTItMDktMDUgIENocmlzIEd1YW4g
IDxjaHJpcy5ndWFuQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tiZXJyeV0g
QWRkIGRvY3VtZW50IHVybCBhbmQgc2VjdXJpdHlPcmlnaW4gdG8gcGxhdGZvcm0gcmVxdWVzdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4
IDk4YzgxYzI5YTM5N2M0MDk5MjQ5YzZiYjU1MTQ3MTI4ZTBhYTNkZTEuLjIwZTVkODNkMTc4Zjhk
MzM1YzVlMzFlZTVlOTIwNDA3YzM0ZTIzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtNzksOCArNzksMTYgQEAgc3RhdGljIGNvbnN0
IGludCBtZWRpYVNsaWRlclRodW1iV2lkdGggPSAxMjsKIHN0YXRpYyBjb25zdCBpbnQgbWVkaWFT
bGlkZXJUaHVtYkhlaWdodCA9IDEyOwogI2VuZGlmCiAKKyNkZWZpbmUgX0FTU0VSVF9PTl9SRUxF
QVNFX1JFVFVSTihvLCBmbXQsIC4uLikgXAorICAgIGRvIHsgaWYgKCFvKSB7IEVJTkFfTE9HX0NS
SVQoZm10LCAjIyBfX1ZBX0FSR1NfXyk7IEFTU0VSVChvKTsgcmV0dXJuOyB9IH0gd2hpbGUgKDAp
CisjZGVmaW5lIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRVUk5fVkFMKG8sIHZhbCwgZm10LCAuLi4p
IFwKKyAgICBkbyB7IGlmICghbykgeyBFSU5BX0xPR19DUklUKGZtdCwgIyMgX19WQV9BUkdTX18p
OyBBU1NFUlQobyk7IHJldHVybiB2YWw7IH0gfSB3aGlsZSAoMCkKKwogdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6YWRqdXN0U2l6ZUNvbnN0cmFpbnRzKFJlbmRlclN0eWxlKiBzdHlsZSwgRm9ybVR5cGUg
dHlwZSkgY29uc3QKIHsKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworICAgIF9BU1NFUlRfT05f
UkVMRUFTRV9SRVRVUk4obV9lZGplLCAiQ291bGQgbm90IHBhaW50IG5hdGl2ZSBIVE1MIHBhcnQg
ZHVlIHRvIG1pc3NpbmcgdGhlbWUuIik7CisKICAgICBjb25zdCBzdHJ1Y3QgVGhlbWVQYXJ0RGVz
YyogZGVzYyA9IG1fcGFydERlc2NzICsgKHNpemVfdCl0eXBlOwogCiAgICAgaWYgKHN0eWxlLT5t
aW5XaWR0aCgpLmlzSW50cmluc2ljKCkpCkBAIC0xMTQsOCArMTIyLDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVFbnRyeVJlc2V0KHN0cnVjdCBUaGVtZVBhcnRDYWNoZUVu
dHJ5KiBlbnRyeSwKICAgICBpZiAoIWVkamVfb2JqZWN0X2ZpbGVfc2V0KGVudHJ5LT5vLCBmaWxl
LCBncm91cCkpIHsKICAgICAgICAgRWRqZV9Mb2FkX0Vycm9yIGVyciA9IGVkamVfb2JqZWN0X2xv
YWRfZXJyb3JfZ2V0KGVudHJ5LT5vKTsKICAgICAgICAgY29uc3QgY2hhciAqZXJybXNnID0gZWRq
ZV9sb2FkX2Vycm9yX3N0cihlcnIpOwotICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBs
b2FkICclcycgZnJvbSB0aGVtZSAlczogJXMiLAotICAgICAgICAgICAgICAgICAgICAgZ3JvdXAs
IGZpbGUsIGVycm1zZyk7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IGxvYWQgJyVz
JyBmcm9tIHRoZW1lICVzOiAlcyIsIGdyb3VwLCBmaWxlLCBlcnJtc2cpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTU5LDcgKzE2Niw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OmlzRm9ybUVsZW1lbnRUb29MYXJnZVRvRGlzcGxheShjb25zdCBJ
bnRTaXplJiBlbGVtZW50U2l6ZSkKIHN0cnVjdCBSZW5kZXJUaGVtZUVmbDo6VGhlbWVQYXJ0Q2Fj
aGVFbnRyeSogUmVuZGVyVGhlbWVFZmw6OmNhY2hlVGhlbWVQYXJ0TmV3KEZvcm1UeXBlIHR5cGUs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKGlzRm9ybUVsZW1lbnRUb29MYXJnZVRv
RGlzcGxheShzaXplKSkgewotICAgICAgICBFSU5BX0xPR19FUlIoImNhbm5vdCByZW5kZXIgYW4g
ZWxlbWVudCBvZiBzaXplICVkeCVkIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAg
ICAgICAgRUlOQV9MT0dfRVJSKCJDYW5ub3QgcmVuZGVyIGFuIGVsZW1lbnQgb2Ygc2l6ZSAlZHgl
ZC4iLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKQEAgLTMxMSwxMyArMzE4LDEzIEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5RWRq
ZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3QqIG9iamVjdCwgQ29udHJvbFN0YXRlcyBzCiAKIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50VGhlbWVQYXJ0KFJlbmRlck9iamVjdCogb2JqZWN0LCBG
b3JtVHlwZSB0eXBlLCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CisgICAgbG9hZFRoZW1lSWZOZWVkZWQoKTsKKyAgICBfQVNTRVJUX09OX1JFTEVBU0VfUkVU
VVJOX1ZBTChtX2VkamUsIGZhbHNlLCAiQ291bGQgbm90IHBhaW50IG5hdGl2ZSBIVE1MIHBhcnQg
ZHVlIHRvIG1pc3NpbmcgdGhlbWUuIik7CisKICAgICBUaGVtZVBhcnRDYWNoZUVudHJ5KiBlbnRy
eTsKICAgICBFaW5hX0xpc3QqIHVwZGF0ZXM7CiAgICAgY2Fpcm9fdCogY2Fpcm87CiAKLSAgICBB
U1NFUlQobV9jYW52YXMpOwotICAgIEFTU0VSVChtX2VkamUpOwotCiAgICAgZW50cnkgPSBjYWNo
ZVRoZW1lUGFydEdldCh0eXBlLCByZWN0LnNpemUoKSk7CiAgICAgaWYgKCFlbnRyeSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzk5LDM3ICs0MDYsNDQgQEAgUGFzc1JlZlB0cjxSZW5kZXJU
aGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBm
YWxsYmFjazsKIH0KIAotc3RhdGljIHZvaWQgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzU2VsZWN0
aW9uQWN0aXZlKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNp
Z25hbCwgY29uc3QgY2hhciogc291cmNlKQorc3RhdGljIHZvaWQgYXBwbHlDb2xvckNhbGxiYWNr
KHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiwgY29uc3QgY2hhciogLyogc2lnbmFsICovLCBjb25z
dCBjaGFyKiBjb2xvckNsYXNzKQogewotICAgIFJlbmRlclRoZW1lRWZsKiB0aGF0ID0gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVFZmwgKj4oZGF0YSk7Ci0gICAgaW50IGZyLCBmZywgZmIsIGZhLCBi
ciwgYmcsIGJiLCBiYTsKLQotICAgIGlmICghZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0KG9i
amVjdCwgc291cmNlLCAmZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwgMCwg
MCwgMCwgMCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHRoYXQtPnNldEFjdGl2ZVNlbGVjdGlv
bkNvbG9yKGZyLCBmZywgZmIsIGZhLCBiciwgYmcsIGJiLCBiYSk7CisgICAgUmVuZGVyVGhlbWVF
ZmwqIHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGRhdGEpOworICAgIHRoYXQt
PnNldENvbG9yRnJvbVRoZW1lQ2xhc3MoY29sb3JDbGFzcyk7CisgICAgdGhhdC0+cGxhdGZvcm1D
b2xvcnNEaWRDaGFuZ2UoKTsgLy8gVHJpZ2dlcnMgcmVsYXlvdXQuCiB9CiAKLXN0YXRpYyB2b2lk
IHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkluYWN0aXZlKHZvaWQqIGRhdGEsIEV2
YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNpZ25hbCwgY29uc3QgY2hhciogc291cmNl
KQorc3RhdGljIHZvaWQgZmlsbENvbG9yc0Zyb21FZGplQ2xhc3MoRXZhc19PYmplY3QqIG8sIGNv
bnN0IGNoYXIqIGNvbG9yQ2xhc3MsIENvbG9yKiBjb2xvcjEsIENvbG9yKiBjb2xvcjIgPSAwLCBD
b2xvciogY29sb3IzID0gMCkKIHsKLSAgICBSZW5kZXJUaGVtZUVmbCogdGhhdCA9IHN0YXRpY19j
YXN0PFJlbmRlclRoZW1lRWZsICo+KGRhdGEpOwotICAgIGludCBmciwgZmcsIGZiLCBmYSwgYnIs
IGJnLCBiYiwgYmE7CisgICAgaW50IHIxLCBnMSwgYjEsIGExOworICAgIGludCByMiwgZzIsIGIy
LCBhMjsKKyAgICBpbnQgcjMsIGczLCBiMywgYTM7CiAKLSAgICBpZiAoIWVkamVfb2JqZWN0X2Nv
bG9yX2NsYXNzX2dldChvYmplY3QsIHNvdXJjZSwgJmZyLCAmZmcsICZmYiwgJmZhLCAmYnIsICZi
ZywgJmJiLCAmYmEsIDAsIDAsIDAsIDApKQotICAgICAgICByZXR1cm47CisgICAgYm9vbCBvayA9
IGVkamVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldChvLCBjb2xvckNsYXNzLCAmcjEsICZnMSwgJmIx
LCAmYTEsICZyMiwgJmcyLCAmYjIsICZhMiwgJnIzLCAmZzMsICZiMywgJmEzKTsKKyAgICBfQVNT
RVJUX09OX1JFTEVBU0VfUkVUVVJOKG9rLCAiQ291bGQgbm90IGdldCBjb2xvciBjbGFzcyAnJXMn
XG4iLCBjb2xvckNsYXNzKTsKIAotICAgIHRoYXQtPnNldEluYWN0aXZlU2VsZWN0aW9uQ29sb3Io
ZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhKTsKKyAgICBpZiAoY29sb3IxKQorICAgICAg
ICBjb2xvcjEtPnNldFJHQihtYWtlUkdCQShyMSwgZzEsIGIxLCBhMSkpOworICAgIGlmIChjb2xv
cjIpCisgICAgICAgIGNvbG9yMi0+c2V0UkdCKG1ha2VSR0JBKHIyLCBnMiwgYjIsIGEyKSk7Cisg
ICAgaWYgKGNvbG9yMykKKyAgICAgICAgY29sb3IzLT5zZXRSR0IobWFrZVJHQkEocjMsIGczLCBi
MywgYTMpKTsKIH0KIAotc3RhdGljIHZvaWQgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzRm9jdXNS
aW5nKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNpZ25hbCwg
Y29uc3QgY2hhciogc291cmNlKQordm9pZCBSZW5kZXJUaGVtZUVmbDo6c2V0Q29sb3JGcm9tVGhl
bWVDbGFzcyhjb25zdCBjaGFyKiBjb2xvckNsYXNzKQogewotICAgIFJlbmRlclRoZW1lRWZsKiB0
aGF0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwgKj4oZGF0YSk7Ci0gICAgaW50IGZyLCBm
ZywgZmIsIGZhOwotCi0gICAgaWYgKCFlZGplX29iamVjdF9jb2xvcl9jbGFzc19nZXQob2JqZWN0
LCBzb3VyY2UsICZmciwgJmZnLCAmZmIsICZmYSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9lZGplKTsKIAotICAgIHRoYXQtPnNldEZvY3Vz
UmluZ0NvbG9yKGZyLCBmZywgZmIsIGZhKTsKKyAgICBpZiAoIXN0cmNtcCgid2Via2l0L3NlbGVj
dGlvbi9hY3RpdmUiLCBjb2xvckNsYXNzKSkKKyAgICAgICAgZmlsbENvbG9yc0Zyb21FZGplQ2xh
c3MobV9lZGplLCBjb2xvckNsYXNzLCAmbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Is
ICZtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik7CisgICAgZWxzZSBpZiAoIXN0cmNt
cCgid2Via2l0L3NlbGVjdGlvbi9pbmFjdGl2ZSIsIGNvbG9yQ2xhc3MpKQorICAgICAgICBmaWxs
Q29sb3JzRnJvbUVkamVDbGFzcyhtX2VkamUsIGNvbG9yQ2xhc3MsICZtX2luYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yLCAmbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik7
CisgICAgZWxzZSBpZiAoIXN0cmNtcCgid2Via2l0L2ZvY3VzX3JpbmciLCBjb2xvckNsYXNzKSkg
eworICAgICAgICBmaWxsQ29sb3JzRnJvbUVkamVDbGFzcyhtX2VkamUsIGNvbG9yQ2xhc3MsICZt
X2ZvY3VzUmluZ0NvbG9yKTsKKyAgICAgICAgLy8gcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGlz
IG9ubHkgdXNlZCBmb3IgdGhlIGRlZmF1bHQgdGhlbWUgKHdpdGhvdXQgcGFnZSkKKyAgICAgICAg
Ly8gVGhlIGZvbGxvd2luZyBpcyB1Z2x5LCBidXQgbm8gb3RoZXIgd2F5IHRvIGRvIGl0IHVubGVz
cyB3ZSBjaGFuZ2UgaXQgdG8gdXNlIHBhZ2UgdGhlbWVzIGFzIG11Y2ggYXMgcG9zc2libGUuCisg
ICAgICAgIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihtX2ZvY3VzUmluZ0Nv
bG9yKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OnNldFRoZW1lUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpCkBAIC00MzgsNzIgKzQ1Miw1OSBAQCB2b2lkIFJlbmRlclRoZW1lRWZs
OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3RoZW1lUGF0aCA9IHBhdGg7Ci0gICAgdGhlbWVDaGFuZ2VkKCk7Ci19CiAKLXZvaWQgUmVu
ZGVyVGhlbWVFZmw6OmNyZWF0ZUNhbnZhcygpCi17Ci0gICAgQVNTRVJUKCFtX2NhbnZhcyk7Ci0g
ICAgbV9jYW52YXMgPSBlY29yZV9ldmFzX2J1ZmZlcl9uZXcoMSwgMSk7Ci0gICAgQVNTRVJUKG1f
Y2FudmFzKTsKLX0KKyAgICBpZiAobV90aGVtZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIEVJ
TkFfTE9HX0VSUigiTm8gdGhlbWUgZGVmaW5lZCwgdW5hYmxlIHRvIHNldCB0aGVtZSBmb3IgSFRN
TCBGb3Jtcy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVm
bDo6Y3JlYXRlRWRqZSgpCi17Ci0gICAgQVNTRVJUKCFtX2VkamUpOwotICAgIGlmIChtX3RoZW1l
UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIEVJTkFfTE9HX0VSUigiTm8gdGhlbWUgZGVmaW5lZCwg
dW5hYmxlIHRvIHNldCBSZW5kZXJUaGVtZUVmbC4iKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbV9l
ZGplID0gZWRqZV9vYmplY3RfYWRkKGVjb3JlX2V2YXNfZ2V0KG1fY2FudmFzKSk7Ci0gICAgICAg
IGlmICghbV9lZGplKQotICAgICAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgY3JlYXRl
IGJhc2UgZWRqZSBvYmplY3QuIik7Ci0gICAgICAgIGVsc2UgaWYgKCFlZGplX29iamVjdF9maWxl
X3NldChtX2VkamUsIG1fdGhlbWVQYXRoLnV0ZjgoKS5kYXRhKCksICJ3ZWJraXQvYmFzZSIpKSB7
Ci0gICAgICAgICAgICBFZGplX0xvYWRfRXJyb3IgZXJyID0gZWRqZV9vYmplY3RfbG9hZF9lcnJv
cl9nZXQobV9lZGplKTsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm1zZyA9IGVkamVfbG9h
ZF9lcnJvcl9zdHIoZXJyKTsKLSAgICAgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHNl
dCBmaWxlOiAlcyIsIGVycm1zZyk7Ci0gICAgICAgICAgICBldmFzX29iamVjdF9kZWwobV9lZGpl
KTsKLSAgICAgICAgICAgIG1fZWRqZSA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0jZGVmaW5lIENP
Tk5FQ1QoY2MsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICBlZGplX29iamVjdF9zaWduYWxfY2FsbGJhY2tfYWRkKG1fZWRq
ZSwgImNvbG9yX2NsYXNzLHNldCIsICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ3ZWJraXQvImNjLCBmdW5jLCB0aGlzKQotCi0gICAgICAgICAgICBDT05O
RUNUKCJzZWxlY3Rpb24vYWN0aXZlIiwKLSAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGhlbWVF
ZmxDb2xvckNsYXNzU2VsZWN0aW9uQWN0aXZlKTsKLSAgICAgICAgICAgIENPTk5FQ1QoInNlbGVj
dGlvbi9pbmFjdGl2ZSIsCi0gICAgICAgICAgICAgICAgICAgIHJlbmRlclRoZW1lRWZsQ29sb3JD
bGFzc1NlbGVjdGlvbkluYWN0aXZlKTsKLSAgICAgICAgICAgIENPTk5FQ1QoImZvY3VzX3Jpbmci
LCByZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NGb2N1c1JpbmcpOwotI3VuZGVmIENPTk5FQ1QKLSAg
ICAgICAgfQorICAgIGlmICghbV9jYW52YXMpIHsKKyAgICAgICAgbV9jYW52YXMgPSBlY29yZV9l
dmFzX2J1ZmZlcl9uZXcoMSwgMSk7CisgICAgICAgIGlmICghbV9jYW52YXMpCisgICAgICAgICAg
ICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBjcmVhdGUgY2FudmFzLiIpOwogICAgIH0KKworICAg
IGxvYWRUaGVtZSgpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVDb2xvcnMo
KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6bG9hZFRoZW1lKCkKIHsKLSAgICBpbnQgZnIsIGZnLCBm
YiwgZmEsIGJyLCBiZywgYmIsIGJhOwotICAgIEFTU0VSVChtX2VkamUpOwotI2RlZmluZSBDT0xP
Ul9HRVQoY2xzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIGVkamVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldChtX2VkamUsICJ3ZWJraXQvImNs
cywgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
ZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwKQotCi0gICAgaWYgKENPTE9SX0dFVCgic2VsZWN0
aW9uL2FjdGl2ZSIpKSB7Ci0gICAgICAgIG1fYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
ID0gQ29sb3IoZnIsIGZnLCBmYiwgZmEpOwotICAgICAgICBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvciA9IENvbG9yKGJyLCBiZywgYmIsIGJhKTsKKyAgICBFdmFzX09iamVjdCogbyA9
IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZhcykpOworICAgIGlmICghbykg
eworICAgICAgICBFSU5BX0xPR19DUklUKCJDb3VsZCBub3QgY3JlYXRlIG5ldyBiYXNlIEVkamUg
b2JqZWN0LiIpOworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEtlZXAgY3VycmVudCB0aGVtZS4K
ICAgICB9Ci0gICAgaWYgKENPTE9SX0dFVCgic2VsZWN0aW9uL2luYWN0aXZlIikpIHsKLSAgICAg
ICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvciA9IENvbG9yKGZyLCBmZywgZmIs
IGZhKTsKLSAgICAgICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9y
KGJyLCBiZywgYmIsIGJhKTsKKworICAgIGlmICghZWRqZV9vYmplY3RfZmlsZV9zZXQobywgbV90
aGVtZVBhdGgudXRmOCgpLmRhdGEoKSwgIndlYmtpdC9iYXNlIikpIHsKKyAgICAgICAgRWRqZV9M
b2FkX0Vycm9yIGVyciA9IGVkamVfb2JqZWN0X2xvYWRfZXJyb3JfZ2V0KG8pOworICAgICAgICBj
b25zdCBjaGFyKiBlcnJtc2cgPSBlZGplX2xvYWRfZXJyb3Jfc3RyKGVycik7CisgICAgICAgIEVJ
TkFfTE9HX0NSSVQoIkNvdWxkIG5vdCBzZXQgZmlsZSAnJXMnOiAlcyIsIG1fdGhlbWVQYXRoLnV0
ZjgoKS5kYXRhKCksICBlcnJtc2cpOworICAgICAgICBldmFzX29iamVjdF9kZWwobyk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsgLy8gS2VlcCBjdXJyZW50IHRoZW1lLgogICAgIH0KLSAgICBpZiAo
Q09MT1JfR0VUKCJmb2N1c19yaW5nIikpIHsKLSAgICAgICAgbV9mb2N1c1JpbmdDb2xvciA9IENv
bG9yKGZyLCBmZywgZmIsIGZhKTsKLSAgICAgICAgLy8gd2Via2l0IGp1c3QgdXNlIHBsYXRmb3Jt
Rm9jdXNSaW5nQ29sb3IoKSBmb3IgZGVmYXVsdCB0aGVtZSAod2l0aG91dCBwYWdlKQotICAgICAg
ICAvLyB0aGlzIGlzIHVnbHksIGJ1dCBubyBvdGhlciB3YXkgdG8gZG8gaXQgdW5sZXNzIHdlIGNo
YW5nZQotICAgICAgICAvLyBpdCB0byB1c2UgcGFnZSB0aGVtZXMgYXMgbXVjaCBhcyBwb3NzaWJs
ZS4KLSAgICAgICAgUmVuZGVyVGhlbWU6OnNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKG1fZm9jdXNS
aW5nQ29sb3IpOworCisgICAgLy8gR2V0IHJpZCBvZiBleGlzdGluZyB0aGVtZS4KKyAgICBpZiAo
bV9lZGplKSB7CisgICAgICAgIGNhY2hlVGhlbWVQYXJ0Rmx1c2goKTsKKyAgICAgICAgZXZhc19v
YmplY3RfZGVsKG1fZWRqZSk7CiAgICAgfQotI3VuZGVmIENPTE9SX0dFVAotICAgIHBsYXRmb3Jt
Q29sb3JzRGlkQ2hhbmdlKCk7CisKKyAgICAvLyBTZXQgbmV3IGxvYWRlZCB0aGVtZSwgYW5kIGFw
cGx5IGl0LgorICAgIG1fZWRqZSA9IG87CisKKyAgICBlZGplX29iamVjdF9zaWduYWxfY2FsbGJh
Y2tfYWRkKG1fZWRqZSwgImNvbG9yX2NsYXNzLHNldCIsICJ3ZWJraXQvc2VsZWN0aW9uL2FjdGl2
ZSIsIGFwcGx5Q29sb3JDYWxsYmFjaywgdGhpcyk7CisgICAgZWRqZV9vYmplY3Rfc2lnbmFsX2Nh
bGxiYWNrX2FkZChtX2VkamUsICJjb2xvcl9jbGFzcyxzZXQiLCAid2Via2l0L3NlbGVjdGlvbi9p
bmFjdGl2ZSIsIGFwcGx5Q29sb3JDYWxsYmFjaywgdGhpcyk7CisgICAgZWRqZV9vYmplY3Rfc2ln
bmFsX2NhbGxiYWNrX2FkZChtX2VkamUsICJjb2xvcl9jbGFzcyxzZXQiLCAid2Via2l0L2ZvY3Vz
X3JpbmciLCBhcHBseUNvbG9yQ2FsbGJhY2ssIHRoaXMpOworCisgICAgYXBwbHlQYXJ0RGVzY3Jp
cHRpb25zRnJvbShtX2VkamUpOworCisgICAgc2V0Q29sb3JGcm9tVGhlbWVDbGFzcygid2Via2l0
L3NlbGVjdGlvbi9hY3RpdmUiKTsKKyAgICBzZXRDb2xvckZyb21UaGVtZUNsYXNzKCJ3ZWJraXQv
c2VsZWN0aW9uL2luYWN0aXZlIik7CisgICAgc2V0Q29sb3JGcm9tVGhlbWVDbGFzcygid2Via2l0
L2ZvY3VzX3JpbmciKTsKKworICAgIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7IC8vIFNjaGVk
dWxlcyBhIHJlbGF5b3V0LCBkbyBsYXN0LgorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQg
UmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9uRmFsbGJhY2soc3RydWN0IFRoZW1l
UGFydERlc2MqIGRlc2MpCkBAIC02MDUsMTcgKzYwNiwyMCBAQCBjb25zdCBjaGFyKiBSZW5kZXJU
aGVtZUVmbDo6ZWRqZUdyb3VwRnJvbUZvcm1UeXBlKEZvcm1UeXBlIHR5cGUpIGNvbnN0CiAgICAg
cmV0dXJuIGdyb3Vwc1t0eXBlXTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlQYXJ0
RGVzY3JpcHRpb25zKCkKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9u
c0Zyb20oRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRXZhc19PYmplY3QqIG9iamVjdDsKICAgICB1
bnNpZ25lZCBpbnQgaTsKICAgICBjb25zdCBjaGFyKiBmaWxlOwogCi0gICAgQVNTRVJUKG1fY2Fu
dmFzKTsKLSAgICBBU1NFUlQobV9lZGplKTsKKyAgICBBU1NFUlQobyk7CiAKLSAgICBlZGplX29i
amVjdF9maWxlX2dldChtX2VkamUsICZmaWxlLCAwKTsKKyAgICBlZGplX29iamVjdF9maWxlX2dl
dChvLCAmZmlsZSwgMCk7CiAgICAgQVNTRVJUKGZpbGUpOworICAgIGlmICghZmlsZSkgeworICAg
ICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCByZXRyaWV2ZSBFZGplIHRoZW1lIGZpbGUuIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBvYmplY3QgPSBlZGplX29iamVjdF9hZGQo
ZWNvcmVfZXZhc19nZXQobV9jYW52YXMpKTsKICAgICBpZiAoIW9iamVjdCkgewpAQCAtNjQwLDI2
ICs2NDQsNiBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlvbnMoKQog
ICAgIGV2YXNfb2JqZWN0X2RlbChvYmplY3QpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjp0
aGVtZUNoYW5nZWQoKQotewotICAgIGNhY2hlVGhlbWVQYXJ0Rmx1c2goKTsKLQotICAgIGlmICgh
bV9jYW52YXMpIHsKLSAgICAgICAgY3JlYXRlQ2FudmFzKCk7Ci0gICAgICAgIGlmICghbV9jYW52
YXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2VkamUpIHsKLSAg
ICAgICAgY3JlYXRlRWRqZSgpOwotICAgICAgICBpZiAoIW1fZWRqZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBhcHBseUVkamVDb2xvcnMoKTsKLSAgICBhcHBseVBhcnREZXNj
cmlwdGlvbnMoKTsKLX0KLQogUmVuZGVyVGhlbWVFZmw6OlJlbmRlclRoZW1lRWZsKFBhZ2UqIHBh
Z2UpCiAgICAgOiBSZW5kZXJUaGVtZSgpCiAgICAgLCBtX3BhZ2UocGFnZSkKQEAgLTY4OSwzMCAr
NjczLDYgQEAgUmVuZGVyVGhlbWVFZmw6On5SZW5kZXJUaGVtZUVmbCgpCiAgICAgfQogfQogCi12
b2lkIFJlbmRlclRoZW1lRWZsOjpzZXRBY3RpdmVTZWxlY3Rpb25Db2xvcihpbnQgZm9yZVIsIGlu
dCBmb3JlRywgaW50IGZvcmVCLCBpbnQgZm9yZUEsIGludCBiYWNrUiwgaW50IGJhY2tHLCBpbnQg
YmFja0IsIGludCBiYWNrQSkKLXsKLSAgICBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xv
ciA9IENvbG9yKGZvcmVSLCBmb3JlRywgZm9yZUIsIGZvcmVBKTsKLSAgICBtX2FjdGl2ZVNlbGVj
dGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yKGJhY2tSLCBiYWNrRywgYmFja0IsIGJhY2tBKTsK
LSAgICBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwotfQotCi12b2lkIFJlbmRlclRoZW1lRWZs
OjpzZXRJbmFjdGl2ZVNlbGVjdGlvbkNvbG9yKGludCBmb3JlUiwgaW50IGZvcmVHLCBpbnQgZm9y
ZUIsIGludCBmb3JlQSwgaW50IGJhY2tSLCBpbnQgYmFja0csIGludCBiYWNrQiwgaW50IGJhY2tB
KQotewotICAgIG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IgPSBDb2xvcihmb3Jl
UiwgZm9yZUcsIGZvcmVCLCBmb3JlQSk7Ci0gICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvciA9IENvbG9yKGJhY2tSLCBiYWNrRywgYmFja0IsIGJhY2tBKTsKLSAgICBwbGF0Zm9y
bUNvbG9yc0RpZENoYW5nZSgpOwotfQotCi12b2lkIFJlbmRlclRoZW1lRWZsOjpzZXRGb2N1c1Jp
bmdDb2xvcihpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKLXsKLSAgICBtX2ZvY3VzUmluZ0Nv
bG9yID0gQ29sb3IociwgZywgYiwgYSk7Ci0gICAgLy8gd2Via2l0IGp1c3QgdXNlIHBsYXRmb3Jt
Rm9jdXNSaW5nQ29sb3IoKSBmb3IgZGVmYXVsdCB0aGVtZSAod2l0aG91dCBwYWdlKQotICAgIC8v
IHRoaXMgaXMgdWdseSwgYnV0IG5vIG90aGVyIHdheSB0byBkbyBpdCB1bmxlc3Mgd2UgY2hhbmdl
Ci0gICAgLy8gaXQgdG8gdXNlIHBhZ2UgdGhlbWVzIGFzIG11Y2ggYXMgcG9zc2libGUuCi0gICAg
UmVuZGVyVGhlbWU6OnNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKG1fZm9jdXNSaW5nQ29sb3IpOwot
ICAgIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7Ci19Ci0KIHN0YXRpYyBib29sIHN1cHBvcnRz
Rm9jdXMoQ29udHJvbFBhcnQgYXBwZWFyYW5jZSkKIHsKICAgICBzd2l0Y2ggKGFwcGVhcmFuY2Up
IHsKQEAgLTc1NCw2ICs3MTQsMzYgQEAgTGF5b3V0VW5pdCBSZW5kZXJUaGVtZUVmbDo6YmFzZWxp
bmVQb3NpdGlvbihjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkgY29uc3QKICAgICByZXR1cm4g
UmVuZGVyVGhlbWU6OmJhc2VsaW5lUG9zaXRpb24ob2JqZWN0KTsKIH0KIAorQ29sb3IgUmVuZGVy
VGhlbWVFZmw6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QK
K3sKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworICAgIHJldHVybiBtX2FjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcjsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtSW5h
Y3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIGxvYWRUaGVtZUlm
TmVlZGVkKCk7CisgICAgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7
Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgbG9hZFRoZW1lSWZOZWVkZWQoKTsKKyAgICByZXR1
cm4gbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Cit9CisKK0NvbG9yIFJlbmRlclRo
ZW1lRWZsOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QK
K3sKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworICAgIHJldHVybiBtX2luYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVtZUVmbDo6cGxhdGZvcm1G
b2N1c1JpbmdDb2xvcigpIGNvbnN0Cit7CisgICAgbG9hZFRoZW1lSWZOZWVkZWQoKTsKKyAgICBy
ZXR1cm4gbV9mb2N1c1JpbmdDb2xvcjsKK30KKwogYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRT
bGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBj
b25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChvYmplY3QtPnN0eWxlKCktPmFwcGVhcmFu
Y2UoKSA9PSBTbGlkZXJIb3Jpem9udGFsUGFydCkKQEAgLTg0Miw3ICs4MzIsMTAgQEAgdm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YWRqdXN0Q2hlY2tib3hTdHlsZShTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBSZW5kZXJTdHkKICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihl
bGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RDaGVja2JveFN0eWxl
KHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KwogICAgIGFkanVzdFNpemVDb25zdHJhaW50cyhzdHlsZSwgQ2hlY2tCb3gpOworICAgIEFTU0VS
VChtX2VkamUpOworCiAgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CiAKICAgICBjb25zdCBzdHJ1
Y3QgVGhlbWVQYXJ0RGVzYyAqZGVzYyA9IG1fcGFydERlc2NzICsgKHNpemVfdClDaGVja0JveDsK
QEAgLTg2Myw3ICs4NTYsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0UmFkaW9TdHls
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSoKICAgICAgICAgc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRo
ZW1lKCkpLT5hZGp1c3RSYWRpb1N0eWxlKHN0eWxlUmVzb2x2ZXIsIHN0eWxlLCBlbGVtZW50KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIGFkanVzdFNpemVDb25zdHJhaW50cyhzdHls
ZSwgUmFkaW9CdXR0b24pOworICAgIEFTU0VSVChtX2VkamUpOworCiAgICAgc3R5bGUtPnJlc2V0
Qm9yZGVyKCk7CiAKICAgICBjb25zdCBzdHJ1Y3QgVGhlbWVQYXJ0RGVzYyAqZGVzYyA9IG1fcGFy
dERlc2NzICsgKHNpemVfdClSYWRpb0J1dHRvbjsKQEAgLTEwODYsMTIgKzEwODIsMTMgQEAgYm9v
bCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIG9iamVjdCwg
Y29uc3QgUGFpbnRJbmZvJiBpbmYKICNpZiBFTkFCTEUoVklERU8pCiBib29sIFJlbmRlclRoZW1l
RWZsOjplbWl0TWVkaWFCdXR0b25TaWduYWwoRm9ybVR5cGUgZm9ybVR5cGUsIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlIG1lZGlhRWxlbWVudFR5cGUsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Cisg
ICAgbG9hZFRoZW1lSWZOZWVkZWQoKTsKKyAgICBfQVNTRVJUX09OX1JFTEVBU0VfUkVUVVJOX1ZB
TChtX2VkamUsIGZhbHNlLCAiQ291bGQgbm90IHBhaW50IG5hdGl2ZSBIVE1MIHBhcnQgZHVlIHRv
IG1pc3NpbmcgdGhlbWUuIik7CisKICAgICBUaGVtZVBhcnRDYWNoZUVudHJ5KiBlbnRyeTsKIAog
ICAgIGVudHJ5ID0gY2FjaGVUaGVtZVBhcnRHZXQoZm9ybVR5cGUsIHJlY3Quc2l6ZSgpKTsKLSAg
ICBBU1NFUlQoZW50cnkpOwotICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBfQVNTRVJUX09OX1JFTEVBU0VfUkVUVVJOX1ZBTChlbnRyeSwgZmFsc2UsICJDb3VsZCBu
b3QgcGFpbnQgbmF0aXZlIEhUTUwgcGFydCBkdWUgdG8gbWlzc2luZyB0aGVtZSBwYXJ0LiIpOwog
CiAgICAgaWYgKG1lZGlhRWxlbWVudFR5cGUgPT0gTWVkaWFQbGF5QnV0dG9uKQogICAgICAgICBl
ZGplX29iamVjdF9zaWduYWxfZW1pdChlbnRyeS0+bywgInBsYXkiLCAiIik7CkBAIC0xMjgwLDQg
KzEyNzcsOCBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhQ3VycmVudFRpbWUoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbwogICAgIHJldHVybiB0cnVlOwogfQog
I2VuZGlmCisKKyN1bmRlZiBfQVNTRVJUX09OX1JFTEVBU0VfUkVUVVJOCisjdW5kZWYgX0FTU0VS
VF9PTl9SRUxFQVNFX1JFVFVSTl9WQUwKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUmVuZGVyVGhlbWVFZmwuaAppbmRleCBlZDQyZjM3ZDBjZjliNTAxNmNjMzcyZGI5NzhmZjMz
OWVmM2ZjMGQ0Li5lMTRmNDE1ODQzNGU2NDhlZTNlYjkxOWE5ZWQzMDJkNmQ0ZjQ1ZWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaApAQCAtOTYsMTgg
Kzk2LDE0IEBAIHB1YmxpYzoKICAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4K
ICAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcjsgfQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3I7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9y
ZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3I7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2luYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yOyB9Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9mb2N1c1JpbmdDb2xvcjsgfQorICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENv
bG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0Nv
bG9yKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCk7Ci0KLSAgICAv
LyBTZXQgcGxhdGZvcm0gY29sb3JzIGFuZCBub3RpZnkgdGhleSBjaGFuZ2VkCi0gICAgdm9pZCBz
ZXRBY3RpdmVTZWxlY3Rpb25Db2xvcihpbnQgZm9yZVIsIGludCBmb3JlRywgaW50IGZvcmVCLCBp
bnQgZm9yZUEsIGludCBiYWNrUiwgaW50IGJhY2tHLCBpbnQgYmFja0IsIGludCBiYWNrQSk7Ci0g
ICAgdm9pZCBzZXRJbmFjdGl2ZVNlbGVjdGlvbkNvbG9yKGludCBmb3JlUiwgaW50IGZvcmVHLCBp
bnQgZm9yZUIsIGludCBmb3JlQSwgaW50IGJhY2tSLCBpbnQgYmFja0csIGludCBiYWNrQiwgaW50
IGJhY2tBKTsKLSAgICB2b2lkIHNldEZvY3VzUmluZ0NvbG9yKGludCByLCBpbnQgZywgaW50IGIs
IGludCBhKTsKKyAgICAvLyBTZXQgcGxhdGZvcm0gY29sb3JzOyByZW1lbWJlciB0byBjYWxsIHBs
YXRmb3JtQ29sb3JEaWRDaGFuZ2UgYWZ0ZXIuCisgICAgdm9pZCBzZXRDb2xvckZyb21UaGVtZUNs
YXNzKGNvbnN0IGNoYXIqIGNvbG9yQ2xhc3MpOwogCiAgICAgdm9pZCBzZXRCdXR0b25UZXh0Q29s
b3IoaW50IGZvcmVSLCBpbnQgZm9yZUcsIGludCBmb3JlQiwgaW50IGZvcmVBLCBpbnQgYmFja1Is
IGludCBiYWNrRywgaW50IGJhY2tCLCBpbnQgYmFja0EpOwogICAgIHZvaWQgc2V0Q29tYm9UZXh0
Q29sb3IoaW50IGZvcmVSLCBpbnQgZm9yZUcsIGludCBmb3JlQiwgaW50IGZvcmVBLCBpbnQgYmFj
a1IsIGludCBiYWNrRywgaW50IGJhY2tCLCBpbnQgYmFja0EpOwpAQCAtMTE2LDcgKzExMiw2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKFJlbmRlclN0eWxlKiwg
Rm9ybVR5cGUpIGNvbnN0OwogCi0KICAgICAvLyBTeXN0ZW0gZm9udHMuCiAgICAgdmlydHVhbCB2
b2lkIHN5c3RlbUZvbnQoaW50IHByb3BJZCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Q7CiAKQEAg
LTIwOCwxNCArMjAzLDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VGhlbWVQYXRoKGNvbnN0
IFN0cmluZyYpOwogICAgIFN0cmluZyB0aGVtZVBhdGgoKSB7IHJldHVybiBtX3RoZW1lUGF0aDsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGZsb2F0IGRlZmF1bHRGb250U2l6ZTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIGNyZWF0ZUNhbnZhcygpOwotICAgIHZvaWQgY3JlYXRlRWRqZSgpOwot
ICAgIHZvaWQgYXBwbHlFZGplQ29sb3JzKCk7Ci0gICAgdm9pZCBhcHBseVBhcnREZXNjcmlwdGlv
bnMoKTsKKyAgICBib29sIGxvYWRUaGVtZSgpOworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBsb2Fk
VGhlbWVJZk5lZWRlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISFtX2VkamUgfHwg
Y29uc3RfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KHRoaXMpLT5sb2FkVGhlbWUoKTsKKyAgICB9CisK
KyAgICB2b2lkIGFwcGx5UGFydERlc2NyaXB0aW9uc0Zyb20oRXZhc19PYmplY3QqKTsKKwogICAg
IGNvbnN0IGNoYXIqIGVkamVHcm91cEZyb21Gb3JtVHlwZShGb3JtVHlwZSkgY29uc3Q7CiAgICAg
dm9pZCBhcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiwgQ29udHJvbFN0YXRlcyk7
CiAgICAgYm9vbCBwYWludFRoZW1lUGFydChSZW5kZXJPYmplY3QqLCBGb3JtVHlwZSwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162497</attachid>
            <date>2012-09-06 06:38:26 -0700</date>
            <delta_ts>2012-09-06 06:41:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95832-20120906153806.patch</filename>
            <type>text/plain</type>
            <size>21421</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYjU2ZGVjY2E3ZTlm
MmQxNjIxMmFhYzI0MWNhZjNlZjA1ODE5NC4uOWZiNmFiYWQ0OWJmMzczNmJhN2MzNDVjZTQ3MTQ5
NzI1MWU3OTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA5LTA1ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBb
RUZMXSBGdXp6eSBsb2FkIHRoZSBFZGplIHRoZW1lIGZvciBIVE1MIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTgzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgdGhlbWUgc28g
dGhhdCBpdCBpcyBmaXJzdCBsb2FkZWQgd2hlbiBhY3R1YWxseSB1c2VkLgorICAgICAgICBUaGlz
IGFsc28gZml4ZWQgdGhlIGNhc2UgdGhhdCBpdCB3YXMgaW1wb3NzaWJsZSB0byBjaGFuZ2UgdGhl
bWUKKyAgICAgICAgYSBzZWNvbmQgdGltZS4KKworICAgICAgICBUZXN0ZWQgYnkgY3VycmVudCB0
ZXN0cy4gQVBJIHVuaXQgdGVzdCBjb21pbmcgaW4gc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisK
KyAgICAgICAgICAgIEFkZCBzb21lIGNvbnZlbmllbmNlIG1hY3Jvcy4KKworICAgICAgIChXZWJD
b3JlOjphcHBseUNvbG9yQ2FsbGJhY2spOgorCisgICAgICAgICAgICBVc2UganVzdCBvbmUgY2Fs
bGJhY2sgZnJvbSB0aGUgZWRqZSB0aGVtZSwgd2hpY2gganVzdCBjYWxscworICAgICAgICAgICAg
c2V0Q29sb3JGcm9tVGhlbWVDbGFzcy4KKworICAgICAgICAoV2ViQ29yZTo6ZmlsbENvbG9yc0Zy
b21FZGplQ2xhc3MpOgorCisgICAgICAgICAgICBBZGQgY29udmVuaWVuY2UgbWV0aG9kIGZvciBy
ZWNlaXZpbmcgY29sb3JzIGZyb20gRWRqZSBhbmQKKyAgICAgICAgICAgIHN0b3JpbmcgdGhlbSBp
biBDb2xvcidzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6c2V0Q29sb3JG
cm9tVGhlbWVDbGFzcyk6CisKKyAgICAgICAgICAgIFNldCB0aGUgY2xhc3MgQ29sb3IgdmFyaWFi
bGVkIHdpdGggdGhlIHZhbHVlcyBmcm9tIHRoZSB0aGVtZQorICAgICAgICAgICAgY29sb3IgY2xh
c3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpzZXRUaGVtZVBhdGgpOgor
CisgICAgICAgICAgICBEb24ndCBhcHBseSB0aGUgdGhlbWUgaW1tZWRpYXRlbHkuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpsb2FkVGhlbWUpOgorCisgICAgICAgICAgICBM
b2FkIHRoZSBuZXcgdGhlbWUgYW5kIGZyZWUgdGhlIGN1cnJlbnQgb25lLiBJZiBpdCBmYWlscywK
KyAgICAgICAgICAgIGl0IHdpbGwgY29udGludWUgdXNpbmcgdGhlIG9sZCBvbmUsIGlmIGV4aXN0
cy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNpemVDb25zdHJh
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVF
bnRyeVJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpjYWNoZVRoZW1l
UGFydE5ldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0
aW9uc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0
aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lRWZsOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGxhdGZvcm1J
bmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUVmbDo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcik6CisKKyAgICAgICAgICAgIEVuc3Vy
ZSB0aGUgdGhlbWUgaXMgbG9hZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVm
bDo6YWRqdXN0Q2hlY2tib3hTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVm
bDo6YWRqdXN0UmFkaW9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6
ZW1pdE1lZGlhQnV0dG9uU2lnbmFsKToKKworICAgICAgICAgICAgRW5zdXJlIHRoZSB0aGVtZSBp
cyBsb2FkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDoKKyAg
ICAgICAgKFJlbmRlclRoZW1lRWZsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZs
Ojpsb2FkVGhlbWVJZk5lZWRlZCk6CisKKyAgICAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBtZXRo
b2RzIGFuZCBhZGQgYSBtZXRob2QgZm9yIGxvYWRpbmcgYSB0aGVtZQorICAgICAgICAgICAgaW4g
dGhlIGNhc2UgaXQgaXMgbm90IGxvYWRlZCB5ZXQuCisKIDIwMTItMDktMDUgIENocmlzIEd1YW4g
IDxjaHJpcy5ndWFuQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tiZXJyeV0g
QWRkIGRvY3VtZW50IHVybCBhbmQgc2VjdXJpdHlPcmlnaW4gdG8gcGxhdGZvcm0gcmVxdWVzdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4
IDk4YzgxYzI5YTM5N2M0MDk5MjQ5YzZiYjU1MTQ3MTI4ZTBhYTNkZTEuLmMxYzYwMjE4NTE1YzNh
NGU1NDg3ZjM0MjQwMTE5MWNlOTA1NTIyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtNzksOCArNzksMTYgQEAgc3RhdGljIGNvbnN0
IGludCBtZWRpYVNsaWRlclRodW1iV2lkdGggPSAxMjsKIHN0YXRpYyBjb25zdCBpbnQgbWVkaWFT
bGlkZXJUaHVtYkhlaWdodCA9IDEyOwogI2VuZGlmCiAKKyNkZWZpbmUgX0FTU0VSVF9PTl9SRUxF
QVNFX1JFVFVSTihvLCBmbXQsIC4uLikgXAorICAgIGRvIHsgaWYgKCFvKSB7IEVJTkFfTE9HX0NS
SVQoZm10LCAjIyBfX1ZBX0FSR1NfXyk7IEFTU0VSVChvKTsgcmV0dXJuOyB9IH0gd2hpbGUgKDAp
CisjZGVmaW5lIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRVUk5fVkFMKG8sIHZhbCwgZm10LCAuLi4p
IFwKKyAgICBkbyB7IGlmICghbykgeyBFSU5BX0xPR19DUklUKGZtdCwgIyMgX19WQV9BUkdTX18p
OyBBU1NFUlQobyk7IHJldHVybiB2YWw7IH0gfSB3aGlsZSAoMCkKKwogdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6YWRqdXN0U2l6ZUNvbnN0cmFpbnRzKFJlbmRlclN0eWxlKiBzdHlsZSwgRm9ybVR5cGUg
dHlwZSkgY29uc3QKIHsKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworICAgIF9BU1NFUlRfT05f
UkVMRUFTRV9SRVRVUk4obV9lZGplLCAiQ291bGQgbm90IHBhaW50IG5hdGl2ZSBIVE1MIHBhcnQg
ZHVlIHRvIG1pc3NpbmcgdGhlbWUuIik7CisKICAgICBjb25zdCBzdHJ1Y3QgVGhlbWVQYXJ0RGVz
YyogZGVzYyA9IG1fcGFydERlc2NzICsgKHNpemVfdCl0eXBlOwogCiAgICAgaWYgKHN0eWxlLT5t
aW5XaWR0aCgpLmlzSW50cmluc2ljKCkpCkBAIC0xMTQsOCArMTIyLDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVFbnRyeVJlc2V0KHN0cnVjdCBUaGVtZVBhcnRDYWNoZUVu
dHJ5KiBlbnRyeSwKICAgICBpZiAoIWVkamVfb2JqZWN0X2ZpbGVfc2V0KGVudHJ5LT5vLCBmaWxl
LCBncm91cCkpIHsKICAgICAgICAgRWRqZV9Mb2FkX0Vycm9yIGVyciA9IGVkamVfb2JqZWN0X2xv
YWRfZXJyb3JfZ2V0KGVudHJ5LT5vKTsKICAgICAgICAgY29uc3QgY2hhciAqZXJybXNnID0gZWRq
ZV9sb2FkX2Vycm9yX3N0cihlcnIpOwotICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBs
b2FkICclcycgZnJvbSB0aGVtZSAlczogJXMiLAotICAgICAgICAgICAgICAgICAgICAgZ3JvdXAs
IGZpbGUsIGVycm1zZyk7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IGxvYWQgJyVz
JyBmcm9tIHRoZW1lICVzOiAlcyIsIGdyb3VwLCBmaWxlLCBlcnJtc2cpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTU5LDcgKzE2Niw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OmlzRm9ybUVsZW1lbnRUb29MYXJnZVRvRGlzcGxheShjb25zdCBJ
bnRTaXplJiBlbGVtZW50U2l6ZSkKIHN0cnVjdCBSZW5kZXJUaGVtZUVmbDo6VGhlbWVQYXJ0Q2Fj
aGVFbnRyeSogUmVuZGVyVGhlbWVFZmw6OmNhY2hlVGhlbWVQYXJ0TmV3KEZvcm1UeXBlIHR5cGUs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKGlzRm9ybUVsZW1lbnRUb29MYXJnZVRv
RGlzcGxheShzaXplKSkgewotICAgICAgICBFSU5BX0xPR19FUlIoImNhbm5vdCByZW5kZXIgYW4g
ZWxlbWVudCBvZiBzaXplICVkeCVkIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAg
ICAgICAgRUlOQV9MT0dfRVJSKCJDYW5ub3QgcmVuZGVyIGFuIGVsZW1lbnQgb2Ygc2l6ZSAlZHgl
ZC4iLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKQEAgLTMxMSwxMyArMzE4LDEzIEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5RWRq
ZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3QqIG9iamVjdCwgQ29udHJvbFN0YXRlcyBzCiAKIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50VGhlbWVQYXJ0KFJlbmRlck9iamVjdCogb2JqZWN0LCBG
b3JtVHlwZSB0eXBlLCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CisgICAgbG9hZFRoZW1lSWZOZWVkZWQoKTsKKyAgICBfQVNTRVJUX09OX1JFTEVBU0VfUkVU
VVJOX1ZBTChtX2VkamUsIGZhbHNlLCAiQ291bGQgbm90IHBhaW50IG5hdGl2ZSBIVE1MIHBhcnQg
ZHVlIHRvIG1pc3NpbmcgdGhlbWUuIik7CisKICAgICBUaGVtZVBhcnRDYWNoZUVudHJ5KiBlbnRy
eTsKICAgICBFaW5hX0xpc3QqIHVwZGF0ZXM7CiAgICAgY2Fpcm9fdCogY2Fpcm87CiAKLSAgICBB
U1NFUlQobV9jYW52YXMpOwotICAgIEFTU0VSVChtX2VkamUpOwotCiAgICAgZW50cnkgPSBjYWNo
ZVRoZW1lUGFydEdldCh0eXBlLCByZWN0LnNpemUoKSk7CiAgICAgaWYgKCFlbnRyeSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzk5LDM3ICs0MDYsNDQgQEAgUGFzc1JlZlB0cjxSZW5kZXJU
aGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBm
YWxsYmFjazsKIH0KIAotc3RhdGljIHZvaWQgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzU2VsZWN0
aW9uQWN0aXZlKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNp
Z25hbCwgY29uc3QgY2hhciogc291cmNlKQorc3RhdGljIHZvaWQgYXBwbHlDb2xvckNhbGxiYWNr
KHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiwgY29uc3QgY2hhciogLyogc2lnbmFsICovLCBjb25z
dCBjaGFyKiBjb2xvckNsYXNzKQogewotICAgIFJlbmRlclRoZW1lRWZsKiB0aGF0ID0gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVFZmwgKj4oZGF0YSk7Ci0gICAgaW50IGZyLCBmZywgZmIsIGZhLCBi
ciwgYmcsIGJiLCBiYTsKLQotICAgIGlmICghZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0KG9i
amVjdCwgc291cmNlLCAmZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwgMCwg
MCwgMCwgMCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHRoYXQtPnNldEFjdGl2ZVNlbGVjdGlv
bkNvbG9yKGZyLCBmZywgZmIsIGZhLCBiciwgYmcsIGJiLCBiYSk7CisgICAgUmVuZGVyVGhlbWVF
ZmwqIHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGRhdGEpOworICAgIHRoYXQt
PnNldENvbG9yRnJvbVRoZW1lQ2xhc3MoY29sb3JDbGFzcyk7CisgICAgdGhhdC0+cGxhdGZvcm1D
b2xvcnNEaWRDaGFuZ2UoKTsgLy8gVHJpZ2dlcnMgcmVsYXlvdXQuCiB9CiAKLXN0YXRpYyB2b2lk
IHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkluYWN0aXZlKHZvaWQqIGRhdGEsIEV2
YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNpZ25hbCwgY29uc3QgY2hhciogc291cmNl
KQorc3RhdGljIHZvaWQgZmlsbENvbG9yc0Zyb21FZGplQ2xhc3MoRXZhc19PYmplY3QqIG8sIGNv
bnN0IGNoYXIqIGNvbG9yQ2xhc3MsIENvbG9yKiBjb2xvcjEsIENvbG9yKiBjb2xvcjIgPSAwLCBD
b2xvciogY29sb3IzID0gMCkKIHsKLSAgICBSZW5kZXJUaGVtZUVmbCogdGhhdCA9IHN0YXRpY19j
YXN0PFJlbmRlclRoZW1lRWZsICo+KGRhdGEpOwotICAgIGludCBmciwgZmcsIGZiLCBmYSwgYnIs
IGJnLCBiYiwgYmE7CisgICAgaW50IHIxLCBnMSwgYjEsIGExOworICAgIGludCByMiwgZzIsIGIy
LCBhMjsKKyAgICBpbnQgcjMsIGczLCBiMywgYTM7CiAKLSAgICBpZiAoIWVkamVfb2JqZWN0X2Nv
bG9yX2NsYXNzX2dldChvYmplY3QsIHNvdXJjZSwgJmZyLCAmZmcsICZmYiwgJmZhLCAmYnIsICZi
ZywgJmJiLCAmYmEsIDAsIDAsIDAsIDApKQotICAgICAgICByZXR1cm47CisgICAgYm9vbCBvayA9
IGVkamVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldChvLCBjb2xvckNsYXNzLCAmcjEsICZnMSwgJmIx
LCAmYTEsICZyMiwgJmcyLCAmYjIsICZhMiwgJnIzLCAmZzMsICZiMywgJmEzKTsKKyAgICBfQVNT
RVJUX09OX1JFTEVBU0VfUkVUVVJOKG9rLCAiQ291bGQgbm90IGdldCBjb2xvciBjbGFzcyAnJXMn
XG4iLCBjb2xvckNsYXNzKTsKIAotICAgIHRoYXQtPnNldEluYWN0aXZlU2VsZWN0aW9uQ29sb3Io
ZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhKTsKKyAgICBpZiAoY29sb3IxKQorICAgICAg
ICBjb2xvcjEtPnNldFJHQihtYWtlUkdCQShyMSwgZzEsIGIxLCBhMSkpOworICAgIGlmIChjb2xv
cjIpCisgICAgICAgIGNvbG9yMi0+c2V0UkdCKG1ha2VSR0JBKHIyLCBnMiwgYjIsIGEyKSk7Cisg
ICAgaWYgKGNvbG9yMykKKyAgICAgICAgY29sb3IzLT5zZXRSR0IobWFrZVJHQkEocjMsIGczLCBi
MywgYTMpKTsKIH0KIAotc3RhdGljIHZvaWQgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzRm9jdXNS
aW5nKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNpZ25hbCwg
Y29uc3QgY2hhciogc291cmNlKQordm9pZCBSZW5kZXJUaGVtZUVmbDo6c2V0Q29sb3JGcm9tVGhl
bWVDbGFzcyhjb25zdCBjaGFyKiBjb2xvckNsYXNzKQogewotICAgIFJlbmRlclRoZW1lRWZsKiB0
aGF0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwgKj4oZGF0YSk7Ci0gICAgaW50IGZyLCBm
ZywgZmIsIGZhOwotCi0gICAgaWYgKCFlZGplX29iamVjdF9jb2xvcl9jbGFzc19nZXQob2JqZWN0
LCBzb3VyY2UsICZmciwgJmZnLCAmZmIsICZmYSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9lZGplKTsKIAotICAgIHRoYXQtPnNldEZvY3Vz
UmluZ0NvbG9yKGZyLCBmZywgZmIsIGZhKTsKKyAgICBpZiAoIXN0cmNtcCgid2Via2l0L3NlbGVj
dGlvbi9hY3RpdmUiLCBjb2xvckNsYXNzKSkKKyAgICAgICAgZmlsbENvbG9yc0Zyb21FZGplQ2xh
c3MobV9lZGplLCBjb2xvckNsYXNzLCAmbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Is
ICZtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik7CisgICAgZWxzZSBpZiAoIXN0cmNt
cCgid2Via2l0L3NlbGVjdGlvbi9pbmFjdGl2ZSIsIGNvbG9yQ2xhc3MpKQorICAgICAgICBmaWxs
Q29sb3JzRnJvbUVkamVDbGFzcyhtX2VkamUsIGNvbG9yQ2xhc3MsICZtX2luYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yLCAmbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik7
CisgICAgZWxzZSBpZiAoIXN0cmNtcCgid2Via2l0L2ZvY3VzX3JpbmciLCBjb2xvckNsYXNzKSkg
eworICAgICAgICBmaWxsQ29sb3JzRnJvbUVkamVDbGFzcyhtX2VkamUsIGNvbG9yQ2xhc3MsICZt
X2ZvY3VzUmluZ0NvbG9yKTsKKyAgICAgICAgLy8gcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGlz
IG9ubHkgdXNlZCBmb3IgdGhlIGRlZmF1bHQgdGhlbWUgKHdpdGhvdXQgcGFnZSkKKyAgICAgICAg
Ly8gVGhlIGZvbGxvd2luZyBpcyB1Z2x5LCBidXQgbm8gb3RoZXIgd2F5IHRvIGRvIGl0IHVubGVz
cyB3ZSBjaGFuZ2UgaXQgdG8gdXNlIHBhZ2UgdGhlbWVzIGFzIG11Y2ggYXMgcG9zc2libGUuCisg
ICAgICAgIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihtX2ZvY3VzUmluZ0Nv
bG9yKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OnNldFRoZW1lUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpCkBAIC00MzgsNzIgKzQ1Miw1NiBAQCB2b2lkIFJlbmRlclRoZW1lRWZs
OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3RoZW1lUGF0aCA9IHBhdGg7Ci0gICAgdGhlbWVDaGFuZ2VkKCk7Ci19CiAKLXZvaWQgUmVu
ZGVyVGhlbWVFZmw6OmNyZWF0ZUNhbnZhcygpCi17Ci0gICAgQVNTRVJUKCFtX2NhbnZhcyk7Ci0g
ICAgbV9jYW52YXMgPSBlY29yZV9ldmFzX2J1ZmZlcl9uZXcoMSwgMSk7Ci0gICAgQVNTRVJUKG1f
Y2FudmFzKTsKLX0KKyAgICBpZiAobV90aGVtZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIEVJ
TkFfTE9HX0VSUigiTm8gdGhlbWUgZGVmaW5lZCwgdW5hYmxlIHRvIHNldCB0aGVtZSBmb3IgSFRN
TCBGb3Jtcy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVm
bDo6Y3JlYXRlRWRqZSgpCi17Ci0gICAgQVNTRVJUKCFtX2VkamUpOwotICAgIGlmIChtX3RoZW1l
UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIEVJTkFfTE9HX0VSUigiTm8gdGhlbWUgZGVmaW5lZCwg
dW5hYmxlIHRvIHNldCBSZW5kZXJUaGVtZUVmbC4iKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbV9l
ZGplID0gZWRqZV9vYmplY3RfYWRkKGVjb3JlX2V2YXNfZ2V0KG1fY2FudmFzKSk7Ci0gICAgICAg
IGlmICghbV9lZGplKQotICAgICAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgY3JlYXRl
IGJhc2UgZWRqZSBvYmplY3QuIik7Ci0gICAgICAgIGVsc2UgaWYgKCFlZGplX29iamVjdF9maWxl
X3NldChtX2VkamUsIG1fdGhlbWVQYXRoLnV0ZjgoKS5kYXRhKCksICJ3ZWJraXQvYmFzZSIpKSB7
Ci0gICAgICAgICAgICBFZGplX0xvYWRfRXJyb3IgZXJyID0gZWRqZV9vYmplY3RfbG9hZF9lcnJv
cl9nZXQobV9lZGplKTsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm1zZyA9IGVkamVfbG9h
ZF9lcnJvcl9zdHIoZXJyKTsKLSAgICAgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHNl
dCBmaWxlOiAlcyIsIGVycm1zZyk7Ci0gICAgICAgICAgICBldmFzX29iamVjdF9kZWwobV9lZGpl
KTsKLSAgICAgICAgICAgIG1fZWRqZSA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0jZGVmaW5lIENP
Tk5FQ1QoY2MsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICBlZGplX29iamVjdF9zaWduYWxfY2FsbGJhY2tfYWRkKG1fZWRq
ZSwgImNvbG9yX2NsYXNzLHNldCIsICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ3ZWJraXQvImNjLCBmdW5jLCB0aGlzKQotCi0gICAgICAgICAgICBDT05O
RUNUKCJzZWxlY3Rpb24vYWN0aXZlIiwKLSAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGhlbWVF
ZmxDb2xvckNsYXNzU2VsZWN0aW9uQWN0aXZlKTsKLSAgICAgICAgICAgIENPTk5FQ1QoInNlbGVj
dGlvbi9pbmFjdGl2ZSIsCi0gICAgICAgICAgICAgICAgICAgIHJlbmRlclRoZW1lRWZsQ29sb3JD
bGFzc1NlbGVjdGlvbkluYWN0aXZlKTsKLSAgICAgICAgICAgIENPTk5FQ1QoImZvY3VzX3Jpbmci
LCByZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NGb2N1c1JpbmcpOwotI3VuZGVmIENPTk5FQ1QKLSAg
ICAgICAgfQorICAgIGlmICghbV9jYW52YXMpIHsKKyAgICAgICAgbV9jYW52YXMgPSBlY29yZV9l
dmFzX2J1ZmZlcl9uZXcoMSwgMSk7CisgICAgICAgIGlmICghbV9jYW52YXMpCisgICAgICAgICAg
ICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBjcmVhdGUgY2FudmFzLiIpOwogICAgIH0KKworICAg
IGxvYWRUaGVtZSgpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVDb2xvcnMo
KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6bG9hZFRoZW1lKCkKIHsKLSAgICBpbnQgZnIsIGZnLCBm
YiwgZmEsIGJyLCBiZywgYmIsIGJhOwotICAgIEFTU0VSVChtX2VkamUpOwotI2RlZmluZSBDT0xP
Ul9HRVQoY2xzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIGVkamVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldChtX2VkamUsICJ3ZWJraXQvImNs
cywgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
ZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwKQotCi0gICAgaWYgKENPTE9SX0dFVCgic2VsZWN0
aW9uL2FjdGl2ZSIpKSB7Ci0gICAgICAgIG1fYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
ID0gQ29sb3IoZnIsIGZnLCBmYiwgZmEpOwotICAgICAgICBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvciA9IENvbG9yKGJyLCBiZywgYmIsIGJhKTsKLSAgICB9Ci0gICAgaWYgKENPTE9S
X0dFVCgic2VsZWN0aW9uL2luYWN0aXZlIikpIHsKLSAgICAgICAgbV9pbmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvciA9IENvbG9yKGZyLCBmZywgZmIsIGZhKTsKLSAgICAgICAgbV9pbmFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yKGJyLCBiZywgYmIsIGJhKTsKKyAg
ICBFdmFzX09iamVjdCogbyA9IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZh
cykpOworICAgIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRVUk5fVkFMKG8sIGZhbHNlLCAiQ291bGQg
bm90IGNyZWF0ZSBuZXcgYmFzZSBFZGplIG9iamVjdC4iKTsKKworICAgIGlmICghZWRqZV9vYmpl
Y3RfZmlsZV9zZXQobywgbV90aGVtZVBhdGgudXRmOCgpLmRhdGEoKSwgIndlYmtpdC9iYXNlIikp
IHsKKyAgICAgICAgRWRqZV9Mb2FkX0Vycm9yIGVyciA9IGVkamVfb2JqZWN0X2xvYWRfZXJyb3Jf
Z2V0KG8pOworICAgICAgICBjb25zdCBjaGFyKiBlcnJtc2cgPSBlZGplX2xvYWRfZXJyb3Jfc3Ry
KGVycik7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHNldCBmaWxlICclcyc6ICVz
IiwgbV90aGVtZVBhdGgudXRmOCgpLmRhdGEoKSwgIGVycm1zZyk7CisgICAgICAgIGV2YXNfb2Jq
ZWN0X2RlbChvKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBLZWVwIGN1cnJlbnQgdGhlbWUu
CiAgICAgfQotICAgIGlmIChDT0xPUl9HRVQoImZvY3VzX3JpbmciKSkgewotICAgICAgICBtX2Zv
Y3VzUmluZ0NvbG9yID0gQ29sb3IoZnIsIGZnLCBmYiwgZmEpOwotICAgICAgICAvLyB3ZWJraXQg
anVzdCB1c2UgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGZvciBkZWZhdWx0IHRoZW1lICh3aXRo
b3V0IHBhZ2UpCi0gICAgICAgIC8vIHRoaXMgaXMgdWdseSwgYnV0IG5vIG90aGVyIHdheSB0byBk
byBpdCB1bmxlc3Mgd2UgY2hhbmdlCi0gICAgICAgIC8vIGl0IHRvIHVzZSBwYWdlIHRoZW1lcyBh
cyBtdWNoIGFzIHBvc3NpYmxlLgotICAgICAgICBSZW5kZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNS
aW5nQ29sb3IobV9mb2N1c1JpbmdDb2xvcik7CisKKyAgICAvLyBHZXQgcmlkIG9mIGV4aXN0aW5n
IHRoZW1lLgorICAgIGlmIChtX2VkamUpIHsKKyAgICAgICAgY2FjaGVUaGVtZVBhcnRGbHVzaCgp
OworICAgICAgICBldmFzX29iamVjdF9kZWwobV9lZGplKTsKICAgICB9Ci0jdW5kZWYgQ09MT1Jf
R0VUCi0gICAgcGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsKKworICAgIC8vIFNldCBuZXcgbG9h
ZGVkIHRoZW1lLCBhbmQgYXBwbHkgaXQuCisgICAgbV9lZGplID0gbzsKKworICAgIGVkamVfb2Jq
ZWN0X3NpZ25hbF9jYWxsYmFja19hZGQobV9lZGplLCAiY29sb3JfY2xhc3Msc2V0IiwgIndlYmtp
dC9zZWxlY3Rpb24vYWN0aXZlIiwgYXBwbHlDb2xvckNhbGxiYWNrLCB0aGlzKTsKKyAgICBlZGpl
X29iamVjdF9zaWduYWxfY2FsbGJhY2tfYWRkKG1fZWRqZSwgImNvbG9yX2NsYXNzLHNldCIsICJ3
ZWJraXQvc2VsZWN0aW9uL2luYWN0aXZlIiwgYXBwbHlDb2xvckNhbGxiYWNrLCB0aGlzKTsKKyAg
ICBlZGplX29iamVjdF9zaWduYWxfY2FsbGJhY2tfYWRkKG1fZWRqZSwgImNvbG9yX2NsYXNzLHNl
dCIsICJ3ZWJraXQvZm9jdXNfcmluZyIsIGFwcGx5Q29sb3JDYWxsYmFjaywgdGhpcyk7CisKKyAg
ICBhcHBseVBhcnREZXNjcmlwdGlvbnNGcm9tKG1fZWRqZSk7CisKKyAgICBzZXRDb2xvckZyb21U
aGVtZUNsYXNzKCJ3ZWJraXQvc2VsZWN0aW9uL2FjdGl2ZSIpOworICAgIHNldENvbG9yRnJvbVRo
ZW1lQ2xhc3MoIndlYmtpdC9zZWxlY3Rpb24vaW5hY3RpdmUiKTsKKyAgICBzZXRDb2xvckZyb21U
aGVtZUNsYXNzKCJ3ZWJraXQvZm9jdXNfcmluZyIpOworCisgICAgcGxhdGZvcm1Db2xvcnNEaWRD
aGFuZ2UoKTsgLy8gU2NoZWR1bGVzIGEgcmVsYXlvdXQsIGRvIGxhc3QuCisKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlQYXJ0RGVzY3JpcHRpb25GYWxs
YmFjayhzdHJ1Y3QgVGhlbWVQYXJ0RGVzYyogZGVzYykKQEAgLTYwNSwxNyArNjAzLDIwIEBAIGNv
bnN0IGNoYXIqIFJlbmRlclRoZW1lRWZsOjplZGplR3JvdXBGcm9tRm9ybVR5cGUoRm9ybVR5cGUg
dHlwZSkgY29uc3QKICAgICByZXR1cm4gZ3JvdXBzW3R5cGVdOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlvbnMoKQordm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBw
bHlQYXJ0RGVzY3JpcHRpb25zRnJvbShFdmFzX09iamVjdCogbykKIHsKICAgICBFdmFzX09iamVj
dCogb2JqZWN0OwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGNvbnN0IGNoYXIqIGZpbGU7CiAK
LSAgICBBU1NFUlQobV9jYW52YXMpOwotICAgIEFTU0VSVChtX2VkamUpOworICAgIEFTU0VSVChv
KTsKIAotICAgIGVkamVfb2JqZWN0X2ZpbGVfZ2V0KG1fZWRqZSwgJmZpbGUsIDApOworICAgIGVk
amVfb2JqZWN0X2ZpbGVfZ2V0KG8sICZmaWxlLCAwKTsKICAgICBBU1NFUlQoZmlsZSk7CisgICAg
aWYgKCFmaWxlKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHJldHJpZXZlIEVk
amUgdGhlbWUgZmlsZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG9iamVjdCA9
IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZhcykpOwogICAgIGlmICghb2Jq
ZWN0KSB7CkBAIC02NDAsMjYgKzY0MSw2IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFy
dERlc2NyaXB0aW9ucygpCiAgICAgZXZhc19vYmplY3RfZGVsKG9iamVjdCk7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVFZmw6OnRoZW1lQ2hhbmdlZCgpCi17Ci0gICAgY2FjaGVUaGVtZVBhcnRGbHVz
aCgpOwotCi0gICAgaWYgKCFtX2NhbnZhcykgewotICAgICAgICBjcmVhdGVDYW52YXMoKTsKLSAg
ICAgICAgaWYgKCFtX2NhbnZhcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIW1fZWRqZSkgewotICAgICAgICBjcmVhdGVFZGplKCk7Ci0gICAgICAgIGlmICghbV9lZGpl
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFwcGx5RWRqZUNvbG9ycygpOwot
ICAgIGFwcGx5UGFydERlc2NyaXB0aW9ucygpOwotfQotCiBSZW5kZXJUaGVtZUVmbDo6UmVuZGVy
VGhlbWVFZmwoUGFnZSogcGFnZSkKICAgICA6IFJlbmRlclRoZW1lKCkKICAgICAsIG1fcGFnZShw
YWdlKQpAQCAtNjg5LDMwICs2NzAsNiBAQCBSZW5kZXJUaGVtZUVmbDo6flJlbmRlclRoZW1lRWZs
KCkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OnNldEFjdGl2ZVNlbGVjdGlvbkNv
bG9yKGludCBmb3JlUiwgaW50IGZvcmVHLCBpbnQgZm9yZUIsIGludCBmb3JlQSwgaW50IGJhY2tS
LCBpbnQgYmFja0csIGludCBiYWNrQiwgaW50IGJhY2tBKQotewotICAgIG1fYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yID0gQ29sb3IoZm9yZVIsIGZvcmVHLCBmb3JlQiwgZm9yZUEpOwot
ICAgIG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gQ29sb3IoYmFja1IsIGJhY2tH
LCBiYWNrQiwgYmFja0EpOwotICAgIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7Ci19Ci0KLXZv
aWQgUmVuZGVyVGhlbWVFZmw6OnNldEluYWN0aXZlU2VsZWN0aW9uQ29sb3IoaW50IGZvcmVSLCBp
bnQgZm9yZUcsIGludCBmb3JlQiwgaW50IGZvcmVBLCBpbnQgYmFja1IsIGludCBiYWNrRywgaW50
IGJhY2tCLCBpbnQgYmFja0EpCi17Ci0gICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvciA9IENvbG9yKGZvcmVSLCBmb3JlRywgZm9yZUIsIGZvcmVBKTsKLSAgICBtX2luYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gQ29sb3IoYmFja1IsIGJhY2tHLCBiYWNrQiwgYmFj
a0EpOwotICAgIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQgUmVuZGVyVGhl
bWVFZmw6OnNldEZvY3VzUmluZ0NvbG9yKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQotewot
ICAgIG1fZm9jdXNSaW5nQ29sb3IgPSBDb2xvcihyLCBnLCBiLCBhKTsKLSAgICAvLyB3ZWJraXQg
anVzdCB1c2UgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGZvciBkZWZhdWx0IHRoZW1lICh3aXRo
b3V0IHBhZ2UpCi0gICAgLy8gdGhpcyBpcyB1Z2x5LCBidXQgbm8gb3RoZXIgd2F5IHRvIGRvIGl0
IHVubGVzcyB3ZSBjaGFuZ2UKLSAgICAvLyBpdCB0byB1c2UgcGFnZSB0aGVtZXMgYXMgbXVjaCBh
cyBwb3NzaWJsZS4KLSAgICBSZW5kZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IobV9m
b2N1c1JpbmdDb2xvcik7Ci0gICAgcGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsKLX0KLQogc3Rh
dGljIGJvb2wgc3VwcG9ydHNGb2N1cyhDb250cm9sUGFydCBhcHBlYXJhbmNlKQogewogICAgIHN3
aXRjaCAoYXBwZWFyYW5jZSkgewpAQCAtNzU0LDYgKzcxMSwzNiBAQCBMYXlvdXRVbml0IFJlbmRl
clRoZW1lRWZsOjpiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KSBj
b25zdAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbihvYmplY3QpOwog
fQogCitDb2xvciBSZW5kZXJUaGVtZUVmbDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAoreworICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CisgICAgcmV0dXJu
IG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVt
ZUVmbDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7
CisgICAgbG9hZFRoZW1lSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbV9pbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcjsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICBsb2FkVGhlbWVJZk5l
ZWRlZCgpOworICAgIHJldHVybiBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKK30K
KworQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKSBjb25zdAoreworICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CisgICAgcmV0dXJu
IG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Cit9CisKK0NvbG9yIFJlbmRlclRo
ZW1lRWZsOjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QKK3sKKyAgICBsb2FkVGhlbWVJ
Zk5lZWRlZCgpOworICAgIHJldHVybiBtX2ZvY3VzUmluZ0NvbG9yOworfQorCiBib29sIFJlbmRl
clRoZW1lRWZsOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKG9iamVjdC0+
c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlckhvcml6b250YWxQYXJ0KQpAQCAtODQyLDcg
KzgyOSwxMCBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eQogICAgICAgICBzdGF0aWNfY2FzdDxS
ZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFk
anVzdENoZWNrYm94U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorCiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBDaGVj
a0JveCk7CisgICAgQVNTRVJUKG1fZWRqZSk7CisKICAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsK
IAogICAgIGNvbnN0IHN0cnVjdCBUaGVtZVBhcnREZXNjICpkZXNjID0gbV9wYXJ0RGVzY3MgKyAo
c2l6ZV90KUNoZWNrQm94OwpAQCAtODYzLDcgKzg1MywxMCBAQCB2b2lkIFJlbmRlclRoZW1lRWZs
OjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0
eWxlKgogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFJhZGlvU3R5bGUoc3R5bGVSZXNvbHZlciwg
c3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgYWRqdXN0U2l6
ZUNvbnN0cmFpbnRzKHN0eWxlLCBSYWRpb0J1dHRvbik7CisgICAgQVNTRVJUKG1fZWRqZSk7CisK
ICAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsKIAogICAgIGNvbnN0IHN0cnVjdCBUaGVtZVBhcnRE
ZXNjICpkZXNjID0gbV9wYXJ0RGVzY3MgKyAoc2l6ZV90KVJhZGlvQnV0dG9uOwpAQCAtMTA4Niwx
MiArMTA3OSwxMyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFByb2dyZXNzQmFyKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZgogI2lmIEVOQUJMRShWSURFTykK
IGJvb2wgUmVuZGVyVGhlbWVFZmw6OmVtaXRNZWRpYUJ1dHRvblNpZ25hbChGb3JtVHlwZSBmb3Jt
VHlwZSwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbWVkaWFFbGVtZW50VHlwZSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworICAgIF9BU1NFUlRfT05f
UkVMRUFTRV9SRVRVUk5fVkFMKG1fZWRqZSwgZmFsc2UsICJDb3VsZCBub3QgcGFpbnQgbmF0aXZl
IEhUTUwgcGFydCBkdWUgdG8gbWlzc2luZyB0aGVtZS4iKTsKKwogICAgIFRoZW1lUGFydENhY2hl
RW50cnkqIGVudHJ5OwogCiAgICAgZW50cnkgPSBjYWNoZVRoZW1lUGFydEdldChmb3JtVHlwZSwg
cmVjdC5zaXplKCkpOwotICAgIEFTU0VSVChlbnRyeSk7Ci0gICAgaWYgKCFlbnRyeSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRVUk5fVkFMKGVudHJ5
LCBmYWxzZSwgIkNvdWxkIG5vdCBwYWludCBuYXRpdmUgSFRNTCBwYXJ0IGR1ZSB0byBtaXNzaW5n
IHRoZW1lIHBhcnQuIik7CiAKICAgICBpZiAobWVkaWFFbGVtZW50VHlwZSA9PSBNZWRpYVBsYXlC
dXR0b24pCiAgICAgICAgIGVkamVfb2JqZWN0X3NpZ25hbF9lbWl0KGVudHJ5LT5vLCAicGxheSIs
ICIiKTsKQEAgLTEyODAsNCArMTI3NCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVk
aWFDdXJyZW50VGltZShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKKworI3VuZGVmIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRV
Uk4KKyN1bmRlZiBfQVNTRVJUX09OX1JFTEVBU0VfUkVUVVJOX1ZBTAorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCmluZGV4IGVkNDJmMzdkMGNmOWI1
MDE2Y2MzNzJkYjk3OGZmMzM5ZWYzZmMwZDQuLmUxNGY0MTU4NDM0ZTY0OGVlM2ViOTE5YTllZDMw
MmQ2ZDRmNDVlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5k
ZXJUaGVtZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVt
ZUVmbC5oCkBAIC05NiwxOCArOTYsMTQgQEAgcHVibGljOgogICAgIC8vIGNvbnRyb2xzIHRoYXQg
bmVlZCB0byBkbyB0aGlzLgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9y
bUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOyB9Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUlu
YWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbmFjdGl2
ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsgfQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1B
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcjsgfQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faW5hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9j
dXNSaW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzUmluZ0NvbG9yOyB9CisgICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3Rp
dmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIHBs
YXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNo
YW5nZWQoKTsKLQotICAgIC8vIFNldCBwbGF0Zm9ybSBjb2xvcnMgYW5kIG5vdGlmeSB0aGV5IGNo
YW5nZWQKLSAgICB2b2lkIHNldEFjdGl2ZVNlbGVjdGlvbkNvbG9yKGludCBmb3JlUiwgaW50IGZv
cmVHLCBpbnQgZm9yZUIsIGludCBmb3JlQSwgaW50IGJhY2tSLCBpbnQgYmFja0csIGludCBiYWNr
QiwgaW50IGJhY2tBKTsKLSAgICB2b2lkIHNldEluYWN0aXZlU2VsZWN0aW9uQ29sb3IoaW50IGZv
cmVSLCBpbnQgZm9yZUcsIGludCBmb3JlQiwgaW50IGZvcmVBLCBpbnQgYmFja1IsIGludCBiYWNr
RywgaW50IGJhY2tCLCBpbnQgYmFja0EpOwotICAgIHZvaWQgc2V0Rm9jdXNSaW5nQ29sb3IoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworICAgIC8vIFNldCBwbGF0Zm9ybSBjb2xvcnM7IHJl
bWVtYmVyIHRvIGNhbGwgcGxhdGZvcm1Db2xvckRpZENoYW5nZSBhZnRlci4KKyAgICB2b2lkIHNl
dENvbG9yRnJvbVRoZW1lQ2xhc3MoY29uc3QgY2hhciogY29sb3JDbGFzcyk7CiAKICAgICB2b2lk
IHNldEJ1dHRvblRleHRDb2xvcihpbnQgZm9yZVIsIGludCBmb3JlRywgaW50IGZvcmVCLCBpbnQg
Zm9yZUEsIGludCBiYWNrUiwgaW50IGJhY2tHLCBpbnQgYmFja0IsIGludCBiYWNrQSk7CiAgICAg
dm9pZCBzZXRDb21ib1RleHRDb2xvcihpbnQgZm9yZVIsIGludCBmb3JlRywgaW50IGZvcmVCLCBp
bnQgZm9yZUEsIGludCBiYWNrUiwgaW50IGJhY2tHLCBpbnQgYmFja0IsIGludCBiYWNrQSk7CkBA
IC0xMTYsNyArMTEyLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGp1c3RTaXplQ29uc3RyYWlu
dHMoUmVuZGVyU3R5bGUqLCBGb3JtVHlwZSkgY29uc3Q7CiAKLQogICAgIC8vIFN5c3RlbSBmb250
cy4KICAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChpbnQgcHJvcElkLCBGb250RGVzY3JpcHRp
b24mKSBjb25zdDsKIApAQCAtMjA4LDE0ICsyMDMsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHRoZW1lUGF0aCgpIHsgcmV0
dXJuIG1fdGhlbWVQYXRoOyB9CisKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgZmxvYXQgZGVmYXVs
dEZvbnRTaXplOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlQ2FudmFzKCk7Ci0gICAgdm9p
ZCBjcmVhdGVFZGplKCk7Ci0gICAgdm9pZCBhcHBseUVkamVDb2xvcnMoKTsKLSAgICB2b2lkIGFw
cGx5UGFydERlc2NyaXB0aW9ucygpOworICAgIGJvb2wgbG9hZFRoZW1lKCk7CisgICAgQUxXQVlT
X0lOTElORSBib29sIGxvYWRUaGVtZUlmTmVlZGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiAhIW1fZWRqZSB8fCBjb25zdF9jYXN0PFJlbmRlclRoZW1lRWZsKj4odGhpcyktPmxvYWRU
aGVtZSgpOworICAgIH0KKworICAgIHZvaWQgYXBwbHlQYXJ0RGVzY3JpcHRpb25zRnJvbShFdmFz
X09iamVjdCopOworCiAgICAgY29uc3QgY2hhciogZWRqZUdyb3VwRnJvbUZvcm1UeXBlKEZvcm1U
eXBlKSBjb25zdDsKICAgICB2b2lkIGFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3Qq
LCBDb250cm9sU3RhdGVzKTsKICAgICBib29sIHBhaW50VGhlbWVQYXJ0KFJlbmRlck9iamVjdCos
IEZvcm1UeXBlLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162498</attachid>
            <date>2012-09-06 06:41:56 -0700</date>
            <delta_ts>2012-09-06 14:41:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95832-20120906154136.patch</filename>
            <type>text/plain</type>
            <size>21419</size>
            <attacher name="Kenneth Rohde Christiansen">kenneth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYxYjU2ZGVjY2E3ZTlm
MmQxNjIxMmFhYzI0MWNhZjNlZjA1ODE5NC4uOWZiNmFiYWQ0OWJmMzczNmJhN2MzNDVjZTQ3MTQ5
NzI1MWU3OTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA5LTA1ICBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KKworICAgICAgICBb
RUZMXSBGdXp6eSBsb2FkIHRoZSBFZGplIHRoZW1lIGZvciBIVE1MIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTgzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgdGhlbWUgc28g
dGhhdCBpdCBpcyBmaXJzdCBsb2FkZWQgd2hlbiBhY3R1YWxseSB1c2VkLgorICAgICAgICBUaGlz
IGFsc28gZml4ZWQgdGhlIGNhc2UgdGhhdCBpdCB3YXMgaW1wb3NzaWJsZSB0byBjaGFuZ2UgdGhl
bWUKKyAgICAgICAgYSBzZWNvbmQgdGltZS4KKworICAgICAgICBUZXN0ZWQgYnkgY3VycmVudCB0
ZXN0cy4gQVBJIHVuaXQgdGVzdCBjb21pbmcgaW4gc2VwYXJhdGUgcGF0Y2guCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisK
KyAgICAgICAgICAgIEFkZCBzb21lIGNvbnZlbmllbmNlIG1hY3Jvcy4KKworICAgICAgIChXZWJD
b3JlOjphcHBseUNvbG9yQ2FsbGJhY2spOgorCisgICAgICAgICAgICBVc2UganVzdCBvbmUgY2Fs
bGJhY2sgZnJvbSB0aGUgZWRqZSB0aGVtZSwgd2hpY2gganVzdCBjYWxscworICAgICAgICAgICAg
c2V0Q29sb3JGcm9tVGhlbWVDbGFzcy4KKworICAgICAgICAoV2ViQ29yZTo6ZmlsbENvbG9yc0Zy
b21FZGplQ2xhc3MpOgorCisgICAgICAgICAgICBBZGQgY29udmVuaWVuY2UgbWV0aG9kIGZvciBy
ZWNlaXZpbmcgY29sb3JzIGZyb20gRWRqZSBhbmQKKyAgICAgICAgICAgIHN0b3JpbmcgdGhlbSBp
biBDb2xvcidzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6c2V0Q29sb3JG
cm9tVGhlbWVDbGFzcyk6CisKKyAgICAgICAgICAgIFNldCB0aGUgY2xhc3MgQ29sb3IgdmFyaWFi
bGVkIHdpdGggdGhlIHZhbHVlcyBmcm9tIHRoZSB0aGVtZQorICAgICAgICAgICAgY29sb3IgY2xh
c3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpzZXRUaGVtZVBhdGgpOgor
CisgICAgICAgICAgICBEb24ndCBhcHBseSB0aGUgdGhlbWUgaW1tZWRpYXRlbHkuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpsb2FkVGhlbWUpOgorCisgICAgICAgICAgICBM
b2FkIHRoZSBuZXcgdGhlbWUgYW5kIGZyZWUgdGhlIGN1cnJlbnQgb25lLiBJZiBpdCBmYWlscywK
KyAgICAgICAgICAgIGl0IHdpbGwgY29udGludWUgdXNpbmcgdGhlIG9sZCBvbmUsIGlmIGV4aXN0
cy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFkanVzdFNpemVDb25zdHJh
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVF
bnRyeVJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpjYWNoZVRoZW1l
UGFydE5ldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0
aW9uc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0
aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lRWZsOjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGxhdGZvcm1J
bmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUVmbDo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcik6CisKKyAgICAgICAgICAgIEVuc3Vy
ZSB0aGUgdGhlbWUgaXMgbG9hZGVkLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVm
bDo6YWRqdXN0Q2hlY2tib3hTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVm
bDo6YWRqdXN0UmFkaW9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6
ZW1pdE1lZGlhQnV0dG9uU2lnbmFsKToKKworICAgICAgICAgICAgRW5zdXJlIHRoZSB0aGVtZSBp
cyBsb2FkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaDoKKyAg
ICAgICAgKFJlbmRlclRoZW1lRWZsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZs
Ojpsb2FkVGhlbWVJZk5lZWRlZCk6CisKKyAgICAgICAgICAgIFJlbW92ZSB1bm5lZWRlZCBtZXRo
b2RzIGFuZCBhZGQgYSBtZXRob2QgZm9yIGxvYWRpbmcgYSB0aGVtZQorICAgICAgICAgICAgaW4g
dGhlIGNhc2UgaXQgaXMgbm90IGxvYWRlZCB5ZXQuCisKIDIwMTItMDktMDUgIENocmlzIEd1YW4g
IDxjaHJpcy5ndWFuQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tiZXJyeV0g
QWRkIGRvY3VtZW50IHVybCBhbmQgc2VjdXJpdHlPcmlnaW4gdG8gcGxhdGZvcm0gcmVxdWVzdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4
IDk4YzgxYzI5YTM5N2M0MDk5MjQ5YzZiYjU1MTQ3MTI4ZTBhYTNkZTEuLmMxYzYwMjE4NTE1YzNh
NGU1NDg3ZjM0MjQwMTE5MWNlOTA1NTIyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtNzksOCArNzksMTYgQEAgc3RhdGljIGNvbnN0
IGludCBtZWRpYVNsaWRlclRodW1iV2lkdGggPSAxMjsKIHN0YXRpYyBjb25zdCBpbnQgbWVkaWFT
bGlkZXJUaHVtYkhlaWdodCA9IDEyOwogI2VuZGlmCiAKKyNkZWZpbmUgX0FTU0VSVF9PTl9SRUxF
QVNFX1JFVFVSTihvLCBmbXQsIC4uLikgXAorICAgIGRvIHsgaWYgKCFvKSB7IEVJTkFfTE9HX0NS
SVQoZm10LCAjIyBfX1ZBX0FSR1NfXyk7IEFTU0VSVChvKTsgcmV0dXJuOyB9IH0gd2hpbGUgKDAp
CisjZGVmaW5lIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRVUk5fVkFMKG8sIHZhbCwgZm10LCAuLi4p
IFwKKyAgICBkbyB7IGlmICghbykgeyBFSU5BX0xPR19DUklUKGZtdCwgIyMgX19WQV9BUkdTX18p
OyBBU1NFUlQobyk7IHJldHVybiB2YWw7IH0gfSB3aGlsZSAoMCkKKwogdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6YWRqdXN0U2l6ZUNvbnN0cmFpbnRzKFJlbmRlclN0eWxlKiBzdHlsZSwgRm9ybVR5cGUg
dHlwZSkgY29uc3QKIHsKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworICAgIF9BU1NFUlRfT05f
UkVMRUFTRV9SRVRVUk4obV9lZGplLCAiQ291bGQgbm90IHBhaW50IG5hdGl2ZSBIVE1MIHBhcnQg
ZHVlIHRvIG1pc3NpbmcgdGhlbWUuIik7CisKICAgICBjb25zdCBzdHJ1Y3QgVGhlbWVQYXJ0RGVz
YyogZGVzYyA9IG1fcGFydERlc2NzICsgKHNpemVfdCl0eXBlOwogCiAgICAgaWYgKHN0eWxlLT5t
aW5XaWR0aCgpLmlzSW50cmluc2ljKCkpCkBAIC0xMTQsOCArMTIyLDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVFbnRyeVJlc2V0KHN0cnVjdCBUaGVtZVBhcnRDYWNoZUVu
dHJ5KiBlbnRyeSwKICAgICBpZiAoIWVkamVfb2JqZWN0X2ZpbGVfc2V0KGVudHJ5LT5vLCBmaWxl
LCBncm91cCkpIHsKICAgICAgICAgRWRqZV9Mb2FkX0Vycm9yIGVyciA9IGVkamVfb2JqZWN0X2xv
YWRfZXJyb3JfZ2V0KGVudHJ5LT5vKTsKICAgICAgICAgY29uc3QgY2hhciAqZXJybXNnID0gZWRq
ZV9sb2FkX2Vycm9yX3N0cihlcnIpOwotICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBs
b2FkICclcycgZnJvbSB0aGVtZSAlczogJXMiLAotICAgICAgICAgICAgICAgICAgICAgZ3JvdXAs
IGZpbGUsIGVycm1zZyk7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IGxvYWQgJyVz
JyBmcm9tIHRoZW1lICVzOiAlcyIsIGdyb3VwLCBmaWxlLCBlcnJtc2cpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTU5LDcgKzE2Niw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OmlzRm9ybUVsZW1lbnRUb29MYXJnZVRvRGlzcGxheShjb25zdCBJ
bnRTaXplJiBlbGVtZW50U2l6ZSkKIHN0cnVjdCBSZW5kZXJUaGVtZUVmbDo6VGhlbWVQYXJ0Q2Fj
aGVFbnRyeSogUmVuZGVyVGhlbWVFZmw6OmNhY2hlVGhlbWVQYXJ0TmV3KEZvcm1UeXBlIHR5cGUs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKGlzRm9ybUVsZW1lbnRUb29MYXJnZVRv
RGlzcGxheShzaXplKSkgewotICAgICAgICBFSU5BX0xPR19FUlIoImNhbm5vdCByZW5kZXIgYW4g
ZWxlbWVudCBvZiBzaXplICVkeCVkIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAg
ICAgICAgRUlOQV9MT0dfRVJSKCJDYW5ub3QgcmVuZGVyIGFuIGVsZW1lbnQgb2Ygc2l6ZSAlZHgl
ZC4iLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKQEAgLTMxMSwxMyArMzE4LDEzIEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5RWRq
ZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3QqIG9iamVjdCwgQ29udHJvbFN0YXRlcyBzCiAKIGJv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50VGhlbWVQYXJ0KFJlbmRlck9iamVjdCogb2JqZWN0LCBG
b3JtVHlwZSB0eXBlLCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CisgICAgbG9hZFRoZW1lSWZOZWVkZWQoKTsKKyAgICBfQVNTRVJUX09OX1JFTEVBU0VfUkVU
VVJOX1ZBTChtX2VkamUsIGZhbHNlLCAiQ291bGQgbm90IHBhaW50IG5hdGl2ZSBIVE1MIHBhcnQg
ZHVlIHRvIG1pc3NpbmcgdGhlbWUuIik7CisKICAgICBUaGVtZVBhcnRDYWNoZUVudHJ5KiBlbnRy
eTsKICAgICBFaW5hX0xpc3QqIHVwZGF0ZXM7CiAgICAgY2Fpcm9fdCogY2Fpcm87CiAKLSAgICBB
U1NFUlQobV9jYW52YXMpOwotICAgIEFTU0VSVChtX2VkamUpOwotCiAgICAgZW50cnkgPSBjYWNo
ZVRoZW1lUGFydEdldCh0eXBlLCByZWN0LnNpemUoKSk7CiAgICAgaWYgKCFlbnRyeSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzk5LDM3ICs0MDYsNDQgQEAgUGFzc1JlZlB0cjxSZW5kZXJU
aGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKiBwYWdlKQogICAgIHJldHVybiBm
YWxsYmFjazsKIH0KIAotc3RhdGljIHZvaWQgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzU2VsZWN0
aW9uQWN0aXZlKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNp
Z25hbCwgY29uc3QgY2hhciogc291cmNlKQorc3RhdGljIHZvaWQgYXBwbHlDb2xvckNhbGxiYWNr
KHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiwgY29uc3QgY2hhciogLyogc2lnbmFsICovLCBjb25z
dCBjaGFyKiBjb2xvckNsYXNzKQogewotICAgIFJlbmRlclRoZW1lRWZsKiB0aGF0ID0gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVFZmwgKj4oZGF0YSk7Ci0gICAgaW50IGZyLCBmZywgZmIsIGZhLCBi
ciwgYmcsIGJiLCBiYTsKLQotICAgIGlmICghZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0KG9i
amVjdCwgc291cmNlLCAmZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwgMCwg
MCwgMCwgMCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHRoYXQtPnNldEFjdGl2ZVNlbGVjdGlv
bkNvbG9yKGZyLCBmZywgZmIsIGZhLCBiciwgYmcsIGJiLCBiYSk7CisgICAgUmVuZGVyVGhlbWVF
ZmwqIHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGRhdGEpOworICAgIHRoYXQt
PnNldENvbG9yRnJvbVRoZW1lQ2xhc3MoY29sb3JDbGFzcyk7CisgICAgdGhhdC0+cGxhdGZvcm1D
b2xvcnNEaWRDaGFuZ2UoKTsgLy8gVHJpZ2dlcnMgcmVsYXlvdXQuCiB9CiAKLXN0YXRpYyB2b2lk
IHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkluYWN0aXZlKHZvaWQqIGRhdGEsIEV2
YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNpZ25hbCwgY29uc3QgY2hhciogc291cmNl
KQorc3RhdGljIHZvaWQgZmlsbENvbG9yc0Zyb21FZGplQ2xhc3MoRXZhc19PYmplY3QqIG8sIGNv
bnN0IGNoYXIqIGNvbG9yQ2xhc3MsIENvbG9yKiBjb2xvcjEsIENvbG9yKiBjb2xvcjIgPSAwLCBD
b2xvciogY29sb3IzID0gMCkKIHsKLSAgICBSZW5kZXJUaGVtZUVmbCogdGhhdCA9IHN0YXRpY19j
YXN0PFJlbmRlclRoZW1lRWZsICo+KGRhdGEpOwotICAgIGludCBmciwgZmcsIGZiLCBmYSwgYnIs
IGJnLCBiYiwgYmE7CisgICAgaW50IHIxLCBnMSwgYjEsIGExOworICAgIGludCByMiwgZzIsIGIy
LCBhMjsKKyAgICBpbnQgcjMsIGczLCBiMywgYTM7CiAKLSAgICBpZiAoIWVkamVfb2JqZWN0X2Nv
bG9yX2NsYXNzX2dldChvYmplY3QsIHNvdXJjZSwgJmZyLCAmZmcsICZmYiwgJmZhLCAmYnIsICZi
ZywgJmJiLCAmYmEsIDAsIDAsIDAsIDApKQotICAgICAgICByZXR1cm47CisgICAgYm9vbCBvayA9
IGVkamVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldChvLCBjb2xvckNsYXNzLCAmcjEsICZnMSwgJmIx
LCAmYTEsICZyMiwgJmcyLCAmYjIsICZhMiwgJnIzLCAmZzMsICZiMywgJmEzKTsKKyAgICBfQVNT
RVJUX09OX1JFTEVBU0VfUkVUVVJOKG9rLCAiQ291bGQgbm90IGdldCBjb2xvciBjbGFzcyAnJXMn
XG4iLCBjb2xvckNsYXNzKTsKIAotICAgIHRoYXQtPnNldEluYWN0aXZlU2VsZWN0aW9uQ29sb3Io
ZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhKTsKKyAgICBpZiAoY29sb3IxKQorICAgICAg
ICBjb2xvcjEtPnNldFJHQihtYWtlUkdCQShyMSwgZzEsIGIxLCBhMSkpOworICAgIGlmIChjb2xv
cjIpCisgICAgICAgIGNvbG9yMi0+c2V0UkdCKG1ha2VSR0JBKHIyLCBnMiwgYjIsIGEyKSk7Cisg
ICAgaWYgKGNvbG9yMykKKyAgICAgICAgY29sb3IzLT5zZXRSR0IobWFrZVJHQkEocjMsIGczLCBi
MywgYTMpKTsKIH0KIAotc3RhdGljIHZvaWQgcmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzRm9jdXNS
aW5nKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNpZ25hbCwg
Y29uc3QgY2hhciogc291cmNlKQordm9pZCBSZW5kZXJUaGVtZUVmbDo6c2V0Q29sb3JGcm9tVGhl
bWVDbGFzcyhjb25zdCBjaGFyKiBjb2xvckNsYXNzKQogewotICAgIFJlbmRlclRoZW1lRWZsKiB0
aGF0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwgKj4oZGF0YSk7Ci0gICAgaW50IGZyLCBm
ZywgZmIsIGZhOwotCi0gICAgaWYgKCFlZGplX29iamVjdF9jb2xvcl9jbGFzc19nZXQob2JqZWN0
LCBzb3VyY2UsICZmciwgJmZnLCAmZmIsICZmYSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9lZGplKTsKIAotICAgIHRoYXQtPnNldEZvY3Vz
UmluZ0NvbG9yKGZyLCBmZywgZmIsIGZhKTsKKyAgICBpZiAoIXN0cmNtcCgid2Via2l0L3NlbGVj
dGlvbi9hY3RpdmUiLCBjb2xvckNsYXNzKSkKKyAgICAgICAgZmlsbENvbG9yc0Zyb21FZGplQ2xh
c3MobV9lZGplLCBjb2xvckNsYXNzLCAmbV9hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3Is
ICZtX2FjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik7CisgICAgZWxzZSBpZiAoIXN0cmNt
cCgid2Via2l0L3NlbGVjdGlvbi9pbmFjdGl2ZSIsIGNvbG9yQ2xhc3MpKQorICAgICAgICBmaWxs
Q29sb3JzRnJvbUVkamVDbGFzcyhtX2VkamUsIGNvbG9yQ2xhc3MsICZtX2luYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yLCAmbV9pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcik7
CisgICAgZWxzZSBpZiAoIXN0cmNtcCgid2Via2l0L2ZvY3VzX3JpbmciLCBjb2xvckNsYXNzKSkg
eworICAgICAgICBmaWxsQ29sb3JzRnJvbUVkamVDbGFzcyhtX2VkamUsIGNvbG9yQ2xhc3MsICZt
X2ZvY3VzUmluZ0NvbG9yKTsKKyAgICAgICAgLy8gcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGlz
IG9ubHkgdXNlZCBmb3IgdGhlIGRlZmF1bHQgdGhlbWUgKHdpdGhvdXQgcGFnZSkKKyAgICAgICAg
Ly8gVGhlIGZvbGxvd2luZyBpcyB1Z2x5LCBidXQgbm8gb3RoZXIgd2F5IHRvIGRvIGl0IHVubGVz
cyB3ZSBjaGFuZ2UgaXQgdG8gdXNlIHBhZ2UgdGhlbWVzIGFzIG11Y2ggYXMgcG9zc2libGUuCisg
ICAgICAgIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihtX2ZvY3VzUmluZ0Nv
bG9yKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyVGhlbWVFZmw6OnNldFRoZW1lUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpCkBAIC00MzgsNzIgKzQ1Miw1NiBAQCB2b2lkIFJlbmRlclRoZW1lRWZs
OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3RoZW1lUGF0aCA9IHBhdGg7Ci0gICAgdGhlbWVDaGFuZ2VkKCk7Ci19CiAKLXZvaWQgUmVu
ZGVyVGhlbWVFZmw6OmNyZWF0ZUNhbnZhcygpCi17Ci0gICAgQVNTRVJUKCFtX2NhbnZhcyk7Ci0g
ICAgbV9jYW52YXMgPSBlY29yZV9ldmFzX2J1ZmZlcl9uZXcoMSwgMSk7Ci0gICAgQVNTRVJUKG1f
Y2FudmFzKTsKLX0KKyAgICBpZiAobV90aGVtZVBhdGguaXNFbXB0eSgpKSB7CisgICAgICAgIEVJ
TkFfTE9HX0VSUigiTm8gdGhlbWUgZGVmaW5lZCwgdW5hYmxlIHRvIHNldCB0aGVtZSBmb3IgSFRN
TCBGb3Jtcy4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVm
bDo6Y3JlYXRlRWRqZSgpCi17Ci0gICAgQVNTRVJUKCFtX2VkamUpOwotICAgIGlmIChtX3RoZW1l
UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIEVJTkFfTE9HX0VSUigiTm8gdGhlbWUgZGVmaW5lZCwg
dW5hYmxlIHRvIHNldCBSZW5kZXJUaGVtZUVmbC4iKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbV9l
ZGplID0gZWRqZV9vYmplY3RfYWRkKGVjb3JlX2V2YXNfZ2V0KG1fY2FudmFzKSk7Ci0gICAgICAg
IGlmICghbV9lZGplKQotICAgICAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgY3JlYXRl
IGJhc2UgZWRqZSBvYmplY3QuIik7Ci0gICAgICAgIGVsc2UgaWYgKCFlZGplX29iamVjdF9maWxl
X3NldChtX2VkamUsIG1fdGhlbWVQYXRoLnV0ZjgoKS5kYXRhKCksICJ3ZWJraXQvYmFzZSIpKSB7
Ci0gICAgICAgICAgICBFZGplX0xvYWRfRXJyb3IgZXJyID0gZWRqZV9vYmplY3RfbG9hZF9lcnJv
cl9nZXQobV9lZGplKTsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm1zZyA9IGVkamVfbG9h
ZF9lcnJvcl9zdHIoZXJyKTsKLSAgICAgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHNl
dCBmaWxlOiAlcyIsIGVycm1zZyk7Ci0gICAgICAgICAgICBldmFzX29iamVjdF9kZWwobV9lZGpl
KTsKLSAgICAgICAgICAgIG1fZWRqZSA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0jZGVmaW5lIENP
Tk5FQ1QoY2MsIGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICBlZGplX29iamVjdF9zaWduYWxfY2FsbGJhY2tfYWRkKG1fZWRq
ZSwgImNvbG9yX2NsYXNzLHNldCIsICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ3ZWJraXQvImNjLCBmdW5jLCB0aGlzKQotCi0gICAgICAgICAgICBDT05O
RUNUKCJzZWxlY3Rpb24vYWN0aXZlIiwKLSAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGhlbWVF
ZmxDb2xvckNsYXNzU2VsZWN0aW9uQWN0aXZlKTsKLSAgICAgICAgICAgIENPTk5FQ1QoInNlbGVj
dGlvbi9pbmFjdGl2ZSIsCi0gICAgICAgICAgICAgICAgICAgIHJlbmRlclRoZW1lRWZsQ29sb3JD
bGFzc1NlbGVjdGlvbkluYWN0aXZlKTsKLSAgICAgICAgICAgIENPTk5FQ1QoImZvY3VzX3Jpbmci
LCByZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NGb2N1c1JpbmcpOwotI3VuZGVmIENPTk5FQ1QKLSAg
ICAgICAgfQorICAgIGlmICghbV9jYW52YXMpIHsKKyAgICAgICAgbV9jYW52YXMgPSBlY29yZV9l
dmFzX2J1ZmZlcl9uZXcoMSwgMSk7CisgICAgICAgIGlmICghbV9jYW52YXMpCisgICAgICAgICAg
ICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBjcmVhdGUgY2FudmFzLiIpOwogICAgIH0KKworICAg
IGxvYWRUaGVtZSgpOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseUVkamVDb2xvcnMo
KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6bG9hZFRoZW1lKCkKIHsKLSAgICBpbnQgZnIsIGZnLCBm
YiwgZmEsIGJyLCBiZywgYmIsIGJhOwotICAgIEFTU0VSVChtX2VkamUpOwotI2RlZmluZSBDT0xP
Ul9HRVQoY2xzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIGVkamVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldChtX2VkamUsICJ3ZWJraXQvImNs
cywgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
ZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwKQotCi0gICAgaWYgKENPTE9SX0dFVCgic2VsZWN0
aW9uL2FjdGl2ZSIpKSB7Ci0gICAgICAgIG1fYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
ID0gQ29sb3IoZnIsIGZnLCBmYiwgZmEpOwotICAgICAgICBtX2FjdGl2ZVNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvciA9IENvbG9yKGJyLCBiZywgYmIsIGJhKTsKLSAgICB9Ci0gICAgaWYgKENPTE9S
X0dFVCgic2VsZWN0aW9uL2luYWN0aXZlIikpIHsKLSAgICAgICAgbV9pbmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvciA9IENvbG9yKGZyLCBmZywgZmIsIGZhKTsKLSAgICAgICAgbV9pbmFj
dGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvciA9IENvbG9yKGJyLCBiZywgYmIsIGJhKTsKKyAg
ICBFdmFzX09iamVjdCogbyA9IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZh
cykpOworICAgIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRVUk5fVkFMKG8sIGZhbHNlLCAiQ291bGQg
bm90IGNyZWF0ZSBuZXcgYmFzZSBFZGplIG9iamVjdC4iKTsKKworICAgIGlmICghZWRqZV9vYmpl
Y3RfZmlsZV9zZXQobywgbV90aGVtZVBhdGgudXRmOCgpLmRhdGEoKSwgIndlYmtpdC9iYXNlIikp
IHsKKyAgICAgICAgRWRqZV9Mb2FkX0Vycm9yIGVyciA9IGVkamVfb2JqZWN0X2xvYWRfZXJyb3Jf
Z2V0KG8pOworICAgICAgICBjb25zdCBjaGFyKiBlcnJtc2cgPSBlZGplX2xvYWRfZXJyb3Jfc3Ry
KGVycik7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHNldCBmaWxlICclcyc6ICVz
IiwgbV90aGVtZVBhdGgudXRmOCgpLmRhdGEoKSwgIGVycm1zZyk7CisgICAgICAgIGV2YXNfb2Jq
ZWN0X2RlbChvKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBLZWVwIGN1cnJlbnQgdGhlbWUu
CiAgICAgfQotICAgIGlmIChDT0xPUl9HRVQoImZvY3VzX3JpbmciKSkgewotICAgICAgICBtX2Zv
Y3VzUmluZ0NvbG9yID0gQ29sb3IoZnIsIGZnLCBmYiwgZmEpOwotICAgICAgICAvLyB3ZWJraXQg
anVzdCB1c2UgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGZvciBkZWZhdWx0IHRoZW1lICh3aXRo
b3V0IHBhZ2UpCi0gICAgICAgIC8vIHRoaXMgaXMgdWdseSwgYnV0IG5vIG90aGVyIHdheSB0byBk
byBpdCB1bmxlc3Mgd2UgY2hhbmdlCi0gICAgICAgIC8vIGl0IHRvIHVzZSBwYWdlIHRoZW1lcyBh
cyBtdWNoIGFzIHBvc3NpYmxlLgotICAgICAgICBSZW5kZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNS
aW5nQ29sb3IobV9mb2N1c1JpbmdDb2xvcik7CisKKyAgICAvLyBHZXQgcmlkIG9mIGV4aXN0aW5n
IHRoZW1lLgorICAgIGlmIChtX2VkamUpIHsKKyAgICAgICAgY2FjaGVUaGVtZVBhcnRGbHVzaCgp
OworICAgICAgICBldmFzX29iamVjdF9kZWwobV9lZGplKTsKICAgICB9Ci0jdW5kZWYgQ09MT1Jf
R0VUCi0gICAgcGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsKKworICAgIC8vIFNldCBuZXcgbG9h
ZGVkIHRoZW1lLCBhbmQgYXBwbHkgaXQuCisgICAgbV9lZGplID0gbzsKKworICAgIGVkamVfb2Jq
ZWN0X3NpZ25hbF9jYWxsYmFja19hZGQobV9lZGplLCAiY29sb3JfY2xhc3Msc2V0IiwgIndlYmtp
dC9zZWxlY3Rpb24vYWN0aXZlIiwgYXBwbHlDb2xvckNhbGxiYWNrLCB0aGlzKTsKKyAgICBlZGpl
X29iamVjdF9zaWduYWxfY2FsbGJhY2tfYWRkKG1fZWRqZSwgImNvbG9yX2NsYXNzLHNldCIsICJ3
ZWJraXQvc2VsZWN0aW9uL2luYWN0aXZlIiwgYXBwbHlDb2xvckNhbGxiYWNrLCB0aGlzKTsKKyAg
ICBlZGplX29iamVjdF9zaWduYWxfY2FsbGJhY2tfYWRkKG1fZWRqZSwgImNvbG9yX2NsYXNzLHNl
dCIsICJ3ZWJraXQvZm9jdXNfcmluZyIsIGFwcGx5Q29sb3JDYWxsYmFjaywgdGhpcyk7CisKKyAg
ICBhcHBseVBhcnREZXNjcmlwdGlvbnNGcm9tKG1fZWRqZSk7CisKKyAgICBzZXRDb2xvckZyb21U
aGVtZUNsYXNzKCJ3ZWJraXQvc2VsZWN0aW9uL2FjdGl2ZSIpOworICAgIHNldENvbG9yRnJvbVRo
ZW1lQ2xhc3MoIndlYmtpdC9zZWxlY3Rpb24vaW5hY3RpdmUiKTsKKyAgICBzZXRDb2xvckZyb21U
aGVtZUNsYXNzKCJ3ZWJraXQvZm9jdXNfcmluZyIpOworCisgICAgcGxhdGZvcm1Db2xvcnNEaWRD
aGFuZ2UoKTsgLy8gU2NoZWR1bGVzIGEgcmVsYXlvdXQsIGRvIGxhc3QuCisKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlQYXJ0RGVzY3JpcHRpb25GYWxs
YmFjayhzdHJ1Y3QgVGhlbWVQYXJ0RGVzYyogZGVzYykKQEAgLTYwNSwxNyArNjAzLDIwIEBAIGNv
bnN0IGNoYXIqIFJlbmRlclRoZW1lRWZsOjplZGplR3JvdXBGcm9tRm9ybVR5cGUoRm9ybVR5cGUg
dHlwZSkgY29uc3QKICAgICByZXR1cm4gZ3JvdXBzW3R5cGVdOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlvbnMoKQordm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBw
bHlQYXJ0RGVzY3JpcHRpb25zRnJvbShFdmFzX09iamVjdCogbykKIHsKICAgICBFdmFzX09iamVj
dCogb2JqZWN0OwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGNvbnN0IGNoYXIqIGZpbGU7CiAK
LSAgICBBU1NFUlQobV9jYW52YXMpOwotICAgIEFTU0VSVChtX2VkamUpOworICAgIEFTU0VSVChv
KTsKIAotICAgIGVkamVfb2JqZWN0X2ZpbGVfZ2V0KG1fZWRqZSwgJmZpbGUsIDApOworICAgIGVk
amVfb2JqZWN0X2ZpbGVfZ2V0KG8sICZmaWxlLCAwKTsKICAgICBBU1NFUlQoZmlsZSk7CisgICAg
aWYgKCFmaWxlKSB7CisgICAgICAgIEVJTkFfTE9HX0VSUigiQ291bGQgbm90IHJldHJpZXZlIEVk
amUgdGhlbWUgZmlsZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIG9iamVjdCA9
IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZhcykpOwogICAgIGlmICghb2Jq
ZWN0KSB7CkBAIC02NDAsMjYgKzY0MSw2IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFy
dERlc2NyaXB0aW9ucygpCiAgICAgZXZhc19vYmplY3RfZGVsKG9iamVjdCk7CiB9CiAKLXZvaWQg
UmVuZGVyVGhlbWVFZmw6OnRoZW1lQ2hhbmdlZCgpCi17Ci0gICAgY2FjaGVUaGVtZVBhcnRGbHVz
aCgpOwotCi0gICAgaWYgKCFtX2NhbnZhcykgewotICAgICAgICBjcmVhdGVDYW52YXMoKTsKLSAg
ICAgICAgaWYgKCFtX2NhbnZhcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIW1fZWRqZSkgewotICAgICAgICBjcmVhdGVFZGplKCk7Ci0gICAgICAgIGlmICghbV9lZGpl
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGFwcGx5RWRqZUNvbG9ycygpOwot
ICAgIGFwcGx5UGFydERlc2NyaXB0aW9ucygpOwotfQotCiBSZW5kZXJUaGVtZUVmbDo6UmVuZGVy
VGhlbWVFZmwoUGFnZSogcGFnZSkKICAgICA6IFJlbmRlclRoZW1lKCkKICAgICAsIG1fcGFnZShw
YWdlKQpAQCAtNjg5LDMwICs2NzAsNiBAQCBSZW5kZXJUaGVtZUVmbDo6flJlbmRlclRoZW1lRWZs
KCkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OnNldEFjdGl2ZVNlbGVjdGlvbkNv
bG9yKGludCBmb3JlUiwgaW50IGZvcmVHLCBpbnQgZm9yZUIsIGludCBmb3JlQSwgaW50IGJhY2tS
LCBpbnQgYmFja0csIGludCBiYWNrQiwgaW50IGJhY2tBKQotewotICAgIG1fYWN0aXZlU2VsZWN0
aW9uRm9yZWdyb3VuZENvbG9yID0gQ29sb3IoZm9yZVIsIGZvcmVHLCBmb3JlQiwgZm9yZUEpOwot
ICAgIG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gQ29sb3IoYmFja1IsIGJhY2tH
LCBiYWNrQiwgYmFja0EpOwotICAgIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7Ci19Ci0KLXZv
aWQgUmVuZGVyVGhlbWVFZmw6OnNldEluYWN0aXZlU2VsZWN0aW9uQ29sb3IoaW50IGZvcmVSLCBp
bnQgZm9yZUcsIGludCBmb3JlQiwgaW50IGZvcmVBLCBpbnQgYmFja1IsIGludCBiYWNrRywgaW50
IGJhY2tCLCBpbnQgYmFja0EpCi17Ci0gICAgbV9pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvciA9IENvbG9yKGZvcmVSLCBmb3JlRywgZm9yZUIsIGZvcmVBKTsKLSAgICBtX2luYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yID0gQ29sb3IoYmFja1IsIGJhY2tHLCBiYWNrQiwgYmFj
a0EpOwotICAgIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7Ci19Ci0KLXZvaWQgUmVuZGVyVGhl
bWVFZmw6OnNldEZvY3VzUmluZ0NvbG9yKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKQotewot
ICAgIG1fZm9jdXNSaW5nQ29sb3IgPSBDb2xvcihyLCBnLCBiLCBhKTsKLSAgICAvLyB3ZWJraXQg
anVzdCB1c2UgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGZvciBkZWZhdWx0IHRoZW1lICh3aXRo
b3V0IHBhZ2UpCi0gICAgLy8gdGhpcyBpcyB1Z2x5LCBidXQgbm8gb3RoZXIgd2F5IHRvIGRvIGl0
IHVubGVzcyB3ZSBjaGFuZ2UKLSAgICAvLyBpdCB0byB1c2UgcGFnZSB0aGVtZXMgYXMgbXVjaCBh
cyBwb3NzaWJsZS4KLSAgICBSZW5kZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IobV9m
b2N1c1JpbmdDb2xvcik7Ci0gICAgcGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKTsKLX0KLQogc3Rh
dGljIGJvb2wgc3VwcG9ydHNGb2N1cyhDb250cm9sUGFydCBhcHBlYXJhbmNlKQogewogICAgIHN3
aXRjaCAoYXBwZWFyYW5jZSkgewpAQCAtNzU0LDYgKzcxMSwzNiBAQCBMYXlvdXRVbml0IFJlbmRl
clRoZW1lRWZsOjpiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KSBj
b25zdAogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbihvYmplY3QpOwog
fQogCitDb2xvciBSZW5kZXJUaGVtZUVmbDo6cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdAoreworICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CisgICAgcmV0dXJu
IG1fYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOworfQorCitDb2xvciBSZW5kZXJUaGVt
ZUVmbDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7
CisgICAgbG9hZFRoZW1lSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbV9pbmFjdGl2ZVNlbGVjdGlv
bkJhY2tncm91bmRDb2xvcjsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtQWN0
aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICBsb2FkVGhlbWVJZk5l
ZWRlZCgpOworICAgIHJldHVybiBtX2FjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKK30K
KworQ29sb3IgUmVuZGVyVGhlbWVFZmw6OnBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3Jv
dW5kQ29sb3IoKSBjb25zdAoreworICAgIGxvYWRUaGVtZUlmTmVlZGVkKCk7CisgICAgcmV0dXJu
IG1faW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Cit9CisKK0NvbG9yIFJlbmRlclRo
ZW1lRWZsOjpwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QKK3sKKyAgICBsb2FkVGhlbWVJ
Zk5lZWRlZCgpOworICAgIHJldHVybiBtX2ZvY3VzUmluZ0NvbG9yOworfQorCiBib29sIFJlbmRl
clRoZW1lRWZsOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKG9iamVjdC0+
c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlckhvcml6b250YWxQYXJ0KQpAQCAtODQyLDcg
KzgyOSwxMCBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eQogICAgICAgICBzdGF0aWNfY2FzdDxS
ZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFk
anVzdENoZWNrYm94U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorCiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxlLCBDaGVj
a0JveCk7CisgICAgQVNTRVJUKG1fZWRqZSk7CisKICAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsK
IAogICAgIGNvbnN0IHN0cnVjdCBUaGVtZVBhcnREZXNjICpkZXNjID0gbV9wYXJ0RGVzY3MgKyAo
c2l6ZV90KUNoZWNrQm94OwpAQCAtODYzLDcgKzg1MywxMCBAQCB2b2lkIFJlbmRlclRoZW1lRWZs
OjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0
eWxlKgogICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFJhZGlvU3R5bGUoc3R5bGVSZXNvbHZlciwg
c3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgYWRqdXN0U2l6
ZUNvbnN0cmFpbnRzKHN0eWxlLCBSYWRpb0J1dHRvbik7CisgICAgQVNTRVJUKG1fZWRqZSk7CisK
ICAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsKIAogICAgIGNvbnN0IHN0cnVjdCBUaGVtZVBhcnRE
ZXNjICpkZXNjID0gbV9wYXJ0RGVzY3MgKyAoc2l6ZV90KVJhZGlvQnV0dG9uOwpAQCAtMTA4Niwx
MiArMTA3OSwxMyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFByb2dyZXNzQmFyKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZgogI2lmIEVOQUJMRShWSURFTykK
IGJvb2wgUmVuZGVyVGhlbWVFZmw6OmVtaXRNZWRpYUJ1dHRvblNpZ25hbChGb3JtVHlwZSBmb3Jt
VHlwZSwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbWVkaWFFbGVtZW50VHlwZSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKKyAgICBsb2FkVGhlbWVJZk5lZWRlZCgpOworICAgIF9BU1NFUlRfT05f
UkVMRUFTRV9SRVRVUk5fVkFMKG1fZWRqZSwgZmFsc2UsICJDb3VsZCBub3QgcGFpbnQgbmF0aXZl
IEhUTUwgcGFydCBkdWUgdG8gbWlzc2luZyB0aGVtZS4iKTsKKwogICAgIFRoZW1lUGFydENhY2hl
RW50cnkqIGVudHJ5OwogCiAgICAgZW50cnkgPSBjYWNoZVRoZW1lUGFydEdldChmb3JtVHlwZSwg
cmVjdC5zaXplKCkpOwotICAgIEFTU0VSVChlbnRyeSk7Ci0gICAgaWYgKCFlbnRyeSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRVUk5fVkFMKGVudHJ5
LCBmYWxzZSwgIkNvdWxkIG5vdCBwYWludCBuYXRpdmUgSFRNTCBwYXJ0IGR1ZSB0byBtaXNzaW5n
IHRoZW1lIHBhcnQuIik7CiAKICAgICBpZiAobWVkaWFFbGVtZW50VHlwZSA9PSBNZWRpYVBsYXlC
dXR0b24pCiAgICAgICAgIGVkamVfb2JqZWN0X3NpZ25hbF9lbWl0KGVudHJ5LT5vLCAicGxheSIs
ICIiKTsKQEAgLTEyODAsNCArMTI3NCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVk
aWFDdXJyZW50VGltZShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKKworI3VuZGVmIF9BU1NFUlRfT05fUkVMRUFTRV9SRVRV
Uk4KKyN1bmRlZiBfQVNTRVJUX09OX1JFTEVBU0VfUkVUVVJOX1ZBTAorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCmluZGV4IGVkNDJmMzdkMGNmOWI1
MDE2Y2MzNzJkYjk3OGZmMzM5ZWYzZmMwZDQuLjJmNWM3YjgwMjI5YjljNDkyZjk5Zjc4ZTI2MWJm
OWVlMDIzZjgyNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5k
ZXJUaGVtZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVt
ZUVmbC5oCkBAIC05NiwxOCArOTYsMTQgQEAgcHVibGljOgogICAgIC8vIGNvbnRyb2xzIHRoYXQg
bmVlZCB0byBkbyB0aGlzLgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9y
bUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOyB9Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUlu
YWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbmFjdGl2
ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcjsgfQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1B
Y3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNl
bGVjdGlvbkZvcmVncm91bmRDb2xvcjsgfQotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFj
dGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faW5hY3RpdmVT
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9j
dXNSaW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzUmluZ0NvbG9yOyB9CisgICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3Rp
dmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIHBs
YXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNo
YW5nZWQoKTsKLQotICAgIC8vIFNldCBwbGF0Zm9ybSBjb2xvcnMgYW5kIG5vdGlmeSB0aGV5IGNo
YW5nZWQKLSAgICB2b2lkIHNldEFjdGl2ZVNlbGVjdGlvbkNvbG9yKGludCBmb3JlUiwgaW50IGZv
cmVHLCBpbnQgZm9yZUIsIGludCBmb3JlQSwgaW50IGJhY2tSLCBpbnQgYmFja0csIGludCBiYWNr
QiwgaW50IGJhY2tBKTsKLSAgICB2b2lkIHNldEluYWN0aXZlU2VsZWN0aW9uQ29sb3IoaW50IGZv
cmVSLCBpbnQgZm9yZUcsIGludCBmb3JlQiwgaW50IGZvcmVBLCBpbnQgYmFja1IsIGludCBiYWNr
RywgaW50IGJhY2tCLCBpbnQgYmFja0EpOwotICAgIHZvaWQgc2V0Rm9jdXNSaW5nQ29sb3IoaW50
IHIsIGludCBnLCBpbnQgYiwgaW50IGEpOworICAgIC8vIFNldCBwbGF0Zm9ybSBjb2xvcnM7IHJl
bWVtYmVyIHRvIGNhbGwgcGxhdGZvcm1Db2xvckRpZENoYW5nZSBhZnRlci4KKyAgICB2b2lkIHNl
dENvbG9yRnJvbVRoZW1lQ2xhc3MoY29uc3QgY2hhciogY29sb3JDbGFzcyk7CiAKICAgICB2b2lk
IHNldEJ1dHRvblRleHRDb2xvcihpbnQgZm9yZVIsIGludCBmb3JlRywgaW50IGZvcmVCLCBpbnQg
Zm9yZUEsIGludCBiYWNrUiwgaW50IGJhY2tHLCBpbnQgYmFja0IsIGludCBiYWNrQSk7CiAgICAg
dm9pZCBzZXRDb21ib1RleHRDb2xvcihpbnQgZm9yZVIsIGludCBmb3JlRywgaW50IGZvcmVCLCBp
bnQgZm9yZUEsIGludCBiYWNrUiwgaW50IGJhY2tHLCBpbnQgYmFja0IsIGludCBiYWNrQSk7CkBA
IC0xMTYsNyArMTEyLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGp1c3RTaXplQ29uc3RyYWlu
dHMoUmVuZGVyU3R5bGUqLCBGb3JtVHlwZSkgY29uc3Q7CiAKLQogICAgIC8vIFN5c3RlbSBmb250
cy4KICAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChpbnQgcHJvcElkLCBGb250RGVzY3JpcHRp
b24mKSBjb25zdDsKIApAQCAtMjA4LDE0ICsyMDMsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHRoZW1lUGF0aCgpIHsgcmV0
dXJuIG1fdGhlbWVQYXRoOyB9CisKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgZmxvYXQgZGVmYXVs
dEZvbnRTaXplOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlQ2FudmFzKCk7Ci0gICAgdm9p
ZCBjcmVhdGVFZGplKCk7Ci0gICAgdm9pZCBhcHBseUVkamVDb2xvcnMoKTsKLSAgICB2b2lkIGFw
cGx5UGFydERlc2NyaXB0aW9ucygpOworICAgIGJvb2wgbG9hZFRoZW1lKCk7CisgICAgQUxXQVlT
X0lOTElORSBib29sIGxvYWRUaGVtZUlmTmVlZGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2VkamUgfHwgY29uc3RfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KHRoaXMpLT5sb2FkVGhl
bWUoKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGx5UGFydERlc2NyaXB0aW9uc0Zyb20oRXZhc19P
YmplY3QqKTsKKwogICAgIGNvbnN0IGNoYXIqIGVkamVHcm91cEZyb21Gb3JtVHlwZShGb3JtVHlw
ZSkgY29uc3Q7CiAgICAgdm9pZCBhcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0Kiwg
Q29udHJvbFN0YXRlcyk7CiAgICAgYm9vbCBwYWludFRoZW1lUGFydChSZW5kZXJPYmplY3QqLCBG
b3JtVHlwZSwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>