<?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>98705</bug_id>
          
          <creation_ts>2012-10-08 17:34:20 -0700</creation_ts>
          <short_desc>[EFL][WK2] Add Remote Web Inspector</short_desc>
          <delta_ts>2012-12-08 09:36:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88094</dependson>
    
    <dependson>103743</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Seokju Kwon">seokju.kwon</reporter>
          <assigned_to name="Seokju Kwon">seokju.kwon</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jesus</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>obzhirov</cc>
    
    <cc>rakuco</cc>
    
    <cc>seokju</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>737262</commentid>
    <comment_count>0</comment_count>
    <who name="Seokju Kwon">seokju.kwon</who>
    <bug_when>2012-10-08 17:34:20 -0700</bug_when>
    <thetext>Implementation of remove web inspector on efl port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737263</commentid>
    <comment_count>1</comment_count>
    <who name="Seokju Kwon">seokju.kwon</who>
    <bug_when>2012-10-08 17:35:28 -0700</bug_when>
    <thetext>Implementation of remote web inspector on efl port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766894</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2012-11-14 07:53:02 -0800</bug_when>
    <thetext>I guess if libsoup is used for EFL as well GTK Inspector Server can be re-factored to become Soup Inspector server or something like that. It is a bit mixing of the terms because GTK Inspector Server uses Glib (GSocket) interface but here you are. What do you think guys?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774293</commentid>
    <comment_count>3</comment_count>
      <attachid>175750</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2012-11-23 01:12:23 -0800</bug_when>
    <thetext>Created attachment 175750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778510</commentid>
    <comment_count>4</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-28 17:09:12 -0800</bug_when>
    <thetext>As Anton said, I think we should consider if we can share GTK implementation first. It seems to me that this patch is almost same with GTK implementation.

For example, you might to change WebInspectorServerGtk with WebInspectorServerSoup.cpp to share it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778649</commentid>
    <comment_count>5</comment_count>
    <who name="Seokju Kwon">seokju.kwon</who>
    <bug_when>2012-11-28 21:10:41 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; As Anton said, I think we should consider if we can share GTK implementation first. It seems to me that this patch is almost same with GTK implementation.
&gt; 
&gt; For example, you might to change WebInspectorServerGtk with WebInspectorServerSoup.cpp to share it.

It is an initial patch for efl port.
The patch sharing the server with gtk will be uploaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782529</commentid>
    <comment_count>6</comment_count>
      <attachid>177479</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2012-12-04 07:26:35 -0800</bug_when>
    <thetext>Created attachment 177479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782775</commentid>
    <comment_count>7</comment_count>
      <attachid>177479</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-04 12:05:05 -0800</bug_when>
    <thetext>Comment on attachment 177479
Patch

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

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:85
&gt; +    ClientMap::iterator end = m_clientMap.end();

newline before this

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:100
&gt; +    }

newline after this

&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:47
&gt; +    initialized = true;

It doesnt seem initialized at this point, what if the below fails?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783684</commentid>
    <comment_count>8</comment_count>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2012-12-05 05:54:19 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 177479 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177479&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:85
&gt; &gt; +    ClientMap::iterator end = m_clientMap.end();
&gt; 
&gt; newline before this
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:100
&gt; &gt; +    }
&gt; 
&gt; newline after this
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:47
&gt; &gt; +    initialized = true;
&gt; 
&gt; It doesnt seem initialized at this point, what if the below fails?

Right. I will fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783690</commentid>
    <comment_count>9</comment_count>
      <attachid>177735</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2012-12-05 06:06:37 -0800</bug_when>
    <thetext>Created attachment 177735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784477</commentid>
    <comment_count>10</comment_count>
      <attachid>177479</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-05 19:00:48 -0800</bug_when>
    <thetext>Comment on attachment 177479
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:47
&gt;&gt; +    initialized = true;
&gt; 
&gt; It doesnt seem initialized at this point, what if the below fails?

In Gtk port, it looks they wanted to initialize this variable only once. I think they used this as guard pointer to prevent to call more than once. 

&gt; Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp:61
&gt; +        initialized = WebInspectorServer::shared().listen(bindAddress, port); 
initialized is to ensure initInspectorServer() is executed only once, so it should set to true always, even if the env var is not present or the server fails to run.
https://bugs.webkit.org/show_bug.cgi?id=88094#c25

Don&apos;t initInspectorServer() be called only once ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784487</commentid>
    <comment_count>11</comment_count>
    <who name="Seokju Kwon">seokju.kwon</who>
    <bug_when>2012-12-05 19:10:07 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 177479 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177479&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:47
&gt; &gt;&gt; +    initialized = true;
&gt; &gt; 
&gt; &gt; It doesnt seem initialized at this point, what if the below fails?
&gt; 
&gt; In Gtk port, it looks they wanted to initialize this variable only once. I think they used this as guard pointer to prevent to call more than once. 
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/WebContextGtk.cpp:61
&gt; &gt; +        initialized = WebInspectorServer::shared().listen(bindAddress, port); 
&gt; initialized is to ensure initInspectorServer() is executed only once, so it should set to true always, even if the env var is not present or the server fails to run.
&gt; https://bugs.webkit.org/show_bug.cgi?id=88094#c25
&gt; 
&gt; Don&apos;t initInspectorServer() be called only once ?

Sound reasonable.
Qt and GTK port are same (initInspectorServer() is executed only once).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784512</commentid>
    <comment_count>12</comment_count>
      <attachid>177735</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2012-12-05 19:56:56 -0800</bug_when>
    <thetext>Comment on attachment 177735
Patch

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

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:42
&gt; +static String inspectorResourcePath()
&gt; +{
&gt; +    String inspectorFilesPath = WEB_INSPECTOR_INSTALL_DIR;
&gt; +    if (access(inspectorFilesPath.utf8().data(), R_OK))
&gt; +        inspectorFilesPath = WEB_INSPECTOR_DIR;
&gt; +
&gt; +    return inspectorFilesPath;
&gt; +}

IMHO, how about moving this into WebCore/platform/efl to reduce duplication?

For example, EflInspectorUtilities.h?

In addition, don&apos;t we return &quot;file://&quot; + inspectorFilesPath ?

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:53
&gt; +    String localPath = inspectorResourcePath() + ((path == &quot;/&quot;) ? &quot;/inspectorPageIndex.html&quot; : path);

Can we improve this line using https://trac.webkit.org/wiki/EfficientStrings ?

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:54
&gt; +    if (localPath.isNull())

I am wonering how localPath can be null

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:98
&gt; +        builder.appendLiteral(&quot;\&quot;, \&quot;inspectorUrl\&quot;: \&quot;&quot;);
&gt; +        builder.appendLiteral(&quot;/inspector.html?page=&quot;);

As one line?

&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:50
&gt; +        String bindAddress = &quot;127.0.0.1&quot;;

ASCIILiteral(&quot;...&quot;)

&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:54
&gt; +        serverAddress.split(&quot;:&quot;, result);

&apos;:&apos; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784643</commentid>
    <comment_count>13</comment_count>
    <who name="Seokju Kwon">seokju.kwon</who>
    <bug_when>2012-12-05 22:43:19 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 177735 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177735&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:42
&gt; &gt; +static String inspectorResourcePath()
&gt; &gt; +{
&gt; &gt; +    String inspectorFilesPath = WEB_INSPECTOR_INSTALL_DIR;
&gt; &gt; +    if (access(inspectorFilesPath.utf8().data(), R_OK))
&gt; &gt; +        inspectorFilesPath = WEB_INSPECTOR_DIR;
&gt; &gt; +
&gt; &gt; +    return inspectorFilesPath;
&gt; &gt; +}
&gt; 
&gt; IMHO, how about moving this into WebCore/platform/efl to reduce duplication?
&gt; 
&gt; For example, EflInspectorUtilities.h?
&gt; 
&gt; In addition, don&apos;t we return &quot;file://&quot; + inspectorFilesPath ?
&gt; 
Good proposal. I will file a bug for it later.
we don&apos;t need &quot;file://&quot; for argument of file APIs.

&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:53
&gt; &gt; +    String localPath = inspectorResourcePath() + ((path == &quot;/&quot;) ? &quot;/inspectorPageIndex.html&quot; : path);
&gt; 
&gt; Can we improve this line using https://trac.webkit.org/wiki/EfficientStrings ?
&gt; 
Well, QT and GTK ports use it like this. 
I want to use it for consistency, if it&apos;s not bad.
Could you please let me know how to imprvoe if you have it?

&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:54
&gt; &gt; +    if (localPath.isNull())
&gt; 
&gt; I am wonering how localPath can be null
&gt;
Right. Unnecessary code.
 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:98
&gt; &gt; +        builder.appendLiteral(&quot;\&quot;, \&quot;inspectorUrl\&quot;: \&quot;&quot;);
&gt; &gt; +        builder.appendLiteral(&quot;/inspector.html?page=&quot;);
&gt; 
&gt; As one line?
&gt; 
IMO, It seems to make it more readable.

&gt; &gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:50
&gt; &gt; +        String bindAddress = &quot;127.0.0.1&quot;;
&gt; 
&gt; ASCIILiteral(&quot;...&quot;)
&gt; 
Ok.

&gt; &gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:54
&gt; &gt; +        serverAddress.split(&quot;:&quot;, result);
&gt; 
&gt; &apos;:&apos; ?
Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784845</commentid>
    <comment_count>14</comment_count>
      <attachid>177992</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2012-12-06 04:30:00 -0800</bug_when>
    <thetext>Created attachment 177992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785440</commentid>
    <comment_count>15</comment_count>
      <attachid>177992</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-06 17:08:59 -0800</bug_when>
    <thetext>Comment on attachment 177992
Patch

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

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:53
&gt; +    String localPath = inspectorResourcePath() + ((path == &quot;/&quot;) ? &quot;/inspectorPageIndex.html&quot; : path);

At least, it looks you can use ASCIILiteral(&quot;/inspectorPageIndex.html&quot;) instead of &quot;/inspectorPageIndex.html&quot;.

&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:46
&gt; +

It would be good if you add a comment why *initialized* should be true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786375</commentid>
    <comment_count>16</comment_count>
    <who name="Seokju Kwon">seokju.kwon</who>
    <bug_when>2012-12-07 19:28:41 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 177992 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177992&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:53
&gt; &gt; +    String localPath = inspectorResourcePath() + ((path == &quot;/&quot;) ? &quot;/inspectorPageIndex.html&quot; : path);
&gt; 
&gt; At least, it looks you can use ASCIILiteral(&quot;/inspectorPageIndex.html&quot;) instead of &quot;/inspectorPageIndex.html&quot;.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:46
&gt; &gt; +
&gt; 
&gt; It would be good if you add a comment why *initialized* should be true.

All done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786377</commentid>
    <comment_count>17</comment_count>
      <attachid>178327</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2012-12-07 19:30:39 -0800</bug_when>
    <thetext>Created attachment 178327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786425</commentid>
    <comment_count>18</comment_count>
      <attachid>178327</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-12-07 22:01:35 -0800</bug_when>
    <thetext>Comment on attachment 178327
Patch

LGTM. But, someone else might want to have a final look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786480</commentid>
    <comment_count>19</comment_count>
      <attachid>178327</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-08 04:49:56 -0800</bug_when>
    <thetext>Comment on attachment 178327
Patch

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

I think this is a nice functionality to have, thanks for the patch. I have a few minor comments before the patch lands though.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:37
&gt; +    String inspectorFilesPath = WEB_INSPECTOR_INSTALL_DIR;

You should use String::fromUTF8() here in case there are non-ascii characters in the path.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:39
&gt; +        inspectorFilesPath = WEB_INSPECTOR_DIR;

Ditto.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:69
&gt; +    if (bytesRead &lt;= 0)

We could even check (bytesRead &lt; fileStat.st_size) I believe.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:73
&gt; +    String ext = localPath.substring(extStart != notFound ? extStart + 1 : 0);

Looks to me that it is going to return the whole path when &apos;.&apos; cannot be found which is probably not what you want.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:74
&gt; +    contentType = WebCore::MIMETypeRegistry::getMIMETypeForExtension(ext);

Shouldn&apos;t we handle the case where there is no file extension? The EFL implementation of getMIMETypeForExtension() does not check for empty extension string and will iterate over the extension array for no reason. We should probably avoid calling it uselessly.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:82
&gt; +    builder.appendLiteral(&quot;[ &quot;);

We don&apos;t technically need the space here, right? How about append(&apos;[&apos;) ? Same comments for the code below.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:102
&gt; +    CString cstr = builder.toString().utf8();

You should avoid abbreviations in variable names.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:104
&gt; +    contentType = &quot;application/json; charset=utf-8&quot;;

contentType = String(&quot;application/json; charset=utf-8&quot;, ConstructFromLiteral); ?

&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:40
&gt; +static void initInspectorServer()

We usually avoid abbreviations in WebKit. init -&gt; initialize ?

&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:62
&gt; +            port = result[1].toInt(&amp;ok);

toUInt() would be slightly better.

&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:65
&gt; +                LOG_ERROR(&quot;Couldn&apos;t parse the port. Use 2999 instead.&quot;);

&quot;Use&quot; -&gt; &quot;Using&quot;

&gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:68
&gt; +            LOG_ERROR(&quot;Couldn&apos;t parse %s, wrong format? Use 127.0.0.1:2999 instead.&quot;, serverAddress.utf8().data());

&quot;Using&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786488</commentid>
    <comment_count>20</comment_count>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2012-12-08 05:55:59 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 178327 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178327&amp;action=review
&gt; 
&gt; I think this is a nice functionality to have, thanks for the patch. I have a few minor comments before the patch lands though.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:37
&gt; &gt; +    String inspectorFilesPath = WEB_INSPECTOR_INSTALL_DIR;
&gt; 
&gt; You should use String::fromUTF8() here in case there are non-ascii characters in the path.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:39
&gt; &gt; +        inspectorFilesPath = WEB_INSPECTOR_DIR;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:69
&gt; &gt; +    if (bytesRead &lt;= 0)
&gt; 
&gt; We could even check (bytesRead &lt; fileStat.st_size) I believe.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:73
&gt; &gt; +    String ext = localPath.substring(extStart != notFound ? extStart + 1 : 0);
&gt; 
&gt; Looks to me that it is going to return the whole path when &apos;.&apos; cannot be found which is probably not what you want.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:74
&gt; &gt; +    contentType = WebCore::MIMETypeRegistry::getMIMETypeForExtension(ext);
&gt; 
&gt; Shouldn&apos;t we handle the case where there is no file extension? The EFL implementation of getMIMETypeForExtension() does not check for empty extension string and will iterate over the extension array for no reason. We should probably avoid calling it uselessly.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:82
&gt; &gt; +    builder.appendLiteral(&quot;[ &quot;);
&gt; 
&gt; We don&apos;t technically need the space here, right? How about append(&apos;[&apos;) ? Same comments for the code below.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:102
&gt; &gt; +    CString cstr = builder.toString().utf8();
&gt; 
&gt; You should avoid abbreviations in variable names.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:104
&gt; &gt; +    contentType = &quot;application/json; charset=utf-8&quot;;
&gt; 
&gt; contentType = String(&quot;application/json; charset=utf-8&quot;, ConstructFromLiteral); ?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:40
&gt; &gt; +static void initInspectorServer()
&gt; 
&gt; We usually avoid abbreviations in WebKit. init -&gt; initialize ?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:62
&gt; &gt; +            port = result[1].toInt(&amp;ok);
&gt; 
&gt; toUInt() would be slightly better.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:65
&gt; &gt; +                LOG_ERROR(&quot;Couldn&apos;t parse the port. Use 2999 instead.&quot;);
&gt; 
&gt; &quot;Use&quot; -&gt; &quot;Using&quot;
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebContextEfl.cpp:68
&gt; &gt; +            LOG_ERROR(&quot;Couldn&apos;t parse %s, wrong format? Use 127.0.0.1:2999 instead.&quot;, serverAddress.utf8().data());
&gt; 
&gt; &quot;Using&quot;

All done. 
(All resources for remote web inspector : *.js|html|css|gif|png, refer to Source/PlatformEfl.cmake)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786489</commentid>
    <comment_count>21</comment_count>
      <attachid>178350</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2012-12-08 05:57:49 -0800</bug_when>
    <thetext>Created attachment 178350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786493</commentid>
    <comment_count>22</comment_count>
      <attachid>178350</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-08 07:02:10 -0800</bug_when>
    <thetext>Comment on attachment 178350
Patch

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

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:73
&gt; +    String ext = localPath.substring(extStart != notFound ? extStart + 1 : 0);

As I commented before: substring(0) will return the whole string, which is not what you want if there is no file extension.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:74
&gt; +    contentType = WebCore::MIMETypeRegistry::getMIMETypeForExtension(ext);

Also commented before, we should probably check if ext is empty before calling getMIMETypeForExtension() since our implementation of getMIMETypeForExtension() does not.

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:82
&gt; +    builder.appendLiteral(&quot;[&quot;);

append(&apos;[&apos;) is better

&gt; Source/WebKit2/UIProcess/InspectorServer/efl/WebInspectorServerEfl.cpp:101
&gt; +    builder.appendLiteral(&quot;]&quot;);

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786507</commentid>
    <comment_count>23</comment_count>
      <attachid>178354</attachid>
    <who name="Seokju Kwon">seokju</who>
    <bug_when>2012-12-08 08:08:17 -0800</bug_when>
    <thetext>Created attachment 178354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786517</commentid>
    <comment_count>24</comment_count>
      <attachid>178354</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-08 08:40:47 -0800</bug_when>
    <thetext>Comment on attachment 178354
Patch

LGTM. cq=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786523</commentid>
    <comment_count>25</comment_count>
      <attachid>178354</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-08 09:17:02 -0800</bug_when>
    <thetext>Comment on attachment 178354
Patch

Clearing flags on attachment: 178354

Committed r137035: &lt;http://trac.webkit.org/changeset/137035&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786524</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-08 09:17:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786530</commentid>
    <comment_count>27</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-12-08 09:36:21 -0800</bug_when>
    <thetext>Seokju, could you please document how to enable and use the functionality on our wiki?
Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175750</attachid>
            <date>2012-11-23 01:12:23 -0800</date>
            <delta_ts>2012-12-04 07:26:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98705-20121123181002.patch</filename>
            <type>text/plain</type>
            <size>18183</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjcwMTNmOWZkMjc5MjA1
ODJkMTQ5MjM5NDY1MDIyMzJiYmZiOTE1NC4uZTEzN2IwMTc5OTcyOGMzNTgyMDgxNjRhYTAxYWY4
ZTE1NjMxZDhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTExLTIzICBTZW9r
anUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgcmVtb3RlIHdlYiBpbnNwZWN0b3IgdG8gRUZMIHBvcnQuCisgICAg
ICAgIFRoZSBzZXZlciB3aWxsIGJlIHN0YXJ0ZWQgZHVyaW5nIFdlYktpdCBjb250ZXh0IGluaXRp
YWxpemF0aW9uLgorICAgICAgICBUaGUgSVAgYWRkcmVzcyBhbmQgcG9ydCBudW1iZXIgZm9yIHRo
ZSBzZXJ2ZXIgY2FuIGJlIHNldCBpbiBXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUi4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmg6CisgICAg
ICAgIChXZWJJbnNwZWN0b3JTZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmg6CisgICAgICAgIChXZWJTb2NrZXRTZXJ2ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZWZsL1dlYkluc3BlY3RvclNlcnZlckVm
bC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6aW5zcGVj
dG9yUmVzb3VyY2VQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpw
bGF0Zm9ybVJlc291cmNlRm9yUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclNl
cnZlcjo6YnVpbGRQYWdlTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9lZmwvV2ViU29ja2V0U2VydmVyRWZsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0Ojpjb25uZWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTZXJ2ZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNvY2tldFNlcnZlcjo6cGxhdGZvcm1MaXN0ZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2Nr
ZXRTZXJ2ZXI6OnBsYXRmb3JtQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29u
dGV4dEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRJbnNwZWN0b3JTZXJ2ZXIpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogY29uZmlnLmg6CisKIDIwMTItMTEtMjIgIEt3
YW5nWW9uZyBDaG9pICA8a3kwLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0sy
XSBCdWlsZGZpeCB3aGVuIEVOQUJMRV9ORVRTQ0FQRV9QTFVHSU5fQVBJIGlzIGRpc2FibGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvUGxhdGZvcm1FZmwu
Y21ha2UKaW5kZXggZGYxMjhmZGZjODY4YWQ1ZTFlOWU1ZDk5YWFkZWYyYzA5Njg4ZWE3Ny4uNDJl
YzcwZDA0ZWUwYTRhZWRkY2Q5YmM5ODNlYzVmM2JkYWUyZGQ2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNSw2
ICs1LDcgQEAgSUYgKEVOQUJMRV9JTlNQRUNUT1IpCiAgICAgICAgIHdlYi1pbnNwZWN0b3ItcmVz
b3VyY2VzIEFMTAogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29weV9kaXJl
Y3RvcnkgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL2Zyb250LWVuZCAke1dFQl9JTlNQRUNUT1Jf
RElSfQogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29weSAke1dFQkNPUkVf
RElSfS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgJHtXRUJfSU5TUEVDVE9SX0RJ
Un0KKyAgICAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGNvcHkgJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9mcm9udC1lbmQvaW5zcGVjdG9yUGFnZUluZGV4
Lmh0bWwgJHtXRUJfSU5TUEVDVE9SX0RJUn0KICAgICAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1B
TkR9IC1FIGNvcHkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0luc3BlY3RvckJhY2tl
bmRDb21tYW5kcy5qcyAke1dFQl9JTlNQRUNUT1JfRElSfS9JbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMKICAgICAgICAgREVQRU5EUyAke1dlYkNvcmVfTElCUkFSWV9OQU1FfQogICAgICAgICBX
T1JLSU5HX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDAwMzM5NmE2NTdmZDQ1YjhiZTJjODI1MGUwOTJjZTJkM2Y2ZmQyMjAuLmQ5NmFhOGEzYzQ4
MzQwYTc0NzBkODFlOWViNzg1NWY3MzE4YzgyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0x
OCw2ICsxOCw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uIgogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0Rvd25sb2FkcyIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlciIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0xhdW5jaGVyIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucyIKICAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL1BsdWdpbnMiCkBAIC02MCw2ICs2MSw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vZG9tIgogICAgICIke1dFQkNPUkVfRElS
fS9kb20vZGVmYXVsdCIKICAgICAiJHtXRUJDT1JFX0RJUn0vZWRpdGluZyIKKyAgICAiJHtXRUJD
T1JFX0RJUn0vZmlsZWFwaSIKICAgICAiJHtXRUJDT1JFX0RJUn0vaGlzdG9yeSIKICAgICAiJHtX
RUJDT1JFX0RJUn0vaHRtbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vaHRtbC9zaGFkb3ciCkBAIC0y
MzgsNiArMjQwLDEwIEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmNwcAogCisgICAgVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCisgICAgVUlQcm9jZXNzL0luc3BlY3Rv
clNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuY3BwCisgICAgVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNwcAorCiAgICAgVUlQcm9jZXNzL1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDc3MzRhOTJhNzc5MzM4ZmZmYjM1NDczMzg1ZGIzYzZiNmI1YjJjMjkuLjVi
MTM0MTI3NWVmMGY1NGQ5MWYwNjFiOGMxMmNhNjg4MWZkNDFhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0xMDcsNiArMTA3LDkgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKICAgICBVSVByb2Nlc3Mv
ZWZsL1dlYlByb2Nlc3NQcm94eUVmbC5jcHAKIAorICAgIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvZWZsL1dlYkluc3BlY3RvclNlcnZlckVmbC5jcHAKKyAgICBVSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL2VmbC9XZWJTb2NrZXRTZXJ2ZXJFZmwuY3BwCisKICAgICBVSVByb2Nlc3Mvc291cC9X
ZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBS
ZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCmluZGV4IDVkZDg3ZjU0
YWY2NDNiM2Y0MzYxOTkzY2M2YmI3MDA0YjI0M2EyZDYuLjEyNGM0NmZmMjc3NDVjY2M3YTA3YWJm
NjFiNDRiNTM0ZTYyOTg2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaApAQCAtNjEsNyAr
NjEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVdlYlNvY2tldENvbm5l
Y3Rpb24oV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiopOwogCiAgICAgYm9vbCBwbGF0Zm9ybVJl
c291cmNlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFZlY3RvcjxjaGFyPiYgZGF0YSwgU3Ry
aW5nJiBjb250ZW50VHlwZSk7Ci0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNp
ZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9p
ZCBidWlsZFBhZ2VMaXN0KFZlY3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSk7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3Rv
clNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmgKaW5kZXggODA0MDVjNmU5N2YzNmM2MjZjMTUw
ZTg1MjNlMmEyNTA0MTRlOTc2Yi4uMzc5MjcwZTM2YmIxNzllMmNiMDBjNGRlMTkxMTY1ZjYwZDcx
ZmY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9XZWJTb2NrZXRTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVj
dG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oCkBAIC0yOSwxMiArMjksMTIgQEAKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1JfU0VSVkVSKQogCi0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPGdpby9naW8uaD4KICNlbmRpZgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpZiBQTEFURk9S
TShHVEspCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogI2VuZGlmCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgc2hvcnQgbV9wb3J0
OwogI2lmIFBMQVRGT1JNKFFUKQogICAgIE93blB0cjxRdFRjcFNlcnZlckhhbmRsZXI+IG1fdGNw
U2VydmVySGFuZGxlcjsKLSNlbGlmIFBMQVRGT1JNKEdUSykKKyNlbGlmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oRUZMKQogICAgIEdSZWZQdHI8R1NvY2tldFNlcnZpY2U+IG1fc29ja2V0U2Vy
dmljZTsKICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9l
ZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvZWZsL1dlYkluc3BlY3RvclNlcnZlckVmbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTA2MTc3NGI5NzIxMTE4Nzk1ZmRmMWE2ZWM4MDgwMzVhNmVkYzA0OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZWZsL1dlYkluc3Bl
Y3RvclNlcnZlckVmbC5jcHAKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcyBMdGQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JT
ZXJ2ZXIuaCIKKworI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5j
bHVkZSA8c3lzL3N0YXQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBTdHJpbmcg
aW5zcGVjdG9yUmVzb3VyY2VQYXRoKCkKK3sKKyAgICBTdHJpbmcgaW5zcGVjdG9yRmlsZXNQYXRo
ID0gV0VCX0lOU1BFQ1RPUl9JTlNUQUxMX0RJUjsKKyAgICBpZiAoYWNjZXNzKGluc3BlY3RvckZp
bGVzUGF0aC51dGY4KCkuZGF0YSgpLCBSX09LKSkKKyAgICAgICAgaW5zcGVjdG9yRmlsZXNQYXRo
ID0gV0VCX0lOU1BFQ1RPUl9ESVI7CisKKyAgICByZXR1cm4gaW5zcGVjdG9yRmlsZXNQYXRoOwor
fQorCitib29sIFdlYkluc3BlY3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hhcj4mIGRhdGEsIFN0cmluZyYgY29udGVudFR5cGUp
Cit7CisgICAgLy8gVGhlIHBhZ2UgbGlzdCBjb250YWlucyBhbiB1bmZvcm1hdGVkIGxpc3Qgb2Yg
cGFnZXMgdGhhdCBjYW4gYmUgaW5zcGVjdGVkIHdpdGggYSBsaW5rIHRvIG9wZW4gYSBzZXNzaW9u
LgorICAgIGlmIChwYXRoID09ICIvcGFnZWxpc3QuanNvbiIpIHsKKyAgICAgICAgYnVpbGRQYWdl
TGlzdChkYXRhLCBjb250ZW50VHlwZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIC8vIFBvaW50IHRoZSBkZWZhdWx0IHBhdGggdG8gYSBmb3JtYXR0ZWQgcGFnZSB0aGF0IHF1
ZXJpZXMgdGhlIHBhZ2UgbGlzdCBhbmQgZGlzcGxheSB0aGVtLgorICAgIFN0cmluZyBsb2NhbFBh
dGggPSBpbnNwZWN0b3JSZXNvdXJjZVBhdGgoKSArICgocGF0aCA9PSAiLyIpID8gIi9pbnNwZWN0
b3JQYWdlSW5kZXguaHRtbCIgOiBwYXRoKTsKKyAgICBpZiAobG9jYWxQYXRoLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGSUxFKiBmaWxlSGFuZGxlID0gZm9wZW4obG9j
YWxQYXRoLnV0ZjgoKS5kYXRhKCksICJyIik7CisgICAgaWYgKCFmaWxlSGFuZGxlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKKyAgICBpZiAoc3Rh
dChsb2NhbFBhdGgudXRmOCgpLmRhdGEoKSwgJmZpbGVTdGF0KSkgeworICAgICAgICBmY2xvc2Uo
ZmlsZUhhbmRsZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBkYXRhLmdy
b3coZmlsZVN0YXQuc3Rfc2l6ZSk7CisgICAgaW50IGJ5dGVzUmVhZCA9IGZyZWFkKGRhdGEuZGF0
YSgpLCAxLCBmaWxlU3RhdC5zdF9zaXplLCBmaWxlSGFuZGxlKTsKKyAgICBmY2xvc2UoZmlsZUhh
bmRsZSk7CisKKyAgICBpZiAoYnl0ZXNSZWFkIDw9IDApCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHNpemVfdCBleHRTdGFydCA9IGxvY2FsUGF0aC5yZXZlcnNlRmluZCgnLicpOworICAg
IFN0cmluZyBleHQgPSBsb2NhbFBhdGguc3Vic3RyaW5nKGV4dFN0YXJ0ICE9IG5vdEZvdW5kID8g
ZXh0U3RhcnQgKyAxIDogMCk7CisgICAgY29udGVudFR5cGUgPSBXZWJDb3JlOjpNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHQpOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpidWlsZFBhZ2VMaXN0KFZlY3RvcjxjaGFy
PiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJbICIpOworICAgIENsaWVudE1hcDo6aXRl
cmF0b3IgZW5kID0gbV9jbGllbnRNYXAuZW5kKCk7CisgICAgZm9yIChDbGllbnRNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9jbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
IFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IGl0LT52YWx1ZS0+cGFnZSgpOworICAgICAgICBpZiAo
aXQgIT0gbV9jbGllbnRNYXAuYmVnaW4oKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7IFwiaWRcIjogIik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGl0LT5rZXkpOworICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgXCJ0aXRsZVwiOiBcIiIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCh3ZWJQYWdlLT5wYWdlVGl0bGUoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XCIsIFwidXJsXCI6IFwiIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdlYlBhZ2UtPmFjdGl2
ZVVSTCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiwgXCJpbnNwZWN0b3JV
cmxcIjogXCIiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvaW5zcGVjdG9yLmh0
bWw/cGFnZT0iKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoaXQtPmtleSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXCIgfSIpOworICAgIH0KKyAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiBdIik7CisgICAgQ1N0cmluZyBjc3RyID0gYnVpbGRlci50b1N0cmluZygp
LnV0ZjgoKTsKKyAgICBkYXRhLmFwcGVuZChjc3RyLmRhdGEoKSwgY3N0ci5sZW5ndGgoKSk7Cisg
ICAgY29udGVudFR5cGUgPSAiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCI7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIv
ZWZsL1dlYlNvY2tldFNlcnZlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL2VmbC9XZWJTb2NrZXRTZXJ2ZXJFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4ZjRm
MjFkNGUyYjEwMDlkMzM3ZWM1NGQ0OTk3ZDhmYTBiY2JlYzYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJTb2NrZXRTZXJ2
ZXJFZmwuY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ft
c3VuZyBFbGVjdHJvbmljcyBMdGQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyNp
bmNsdWRlICJXZWJTb2NrZXRTZXJ2ZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuaD4KKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8Z2xpYi5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgZ2Jvb2xlYW4gY29ubmVj
dGlvbkNhbGxiYWNrKEdTb2NrZXRTZXJ2aWNlKiAvKnNlcnZpY2UqLywgR1NvY2tldENvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIEdPYmplY3QqIC8qc291cmNlT2JqZWN0Ki8sIFdlYlNvY2tldFNlcnZl
ciogc2VydmVyKQoreworI2lmICFMT0dfRElTQUJMRUQKKyAgICBHUmVmUHRyPEdTb2NrZXRBZGRy
ZXNzPiBzb2NrZXRBZGRyZXNzID0gYWRvcHRHUmVmKGdfc29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3Jl
bW90ZV9hZGRyZXNzKGNvbm5lY3Rpb24sIDApKTsKKyAgICBHT3duUHRyPGdjaGFyPiBhZGRyZXNz
U3RyaW5nKGdfaW5ldF9hZGRyZXNzX3RvX3N0cmluZyhnX2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0
X2FkZHJlc3MoR19JTkVUX1NPQ0tFVF9BRERSRVNTKHNvY2tldEFkZHJlc3MuZ2V0KCkpKSkpOwor
ICAgIExPRyhJbnNwZWN0b3JTZXJ2ZXIsICJOZXcgQ29ubmVjdGlvbiBmcm9tICVzOiVkLiIsIGFk
ZHJlc3NTdHJpbmcuZ2V0KCksIGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lORVRf
U09DS0VUX0FERFJFU1Moc29ja2V0QWRkcmVzcy5nZXQoKSkpKTsKKyNlbmRpZgorCisgICAgT3du
UHRyPFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24+IHdlYlNvY2tldENvbm5lY3Rpb24gPSBhZG9w
dFB0cihuZXcgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbihzZXJ2ZXItPmNsaWVudCgpLCBzZXJ2
ZXIpKTsKKyAgICB3ZWJTb2NrZXRDb25uZWN0aW9uLT5zZXRTb2NrZXRIYW5kbGUoU29ja2V0U3Ry
ZWFtSGFuZGxlOjpjcmVhdGUoY29ubmVjdGlvbiwgd2ViU29ja2V0Q29ubmVjdGlvbi5nZXQoKSkp
OworICAgIHNlcnZlci0+ZGlkQWNjZXB0Q29ubmVjdGlvbih3ZWJTb2NrZXRDb25uZWN0aW9uLnJl
bGVhc2UoKSk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKwordm9pZCBXZWJTb2NrZXRTZXJ2ZXI6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgbV9zb2NrZXRTZXJ2aWNlID0gYWRvcHRHUmVm
KGdfc29ja2V0X3NlcnZpY2VfbmV3KCkpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9zb2NrZXRT
ZXJ2aWNlLmdldCgpLCAiaW5jb21pbmciLCBHX0NBTExCQUNLKGNvbm5lY3Rpb25DYWxsYmFjayks
IHRoaXMpOworICAgIGdfc29ja2V0X3NlcnZpY2Vfc3RhcnQobV9zb2NrZXRTZXJ2aWNlLmdldCgp
KTsKK30KKworYm9vbCBXZWJTb2NrZXRTZXJ2ZXI6OnBsYXRmb3JtTGlzdGVuKGNvbnN0IFN0cmlu
ZyYgYmluZEFkZHJlc3MsIHVuc2lnbmVkIHNob3J0IHBvcnQpCit7CisgICAgTE9HKEluc3BlY3Rv
clNlcnZlciwgIkxpc3RlbiB0byBhZGRyZXNzPSVzLCBwb3J0PSVkLiIsIGJpbmRBZGRyZXNzLnV0
ZjgoKS5kYXRhKCksIHBvcnQpOworICAgIEdSZWZQdHI8R0luZXRBZGRyZXNzPiBhZGRyZXNzID0g
YWRvcHRHUmVmKGdfaW5ldF9hZGRyZXNzX25ld19mcm9tX3N0cmluZyhiaW5kQWRkcmVzcy51dGY4
KCkuZGF0YSgpKSk7CisgICAgR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4gc29ja2V0QWRkcmVzcyA9
IGFkb3B0R1JlZihnX2luZXRfc29ja2V0X2FkZHJlc3NfbmV3KGFkZHJlc3MuZ2V0KCksIHBvcnQp
KTsKKyAgICByZXR1cm4gZ19zb2NrZXRfbGlzdGVuZXJfYWRkX2FkZHJlc3MoR19TT0NLRVRfTElT
VEVORVIobV9zb2NrZXRTZXJ2aWNlLmdldCgpKSwgc29ja2V0QWRkcmVzcy5nZXQoKSwgR19TT0NL
RVRfVFlQRV9TVFJFQU0sIEdfU09DS0VUX1BST1RPQ09MX1RDUCwgMCwgMCwgMCk7Cit9CisKK3Zv
aWQgV2ViU29ja2V0U2VydmVyOjpwbGF0Zm9ybUNsb3NlKCkKK3sKKyAgICBnX3NvY2tldF9zZXJ2
aWNlX3N0b3AobV9zb2NrZXRTZXJ2aWNlLmdldCgpKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9TRVJWRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJDb250ZXh0RWZsLmNwcAppbmRleCBkNDMxNDVjYWZjZDAwOWVlNzViM2JjNDg1MWQ4NmQ4Yjg0
NDEzYzI1Li5jNjY2ZTdmNTAzZTVjZDQwNGJlYjM4YTk0ZjE0MDgxOGQ3YjhiNzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKQEAgLTI2LDYg
KzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAK
KyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAj
aW5jbHVkZSA8RWZyZWV0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CkBAIC0zMyw2ICszNSw0
MyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIHZvaWQgaW5pdEluc3BlY3RvclNl
cnZlcigpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCisgICAgc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBTdHJpbmcgc2VydmVyQWRkcmVzcyhn
ZXRlbnYoIldFQktJVF9JTlNQRUNUT1JfU0VSVkVSIikpOworCisgICAgaWYgKCFzZXJ2ZXJBZGRy
ZXNzLmlzTnVsbCgpKSB7CisgICAgICAgIFN0cmluZyBiaW5kQWRkcmVzcyA9ICIxMjcuMC4wLjEi
OworICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3J0ID0gMjk5OTsKKworICAgICAgICBWZWN0b3I8
U3RyaW5nPiByZXN1bHQ7CisgICAgICAgIHNlcnZlckFkZHJlc3Muc3BsaXQoIjoiLCByZXN1bHQp
OworCisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSgpID09IDIpIHsKKyAgICAgICAgICAgIGJpbmRB
ZGRyZXNzID0gcmVzdWx0WzBdOworICAgICAgICAgICAgYm9vbCBvayA9IGZhbHNlOworICAgICAg
ICAgICAgcG9ydCA9IHJlc3VsdFsxXS50b0ludCgmb2spOworICAgICAgICAgICAgaWYgKCFvaykg
eworICAgICAgICAgICAgICAgIHBvcnQgPSAyOTk5OworICAgICAgICAgICAgICAgIExPR19FUlJP
UigiQ291bGRuJ3QgcGFyc2UgdGhlIHBvcnQuIFVzZSAyOTk5IGluc3RlYWQuIik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBw
YXJzZSAlcywgd3JvbmcgZm9ybWF0PyBVc2UgMTI3LjAuMC4xOjI5OTkgaW5zdGVhZC4iLCBzZXJ2
ZXJBZGRyZXNzLnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yU2Vy
dmVyOjpzaGFyZWQoKS5saXN0ZW4oYmluZEFkZHJlc3MsIHBvcnQpKQorICAgICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZG4ndCBzdGFydCBsaXN0ZW5pbmcgb246IElQIGFkZHJlc3M9JXMsIHBvcnQ9
JWQuIiwgYmluZEFkZHJlc3MudXRmOCgpLmRhdGEoKSwgcG9ydCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBMT0coSW5zcGVjdG9yU2VydmVyLCAiVG8gc3RhcnQgaW5zcGVjdG9yIHNl
cnZlciBzZXQgV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIgdG8gMTI3LjAuMC4xOjI5OTkgZm9yIGV4
YW1wbGUuIik7CisjZW5kaWYKK30KKwogU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKQogewogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9jYWNo
ZV9ob21lX2dldCgpKSArICIvV2ViS2l0RWZsL0FwcGxpY2F0aW9ucyI7CkBAIC00MCw3ICs3OSw3
IEBAIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIAogdm9p
ZCBXZWJDb250ZXh0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaW5pdEluc3Bl
Y3RvclNlcnZlcigpOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW52YWxpZGF0ZUNv
bnRleHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvY29uZmlnLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9jb25maWcuaAppbmRleCBjNDNhNzhmOTQ4MDhkOWRlMjFjNGNlZDZmMDViNzNjMzBiYzBj
ZjYxLi5mMDA4NWJlYTdhODU5ZDE5ZmRkMTdhZmZhMDkyMGYwMWUwZTAwYzQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaApA
QCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCB0eXBlJiBuYW1lKCkgXAogI2RlZmluZSBQ
TFVHSU5fQVJDSElURUNUVVJFKEFSQ0gpIChkZWZpbmVkIFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNB
UkNIICYmIFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNIKQogCiAjaWZuZGVmIEVOQUJMRV9JTlNQ
RUNUT1JfU0VSVkVSCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFU
Rk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjZGVmaW5lIEVOQUJM
RV9JTlNQRUNUT1JfU0VSVkVSIDEKICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9DaGFuZ2VM
b2cgYi9DaGFuZ2VMb2cKaW5kZXggZDRmMGU4MTUyZWY4MzQwMDE4NGM0YjE1MWQ5Zjg1YjMwM2M3
N2ViZS4uY2RmMTU4M2NjOWM5M2NjOTJkOTFkZGMxYmUxMjg1MDcyNWFiMTFlZiAxMDA2NDQKLS0t
IGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTIz
ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKworICAgICAgICBbRUZMXVtX
SzJdIEFkZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQcmVwYXJlIHJlc291cmNlcyBmb3IgcmVtb3RlIHdlYiBpbnNw
ZWN0b3IuCisKKyAgICAgICAgKiBTb3VyY2UvUGxhdGZvcm1FZmwuY21ha2U6CisKIDIwMTItMDkt
MjYgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW0dU
S10gU3BsaXQgU1ZHIGZyb20gV2ViQ29yZSB0byB3b3JrLWFyb3VuZCBtYWtlIGxpbWl0YXRpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177479</attachid>
            <date>2012-12-04 07:26:35 -0800</date>
            <delta_ts>2012-12-05 19:00:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98705-20121205002356.patch</filename>
            <type>text/plain</type>
            <size>13646</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZkY2ZiOGE4MGRlZjA3
ZDIwMmVhNjg2YzcyNmJlMTk4OGVlZTk5ZC4uNWMxNzAxNTE2NDMzZmQxMjk2ZWIyMzA3ZjU5MGFj
ZWYxNTJlMGYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTA0ICBTZW9r
anUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgUmVtb3RlIFdlYiBJbnNwZWN0b3IgdG8gRUZMIHBvcnQuCisgICAg
ICAgIFRoZSBXZWJJbnNwZWN0b3JTZXZlciB3aWxsIGJlIHN0YXJ0ZWQgZHVyaW5nIFdlYktpdCBj
b250ZXh0IGluaXRpYWxpemF0aW9uLgorICAgICAgICBUaGUgSVAgYWRkcmVzcyBhbmQgcG9ydCBu
dW1iZXIgZm9yIHRoZSBzZXJ2ZXIgY2FuIGJlIHNldCBpbiBXRUJLSVRfSU5TUEVDVE9SX1NFUlZF
Ui4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2Vy
dmVyLmg6CisgICAgICAgIChXZWJJbnNwZWN0b3JTZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmg6CisgICAgICAgIChXZWJTb2NrZXRT
ZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZWZsL1dlYkluc3Bl
Y3RvclNlcnZlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6aW5zcGVjdG9yUmVzb3VyY2VQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yU2VydmVyOjpwbGF0Zm9ybVJlc291cmNlRm9yUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclNlcnZlcjo6YnVpbGRQYWdlTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZl
cik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMi0x
Mi0wNCAgWXVuaSBKZW9uZyAgPHlobmV0Lmp1bmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF1bV0syXSBBZGQgQVBJcyB0byB0b2dnbGUgcGx1Zy1pbnMgc3VwcG9ydC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBkZjEyOGZkZmM4NjhhZDVlMWU5ZTVkOTlhYWRlZjJjMDk2ODhlYTc3Li40MmVjNzBkMDRlZTBh
NGFlZGRjZDliYzk4M2VjNWYzYmRhZTJkZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01LDYgKzUsNyBAQCBJ
RiAoRU5BQkxFX0lOU1BFQ1RPUikKICAgICAgICAgd2ViLWluc3BlY3Rvci1yZXNvdXJjZXMgQUxM
CiAgICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5X2RpcmVjdG9yeSAke1dF
QkNPUkVfRElSfS9pbnNwZWN0b3IvZnJvbnQtZW5kICR7V0VCX0lOU1BFQ1RPUl9ESVJ9CiAgICAg
ICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5ICR7V0VCQ09SRV9ESVJ9L0VuZ2xp
c2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyAke1dFQl9JTlNQRUNUT1JfRElSfQorICAgICAg
ICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29weSAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL2Zyb250LWVuZC9pbnNwZWN0b3JQYWdlSW5kZXguaHRtbCAke1dF
Ql9JTlNQRUNUT1JfRElSfQogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29w
eSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZENvbW1hbmRz
LmpzICR7V0VCX0lOU1BFQ1RPUl9ESVJ9L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogICAg
ICAgICBERVBFTkRTICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9CiAgICAgICAgIFdPUktJTkdfRElS
RUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMDAzMzk2
YTY1N2ZkNDViOGJlMmM4MjUwZTA5MmNlMmQzZjZmZDIyMC4uYTFmOGIzMmI3OTdiZGQ0YzJiYzBm
OTk0MmZkMjk4MTk3NzM0N2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE4LDYgKzE4LDcg
QEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQXV0aGVudGljYXRpb24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvRG93bmxv
YWRzIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTGF1bmNoZXIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
UGx1Z2lucyIKQEAgLTYwLDYgKzYxLDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQkNPUkVfRElSfS9kb20iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbS9kZWZh
dWx0IgogICAgICIke1dFQkNPUkVfRElSfS9lZGl0aW5nIgorICAgICIke1dFQkNPUkVfRElSfS9m
aWxlYXBpIgogICAgICIke1dFQkNPUkVfRElSfS9oaXN0b3J5IgogICAgICIke1dFQkNPUkVfRElS
fS9odG1sIgogICAgICIke1dFQkNPUkVfRElSfS9odG1sL3NoYWRvdyIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggZGRlN2M1YjRhZDg4M2RkMDEzMGY3ZDM0MjEyMzQwODBlYWNlZmZmZC4u
OGRjYjQ2YTRmOTVlYzEyNTY4ZmY2ODU4NGFmOWZjMjhjN2Q5YmUwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTEwOCw2ICsxMDgsOSBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcAogCisgICAgVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcAorCiAgICAgVUlQcm9jZXNzL3Nv
dXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJT
b3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCA1ZGQ4
N2Y1NGFmNjQzYjNmNDM2MTk5M2NjNmJiNzAwNGIyNDNhMmQ2Li4xMjRjNDZmZjI3NzQ1Y2NjN2Ew
N2FiZjYxYjQ0YjUzNGU2Mjk4NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRD
b25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qKTsKIAogICAgIGJvb2wgcGxhdGZv
cm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hhcj4mIGRhdGEs
IFN0cmluZyYgY29udGVudFR5cGUpOwotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
CisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAg
IHZvaWQgYnVpbGRQYWdlTGlzdChWZWN0b3I8Y2hhcj4mIGRhdGEsIFN0cmluZyYgY29udGVudFR5
cGUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oCmluZGV4IDgwNDA1YzZlOTdmMzZjNjI2
YzE1MGU4NTIzZTJhMjUwNDE0ZTk3NmIuLjY4ZWQ2NGY3Yzk2NjkzYWEyMjUzMDkxZWZjMzBiZDlh
ODgyMWE5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaApAQCAtMjksMTUgKzI5LDE0IEBACiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIAotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRl
IDxnaW8vZ2lvLmg+Ci0jZW5kaWYKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNlbmRpZgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgUExBVEZPUk0oUVQpCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcg
KzgzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7CiAjaWYgUExBVEZP
Uk0oUVQpCiAgICAgT3duUHRyPFF0VGNwU2VydmVySGFuZGxlcj4gbV90Y3BTZXJ2ZXJIYW5kbGVy
OwotI2VsaWYgUExBVEZPUk0oR1RLKQorI2VsaWYgVVNFKFNPVVApCiAgICAgR1JlZlB0cjxHU29j
a2V0U2VydmljZT4gbV9zb2NrZXRTZXJ2aWNlOwogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2Vy
dmVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTNhZjE1MjVjODY0MzUzY2Q0MWM5ZDAzYTU1NDQxMThh
YzE0MTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcApAQCAtMCwwICsxLDEwNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzIEx0ZC4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
CisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgorCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01J
TUVUeXBlUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworc3RhdGljIFN0cmluZyBpbnNwZWN0b3JSZXNvdXJjZVBhdGgoKQoreworICAgIFN0
cmluZyBpbnNwZWN0b3JGaWxlc1BhdGggPSBXRUJfSU5TUEVDVE9SX0lOU1RBTExfRElSOworICAg
IGlmIChhY2Nlc3MoaW5zcGVjdG9yRmlsZXNQYXRoLnV0ZjgoKS5kYXRhKCksIFJfT0spKQorICAg
ICAgICBpbnNwZWN0b3JGaWxlc1BhdGggPSBXRUJfSU5TUEVDVE9SX0RJUjsKKworICAgIHJldHVy
biBpbnNwZWN0b3JGaWxlc1BhdGg7Cit9CisKK2Jvb2wgV2ViSW5zcGVjdG9yU2VydmVyOjpwbGF0
Zm9ybVJlc291cmNlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFZlY3RvcjxjaGFyPiYgZGF0
YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAgICAvLyBUaGUgcGFnZSBsaXN0IGNvbnRhaW5z
IGFuIHVuZm9ybWF0ZWQgbGlzdCBvZiBwYWdlcyB0aGF0IGNhbiBiZSBpbnNwZWN0ZWQgd2l0aCBh
IGxpbmsgdG8gb3BlbiBhIHNlc3Npb24uCisgICAgaWYgKHBhdGggPT0gIi9wYWdlbGlzdC5qc29u
IikgeworICAgICAgICBidWlsZFBhZ2VMaXN0KGRhdGEsIGNvbnRlbnRUeXBlKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gUG9pbnQgdGhlIGRlZmF1bHQgcGF0aCB0byBh
IGZvcm1hdHRlZCBwYWdlIHRoYXQgcXVlcmllcyB0aGUgcGFnZSBsaXN0IGFuZCBkaXNwbGF5IHRo
ZW0uCisgICAgU3RyaW5nIGxvY2FsUGF0aCA9IGluc3BlY3RvclJlc291cmNlUGF0aCgpICsgKChw
YXRoID09ICIvIikgPyAiL2luc3BlY3RvclBhZ2VJbmRleC5odG1sIiA6IHBhdGgpOworICAgIGlm
IChsb2NhbFBhdGguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEZJTEUq
IGZpbGVIYW5kbGUgPSBmb3Blbihsb2NhbFBhdGgudXRmOCgpLmRhdGEoKSwgInIiKTsKKyAgICBp
ZiAoIWZpbGVIYW5kbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0
IGZpbGVTdGF0OworICAgIGlmIChmc3RhdChmaWxlbm8oZmlsZUhhbmRsZSksICZmaWxlU3RhdCkp
IHsKKyAgICAgICAgZmNsb3NlKGZpbGVIYW5kbGUpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgZGF0YS5ncm93KGZpbGVTdGF0LnN0X3NpemUpOworICAgIGludCBieXRlc1Jl
YWQgPSBmcmVhZChkYXRhLmRhdGEoKSwgMSwgZmlsZVN0YXQuc3Rfc2l6ZSwgZmlsZUhhbmRsZSk7
CisgICAgZmNsb3NlKGZpbGVIYW5kbGUpOworCisgICAgaWYgKGJ5dGVzUmVhZCA8PSAwKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgZXh0U3RhcnQgPSBsb2NhbFBhdGgucmV2
ZXJzZUZpbmQoJy4nKTsKKyAgICBTdHJpbmcgZXh0ID0gbG9jYWxQYXRoLnN1YnN0cmluZyhleHRT
dGFydCAhPSBub3RGb3VuZCA/IGV4dFN0YXJ0ICsgMSA6IDApOworICAgIGNvbnRlbnRUeXBlID0g
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0KTsK
KworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6YnVpbGRQ
YWdlTGlzdChWZWN0b3I8Y2hhcj4mIGRhdGEsIFN0cmluZyYgY29udGVudFR5cGUpCit7CisgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiWyAiKTsK
KyAgICBDbGllbnRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fY2xpZW50TWFwLmVuZCgpOworICAgIGZv
ciAoQ2xpZW50TWFwOjppdGVyYXRvciBpdCA9IG1fY2xpZW50TWFwLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBpdC0+dmFsdWUtPnBh
Z2UoKTsKKyAgICAgICAgaWYgKGl0ICE9IG1fY2xpZW50TWFwLmJlZ2luKCkpCisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgieyBcImlkXCI6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpdC0+a2V5
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIFwidGl0bGVcIjogXCIiKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQod2ViUGFnZS0+cGFnZVRpdGxlKCkpOworICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIlwiLCBcInVybFwiOiBcIiIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCh3ZWJQYWdlLT5hY3RpdmVVUkwoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiXCIsIFwiaW5zcGVjdG9yVXJsXCI6IFwiIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiL2luc3BlY3Rvci5odG1sP3BhZ2U9Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVt
YmVyKGl0LT5rZXkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiIH0iKTsKKyAg
ICB9CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgXSIpOworICAgIENTdHJpbmcgY3N0ciA9
IGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CisgICAgZGF0YS5hcHBlbmQoY3N0ci5kYXRhKCks
IGNzdHIubGVuZ3RoKCkpOworICAgIGNvbnRlbnRUeXBlID0gImFwcGxpY2F0aW9uL2pzb247IGNo
YXJzZXQ9dXRmLTgiOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJDb250ZXh0RWZsLmNwcAppbmRleCBhM2Q0NzI1YzgxM2I0OGZlODhiNGJkYmUwMzcyYjI5MjMy
YmJkMTljLi5mYjY2ZWZjMjExOGM1YmUwOThjMDg3ZGFlN2FiZWFiZGQ2MzMyNmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKQEAgLTI1LDkg
KzI1LDExIEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Lmgi
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldl
YlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0KICNpbmNsdWRlIDxFZnJlZXQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JY29uRGF0YWJhc2UuaD4KQEAgLTM1LDYgKzM3LDQzIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitzdGF0aWMgdm9pZCBpbml0SW5zcGVjdG9yU2VydmVyKCkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAg
IGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5pdGlhbGl6ZWQgPSB0
cnVlOworICAgIFN0cmluZyBzZXJ2ZXJBZGRyZXNzKGdldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9T
RVJWRVIiKSk7CisKKyAgICBpZiAoIXNlcnZlckFkZHJlc3MuaXNOdWxsKCkpIHsKKyAgICAgICAg
U3RyaW5nIGJpbmRBZGRyZXNzID0gIjEyNy4wLjAuMSI7CisgICAgICAgIHVuc2lnbmVkIHNob3J0
IHBvcnQgPSAyOTk5OworCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAgICAg
c2VydmVyQWRkcmVzcy5zcGxpdCgiOiIsIHJlc3VsdCk7CisKKyAgICAgICAgaWYgKHJlc3VsdC5z
aXplKCkgPT0gMikgeworICAgICAgICAgICAgYmluZEFkZHJlc3MgPSByZXN1bHRbMF07CisgICAg
ICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgICAgICBwb3J0ID0gcmVzdWx0WzFdLnRv
SW50KCZvayk7CisgICAgICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICAgICAgcG9ydCA9
IDI5OTk7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJzZSB0aGUgcG9y
dC4gVXNlIDI5OTkgaW5zdGVhZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlICVzLCB3cm9uZyBmb3JtYXQ/IFVz
ZSAxMjcuMC4wLjE6Mjk5OSBpbnN0ZWFkLiIsIHNlcnZlckFkZHJlc3MudXRmOCgpLmRhdGEoKSk7
CisKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNoYXJlZCgpLmxpc3RlbihiaW5k
QWRkcmVzcywgcG9ydCkpCisgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHN0YXJ0IGxp
c3RlbmluZyBvbjogSVAgYWRkcmVzcz0lcywgcG9ydD0lZC4iLCBiaW5kQWRkcmVzcy51dGY4KCku
ZGF0YSgpLCBwb3J0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhJbnNwZWN0
b3JTZXJ2ZXIsICJUbyBzdGFydCBpbnNwZWN0b3Igc2VydmVyIHNldCBXRUJLSVRfSU5TUEVDVE9S
X1NFUlZFUiB0byAxMjcuMC4wLjE6Mjk5OSBmb3IgZXhhbXBsZS4iKTsKKyNlbmRpZgorfQorCiBT
dHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoZWZyZWV0X2NhY2hlX2hvbWVfZ2V0KCkpICsgIi9XZWJLaXRF
ZmwvQXBwbGljYXRpb25zIjsKQEAgLTQyLDYgKzgxLDggQEAgU3RyaW5nIFdlYkNvbnRleHQ6OmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogCiB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKIHsKKyAgICBpbml0SW5zcGVjdG9yU2VydmVyKCk7CisKICAgICBwYXJhbWV0ZXJzLnVybFNj
aGVtZXNSZWdpc3RlcmVkID0gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS0+cmVnaXN0ZXJlZFVS
SVNjaGVtZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvY29uZmlnLmggYi9T
b3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCBjNDNhNzhmOTQ4MDhkOWRlMjFjNGNlZDZmMDVi
NzNjMzBiYzBjZjYxLi5mMDA4NWJlYTdhODU5ZDE5ZmRkMTdhZmZhMDkyMGYwMWUwZTAwYzQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9j
b25maWcuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCB0eXBlJiBuYW1lKCkgXAog
I2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFKEFSQ0gpIChkZWZpbmVkIFBMVUdJTl9BUkNISVRF
Q1RVUkVfIyNBUkNIICYmIFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNIKQogCiAjaWZuZGVmIEVO
QUJMRV9JTlNQRUNUT1JfU0VSVkVSCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykK
KyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAjZGVm
aW5lIEVOQUJMRV9JTlNQRUNUT1JfU0VSVkVSIDEKICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTVhMTBkOWJiMTY4YzkxNTU1Y2VhODA3MDM0
YWNjNjdhYzRiNzI4YS4uMjZiZmFlYjgwMjg5N2FmYzM2ZWM5MjlkNmZjYTNiZjg3ZDUxYjExYyAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDEyLTEyLTA0ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKworICAgICAg
ICBbRUZMXVtXSzJdIEFkZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmVwYXJlIGluc3BlY3RvclBhZ2VJbmRleC5o
dG1sIGZvciByZW1vdGUgd2ViIGluc3BlY3Rvci4KKworICAgICAgICAqIFNvdXJjZS9QbGF0Zm9y
bUVmbC5jbWFrZToKKwogMjAxMi0xMi0wNCAgS29uZGFwYWxseSBLYWx5YW4gIDxrYWx5YW4ua29u
ZGFwYWxseUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXVtBQ10gVVNFX0dSQVBISUNT
X1NVUkZBQ0Ugc2hvdWxkIGJlIGVuYWJsZWQgb25seSBpZiBYY29tcG9zaXRlIGFuZCBYcmVuZGVy
IGV4dGVuc2lvbnMgYXJlIGZvdW5kLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177735</attachid>
            <date>2012-12-05 06:06:37 -0800</date>
            <delta_ts>2012-12-06 04:29:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98705-20121205230357.patch</filename>
            <type>text/plain</type>
            <size>13663</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZkY2ZiOGE4MGRlZjA3
ZDIwMmVhNjg2YzcyNmJlMTk4OGVlZTk5ZC4uNWMxNzAxNTE2NDMzZmQxMjk2ZWIyMzA3ZjU5MGFj
ZWYxNTJlMGYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTA0ICBTZW9r
anUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgUmVtb3RlIFdlYiBJbnNwZWN0b3IgdG8gRUZMIHBvcnQuCisgICAg
ICAgIFRoZSBXZWJJbnNwZWN0b3JTZXZlciB3aWxsIGJlIHN0YXJ0ZWQgZHVyaW5nIFdlYktpdCBj
b250ZXh0IGluaXRpYWxpemF0aW9uLgorICAgICAgICBUaGUgSVAgYWRkcmVzcyBhbmQgcG9ydCBu
dW1iZXIgZm9yIHRoZSBzZXJ2ZXIgY2FuIGJlIHNldCBpbiBXRUJLSVRfSU5TUEVDVE9SX1NFUlZF
Ui4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2Vy
dmVyLmg6CisgICAgICAgIChXZWJJbnNwZWN0b3JTZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmg6CisgICAgICAgIChXZWJTb2NrZXRT
ZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZWZsL1dlYkluc3Bl
Y3RvclNlcnZlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6aW5zcGVjdG9yUmVzb3VyY2VQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yU2VydmVyOjpwbGF0Zm9ybVJlc291cmNlRm9yUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclNlcnZlcjo6YnVpbGRQYWdlTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZl
cik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMi0x
Mi0wNCAgWXVuaSBKZW9uZyAgPHlobmV0Lmp1bmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF1bV0syXSBBZGQgQVBJcyB0byB0b2dnbGUgcGx1Zy1pbnMgc3VwcG9ydC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBkZjEyOGZkZmM4NjhhZDVlMWU5ZTVkOTlhYWRlZjJjMDk2ODhlYTc3Li40MmVjNzBkMDRlZTBh
NGFlZGRjZDliYzk4M2VjNWYzYmRhZTJkZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01LDYgKzUsNyBAQCBJ
RiAoRU5BQkxFX0lOU1BFQ1RPUikKICAgICAgICAgd2ViLWluc3BlY3Rvci1yZXNvdXJjZXMgQUxM
CiAgICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5X2RpcmVjdG9yeSAke1dF
QkNPUkVfRElSfS9pbnNwZWN0b3IvZnJvbnQtZW5kICR7V0VCX0lOU1BFQ1RPUl9ESVJ9CiAgICAg
ICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5ICR7V0VCQ09SRV9ESVJ9L0VuZ2xp
c2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyAke1dFQl9JTlNQRUNUT1JfRElSfQorICAgICAg
ICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29weSAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL2Zyb250LWVuZC9pbnNwZWN0b3JQYWdlSW5kZXguaHRtbCAke1dF
Ql9JTlNQRUNUT1JfRElSfQogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29w
eSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZENvbW1hbmRz
LmpzICR7V0VCX0lOU1BFQ1RPUl9ESVJ9L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogICAg
ICAgICBERVBFTkRTICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9CiAgICAgICAgIFdPUktJTkdfRElS
RUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMDAzMzk2
YTY1N2ZkNDViOGJlMmM4MjUwZTA5MmNlMmQzZjZmZDIyMC4uYTFmOGIzMmI3OTdiZGQ0YzJiYzBm
OTk0MmZkMjk4MTk3NzM0N2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE4LDYgKzE4LDcg
QEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQXV0aGVudGljYXRpb24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvRG93bmxv
YWRzIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTGF1bmNoZXIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
UGx1Z2lucyIKQEAgLTYwLDYgKzYxLDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQkNPUkVfRElSfS9kb20iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbS9kZWZh
dWx0IgogICAgICIke1dFQkNPUkVfRElSfS9lZGl0aW5nIgorICAgICIke1dFQkNPUkVfRElSfS9m
aWxlYXBpIgogICAgICIke1dFQkNPUkVfRElSfS9oaXN0b3J5IgogICAgICIke1dFQkNPUkVfRElS
fS9odG1sIgogICAgICIke1dFQkNPUkVfRElSfS9odG1sL3NoYWRvdyIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggZGRlN2M1YjRhZDg4M2RkMDEzMGY3ZDM0MjEyMzQwODBlYWNlZmZmZC4u
OGRjYjQ2YTRmOTVlYzEyNTY4ZmY2ODU4NGFmOWZjMjhjN2Q5YmUwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTEwOCw2ICsxMDgsOSBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcAogCisgICAgVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcAorCiAgICAgVUlQcm9jZXNzL3Nv
dXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJT
b3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCA1ZGQ4
N2Y1NGFmNjQzYjNmNDM2MTk5M2NjNmJiNzAwNGIyNDNhMmQ2Li4xMjRjNDZmZjI3NzQ1Y2NjN2Ew
N2FiZjYxYjQ0YjUzNGU2Mjk4NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRD
b25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qKTsKIAogICAgIGJvb2wgcGxhdGZv
cm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hhcj4mIGRhdGEs
IFN0cmluZyYgY29udGVudFR5cGUpOwotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
CisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAg
IHZvaWQgYnVpbGRQYWdlTGlzdChWZWN0b3I8Y2hhcj4mIGRhdGEsIFN0cmluZyYgY29udGVudFR5
cGUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oCmluZGV4IDgwNDA1YzZlOTdmMzZjNjI2
YzE1MGU4NTIzZTJhMjUwNDE0ZTk3NmIuLjY4ZWQ2NGY3Yzk2NjkzYWEyMjUzMDkxZWZjMzBiZDlh
ODgyMWE5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaApAQCAtMjksMTUgKzI5LDE0IEBACiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIAotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRl
IDxnaW8vZ2lvLmg+Ci0jZW5kaWYKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNlbmRpZgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgUExBVEZPUk0oUVQpCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcg
KzgzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7CiAjaWYgUExBVEZP
Uk0oUVQpCiAgICAgT3duUHRyPFF0VGNwU2VydmVySGFuZGxlcj4gbV90Y3BTZXJ2ZXJIYW5kbGVy
OwotI2VsaWYgUExBVEZPUk0oR1RLKQorI2VsaWYgVVNFKFNPVVApCiAgICAgR1JlZlB0cjxHU29j
a2V0U2VydmljZT4gbV9zb2NrZXRTZXJ2aWNlOwogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2Vy
dmVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzU2MDMzYTJkYzE3N2QwYWFkMmI4M2U1OGJkOTJiNzM5
ODAwNDI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcApAQCAtMCwwICsxLDEwOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTZW9ranUgS3dvbiAoc2Vva2p1Lmt3b25AZ21h
aWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yU2VydmVyLmgiCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdp
c3RyeS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGF0aWMgU3RyaW5nIGluc3BlY3RvclJlc291cmNlUGF0aCgpCit7CisgICAgU3RyaW5nIGluc3Bl
Y3RvckZpbGVzUGF0aCA9IFdFQl9JTlNQRUNUT1JfSU5TVEFMTF9ESVI7CisgICAgaWYgKGFjY2Vz
cyhpbnNwZWN0b3JGaWxlc1BhdGgudXRmOCgpLmRhdGEoKSwgUl9PSykpCisgICAgICAgIGluc3Bl
Y3RvckZpbGVzUGF0aCA9IFdFQl9JTlNQRUNUT1JfRElSOworCisgICAgcmV0dXJuIGluc3BlY3Rv
ckZpbGVzUGF0aDsKK30KKworYm9vbCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnBsYXRmb3JtUmVzb3Vy
Y2VGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVmVjdG9yPGNoYXI+JiBkYXRhLCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQoreworICAgIC8vIFRoZSBwYWdlIGxpc3QgY29udGFpbnMgYW4gdW5mb3Jt
YXRlZCBsaXN0IG9mIHBhZ2VzIHRoYXQgY2FuIGJlIGluc3BlY3RlZCB3aXRoIGEgbGluayB0byBv
cGVuIGEgc2Vzc2lvbi4KKyAgICBpZiAocGF0aCA9PSAiL3BhZ2VsaXN0Lmpzb24iKSB7CisgICAg
ICAgIGJ1aWxkUGFnZUxpc3QoZGF0YSwgY29udGVudFR5cGUpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICAvLyBQb2ludCB0aGUgZGVmYXVsdCBwYXRoIHRvIGEgZm9ybWF0dGVk
IHBhZ2UgdGhhdCBxdWVyaWVzIHRoZSBwYWdlIGxpc3QgYW5kIGRpc3BsYXkgdGhlbS4KKyAgICBT
dHJpbmcgbG9jYWxQYXRoID0gaW5zcGVjdG9yUmVzb3VyY2VQYXRoKCkgKyAoKHBhdGggPT0gIi8i
KSA/ICIvaW5zcGVjdG9yUGFnZUluZGV4Lmh0bWwiIDogcGF0aCk7CisgICAgaWYgKGxvY2FsUGF0
aC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRklMRSogZmlsZUhhbmRs
ZSA9IGZvcGVuKGxvY2FsUGF0aC51dGY4KCkuZGF0YSgpLCAiciIpOworICAgIGlmICghZmlsZUhh
bmRsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7
CisgICAgaWYgKGZzdGF0KGZpbGVubyhmaWxlSGFuZGxlKSwgJmZpbGVTdGF0KSkgeworICAgICAg
ICBmY2xvc2UoZmlsZUhhbmRsZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBkYXRhLmdyb3coZmlsZVN0YXQuc3Rfc2l6ZSk7CisgICAgaW50IGJ5dGVzUmVhZCA9IGZyZWFk
KGRhdGEuZGF0YSgpLCAxLCBmaWxlU3RhdC5zdF9zaXplLCBmaWxlSGFuZGxlKTsKKyAgICBmY2xv
c2UoZmlsZUhhbmRsZSk7CisKKyAgICBpZiAoYnl0ZXNSZWFkIDw9IDApCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHNpemVfdCBleHRTdGFydCA9IGxvY2FsUGF0aC5yZXZlcnNlRmluZCgn
LicpOworICAgIFN0cmluZyBleHQgPSBsb2NhbFBhdGguc3Vic3RyaW5nKGV4dFN0YXJ0ICE9IG5v
dEZvdW5kID8gZXh0U3RhcnQgKyAxIDogMCk7CisgICAgY29udGVudFR5cGUgPSBXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHQpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpidWlsZFBhZ2VMaXN0KFZl
Y3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJbICIpOworCisgICAgQ2xp
ZW50TWFwOjppdGVyYXRvciBlbmQgPSBtX2NsaWVudE1hcC5lbmQoKTsKKyAgICBmb3IgKENsaWVu
dE1hcDo6aXRlcmF0b3IgaXQgPSBtX2NsaWVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gaXQtPnZhbHVlLT5wYWdlKCk7Cisg
ICAgICAgIGlmIChpdCAhPSBtX2NsaWVudE1hcC5iZWdpbigpKQorICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInsg
XCJpZFwiOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoaXQtPmtleSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBcInRpdGxlXCI6IFwiIik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHdlYlBhZ2UtPnBhZ2VUaXRsZSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmRMaXRlcmFsKCJcIiwgXCJ1cmxcIjogXCIiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQod2Vi
UGFnZS0+YWN0aXZlVVJMKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiLCBc
Imluc3BlY3RvclVybFwiOiBcIiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi9p
bnNwZWN0b3IuaHRtbD9wYWdlPSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpdC0+
a2V5KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiB9Iik7CisgICAgfQorCisg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgXSIpOworICAgIENTdHJpbmcgY3N0ciA9IGJ1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCk7CisgICAgZGF0YS5hcHBlbmQoY3N0ci5kYXRhKCksIGNzdHIu
bGVuZ3RoKCkpOworICAgIGNvbnRlbnRUeXBlID0gImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9
dXRmLTgiOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkNvbnRleHRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250
ZXh0RWZsLmNwcAppbmRleCBhM2Q0NzI1YzgxM2I0OGZlODhiNGJkYmUwMzcyYjI5MjMyYmJkMTlj
Li43Yzk2OGNmNWVjODlkYzFiZWM3NTU0YjBkZjU0ODY5NzUxZGM1OGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKQEAgLTI1LDkgKzI1LDEx
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0KICNpbmNsdWRlIDxFZnJlZXQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29u
RGF0YWJhc2UuaD4KQEAgLTM1LDYgKzM3LDQ1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitz
dGF0aWMgdm9pZCBpbml0SW5zcGVjdG9yU2VydmVyKCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X1NFUlZFUikKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmIChp
bml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIHNlcnZlckFkZHJlc3Mo
Z2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpKTsKKworICAgIGlmICghc2VydmVyQWRk
cmVzcy5pc051bGwoKSkgeworICAgICAgICBTdHJpbmcgYmluZEFkZHJlc3MgPSAiMTI3LjAuMC4x
IjsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydCA9IDI5OTk7CisKKyAgICAgICAgVmVjdG9y
PFN0cmluZz4gcmVzdWx0OworICAgICAgICBzZXJ2ZXJBZGRyZXNzLnNwbGl0KCI6IiwgcmVzdWx0
KTsKKworICAgICAgICBpZiAocmVzdWx0LnNpemUoKSA9PSAyKSB7CisgICAgICAgICAgICBiaW5k
QWRkcmVzcyA9IHJlc3VsdFswXTsKKyAgICAgICAgICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICAg
ICAgICAgIHBvcnQgPSByZXN1bHRbMV0udG9JbnQoJm9rKTsKKyAgICAgICAgICAgIGlmICghb2sp
IHsKKyAgICAgICAgICAgICAgICBwb3J0ID0gMjk5OTsKKyAgICAgICAgICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkbid0IHBhcnNlIHRoZSBwb3J0LiBVc2UgMjk5OSBpbnN0ZWFkLiIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3Qg
cGFyc2UgJXMsIHdyb25nIGZvcm1hdD8gVXNlIDEyNy4wLjAuMToyOTk5IGluc3RlYWQuIiwgc2Vy
dmVyQWRkcmVzcy51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yU2Vy
dmVyOjpzaGFyZWQoKS5saXN0ZW4oYmluZEFkZHJlc3MsIHBvcnQpKQorICAgICAgICAgICAgaW5p
dGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBMT0dfRVJST1IoIkNv
dWxkbid0IHN0YXJ0IGxpc3RlbmluZyBvbjogSVAgYWRkcmVzcz0lcywgcG9ydD0lZC4iLCBiaW5k
QWRkcmVzcy51dGY4KCkuZGF0YSgpLCBwb3J0KTsKKworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgTE9HKEluc3BlY3RvclNlcnZlciwgIlRvIHN0YXJ0IGluc3BlY3RvciBzZXJ2ZXIgc2V0
IFdFQktJVF9JTlNQRUNUT1JfU0VSVkVSIHRvIDEyNy4wLjAuMToyOTk5IGZvciBleGFtcGxlLiIp
OworI2VuZGlmCit9CisKIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkKIHsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChlZnJlZXRfY2FjaGVfaG9tZV9n
ZXQoKSkgKyAiL1dlYktpdEVmbC9BcHBsaWNhdGlvbnMiOwpAQCAtNDIsNiArODMsOCBAQCBTdHJp
bmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAKIHZvaWQgV2ViQ29u
dGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGluaXRJbnNwZWN0b3JTZXJ2ZXIoKTsKKwogICAg
IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQgPSBtX3NvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5LT5yZWdpc3RlcmVkVVJJU2NoZW1lcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9jb25maWcuaCBiL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCmluZGV4IGM0M2E3OGY5NDgw
OGQ5ZGUyMWM0Y2VkNmYwNWI3M2MzMGJjMGNmNjEuLmYwMDg1YmVhN2E4NTlkMTlmZGQxN2FmZmEw
OTIwZjAxZTBlMDBjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGNvbnN0
IHR5cGUmIG5hbWUoKSBcCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkUoQVJDSCkgKGRlZmlu
ZWQgUExVR0lOX0FSQ0hJVEVDVFVSRV8jI0FSQ0ggJiYgUExVR0lOX0FSQ0hJVEVDVFVSRV8jI0FS
Q0gpCiAKICNpZm5kZWYgRU5BQkxFX0lOU1BFQ1RPUl9TRVJWRVIKLSNpZiBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkKICNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9TRVJWRVIgMQogI2VuZGlmCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNWExMGQ5YmIx
NjhjOTE1NTVjZWE4MDcwMzRhY2M2N2FjNGI3MjhhLi4yNmJmYWViODAyODk3YWZjMzZlYzkyOWQ2
ZmNhM2JmODdkNTFiMTFjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMDQgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21h
aWwuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFJlbW90ZSBXZWIgSW5zcGVjdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODcwNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXBhcmUgaW5z
cGVjdG9yUGFnZUluZGV4Lmh0bWwgZm9yIHJlbW90ZSB3ZWIgaW5zcGVjdG9yLgorCisgICAgICAg
ICogU291cmNlL1BsYXRmb3JtRWZsLmNtYWtlOgorCiAyMDEyLTEyLTA0ICBLb25kYXBhbGx5IEth
bHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJd
W0FDXSBVU0VfR1JBUEhJQ1NfU1VSRkFDRSBzaG91bGQgYmUgZW5hYmxlZCBvbmx5IGlmIFhjb21w
b3NpdGUgYW5kIFhyZW5kZXIgZXh0ZW5zaW9ucyBhcmUgZm91bmQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177992</attachid>
            <date>2012-12-06 04:30:00 -0800</date>
            <delta_ts>2012-12-07 19:30:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98705-20121206212719.patch</filename>
            <type>text/plain</type>
            <size>13604</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZkY2ZiOGE4MGRlZjA3
ZDIwMmVhNjg2YzcyNmJlMTk4OGVlZTk5ZC4uNWMxNzAxNTE2NDMzZmQxMjk2ZWIyMzA3ZjU5MGFj
ZWYxNTJlMGYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTA0ICBTZW9r
anUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgUmVtb3RlIFdlYiBJbnNwZWN0b3IgdG8gRUZMIHBvcnQuCisgICAg
ICAgIFRoZSBXZWJJbnNwZWN0b3JTZXZlciB3aWxsIGJlIHN0YXJ0ZWQgZHVyaW5nIFdlYktpdCBj
b250ZXh0IGluaXRpYWxpemF0aW9uLgorICAgICAgICBUaGUgSVAgYWRkcmVzcyBhbmQgcG9ydCBu
dW1iZXIgZm9yIHRoZSBzZXJ2ZXIgY2FuIGJlIHNldCBpbiBXRUJLSVRfSU5TUEVDVE9SX1NFUlZF
Ui4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2Vy
dmVyLmg6CisgICAgICAgIChXZWJJbnNwZWN0b3JTZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmg6CisgICAgICAgIChXZWJTb2NrZXRT
ZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZWZsL1dlYkluc3Bl
Y3RvclNlcnZlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6aW5zcGVjdG9yUmVzb3VyY2VQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yU2VydmVyOjpwbGF0Zm9ybVJlc291cmNlRm9yUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclNlcnZlcjo6YnVpbGRQYWdlTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZl
cik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMi0x
Mi0wNCAgWXVuaSBKZW9uZyAgPHlobmV0Lmp1bmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF1bV0syXSBBZGQgQVBJcyB0byB0b2dnbGUgcGx1Zy1pbnMgc3VwcG9ydC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBkZjEyOGZkZmM4NjhhZDVlMWU5ZTVkOTlhYWRlZjJjMDk2ODhlYTc3Li40MmVjNzBkMDRlZTBh
NGFlZGRjZDliYzk4M2VjNWYzYmRhZTJkZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01LDYgKzUsNyBAQCBJ
RiAoRU5BQkxFX0lOU1BFQ1RPUikKICAgICAgICAgd2ViLWluc3BlY3Rvci1yZXNvdXJjZXMgQUxM
CiAgICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5X2RpcmVjdG9yeSAke1dF
QkNPUkVfRElSfS9pbnNwZWN0b3IvZnJvbnQtZW5kICR7V0VCX0lOU1BFQ1RPUl9ESVJ9CiAgICAg
ICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5ICR7V0VCQ09SRV9ESVJ9L0VuZ2xp
c2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyAke1dFQl9JTlNQRUNUT1JfRElSfQorICAgICAg
ICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29weSAke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL2Zyb250LWVuZC9pbnNwZWN0b3JQYWdlSW5kZXguaHRtbCAke1dF
Ql9JTlNQRUNUT1JfRElSfQogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29w
eSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZENvbW1hbmRz
LmpzICR7V0VCX0lOU1BFQ1RPUl9ESVJ9L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcwogICAg
ICAgICBERVBFTkRTICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9CiAgICAgICAgIFdPUktJTkdfRElS
RUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMDAzMzk2
YTY1N2ZkNDViOGJlMmM4MjUwZTA5MmNlMmQzZjZmZDIyMC4uYTFmOGIzMmI3OTdiZGQ0YzJiYzBm
OTk0MmZkMjk4MTk3NzM0N2ZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE4LDYgKzE4LDcg
QEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQXV0aGVudGljYXRpb24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvRG93bmxv
YWRzIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTGF1bmNoZXIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
UGx1Z2lucyIKQEAgLTYwLDYgKzYxLDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQkNPUkVfRElSfS9kb20iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbS9kZWZh
dWx0IgogICAgICIke1dFQkNPUkVfRElSfS9lZGl0aW5nIgorICAgICIke1dFQkNPUkVfRElSfS9m
aWxlYXBpIgogICAgICIke1dFQkNPUkVfRElSfS9oaXN0b3J5IgogICAgICIke1dFQkNPUkVfRElS
fS9odG1sIgogICAgICIke1dFQkNPUkVfRElSfS9odG1sL3NoYWRvdyIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggZGRlN2M1YjRhZDg4M2RkMDEzMGY3ZDM0MjEyMzQwODBlYWNlZmZmZC4u
OGRjYjQ2YTRmOTVlYzEyNTY4ZmY2ODU4NGFmOWZjMjhjN2Q5YmUwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTEwOCw2ICsxMDgsOSBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcAogCisgICAgVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcAorCiAgICAgVUlQcm9jZXNzL3Nv
dXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJT
b3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCA1ZGQ4
N2Y1NGFmNjQzYjNmNDM2MTk5M2NjNmJiNzAwNGIyNDNhMmQ2Li4xMjRjNDZmZjI3NzQ1Y2NjN2Ew
N2FiZjYxYjQ0YjUzNGU2Mjk4NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRD
b25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qKTsKIAogICAgIGJvb2wgcGxhdGZv
cm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hhcj4mIGRhdGEs
IFN0cmluZyYgY29udGVudFR5cGUpOwotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
CisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAg
IHZvaWQgYnVpbGRQYWdlTGlzdChWZWN0b3I8Y2hhcj4mIGRhdGEsIFN0cmluZyYgY29udGVudFR5
cGUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oCmluZGV4IDgwNDA1YzZlOTdmMzZjNjI2
YzE1MGU4NTIzZTJhMjUwNDE0ZTk3NmIuLjY4ZWQ2NGY3Yzk2NjkzYWEyMjUzMDkxZWZjMzBiZDlh
ODgyMWE5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaApAQCAtMjksMTUgKzI5LDE0IEBACiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIAotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRl
IDxnaW8vZ2lvLmg+Ci0jZW5kaWYKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNlbmRpZgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgUExBVEZPUk0oUVQpCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcg
KzgzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7CiAjaWYgUExBVEZP
Uk0oUVQpCiAgICAgT3duUHRyPFF0VGNwU2VydmVySGFuZGxlcj4gbV90Y3BTZXJ2ZXJIYW5kbGVy
OwotI2VsaWYgUExBVEZPUk0oR1RLKQorI2VsaWYgVVNFKFNPVVApCiAgICAgR1JlZlB0cjxHU29j
a2V0U2VydmljZT4gbV9zb2NrZXRTZXJ2aWNlOwogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2Vy
dmVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTIzZjhjNDlhYjUxOGFhODgwNDg2ZjY5NGI4YTA1YWJh
OGZmMGZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcApAQCAtMCwwICsxLDEwNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTZW9ranUgS3dvbiAoc2Vva2p1Lmt3b25AZ21h
aWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yU2VydmVyLmgiCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdp
c3RyeS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGF0aWMgU3RyaW5nIGluc3BlY3RvclJlc291cmNlUGF0aCgpCit7CisgICAgU3RyaW5nIGluc3Bl
Y3RvckZpbGVzUGF0aCA9IFdFQl9JTlNQRUNUT1JfSU5TVEFMTF9ESVI7CisgICAgaWYgKGFjY2Vz
cyhpbnNwZWN0b3JGaWxlc1BhdGgudXRmOCgpLmRhdGEoKSwgUl9PSykpCisgICAgICAgIGluc3Bl
Y3RvckZpbGVzUGF0aCA9IFdFQl9JTlNQRUNUT1JfRElSOworCisgICAgcmV0dXJuIGluc3BlY3Rv
ckZpbGVzUGF0aDsKK30KKworYm9vbCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnBsYXRmb3JtUmVzb3Vy
Y2VGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVmVjdG9yPGNoYXI+JiBkYXRhLCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQoreworICAgIC8vIFRoZSBwYWdlIGxpc3QgY29udGFpbnMgYW4gdW5mb3Jt
YXRlZCBsaXN0IG9mIHBhZ2VzIHRoYXQgY2FuIGJlIGluc3BlY3RlZCB3aXRoIGEgbGluayB0byBv
cGVuIGEgc2Vzc2lvbi4KKyAgICBpZiAocGF0aCA9PSAiL3BhZ2VsaXN0Lmpzb24iKSB7CisgICAg
ICAgIGJ1aWxkUGFnZUxpc3QoZGF0YSwgY29udGVudFR5cGUpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICAvLyBQb2ludCB0aGUgZGVmYXVsdCBwYXRoIHRvIGEgZm9ybWF0dGVk
IHBhZ2UgdGhhdCBxdWVyaWVzIHRoZSBwYWdlIGxpc3QgYW5kIGRpc3BsYXkgdGhlbS4KKyAgICBT
dHJpbmcgbG9jYWxQYXRoID0gaW5zcGVjdG9yUmVzb3VyY2VQYXRoKCkgKyAoKHBhdGggPT0gIi8i
KSA/ICIvaW5zcGVjdG9yUGFnZUluZGV4Lmh0bWwiIDogcGF0aCk7CisKKyAgICBGSUxFKiBmaWxl
SGFuZGxlID0gZm9wZW4obG9jYWxQYXRoLnV0ZjgoKS5kYXRhKCksICJyIik7CisgICAgaWYgKCFm
aWxlSGFuZGxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdHJ1Y3Qgc3RhdCBmaWxl
U3RhdDsKKyAgICBpZiAoZnN0YXQoZmlsZW5vKGZpbGVIYW5kbGUpLCAmZmlsZVN0YXQpKSB7Cisg
ICAgICAgIGZjbG9zZShmaWxlSGFuZGxlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGRhdGEuZ3JvdyhmaWxlU3RhdC5zdF9zaXplKTsKKyAgICBpbnQgYnl0ZXNSZWFkID0g
ZnJlYWQoZGF0YS5kYXRhKCksIDEsIGZpbGVTdGF0LnN0X3NpemUsIGZpbGVIYW5kbGUpOworICAg
IGZjbG9zZShmaWxlSGFuZGxlKTsKKworICAgIGlmIChieXRlc1JlYWQgPD0gMCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90IGV4dFN0YXJ0ID0gbG9jYWxQYXRoLnJldmVyc2VG
aW5kKCcuJyk7CisgICAgU3RyaW5nIGV4dCA9IGxvY2FsUGF0aC5zdWJzdHJpbmcoZXh0U3RhcnQg
IT0gbm90Rm91bmQgPyBleHRTdGFydCArIDEgOiAwKTsKKyAgICBjb250ZW50VHlwZSA9IFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dCk7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmJ1aWxkUGFnZUxp
c3QoVmVjdG9yPGNoYXI+JiBkYXRhLCBTdHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlsgIik7CisKKyAg
ICBDbGllbnRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fY2xpZW50TWFwLmVuZCgpOworICAgIGZvciAo
Q2xpZW50TWFwOjppdGVyYXRvciBpdCA9IG1fY2xpZW50TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBpdC0+dmFsdWUtPnBhZ2Uo
KTsKKyAgICAgICAgaWYgKGl0ICE9IG1fY2xpZW50TWFwLmJlZ2luKCkpCisgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgieyBcImlkXCI6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpdC0+a2V5KTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIFwidGl0bGVcIjogXCIiKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQod2ViUGFnZS0+cGFnZVRpdGxlKCkpOworICAgICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoIlwiLCBcInVybFwiOiBcIiIpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCh3ZWJQYWdlLT5hY3RpdmVVUkwoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
XCIsIFwiaW5zcGVjdG9yVXJsXCI6IFwiIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiL2luc3BlY3Rvci5odG1sP3BhZ2U9Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVy
KGl0LT5rZXkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiIH0iKTsKKyAgICB9
CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBdIik7CisgICAgQ1N0cmluZyBjc3RyID0g
YnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKKyAgICBkYXRhLmFwcGVuZChjc3RyLmRhdGEoKSwg
Y3N0ci5sZW5ndGgoKSk7CisgICAgY29udGVudFR5cGUgPSAiYXBwbGljYXRpb24vanNvbjsgY2hh
cnNldD11dGYtOCI7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViQ29udGV4dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YkNvbnRleHRFZmwuY3BwCmluZGV4IGEzZDQ3MjVjODEzYjQ4ZmU4OGI0YmRiZTAzNzJiMjkyMzJi
YmQxOWMuLjFlNDEyYmEyNGUxYTg4NDc2YTdlOGExNTIwMzRkODI4NzU0M2NmMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcApAQCAtMjUsOSAr
MjUsMTEgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
U291cFJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKLQogI2luY2x1ZGUgPEVmcmVldC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ljb25EYXRhYmFzZS5oPgpAQCAtMzUsNiArMzcsNDQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK3N0YXRpYyB2b2lkIGluaXRJbnNwZWN0b3JTZXJ2ZXIoKQoreworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfU0VSVkVSKQorICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAg
aWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpbml0aWFsaXplZCA9IHRy
dWU7CisgICAgU3RyaW5nIHNlcnZlckFkZHJlc3MoZ2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NF
UlZFUiIpKTsKKworICAgIGlmICghc2VydmVyQWRkcmVzcy5pc051bGwoKSkgeworICAgICAgICBT
dHJpbmcgYmluZEFkZHJlc3MgPSBBU0NJSUxpdGVyYWwoIjEyNy4wLjAuMSIpOworICAgICAgICB1
bnNpZ25lZCBzaG9ydCBwb3J0ID0gMjk5OTsKKworICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1
bHQ7CisgICAgICAgIHNlcnZlckFkZHJlc3Muc3BsaXQoJzonLCByZXN1bHQpOworCisgICAgICAg
IGlmIChyZXN1bHQuc2l6ZSgpID09IDIpIHsKKyAgICAgICAgICAgIGJpbmRBZGRyZXNzID0gcmVz
dWx0WzBdOworICAgICAgICAgICAgYm9vbCBvayA9IGZhbHNlOworICAgICAgICAgICAgcG9ydCA9
IHJlc3VsdFsxXS50b0ludCgmb2spOworICAgICAgICAgICAgaWYgKCFvaykgeworICAgICAgICAg
ICAgICAgIHBvcnQgPSAyOTk5OworICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3Qg
cGFyc2UgdGhlIHBvcnQuIFVzZSAyOTk5IGluc3RlYWQuIik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJzZSAlcywgd3Jv
bmcgZm9ybWF0PyBVc2UgMTI3LjAuMC4xOjI5OTkgaW5zdGVhZC4iLCBzZXJ2ZXJBZGRyZXNzLnV0
ZjgoKS5kYXRhKCkpOworCisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yU2VydmVyOjpzaGFyZWQo
KS5saXN0ZW4oYmluZEFkZHJlc3MsIHBvcnQpKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZG4ndCBzdGFydCBsaXN0ZW5pbmcgb246IElQIGFkZHJlc3M9JXMsIHBvcnQ9JWQuIiwgYmluZEFk
ZHJlc3MudXRmOCgpLmRhdGEoKSwgcG9ydCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIExPRyhJbnNwZWN0b3JTZXJ2ZXIsICJUbyBzdGFydCBpbnNwZWN0b3Igc2VydmVyIHNldCBX
RUJLSVRfSU5TUEVDVE9SX1NFUlZFUiB0byAxMjcuMC4wLjE6Mjk5OSBmb3IgZXhhbXBsZS4iKTsK
KyNlbmRpZgorfQorCiBTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSgpCiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZWZyZWV0X2NhY2hlX2hvbWVfZ2V0
KCkpICsgIi9XZWJLaXRFZmwvQXBwbGljYXRpb25zIjsKQEAgLTQyLDYgKzgyLDggQEAgU3RyaW5n
IFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogCiB2b2lkIFdlYkNvbnRl
eHQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKIHsKKyAgICBpbml0SW5zcGVjdG9yU2VydmVyKCk7CisKICAgICBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkID0gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94
eS0+cmVnaXN0ZXJlZFVSSVNjaGVtZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvY29uZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCBjNDNhNzhmOTQ4MDhk
OWRlMjFjNGNlZDZmMDViNzNjMzBiYzBjZjYxLi5mMDA4NWJlYTdhODU5ZDE5ZmRkMTdhZmZhMDky
MGYwMWUwZTAwYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9jb25maWcuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCB0
eXBlJiBuYW1lKCkgXAogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFKEFSQ0gpIChkZWZpbmVk
IFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNIICYmIFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNI
KQogCiAjaWZuZGVmIEVOQUJMRV9JTlNQRUNUT1JfU0VSVkVSCi0jaWYgUExBVEZPUk0oUVQpIHx8
IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShFRkwpCiAjZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfU0VSVkVSIDEKICNlbmRpZgogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTVhMTBkOWJiMTY4
YzkxNTU1Y2VhODA3MDM0YWNjNjdhYzRiNzI4YS4uMjZiZmFlYjgwMjg5N2FmYzM2ZWM5MjlkNmZj
YTNiZjg3ZDUxYjExYyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTEyLTA0ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWls
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFkZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmVwYXJlIGluc3Bl
Y3RvclBhZ2VJbmRleC5odG1sIGZvciByZW1vdGUgd2ViIGluc3BlY3Rvci4KKworICAgICAgICAq
IFNvdXJjZS9QbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0xMi0wNCAgS29uZGFwYWxseSBLYWx5
YW4gIDxrYWx5YW4ua29uZGFwYWxseUBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXVtB
Q10gVVNFX0dSQVBISUNTX1NVUkZBQ0Ugc2hvdWxkIGJlIGVuYWJsZWQgb25seSBpZiBYY29tcG9z
aXRlIGFuZCBYcmVuZGVyIGV4dGVuc2lvbnMgYXJlIGZvdW5kLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178327</attachid>
            <date>2012-12-07 19:30:39 -0800</date>
            <delta_ts>2012-12-08 05:57:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98705-20121208122755.patch</filename>
            <type>text/plain</type>
            <size>14568</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZiNjdlNjQ4NTU3N2U4
MmQwYWNjNmRjZmU1N2JiYjMyYzA2NDIyNi4uZGNmM2VhZWI4MDJmYjU0YzEwYTc4OTMwODJjYzJl
YzVkN2E4ZDIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTA3ICBTZW9r
anUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgUmVtb3RlIFdlYiBJbnNwZWN0b3IgdG8gRUZMIHBvcnQuCisgICAg
ICAgIFRoZSBXZWJJbnNwZWN0b3JTZXZlciB3aWxsIGJlIHN0YXJ0ZWQgZHVyaW5nIFdlYktpdCBj
b250ZXh0IGluaXRpYWxpemF0aW9uLgorICAgICAgICBUaGUgSVAgYWRkcmVzcyBhbmQgcG9ydCBu
dW1iZXIgZm9yIHRoZSBzZXJ2ZXIgY2FuIGJlIHNldCBpbiBXRUJLSVRfSU5TUEVDVE9SX1NFUlZF
Ui4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2Vy
dmVyLmg6CisgICAgICAgIChXZWJJbnNwZWN0b3JTZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmg6CisgICAgICAgIChXZWJTb2NrZXRT
ZXJ2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZWZsL1dlYkluc3Bl
Y3RvclNlcnZlckVmbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6aW5zcGVjdG9yUmVzb3VyY2VQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yU2VydmVyOjpwbGF0Zm9ybVJlc291cmNlRm9yUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclNlcnZlcjo6YnVpbGRQYWdlTGlzdCk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdEluc3BlY3RvclNlcnZl
cik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMi0x
Mi0wNyAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtF
RkxdW1dLMl0gQWRkIGV3a19zZXR0aW5ncyBBUElzIGZvciB0ZXh0IGF1dG9zaXppbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCBjZjVlMTEzZTEyZTQ0OWRlZjYyYTlmN2ZmMzNiZWQzYzNiY2I2YTI0Li42NTMyZmFh
OWFlMmYzMjAwYjQyOTZjNzE1YmI4ZGI1MGViZTk3ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01LDYgKzUs
NyBAQCBpZiAoRU5BQkxFX0lOU1BFQ1RPUikKICAgICAgICAgd2ViLWluc3BlY3Rvci1yZXNvdXJj
ZXMgQUxMCiAgICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5X2RpcmVjdG9y
eSAke1dFQkNPUkVfRElSfS9pbnNwZWN0b3IvZnJvbnQtZW5kICR7V0VCX0lOU1BFQ1RPUl9ESVJ9
CiAgICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5ICR7V0VCQ09SRV9ESVJ9
L0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyAke1dFQl9JTlNQRUNUT1JfRElSfQor
ICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29weSAke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2Zyb250LWVuZC9pbnNwZWN0b3JQYWdlSW5kZXguaHRt
bCAke1dFQl9JTlNQRUNUT1JfRElSfQogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0g
LUUgY29weSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vSW5zcGVjdG9yQmFja2VuZENv
bW1hbmRzLmpzICR7V0VCX0lOU1BFQ1RPUl9ESVJ9CiAgICAgICAgIERFUEVORFMgJHtXZWJDb3Jl
X0xJQlJBUllfTkFNRX0KICAgICAgICAgV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllf
RElSfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA4ZjNiNmY5M2MwZDg3ZDFiZDVjNDEwNDQyZDZk
M2UxNjFkYzgzMGUwLi44M2I2ZWViZDI2MDhkMjk5Mzc2M2RiYmM5YjdhY2RmZTNkMzJhYmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMTgsNiArMTgsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
biIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9Eb3dubG9hZHMiCisgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9MYXVuY2hlciIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9QbHVnaW5zIgpAQCAtNjAsNiArNjEs
NyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L2RvbSIKICAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1bHQiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L2VkaXRpbmciCisgICAgIiR7V0VCQ09SRV9ESVJ9L2ZpbGVhcGkiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2hpc3RvcnkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2h0bWwiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2h0bWwvc2hhZG93IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA0MGEwMmM0
OTk4OTAzZjY3MjUzNGYyMzMzYzgxZjgzNjJkMTM4ZmNhLi42MDZhMzdkYTdlOGUwMjQwNjFjMTVl
YzBiZmIzMWEwZGU0YWY3MTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTA4LDYg
KzEwOCw5IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwv
V2ViUHJlZmVyZW5jZXNFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUHJveHlF
ZmwuY3BwCiAKKyAgICBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JT
ZXJ2ZXJFZmwuY3BwCisgICAgVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tl
dFNlcnZlclNvdXAuY3BwCisKICAgICBVSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJv
eHlTb3VwLmNwcAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVu
dC5jcHAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2Vi
SW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2Vy
dmVyL1dlYkluc3BlY3RvclNlcnZlci5oCmluZGV4IDVkZDg3ZjU0YWY2NDNiM2Y0MzYxOTkzY2M2
YmI3MDA0YjI0M2EyZDYuLjEyNGM0NmZmMjc3NDVjY2M3YTA3YWJmNjFiNDRiNTM0ZTYyOTg2NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2Vi
SW5zcGVjdG9yU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3Rv
clNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbiopOwogCiAgICAgYm9vbCBwbGF0Zm9ybVJlc291cmNlRm9yUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgsIFZlY3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSk7
Ci0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShRVCkgfHwg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCBidWlsZFBhZ2VMaXN0KFZl
Y3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRT
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29j
a2V0U2VydmVyLmgKaW5kZXggODA0MDVjNmU5N2YzNmM2MjZjMTUwZTg1MjNlMmEyNTA0MTRlOTc2
Yi4uNjhlZDY0ZjdjOTY2OTNhYTIyNTMwOTFlZmMzMGJkOWE4ODIxYTk4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tl
dFNlcnZlci5oCkBAIC0yOSwxNSArMjksMTQgQEAKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VS
VkVSKQogCi0jaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgPGdpby9naW8uaD4KLSNlbmRpZgog
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpZiBQTEFU
Rk9STShHVEspCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBVU0UoU09V
UCkKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5o
PgogI2VuZGlmCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9S
TShRVCkKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODQsNyArODMsNyBAQCBwcml2YXRlOgogICAg
IHVuc2lnbmVkIHNob3J0IG1fcG9ydDsKICNpZiBQTEFURk9STShRVCkKICAgICBPd25QdHI8UXRU
Y3BTZXJ2ZXJIYW5kbGVyPiBtX3RjcFNlcnZlckhhbmRsZXI7Ci0jZWxpZiBQTEFURk9STShHVEsp
CisjZWxpZiBVU0UoU09VUCkKICAgICBHUmVmUHRyPEdTb2NrZXRTZXJ2aWNlPiBtX3NvY2tldFNl
cnZpY2U7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIv
ZWZsL1dlYkluc3BlY3RvclNlcnZlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJFZmwuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdmODgzNWI2NjliNmM5ZTRmNTFlMjkyZWNkMjQ2MTQwMTQxNmMwZTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNw
ZWN0b3JTZXJ2ZXJFZmwuY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFNlb2tqdSBLd29uIChzZW9ranUua3dvbkBnbWFpbC5jb20pCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIK
KworI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8c3lz
L3N0YXQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBTdHJpbmcgaW5zcGVjdG9y
UmVzb3VyY2VQYXRoKCkKK3sKKyAgICBTdHJpbmcgaW5zcGVjdG9yRmlsZXNQYXRoID0gV0VCX0lO
U1BFQ1RPUl9JTlNUQUxMX0RJUjsKKyAgICBpZiAoYWNjZXNzKGluc3BlY3RvckZpbGVzUGF0aC51
dGY4KCkuZGF0YSgpLCBSX09LKSkKKyAgICAgICAgaW5zcGVjdG9yRmlsZXNQYXRoID0gV0VCX0lO
U1BFQ1RPUl9ESVI7CisKKyAgICByZXR1cm4gaW5zcGVjdG9yRmlsZXNQYXRoOworfQorCitib29s
IFdlYkluc3BlY3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoLCBWZWN0b3I8Y2hhcj4mIGRhdGEsIFN0cmluZyYgY29udGVudFR5cGUpCit7CisgICAg
Ly8gVGhlIHBhZ2UgbGlzdCBjb250YWlucyBhbiB1bmZvcm1hdGVkIGxpc3Qgb2YgcGFnZXMgdGhh
dCBjYW4gYmUgaW5zcGVjdGVkIHdpdGggYSBsaW5rIHRvIG9wZW4gYSBzZXNzaW9uLgorICAgIGlm
IChwYXRoID09ICIvcGFnZWxpc3QuanNvbiIpIHsKKyAgICAgICAgYnVpbGRQYWdlTGlzdChkYXRh
LCBjb250ZW50VHlwZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFBv
aW50IHRoZSBkZWZhdWx0IHBhdGggdG8gYSBmb3JtYXR0ZWQgcGFnZSB0aGF0IHF1ZXJpZXMgdGhl
IHBhZ2UgbGlzdCBhbmQgZGlzcGxheSB0aGVtLgorICAgIFN0cmluZyBsb2NhbFBhdGggPSBpbnNw
ZWN0b3JSZXNvdXJjZVBhdGgoKSArICgocGF0aCA9PSAiLyIpID8gQVNDSUlMaXRlcmFsKCIvaW5z
cGVjdG9yUGFnZUluZGV4Lmh0bWwiKSA6IHBhdGgpOworCisgICAgRklMRSogZmlsZUhhbmRsZSA9
IGZvcGVuKGxvY2FsUGF0aC51dGY4KCkuZGF0YSgpLCAiciIpOworICAgIGlmICghZmlsZUhhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7Cisg
ICAgaWYgKGZzdGF0KGZpbGVubyhmaWxlSGFuZGxlKSwgJmZpbGVTdGF0KSkgeworICAgICAgICBm
Y2xvc2UoZmlsZUhhbmRsZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBk
YXRhLmdyb3coZmlsZVN0YXQuc3Rfc2l6ZSk7CisgICAgaW50IGJ5dGVzUmVhZCA9IGZyZWFkKGRh
dGEuZGF0YSgpLCAxLCBmaWxlU3RhdC5zdF9zaXplLCBmaWxlSGFuZGxlKTsKKyAgICBmY2xvc2Uo
ZmlsZUhhbmRsZSk7CisKKyAgICBpZiAoYnl0ZXNSZWFkIDw9IDApCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHNpemVfdCBleHRTdGFydCA9IGxvY2FsUGF0aC5yZXZlcnNlRmluZCgnLicp
OworICAgIFN0cmluZyBleHQgPSBsb2NhbFBhdGguc3Vic3RyaW5nKGV4dFN0YXJ0ICE9IG5vdEZv
dW5kID8gZXh0U3RhcnQgKyAxIDogMCk7CisgICAgY29udGVudFR5cGUgPSBXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHQpOworCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpidWlsZFBhZ2VMaXN0KFZlY3Rv
cjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJbICIpOworCisgICAgQ2xpZW50
TWFwOjppdGVyYXRvciBlbmQgPSBtX2NsaWVudE1hcC5lbmQoKTsKKyAgICBmb3IgKENsaWVudE1h
cDo6aXRlcmF0b3IgaXQgPSBtX2NsaWVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gaXQtPnZhbHVlLT5wYWdlKCk7CisgICAg
ICAgIGlmIChpdCAhPSBtX2NsaWVudE1hcC5iZWdpbigpKQorICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoInsgXCJp
ZFwiOiAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIoaXQtPmtleSk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBcInRpdGxlXCI6IFwiIik7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKHdlYlBhZ2UtPnBhZ2VUaXRsZSgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRM
aXRlcmFsKCJcIiwgXCJ1cmxcIjogXCIiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQod2ViUGFn
ZS0+YWN0aXZlVVJMKCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiLCBcImlu
c3BlY3RvclVybFwiOiBcIiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIi9pbnNw
ZWN0b3IuaHRtbD9wYWdlPSIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpdC0+a2V5
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcIiB9Iik7CisgICAgfQorCisgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgXSIpOworICAgIENTdHJpbmcgY3N0ciA9IGJ1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCk7CisgICAgZGF0YS5hcHBlbmQoY3N0ci5kYXRhKCksIGNzdHIubGVu
Z3RoKCkpOworICAgIGNvbnRlbnRUeXBlID0gImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRm
LTgiOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVj
dG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAKaW5k
ZXggZTA5NWJlOTc4ZDFjYTBmYTk0NTA2M2YxNjM2MzgwYWUyZmVlMmUxOS4uMjhmNGYyMWQ0ZTJi
MTAwOWQzMzdlYzU0ZDQ5OTdkOGZhMGJjYmVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZlclNvdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2Nr
ZXRTZXJ2ZXJTb3VwLmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBnYm9vbGVhbiBjb25uZWN0aW9uQ2Fs
bGJhY2soR1NvY2tldFNlcnZpY2UqIHNlcnZpY2UsIEdTb2NrZXRDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBHT2JqZWN0KiBzb3VyY2VPYmplY3QsIFdlYlNvY2tldFNlcnZlciogc2VydmVyKQorc3Rh
dGljIGdib29sZWFuIGNvbm5lY3Rpb25DYWxsYmFjayhHU29ja2V0U2VydmljZSogLypzZXJ2aWNl
Ki8sIEdTb2NrZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBHT2JqZWN0KiAvKnNvdXJjZU9iamVj
dCovLCBXZWJTb2NrZXRTZXJ2ZXIqIHNlcnZlcikKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAg
R1JlZlB0cjxHU29ja2V0QWRkcmVzcz4gc29ja2V0QWRkcmVzcyA9IGFkb3B0R1JlZihnX3NvY2tl
dF9jb25uZWN0aW9uX2dldF9yZW1vdGVfYWRkcmVzcyhjb25uZWN0aW9uLCAwKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAppbmRleCBhM2Q0NzI1
YzgxM2I0OGZlODhiNGJkYmUwMzcyYjI5MjMyYmJkMTljLi4zZWFkNTMxYzI5MDVhMTE3NWI3OTI4
MDg0OTcwMGU4OTRiYTFhMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYkNvbnRleHRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViQ29udGV4dEVmbC5jcHAKQEAgLTI1LDkgKzI1LDExIEBACiAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0K
ICNpbmNsdWRlIDxFZnJlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KQEAgLTM1LDYgKzM3
LDQ2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdm9pZCBpbml0SW5zcGVjdG9y
U2VydmVyKCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKKyAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gSXQgc2hvdWxkIGJlIHNldCB0byB0cnVlIGFsd2F5cy4KKyAgICAvLyBC
ZWNhdXNlIGl0IGlzIHRvIGVuc3VyZSBpbml0SW5zcGVjdG9yU2VydmVyKCkgaXMgZXhlY3V0ZWQg
b25seSBvbmNlLCBldmVuIGlmIHRoZSBzZXJ2ZXIgZmFpbHMgdG8gcnVuLgorICAgIGluaXRpYWxp
emVkID0gdHJ1ZTsKKworICAgIFN0cmluZyBzZXJ2ZXJBZGRyZXNzKGdldGVudigiV0VCS0lUX0lO
U1BFQ1RPUl9TRVJWRVIiKSk7CisgICAgaWYgKCFzZXJ2ZXJBZGRyZXNzLmlzTnVsbCgpKSB7Cisg
ICAgICAgIFN0cmluZyBiaW5kQWRkcmVzcyA9IEFTQ0lJTGl0ZXJhbCgiMTI3LjAuMC4xIik7Cisg
ICAgICAgIHVuc2lnbmVkIHNob3J0IHBvcnQgPSAyOTk5OworCisgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3VsdDsKKyAgICAgICAgc2VydmVyQWRkcmVzcy5zcGxpdCgnOicsIHJlc3VsdCk7CisK
KyAgICAgICAgaWYgKHJlc3VsdC5zaXplKCkgPT0gMikgeworICAgICAgICAgICAgYmluZEFkZHJl
c3MgPSByZXN1bHRbMF07CisgICAgICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgICAg
ICBwb3J0ID0gcmVzdWx0WzFdLnRvSW50KCZvayk7CisgICAgICAgICAgICBpZiAoIW9rKSB7Cisg
ICAgICAgICAgICAgICAgcG9ydCA9IDI5OTk7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZG4ndCBwYXJzZSB0aGUgcG9ydC4gVXNlIDI5OTkgaW5zdGVhZC4iKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNl
ICVzLCB3cm9uZyBmb3JtYXQ/IFVzZSAxMjcuMC4wLjE6Mjk5OSBpbnN0ZWFkLiIsIHNlcnZlckFk
ZHJlc3MudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3JTZXJ2ZXI6
OnNoYXJlZCgpLmxpc3RlbihiaW5kQWRkcmVzcywgcG9ydCkpCisgICAgICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkbid0IHN0YXJ0IGxpc3RlbmluZyBvbjogSVAgYWRkcmVzcz0lcywgcG9ydD0lZC4i
LCBiaW5kQWRkcmVzcy51dGY4KCkuZGF0YSgpLCBwb3J0KTsKKworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgTE9HKEluc3BlY3RvclNlcnZlciwgIlRvIHN0YXJ0IGluc3BlY3RvciBzZXJ2
ZXIgc2V0IFdFQktJVF9JTlNQRUNUT1JfU0VSVkVSIHRvIDEyNy4wLjAuMToyOTk5IGZvciBleGFt
cGxlLiIpOworI2VuZGlmCit9CisKIFN0cmluZyBXZWJDb250ZXh0OjphcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCkKIHsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChlZnJlZXRfY2FjaGVf
aG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9BcHBsaWNhdGlvbnMiOwpAQCAtNDIsNiArODQsOCBA
QCBTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAKIHZvaWQg
V2ViQ29udGV4dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIGluaXRJbnNwZWN0b3JTZXJ2ZXIoKTsK
KwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWQgPSBtX3NvdXBSZXF1ZXN0TWFu
YWdlclByb3h5LT5yZWdpc3RlcmVkVVJJU2NoZW1lcygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9jb25maWcuaCBiL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCmluZGV4IGM0M2E3
OGY5NDgwOGQ5ZGUyMWM0Y2VkNmYwNWI3M2MzMGJjMGNmNjEuLmYwMDg1YmVhN2E4NTlkMTlmZGQx
N2FmZmEwOTIwZjAxZTBlMDBjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGlj
IGNvbnN0IHR5cGUmIG5hbWUoKSBcCiAjZGVmaW5lIFBMVUdJTl9BUkNISVRFQ1RVUkUoQVJDSCkg
KGRlZmluZWQgUExVR0lOX0FSQ0hJVEVDVFVSRV8jI0FSQ0ggJiYgUExVR0lOX0FSQ0hJVEVDVFVS
RV8jI0FSQ0gpCiAKICNpZm5kZWYgRU5BQkxFX0lOU1BFQ1RPUl9TRVJWRVIKLSNpZiBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKEVGTCkKICNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9TRVJWRVIgMQogI2Vu
ZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxMTZj
ZjA1ZjVhZjQ2MTJiYzliNDM1NjQxN2UzZjdlZWZkMzRiYWU2Li43ZDYyYjA2YzVlYzcwMjg4ODYx
MzNmOGE0Mjg5MzFmZjlhMTMwYzA5IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMDcgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3
b25AZ21haWwuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFJlbW90ZSBXZWIgSW5zcGVj
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODcw
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXBh
cmUgaW5zcGVjdG9yUGFnZUluZGV4Lmh0bWwgZm9yIHJlbW90ZSB3ZWIgaW5zcGVjdG9yLgorCisg
ICAgICAgICogU291cmNlL1BsYXRmb3JtRWZsLmNtYWtlOgorCiAyMDEyLTEyLTA2ICBSaWNrIEJ5
ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDU1MgY3Vyc29yIHByb3BlcnR5
IHNob3VsZCBzdXBwb3J0IHdlYmtpdC1pbWFnZS1zZXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178350</attachid>
            <date>2012-12-08 05:57:49 -0800</date>
            <delta_ts>2012-12-08 08:08:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98705-20121208225504.patch</filename>
            <type>text/plain</type>
            <size>14837</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTkzNTk3NDBmMzQ4Mzk2
MWJlMzg3YWRkMTMyOTFkMTM2N2EwMGMyYi4uZTQ2Mjg2ZjcyMWRkMmRkZmE3ZTUwODA4NzY3YTQ1
MDc5Y2I0MWJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEyLTEyLTA4ICBTZW9r
anUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0u
CisKKyAgICAgICAgQWRkIFJlbW90ZSBXZWIgSW5zcGVjdG9yIHRvIEVGTCBwb3J0LgorICAgICAg
ICBUaGUgV2ViSW5zcGVjdG9yU2V2ZXIgd2lsbCBiZSBzdGFydGVkIGR1cmluZyBXZWJLaXQgY29u
dGV4dCBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgVGhlIElQIGFkZHJlc3MgYW5kIHBvcnQgbnVt
YmVyIGZvciB0aGUgc2VydmVyIGNhbiBiZSBzZXQgaW4gV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZl
ci5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yU2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oOgorICAgICAgICAoV2ViU29ja2V0U2Vy
dmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0
b3JTZXJ2ZXJFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6Omluc3BlY3RvclJlc291cmNlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JTZXJ2ZXI6OmJ1aWxkUGFnZUxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y29ubmVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbnRl
eHRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplSW5zcGVjdG9yU2VydmVyKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAqIGNvbmZpZy5oOgorCisyMDEyLTEyLTA4
ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKwogICAgICAgICBSZW1vdmUg
dW51c2VkIGhlYWRlcnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDQyOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm1FZmwuY21ha2UgYi9T
b3VyY2UvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggY2Y1ZTExM2UxMmU0NDlkZWY2MmE5ZjdmZjMz
YmVkM2MzYmNiNmEyNC4uNjUzMmZhYTlhZTJmMzIwMGI0Mjk2YzcxNWJiOGRiNTBlYmU5N2Y0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtNSw2ICs1LDcgQEAgaWYgKEVOQUJMRV9JTlNQRUNUT1IpCiAgICAgICAg
IHdlYi1pbnNwZWN0b3ItcmVzb3VyY2VzIEFMTAogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09N
TUFORH0gLUUgY29weV9kaXJlY3RvcnkgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL2Zyb250LWVu
ZCAke1dFQl9JTlNQRUNUT1JfRElSfQogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0g
LUUgY29weSAke1dFQkNPUkVfRElSfS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMg
JHtXRUJfSU5TUEVDVE9SX0RJUn0KKyAgICAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1F
IGNvcHkgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9mcm9udC1lbmQv
aW5zcGVjdG9yUGFnZUluZGV4Lmh0bWwgJHtXRUJfSU5TUEVDVE9SX0RJUn0KICAgICAgICAgQ09N
TUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGNvcHkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyAke1dFQl9JTlNQRUNUT1JfRElSfQogICAg
ICAgICBERVBFTkRTICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9CiAgICAgICAgIFdPUktJTkdfRElS
RUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggOGYzYjZm
OTNjMGQ4N2QxYmQ1YzQxMDQ0MmQ2ZDNlMTYxZGM4MzBlMC4uODNiNmVlYmQyNjA4ZDI5OTM3NjNk
YmJjOWI3YWNkZmUzZDMyYWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE4LDYgKzE4LDcg
QEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQXV0aGVudGljYXRpb24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvRG93bmxv
YWRzIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTGF1bmNoZXIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
UGx1Z2lucyIKQEAgLTYwLDYgKzYxLDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQkNPUkVfRElSfS9kb20iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbS9kZWZh
dWx0IgogICAgICIke1dFQkNPUkVfRElSfS9lZGl0aW5nIgorICAgICIke1dFQkNPUkVfRElSfS9m
aWxlYXBpIgogICAgICIke1dFQkNPUkVfRElSfS9oaXN0b3J5IgogICAgICIke1dFQkNPUkVfRElS
fS9odG1sIgogICAgICIke1dFQkNPUkVfRElSfS9odG1sL3NoYWRvdyIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggNWIyMzg4ZDAwMDJkMWNkZTg0NDFhNzE0NzIxYjZjZTNkOGMzMDRlNS4u
YjM3MTZkZWEwMTljNDhmOGMzY2RiNGIzMDdhYWE1ZWFlNjQxYWUwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTEwNiw2ICsxMDYsOSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcAogCisgICAgVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcAorCiAgICAgVUlQcm9jZXNzL3Nv
dXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJT
b3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCA1ZGQ4
N2Y1NGFmNjQzYjNmNDM2MTk5M2NjNmJiNzAwNGIyNDNhMmQ2Li4xMjRjNDZmZjI3NzQ1Y2NjN2Ew
N2FiZjYxYjQ0YjUzNGU2Mjk4NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRD
b25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qKTsKIAogICAgIGJvb2wgcGxhdGZv
cm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hhcj4mIGRhdGEs
IFN0cmluZyYgY29udGVudFR5cGUpOwotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
CisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAg
IHZvaWQgYnVpbGRQYWdlTGlzdChWZWN0b3I8Y2hhcj4mIGRhdGEsIFN0cmluZyYgY29udGVudFR5
cGUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oCmluZGV4IDgwNDA1YzZlOTdmMzZjNjI2
YzE1MGU4NTIzZTJhMjUwNDE0ZTk3NmIuLjY4ZWQ2NGY3Yzk2NjkzYWEyMjUzMDkxZWZjMzBiZDlh
ODgyMWE5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaApAQCAtMjksMTUgKzI5LDE0IEBACiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIAotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRl
IDxnaW8vZ2lvLmg+Ci0jZW5kaWYKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNlbmRpZgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgUExBVEZPUk0oUVQpCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcg
KzgzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7CiAjaWYgUExBVEZP
Uk0oUVQpCiAgICAgT3duUHRyPFF0VGNwU2VydmVySGFuZGxlcj4gbV90Y3BTZXJ2ZXJIYW5kbGVy
OwotI2VsaWYgUExBVEZPUk0oR1RLKQorI2VsaWYgVVNFKFNPVVApCiAgICAgR1JlZlB0cjxHU29j
a2V0U2VydmljZT4gbV9zb2NrZXRTZXJ2aWNlOwogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2Vy
dmVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDY5YzViOGZiOWZhYjJiNGVjZGJlNTc3YmYyMmY3ZjJk
Y2UwOGFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcApAQCAtMCwwICsxLDEwNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTZW9ranUgS3dvbiAoc2Vva2p1Lmt3b25AZ21h
aWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yU2VydmVyLmgiCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdp
c3RyeS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGF0aWMgU3RyaW5nIGluc3BlY3RvclJlc291cmNlUGF0aCgpCit7CisgICAgU3RyaW5nIGluc3Bl
Y3RvckZpbGVzUGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoV0VCX0lOU1BFQ1RPUl9JTlNUQUxMX0RJ
Uik7CisgICAgaWYgKGFjY2VzcyhpbnNwZWN0b3JGaWxlc1BhdGgudXRmOCgpLmRhdGEoKSwgUl9P
SykpCisgICAgICAgIGluc3BlY3RvckZpbGVzUGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoV0VCX0lO
U1BFQ1RPUl9ESVIpOworCisgICAgcmV0dXJuIGluc3BlY3RvckZpbGVzUGF0aDsKK30KKworYm9v
bCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnBsYXRmb3JtUmVzb3VyY2VGb3JQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgVmVjdG9yPGNoYXI+JiBkYXRhLCBTdHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAg
IC8vIFRoZSBwYWdlIGxpc3QgY29udGFpbnMgYW4gdW5mb3JtYXRlZCBsaXN0IG9mIHBhZ2VzIHRo
YXQgY2FuIGJlIGluc3BlY3RlZCB3aXRoIGEgbGluayB0byBvcGVuIGEgc2Vzc2lvbi4KKyAgICBp
ZiAocGF0aCA9PSAiL3BhZ2VsaXN0Lmpzb24iKSB7CisgICAgICAgIGJ1aWxkUGFnZUxpc3QoZGF0
YSwgY29udGVudFR5cGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQ
b2ludCB0aGUgZGVmYXVsdCBwYXRoIHRvIGEgZm9ybWF0dGVkIHBhZ2UgdGhhdCBxdWVyaWVzIHRo
ZSBwYWdlIGxpc3QgYW5kIGRpc3BsYXkgdGhlbS4KKyAgICBTdHJpbmcgbG9jYWxQYXRoID0gaW5z
cGVjdG9yUmVzb3VyY2VQYXRoKCkgKyAoKHBhdGggPT0gIi8iKSA/IEFTQ0lJTGl0ZXJhbCgiL2lu
c3BlY3RvclBhZ2VJbmRleC5odG1sIikgOiBwYXRoKTsKKworICAgIEZJTEUqIGZpbGVIYW5kbGUg
PSBmb3Blbihsb2NhbFBhdGgudXRmOCgpLmRhdGEoKSwgInIiKTsKKyAgICBpZiAoIWZpbGVIYW5k
bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0Owor
ICAgIGlmIChmc3RhdChmaWxlbm8oZmlsZUhhbmRsZSksICZmaWxlU3RhdCkpIHsKKyAgICAgICAg
ZmNsb3NlKGZpbGVIYW5kbGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
ZGF0YS5ncm93KGZpbGVTdGF0LnN0X3NpemUpOworICAgIGludCBieXRlc1JlYWQgPSBmcmVhZChk
YXRhLmRhdGEoKSwgMSwgZmlsZVN0YXQuc3Rfc2l6ZSwgZmlsZUhhbmRsZSk7CisgICAgZmNsb3Nl
KGZpbGVIYW5kbGUpOworCisgICAgaWYgKGJ5dGVzUmVhZCA8IGZpbGVTdGF0LnN0X3NpemUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBleHRTdGFydCA9IGxvY2FsUGF0aC5y
ZXZlcnNlRmluZCgnLicpOworICAgIFN0cmluZyBleHQgPSBsb2NhbFBhdGguc3Vic3RyaW5nKGV4
dFN0YXJ0ICE9IG5vdEZvdW5kID8gZXh0U3RhcnQgKyAxIDogMCk7CisgICAgY29udGVudFR5cGUg
PSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHQp
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpidWls
ZFBhZ2VMaXN0KFZlY3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKK3sKKyAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJbIik7
CisKKyAgICBDbGllbnRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fY2xpZW50TWFwLmVuZCgpOworICAg
IGZvciAoQ2xpZW50TWFwOjppdGVyYXRvciBpdCA9IG1fY2xpZW50TWFwLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBpdC0+dmFsdWUt
PnBhZ2UoKTsKKyAgICAgICAgaWYgKGl0ICE9IG1fY2xpZW50TWFwLmJlZ2luKCkpCisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgieyBcImlkXCI6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihpdC0+
a2V5KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIFwidGl0bGVcIjogXCIiKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQod2ViUGFnZS0+cGFnZVRpdGxlKCkpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiLCBcInVybFwiOiBcIiIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCh3ZWJQYWdlLT5hY3RpdmVVUkwoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiXCIsIFwiaW5zcGVjdG9yVXJsXCI6IFwiIik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiL2luc3BlY3Rvci5odG1sP3BhZ2U9Iik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TnVtYmVyKGl0LT5rZXkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlwiIH0iKTsK
KyAgICB9CisKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIl0iKTsKKyAgICBDU3RyaW5nIGNs
aWVudExpc3QgPSBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworICAgIGRhdGEuYXBwZW5kKGNs
aWVudExpc3QuZGF0YSgpLCBjbGllbnRMaXN0Lmxlbmd0aCgpKTsKKyAgICBjb250ZW50VHlwZSA9
IFN0cmluZygiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCIsIFN0cmluZzo6Q29uc3Ry
dWN0RnJvbUxpdGVyYWwpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVy
U291cC5jcHAKaW5kZXggZTA5NWJlOTc4ZDFjYTBmYTk0NTA2M2YxNjM2MzgwYWUyZmVlMmUxOS4u
MjhmNGYyMWQ0ZTJiMTAwOWQzMzdlYzU0ZDQ5OTdkOGZhMGJjYmVjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZl
clNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIv
c291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcApAQCAtMzksNyArMzksNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBnYm9vbGVhbiBj
b25uZWN0aW9uQ2FsbGJhY2soR1NvY2tldFNlcnZpY2UqIHNlcnZpY2UsIEdTb2NrZXRDb25uZWN0
aW9uKiBjb25uZWN0aW9uLCBHT2JqZWN0KiBzb3VyY2VPYmplY3QsIFdlYlNvY2tldFNlcnZlciog
c2VydmVyKQorc3RhdGljIGdib29sZWFuIGNvbm5lY3Rpb25DYWxsYmFjayhHU29ja2V0U2Vydmlj
ZSogLypzZXJ2aWNlKi8sIEdTb2NrZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBHT2JqZWN0KiAv
KnNvdXJjZU9iamVjdCovLCBXZWJTb2NrZXRTZXJ2ZXIqIHNlcnZlcikKIHsKICNpZiAhTE9HX0RJ
U0FCTEVECiAgICAgR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4gc29ja2V0QWRkcmVzcyA9IGFkb3B0
R1JlZihnX3NvY2tldF9jb25uZWN0aW9uX2dldF9yZW1vdGVfYWRkcmVzcyhjb25uZWN0aW9uLCAw
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcApp
bmRleCBhM2Q0NzI1YzgxM2I0OGZlODhiNGJkYmUwMzcyYjI5MjMyYmJkMTljLi5jNzFhOTNjMDlk
MTRmYTRjNWNkZjRhNDI1OWZmZWY0ODk2ZWIyOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKQEAgLTI1LDkgKzI1LDExIEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdl
clByb3h5LmgiCi0KICNpbmNsdWRlIDxFZnJlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4K
QEAgLTM1LDYgKzM3LDQ3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgdm9pZCBp
bml0aWFsaXplSW5zcGVjdG9yU2VydmVyKCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZF
UikKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIGlmIChpbml0aWFs
aXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSXQgc2hvdWxkIGJlIHNldCB0byB0cnVl
IGFsd2F5cy4KKyAgICAvLyBCZWNhdXNlIGl0IGlzIHRvIGVuc3VyZSBpbml0aWFsaXplSW5zcGVj
dG9yU2VydmVyKCkgaXMgZXhlY3V0ZWQgb25seSBvbmNlLAorICAgIC8vIGV2ZW4gaWYgdGhlIHNl
cnZlciBmYWlscyB0byBydW4uCisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgU3RyaW5n
IHNlcnZlckFkZHJlc3MoZ2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpKTsKKyAgICBp
ZiAoIXNlcnZlckFkZHJlc3MuaXNOdWxsKCkpIHsKKyAgICAgICAgU3RyaW5nIGJpbmRBZGRyZXNz
ID0gQVNDSUlMaXRlcmFsKCIxMjcuMC4wLjEiKTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9y
dCA9IDI5OTk7CisKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OworICAgICAgICBzZXJ2
ZXJBZGRyZXNzLnNwbGl0KCc6JywgcmVzdWx0KTsKKworICAgICAgICBpZiAocmVzdWx0LnNpemUo
KSA9PSAyKSB7CisgICAgICAgICAgICBiaW5kQWRkcmVzcyA9IHJlc3VsdFswXTsKKyAgICAgICAg
ICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgIHBvcnQgPSByZXN1bHRbMV0udG9VSW50
KCZvayk7CisgICAgICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICAgICAgcG9ydCA9IDI5
OTk7CisgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBwYXJzZSB0aGUgcG9ydC4g
VXNpbmcgMjk5OSBpbnN0ZWFkLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgcGFyc2UgJXMsIHdyb25nIGZvcm1hdD8gVXNp
bmcgMTI3LjAuMC4xOjI5OTkgaW5zdGVhZC4iLCBzZXJ2ZXJBZGRyZXNzLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yU2VydmVyOjpzaGFyZWQoKS5saXN0ZW4oYmlu
ZEFkZHJlc3MsIHBvcnQpKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBzdGFydCBs
aXN0ZW5pbmcgb246IElQIGFkZHJlc3M9JXMsIHBvcnQ9JWQuIiwgYmluZEFkZHJlc3MudXRmOCgp
LmRhdGEoKSwgcG9ydCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhJbnNw
ZWN0b3JTZXJ2ZXIsICJUbyBzdGFydCBpbnNwZWN0b3Igc2VydmVyIHNldCBXRUJLSVRfSU5TUEVD
VE9SX1NFUlZFUiB0byAxMjcuMC4wLjE6Mjk5OSBmb3IgZXhhbXBsZS4iKTsKKyNlbmRpZgorfQor
CiBTdHJpbmcgV2ViQ29udGV4dDo6YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAgICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZWZyZWV0X2NhY2hlX2hvbWVfZ2V0KCkpICsgIi9XZWJL
aXRFZmwvQXBwbGljYXRpb25zIjsKQEAgLTQyLDYgKzg1LDggQEAgU3RyaW5nIFdlYkNvbnRleHQ6
OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogCiB2b2lkIFdlYkNvbnRleHQ6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKKyAgICBpbml0aWFsaXplSW5zcGVjdG9yU2VydmVyKCk7CisKICAgICBwYXJhbWV0
ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkID0gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS0+cmVn
aXN0ZXJlZFVSSVNjaGVtZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvY29u
ZmlnLmggYi9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAppbmRleCBjNDNhNzhmOTQ4MDhkOWRlMjFj
NGNlZDZmMDViNzNjMzBiYzBjZjYxLi5mMDA4NWJlYTdhODU5ZDE5ZmRkMTdhZmZhMDkyMGYwMWUw
ZTAwYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9jb25maWcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9jb25maWcuaApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCB0eXBlJiBu
YW1lKCkgXAogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFKEFSQ0gpIChkZWZpbmVkIFBMVUdJ
Tl9BUkNISVRFQ1RVUkVfIyNBUkNIICYmIFBMVUdJTl9BUkNISVRFQ1RVUkVfIyNBUkNIKQogCiAj
aWZuZGVmIEVOQUJMRV9JTlNQRUNUT1JfU0VSVkVSCi0jaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRG
T1JNKEdUSykKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShF
RkwpCiAjZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfU0VSVkVSIDEKICNlbmRpZgogI2VuZGlmCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTE2Y2YwNWY1YWY0NjEyYmM5
YjQzNTY0MTdlM2Y3ZWVmZDM0YmFlNi4uNTBmOWJkZWRmZGJkYzI0NThmODY1MjBkNWMzZTYzYzA5
MTc1ODkwOSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTEyLTA4ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIEFkZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCisKKyAgICAgICAgUHJlcGFyZSBpbnNwZWN0b3JQYWdl
SW5kZXguaHRtbCBmb3IgcmVtb3RlIHdlYiBpbnNwZWN0b3IuCisKKyAgICAgICAgKiBTb3VyY2Uv
UGxhdGZvcm1FZmwuY21ha2U6CisKIDIwMTItMTItMDYgIFJpY2sgQnllcnMgIDxyYnllcnNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIENTUyBjdXJzb3IgcHJvcGVydHkgc2hvdWxkIHN1cHBvcnQg
d2Via2l0LWltYWdlLXNldAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178354</attachid>
            <date>2012-12-08 08:08:17 -0800</date>
            <delta_ts>2012-12-08 09:17:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98705-20121209010532.patch</filename>
            <type>text/plain</type>
            <size>14901</size>
            <attacher name="Seokju Kwon">seokju</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTkzNTk3NDBmMzQ4Mzk2
MWJlMzg3YWRkMTMyOTFkMTM2N2EwMGMyYi4uZTQ2Mjg2ZjcyMWRkMmRkZmE3ZTUwODA4NzY3YTQ1
MDc5Y2I0MWJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEyLTEyLTA4ICBTZW9r
anUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBSZW1vdGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg3MDUKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0u
CisKKyAgICAgICAgQWRkIFJlbW90ZSBXZWIgSW5zcGVjdG9yIHRvIEVGTCBwb3J0LgorICAgICAg
ICBUaGUgV2ViSW5zcGVjdG9yU2V2ZXIgd2lsbCBiZSBzdGFydGVkIGR1cmluZyBXZWJLaXQgY29u
dGV4dCBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgVGhlIElQIGFkZHJlc3MgYW5kIHBvcnQgbnVt
YmVyIGZvciB0aGUgc2VydmVyIGNhbiBiZSBzZXQgaW4gV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZl
ci5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yU2VydmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oOgorICAgICAgICAoV2ViU29ja2V0U2Vy
dmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0
b3JTZXJ2ZXJFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6Omluc3BlY3RvclJlc291cmNlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JTZXJ2ZXI6OmJ1aWxkUGFnZUxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Y29ubmVjdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkNvbnRl
eHRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplSW5zcGVjdG9yU2VydmVyKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAqIGNvbmZpZy5oOgorCisyMDEyLTEyLTA4
ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KKwogICAgICAgICBSZW1vdmUg
dW51c2VkIGhlYWRlcnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDQyOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm1FZmwuY21ha2UgYi9T
b3VyY2UvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggY2Y1ZTExM2UxMmU0NDlkZWY2MmE5ZjdmZjMz
YmVkM2MzYmNiNmEyNC4uNjUzMmZhYTlhZTJmMzIwMGI0Mjk2YzcxNWJiOGRiNTBlYmU5N2Y0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtNSw2ICs1LDcgQEAgaWYgKEVOQUJMRV9JTlNQRUNUT1IpCiAgICAgICAg
IHdlYi1pbnNwZWN0b3ItcmVzb3VyY2VzIEFMTAogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09N
TUFORH0gLUUgY29weV9kaXJlY3RvcnkgJHtXRUJDT1JFX0RJUn0vaW5zcGVjdG9yL2Zyb250LWVu
ZCAke1dFQl9JTlNQRUNUT1JfRElSfQogICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0g
LUUgY29weSAke1dFQkNPUkVfRElSfS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMg
JHtXRUJfSU5TUEVDVE9SX0RJUn0KKyAgICAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1F
IGNvcHkgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9mcm9udC1lbmQv
aW5zcGVjdG9yUGFnZUluZGV4Lmh0bWwgJHtXRUJfSU5TUEVDVE9SX0RJUn0KICAgICAgICAgQ09N
TUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGNvcHkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0luc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyAke1dFQl9JTlNQRUNUT1JfRElSfQogICAg
ICAgICBERVBFTkRTICR7V2ViQ29yZV9MSUJSQVJZX05BTUV9CiAgICAgICAgIFdPUktJTkdfRElS
RUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggOGYzYjZm
OTNjMGQ4N2QxYmQ1YzQxMDQ0MmQ2ZDNlMTYxZGM4MzBlMC4uODNiNmVlYmQyNjA4ZDI5OTM3NjNk
YmJjOWI3YWNkZmUzZDMyYWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE4LDYgKzE4LDcg
QEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQXV0aGVudGljYXRpb24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvRG93bmxv
YWRzIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyIgogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvTGF1bmNoZXIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
UGx1Z2lucyIKQEAgLTYwLDYgKzYxLDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke1dFQkNPUkVfRElSfS9kb20iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbS9kZWZh
dWx0IgogICAgICIke1dFQkNPUkVfRElSfS9lZGl0aW5nIgorICAgICIke1dFQkNPUkVfRElSfS9m
aWxlYXBpIgogICAgICIke1dFQkNPUkVfRElSfS9oaXN0b3J5IgogICAgICIke1dFQkNPUkVfRElS
fS9odG1sIgogICAgICIke1dFQkNPUkVfRElSfS9odG1sL3NoYWRvdyIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UKaW5kZXggNWIyMzg4ZDAwMDJkMWNkZTg0NDFhNzE0NzIxYjZjZTNkOGMzMDRlNS4u
YjM3MTZkZWEwMTljNDhmOGMzY2RiNGIzMDdhYWE1ZWFlNjQxYWUwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTEwNiw2ICsxMDYsOSBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcAogCisgICAgVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcAorCiAgICAgVUlQcm9jZXNzL3Nv
dXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJT
b3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL3NvdXAvV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCA1ZGQ4
N2Y1NGFmNjQzYjNmNDM2MTk5M2NjNmJiNzAwNGIyNDNhMmQ2Li4xMjRjNDZmZjI3NzQ1Y2NjN2Ew
N2FiZjYxYjQ0YjUzNGU2Mjk4NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRD
b25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qKTsKIAogICAgIGJvb2wgcGxhdGZv
cm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBWZWN0b3I8Y2hhcj4mIGRhdGEs
IFN0cmluZyYgY29udGVudFR5cGUpOwotI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShHVEsp
CisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQogICAg
IHZvaWQgYnVpbGRQYWdlTGlzdChWZWN0b3I8Y2hhcj4mIGRhdGEsIFN0cmluZyYgY29udGVudFR5
cGUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlci5oCmluZGV4IDgwNDA1YzZlOTdmMzZjNjI2
YzE1MGU4NTIzZTJhMjUwNDE0ZTk3NmIuLjY4ZWQ2NGY3Yzk2NjkzYWEyMjUzMDkxZWZjMzBiZDlh
ODgyMWE5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvV2ViU29ja2V0U2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXIuaApAQCAtMjksMTUgKzI5LDE0IEBACiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIAotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRl
IDxnaW8vZ2lvLmg+Ci0jZW5kaWYKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUg
PHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNlbmRpZgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgUExBVEZPUk0oUVQpCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcg
KzgzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBzaG9ydCBtX3BvcnQ7CiAjaWYgUExBVEZP
Uk0oUVQpCiAgICAgT3duUHRyPFF0VGNwU2VydmVySGFuZGxlcj4gbV90Y3BTZXJ2ZXJIYW5kbGVy
OwotI2VsaWYgUExBVEZPUk0oR1RLKQorI2VsaWYgVVNFKFNPVVApCiAgICAgR1JlZlB0cjxHU29j
a2V0U2VydmljZT4gbV9zb2NrZXRTZXJ2aWNlOwogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2Vy
dmVyRWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjEzMmM1NDgwMzk2YmZmZWMxYWU0YzEyNGM3OTdkMDcy
YWEwZWNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcApAQCAtMCwwICsxLDExMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTZW9ranUgS3dvbiAoc2Vva2p1Lmt3b25AZ21h
aWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yU2VydmVyLmgiCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgor
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdp
c3RyeS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitz
dGF0aWMgU3RyaW5nIGluc3BlY3RvclJlc291cmNlUGF0aCgpCit7CisgICAgU3RyaW5nIGluc3Bl
Y3RvckZpbGVzUGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoV0VCX0lOU1BFQ1RPUl9JTlNUQUxMX0RJ
Uik7CisgICAgaWYgKGFjY2VzcyhpbnNwZWN0b3JGaWxlc1BhdGgudXRmOCgpLmRhdGEoKSwgUl9P
SykpCisgICAgICAgIGluc3BlY3RvckZpbGVzUGF0aCA9IFN0cmluZzo6ZnJvbVVURjgoV0VCX0lO
U1BFQ1RPUl9ESVIpOworCisgICAgcmV0dXJuIGluc3BlY3RvckZpbGVzUGF0aDsKK30KKworYm9v
bCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnBsYXRmb3JtUmVzb3VyY2VGb3JQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgVmVjdG9yPGNoYXI+JiBkYXRhLCBTdHJpbmcmIGNvbnRlbnRUeXBlKQoreworICAg
IC8vIFRoZSBwYWdlIGxpc3QgY29udGFpbnMgYW4gdW5mb3JtYXRlZCBsaXN0IG9mIHBhZ2VzIHRo
YXQgY2FuIGJlIGluc3BlY3RlZCB3aXRoIGEgbGluayB0byBvcGVuIGEgc2Vzc2lvbi4KKyAgICBp
ZiAocGF0aCA9PSAiL3BhZ2VsaXN0Lmpzb24iKSB7CisgICAgICAgIGJ1aWxkUGFnZUxpc3QoZGF0
YSwgY29udGVudFR5cGUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQ
b2ludCB0aGUgZGVmYXVsdCBwYXRoIHRvIGEgZm9ybWF0dGVkIHBhZ2UgdGhhdCBxdWVyaWVzIHRo
ZSBwYWdlIGxpc3QgYW5kIGRpc3BsYXkgdGhlbS4KKyAgICBTdHJpbmcgbG9jYWxQYXRoID0gaW5z
cGVjdG9yUmVzb3VyY2VQYXRoKCkgKyAoKHBhdGggPT0gIi8iKSA/IEFTQ0lJTGl0ZXJhbCgiL2lu
c3BlY3RvclBhZ2VJbmRleC5odG1sIikgOiBwYXRoKTsKKworICAgIEZJTEUqIGZpbGVIYW5kbGUg
PSBmb3Blbihsb2NhbFBhdGgudXRmOCgpLmRhdGEoKSwgInIiKTsKKyAgICBpZiAoIWZpbGVIYW5k
bGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0Owor
ICAgIGlmIChmc3RhdChmaWxlbm8oZmlsZUhhbmRsZSksICZmaWxlU3RhdCkpIHsKKyAgICAgICAg
ZmNsb3NlKGZpbGVIYW5kbGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
ZGF0YS5ncm93KGZpbGVTdGF0LnN0X3NpemUpOworICAgIGludCBieXRlc1JlYWQgPSBmcmVhZChk
YXRhLmRhdGEoKSwgMSwgZmlsZVN0YXQuc3Rfc2l6ZSwgZmlsZUhhbmRsZSk7CisgICAgZmNsb3Nl
KGZpbGVIYW5kbGUpOworCisgICAgaWYgKGJ5dGVzUmVhZCA8IGZpbGVTdGF0LnN0X3NpemUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBleHRTdGFydCA9IGxvY2FsUGF0aC5y
ZXZlcnNlRmluZCgnLicpOworICAgIGlmIChleHRTdGFydCA9PSBub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGV4dCA9IGxvY2FsUGF0aC5zdWJzdHJpbmcoZXh0
U3RhcnQgKyAxKTsKKyAgICBpZiAoZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgY29udGVudFR5cGUgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1F
VHlwZUZvckV4dGVuc2lvbihleHQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yU2VydmVyOjpidWlsZFBhZ2VMaXN0KFZlY3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5n
JiBjb250ZW50VHlwZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5hcHBlbmQoJ1snKTsKKworICAgIENsaWVudE1hcDo6aXRlcmF0b3IgZW5kID0gbV9jbGllbnRN
YXAuZW5kKCk7CisgICAgZm9yIChDbGllbnRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9jbGllbnRNYXAu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFdlYlBhZ2VQcm94eSogd2ViUGFn
ZSA9IGl0LT52YWx1ZS0+cGFnZSgpOworICAgICAgICBpZiAoaXQgIT0gbV9jbGllbnRNYXAuYmVn
aW4oKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7IFwiaWRcIjogIik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKGl0LT5rZXkpOworICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgXCJ0
aXRsZVwiOiBcIiIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCh3ZWJQYWdlLT5wYWdlVGl0bGUo
KSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXCIsIFwidXJsXCI6IFwiIik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHdlYlBhZ2UtPmFjdGl2ZVVSTCgpKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJcIiwgXCJpbnNwZWN0b3JVcmxcIjogXCIiKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIvaW5zcGVjdG9yLmh0bWw/cGFnZT0iKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmROdW1iZXIoaXQtPmtleSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiXCIgfSIpOworICAgIH0KKworICAgIGJ1aWxkZXIuYXBwZW5kKCddJyk7CisgICAgQ1N0
cmluZyBjbGllbnRMaXN0ID0gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKKyAgICBkYXRhLmFw
cGVuZChjbGllbnRMaXN0LmRhdGEoKSwgY2xpZW50TGlzdC5sZW5ndGgoKSk7CisgICAgY29udGVu
dFR5cGUgPSBTdHJpbmcoImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgiLCBTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZlclNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tl
dFNlcnZlclNvdXAuY3BwCmluZGV4IGUwOTViZTk3OGQxY2EwZmE5NDUwNjNmMTYzNjM4MGFlMmZl
ZTJlMTkuLjI4ZjRmMjFkNGUyYjEwMDlkMzM3ZWM1NGQ0OTk3ZDhmYTBiY2JlYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2Nr
ZXRTZXJ2ZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgZ2Jv
b2xlYW4gY29ubmVjdGlvbkNhbGxiYWNrKEdTb2NrZXRTZXJ2aWNlKiBzZXJ2aWNlLCBHU29ja2V0
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgR09iamVjdCogc291cmNlT2JqZWN0LCBXZWJTb2NrZXRT
ZXJ2ZXIqIHNlcnZlcikKK3N0YXRpYyBnYm9vbGVhbiBjb25uZWN0aW9uQ2FsbGJhY2soR1NvY2tl
dFNlcnZpY2UqIC8qc2VydmljZSovLCBHU29ja2V0Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgR09i
amVjdCogLypzb3VyY2VPYmplY3QqLywgV2ViU29ja2V0U2VydmVyKiBzZXJ2ZXIpCiB7CiAjaWYg
IUxPR19ESVNBQkxFRAogICAgIEdSZWZQdHI8R1NvY2tldEFkZHJlc3M+IHNvY2tldEFkZHJlc3Mg
PSBhZG9wdEdSZWYoZ19zb2NrZXRfY29ubmVjdGlvbl9nZXRfcmVtb3RlX2FkZHJlc3MoY29ubmVj
dGlvbiwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJD
b250ZXh0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVm
bC5jcHAKaW5kZXggYTNkNDcyNWM4MTNiNDhmZTg4YjRiZGJlMDM3MmIyOTIzMmJiZDE5Yy4uYzcx
YTkzYzA5ZDE0ZmE0YzVjZGY0YTQyNTlmZmVmNDg5NmViMjhjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCkBAIC0yNSw5ICsyNSwxMSBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eS5oIgotCiAjaW5jbHVkZSA8RWZyZWV0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFi
YXNlLmg+CkBAIC0zNSw2ICszNyw0NyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZUluc3BlY3RvclNlcnZlcigpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9TRVJWRVIpCisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAo
aW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEl0IHNob3VsZCBiZSBzZXQg
dG8gdHJ1ZSBhbHdheXMuCisgICAgLy8gQmVjYXVzZSBpdCBpcyB0byBlbnN1cmUgaW5pdGlhbGl6
ZUluc3BlY3RvclNlcnZlcigpIGlzIGV4ZWN1dGVkIG9ubHkgb25jZSwKKyAgICAvLyBldmVuIGlm
IHRoZSBzZXJ2ZXIgZmFpbHMgdG8gcnVuLgorICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAg
IFN0cmluZyBzZXJ2ZXJBZGRyZXNzKGdldGVudigiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSk7
CisgICAgaWYgKCFzZXJ2ZXJBZGRyZXNzLmlzTnVsbCgpKSB7CisgICAgICAgIFN0cmluZyBiaW5k
QWRkcmVzcyA9IEFTQ0lJTGl0ZXJhbCgiMTI3LjAuMC4xIik7CisgICAgICAgIHVuc2lnbmVkIHNo
b3J0IHBvcnQgPSAyOTk5OworCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAg
ICAgc2VydmVyQWRkcmVzcy5zcGxpdCgnOicsIHJlc3VsdCk7CisKKyAgICAgICAgaWYgKHJlc3Vs
dC5zaXplKCkgPT0gMikgeworICAgICAgICAgICAgYmluZEFkZHJlc3MgPSByZXN1bHRbMF07Cisg
ICAgICAgICAgICBib29sIG9rID0gZmFsc2U7CisgICAgICAgICAgICBwb3J0ID0gcmVzdWx0WzFd
LnRvVUludCgmb2spOworICAgICAgICAgICAgaWYgKCFvaykgeworICAgICAgICAgICAgICAgIHBv
cnQgPSAyOTk5OworICAgICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgcGFyc2UgdGhl
IHBvcnQuIFVzaW5nIDI5OTkgaW5zdGVhZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlICVzLCB3cm9uZyBmb3Jt
YXQ/IFVzaW5nIDEyNy4wLjAuMToyOTk5IGluc3RlYWQuIiwgc2VydmVyQWRkcmVzcy51dGY4KCku
ZGF0YSgpKTsKKworICAgICAgICBpZiAoIVdlYkluc3BlY3RvclNlcnZlcjo6c2hhcmVkKCkubGlz
dGVuKGJpbmRBZGRyZXNzLCBwb3J0KSkKKyAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3Qg
c3RhcnQgbGlzdGVuaW5nIG9uOiBJUCBhZGRyZXNzPSVzLCBwb3J0PSVkLiIsIGJpbmRBZGRyZXNz
LnV0ZjgoKS5kYXRhKCksIHBvcnQpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBM
T0coSW5zcGVjdG9yU2VydmVyLCAiVG8gc3RhcnQgaW5zcGVjdG9yIHNlcnZlciBzZXQgV0VCS0lU
X0lOU1BFQ1RPUl9TRVJWRVIgdG8gMTI3LjAuMC4xOjI5OTkgZm9yIGV4YW1wbGUuIik7CisjZW5k
aWYKK30KKwogU3RyaW5nIFdlYkNvbnRleHQ6OmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQog
ewogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9jYWNoZV9ob21lX2dldCgpKSAr
ICIvV2ViS2l0RWZsL0FwcGxpY2F0aW9ucyI7CkBAIC00Miw2ICs4NSw4IEBAIFN0cmluZyBXZWJD
b250ZXh0OjphcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIAogdm9pZCBXZWJDb250ZXh0Ojpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiB7CisgICAgaW5pdGlhbGl6ZUluc3BlY3RvclNlcnZlcigpOworCiAgICAg
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZCA9IG1fc291cFJlcXVlc3RNYW5hZ2VyUHJv
eHktPnJlZ2lzdGVyZWRVUklTY2hlbWVzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL2NvbmZpZy5oIGIvU291cmNlL1dlYktpdDIvY29uZmlnLmgKaW5kZXggYzQzYTc4Zjk0ODA4
ZDlkZTIxYzRjZWQ2ZjA1YjczYzMwYmMwY2Y2MS4uZjAwODViZWE3YTg1OWQxOWZkZDE3YWZmYTA5
MjBmMDFlMGUwMGM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvY29uZmlnLmgKKysrIGIv
U291cmNlL1dlYktpdDIvY29uZmlnLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgY29uc3Qg
dHlwZSYgbmFtZSgpIFwKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRShBUkNIKSAoZGVmaW5l
ZCBQTFVHSU5fQVJDSElURUNUVVJFXyMjQVJDSCAmJiBQTFVHSU5fQVJDSElURUNUVVJFXyMjQVJD
SCkKIAogI2lmbmRlZiBFTkFCTEVfSU5TUEVDVE9SX1NFUlZFUgotI2lmIFBMQVRGT1JNKFFUKSB8
fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oRUZMKQogI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX1NFUlZFUiAxCiAjZW5kaWYKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDExNmNmMDVmNWFm
NDYxMmJjOWI0MzU2NDE3ZTNmN2VlZmQzNGJhZTYuLjUwZjliZGVkZmRiZGMyNDU4Zjg2NTIwZDVj
M2U2M2MwOTE3NTg5MDkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0xMi0wOCAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBBZGQgUmVtb3RlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NzA1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAgIFByZXBhcmUgaW5zcGVj
dG9yUGFnZUluZGV4Lmh0bWwgZm9yIHJlbW90ZSB3ZWIgaW5zcGVjdG9yLgorCisgICAgICAgICog
U291cmNlL1BsYXRmb3JtRWZsLmNtYWtlOgorCiAyMDEyLTEyLTA2ICBSaWNrIEJ5ZXJzICA8cmJ5
ZXJzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDU1MgY3Vyc29yIHByb3BlcnR5IHNob3VsZCBz
dXBwb3J0IHdlYmtpdC1pbWFnZS1zZXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>