<?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>91957</bug_id>
          
          <creation_ts>2012-07-22 21:26:37 -0700</creation_ts>
          <short_desc>[EFL] Add File Chooser API</short_desc>
          <delta_ts>2012-07-25 03:01:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>91956</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kihong Kwon">kihong.kwon</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>sw0524.lee</cc>
    
    <cc>vimff0</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>675432</commentid>
    <comment_count>0</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-22 21:26:37 -0700</bug_when>
    <thetext>Currently on run_open_panel to open file dialog, there is no way to get attributes of FileChooserSettings except allowsMultipleFiles and acceptMIMETypes.
But we need to other attributes to open well designed file dialog, in addition we need to get the capture attribute to support HTML media capture.
Therefore I would like to add File Chooser Settings API to the EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675489</commentid>
    <comment_count>1</comment_count>
      <attachid>153743</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-23 00:30:41 -0700</bug_when>
    <thetext>Created attachment 153743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675495</commentid>
    <comment_count>2</comment_count>
      <attachid>153743</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-23 00:46:22 -0700</bug_when>
    <thetext>Comment on attachment 153743
Patch

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

I would like to know how many test cases can be covered by this patch.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:52
&gt; +Eina_Bool ewk_file_chooser_settings_allows_directory_upload_get(const Ewk_File_Chooser_Settings *settings)

Nit : Move &apos;*&apos; to data type side.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:68
&gt; +    for (unsigned i = 0; i &lt; acceptMIMETypes.size(); i++) {

WebKit prefers to use ++i.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:82
&gt; +    for (unsigned i = 0; i &lt; acceptFileExtensions.size(); i++) {

ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:32
&gt; + * We can use these attributes by file chooser settings APIs.

I think &quot;We can use these&quot; is not proper API description.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:33
&gt; + *

Nit : Unneeded line.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:114
&gt; +EAPI const char *ewk_file_chooser_settings_capture_get(const Ewk_File_Chooser_Settings* s);

Nit : Move &apos;*&apos; to variable side.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings_private.h:29
&gt; +void ewk_file_chooser_settings_free(Ewk_File_Chooser_Settings *o);

Nit : Do not abbreviation in internal functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675505</commentid>
    <comment_count>3</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-23 00:55:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 153743 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153743&amp;action=review

Thank you. I will update patch. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675506</commentid>
    <comment_count>4</comment_count>
      <attachid>153747</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-23 00:56:59 -0700</bug_when>
    <thetext>Created attachment 153747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675528</commentid>
    <comment_count>5</comment_count>
      <attachid>153747</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-23 01:19:34 -0700</bug_when>
    <thetext>Comment on attachment 153747
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:64
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(settings, 0);

I think you need to mention this API can return NULL in API description.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:68
&gt; +    for (unsigned i = 0; i &lt; acceptMIMETypes.size(); ++i) {

It looks below code is more clear than this.

http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_intent.cpp#L107

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:78
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(settings, 0);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:92
&gt; +    EINA_SAFETY_ON_NULL_RETURN_VAL(settings, 0);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:118
&gt; +        , eina_stringshare_add(settings-&gt;fileChooserSettings-&gt;capture.utf8().data()

Please adhere indentation.

See also below,
http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_intent.cpp#L93</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675583</commentid>
    <comment_count>6</comment_count>
      <attachid>153765</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-23 03:33:18 -0700</bug_when>
    <thetext>Created attachment 153765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675594</commentid>
    <comment_count>7</comment_count>
      <attachid>153765</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-23 03:53:43 -0700</bug_when>
    <thetext>Comment on attachment 153765
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:67
&gt; +        mimetypes = eina_list_append(mimetypes, eina_stringshare_add((*it).utf8().data()));

I think it is good to use strdup(). Then, update API description.

See also : http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_intent.h#L50

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:79
&gt; +        fileExtentions = eina_list_append(fileExtentions, eina_stringshare_add((*it).utf8().data()));

ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:91
&gt; +        files = eina_list_append(files, eina_stringshare_add((*it).utf8().data()));

ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:110
&gt; + * @return One of these string &quot;camera&quot;, &quot;camcorder&quot;, &quot;microphone&quot; or &quot;filesystem&quot; or @c NULL if there is not a proper file chooser settings scheme

Use lower case. s/One/one/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675600</commentid>
    <comment_count>8</comment_count>
      <attachid>153770</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-23 04:02:45 -0700</bug_when>
    <thetext>Created attachment 153770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675609</commentid>
    <comment_count>9</comment_count>
      <attachid>153770</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-23 04:20:33 -0700</bug_when>
    <thetext>Comment on attachment 153770
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:74
&gt; + * @return list of accepted mimetypes or @c NULL if there is not a proper file chooser settings scheme

I think you need to add more description for Eina_List. Please refer below description.

http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_intent.h#L80

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:85
&gt; + * @return list of accepted file extentions or @c NULL if there is not a proper file chooser settings scheme

ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:99
&gt; + * @return list of selected file names or @c NULL if there is not a proper file chooser settings scheme

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675649</commentid>
    <comment_count>10</comment_count>
      <attachid>153784</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-23 05:33:38 -0700</bug_when>
    <thetext>Created attachment 153784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676331</commentid>
    <comment_count>11</comment_count>
      <attachid>153784</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-23 19:33:59 -0700</bug_when>
    <thetext>Comment on attachment 153784
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:108
&gt; +

Remove unneeded line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676346</commentid>
    <comment_count>12</comment_count>
      <attachid>153943</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-23 20:02:01 -0700</bug_when>
    <thetext>Created attachment 153943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676426</commentid>
    <comment_count>13</comment_count>
      <attachid>153943</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-23 23:27:25 -0700</bug_when>
    <thetext>Comment on attachment 153943
Patch

Almost looks good to me now. But, It seems to me ewk_file_chooser_settings.h | .cpp are not proper file name. Because this files support to get file extension, mimetypes and selected file as well as APIs related to settings. So, I think ewk_file_chooser.h | .cpp is more better or ewk_file_chooser_request.h | cpp as GTK port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676431</commentid>
    <comment_count>14</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-23 23:35:41 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 153943 [details])
&gt; Almost looks good to me now. But, It seems to me ewk_file_chooser_settings.h | .cpp are not proper file name. Because this files support to get file extension, mimetypes and selected file as well as APIs related to settings. So, I think ewk_file_chooser.h | .cpp is more better or ewk_file_chooser_request.h | cpp as GTK port.

I agree.
I will change to ewk_file_chooser.
It could be used more general for the file chooser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676440</commentid>
    <comment_count>15</comment_count>
      <attachid>153943</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-23 23:54:58 -0700</bug_when>
    <thetext>Comment on attachment 153943
Patch

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

Stupid question: How is the client support to use this API? Both the constructor and destructor are private and the patch does not introduce any where to retrieve the Ewk_File_Choose_Settings from somewhere else. In itself, the patch seems to add code but no real functionality. Am I missing something?

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:28
&gt; +    const WebCore::FileChooserSettings&amp; fileChooserSettings;

I&apos;m not sure why we use a const reference here.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:30
&gt; +    const char* capture;

Missing destructor with eina_stringshare_del() for capture.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:34
&gt; +    _Ewk_File_Chooser_Settings(const WebCore::FileChooserSettings&amp; settings , const char* captureString)

Extra space before comma.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:37
&gt; +#else

I don&apos;t like duplicating the constructor with a #ifdef here.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:65
&gt; +    Vector&lt;WTF::String&gt;::const_iterator it = settings-&gt;fileChooserSettings.acceptMIMETypes.begin();

As per coding style, you should avoid using iterators and use indexes instead.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:67
&gt; +        mimetypes = eina_list_append(mimetypes, strdup((*it).utf8().data()));

I thought we prefered to use eina_stringshare in EFL port.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:78
&gt; +    for (; it != settings-&gt;fileChooserSettings.acceptFileExtensions.end(); ++it)

Ditto (iterators vs indexes)

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:79
&gt; +        fileExtentions = eina_list_append(fileExtentions, strdup((*it).utf8().data()));

Ditto (stringsharing)

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:90
&gt; +    for (; it != settings-&gt;fileChooserSettings.selectedFiles.end(); ++it)

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:91
&gt; +        files = eina_list_append(files, strdup((*it).utf8().data()));

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:109
&gt; +    return new Ewk_File_Chooser_Settings(coreSettings, eina_stringshare_add(settings-&gt;fileChooserSettings-&gt;capture.utf8().data()));

&quot;settings&quot; -&gt; &quot;coreSettings&quot; ?

Also since you get capture from coreSettings. I suggest having only 1 argument to the constructor and do the eina_stringshare_add() from inside the constructor implementation. This will also avoid duplicating the constructor with a #ifdef.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:118
&gt; +    eina_stringshare_del(settings-&gt;capture);

Please move this to the destructor.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:43
&gt; +typedef struct _Ewk_File_Chooser_Settings Ewk_File_Chooser_Settings;

Missing documentation.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:52
&gt; + * @return @c EINA_TRUE on support multiple files or @c EINA_FALSE on not support

&quot;on not support&quot; -&gt; &quot;otherwise&quot;.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:63
&gt; + * @return @c EINA_TRUE on support directory upload or @c EINA_FALSE on not support

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:107
&gt; + * @return one of these string &quot;camera&quot;, &quot;camcorder&quot;, &quot;microphone&quot; 

If the values are predetermined, why not use an enumeration instead? That would be much better for the clients.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings_private.h:23
&gt; +// forward declarations

This comment is not really useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676462</commentid>
    <comment_count>16</comment_count>
      <attachid>153943</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-24 00:27:46 -0700</bug_when>
    <thetext>Comment on attachment 153943
Patch

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

&gt;&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:37
&gt;&gt; +#else
&gt; 
&gt; I don&apos;t like duplicating the constructor with a #ifdef here.

Yes, it is good to make new constructor.

&gt;&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:67
&gt;&gt; +        mimetypes = eina_list_append(mimetypes, strdup((*it).utf8().data()));
&gt; 
&gt; I thought we prefered to use eina_stringshare in EFL port.

IIRC, ewk_intext.cpp was landed by you. If so, let&apos;s change this one in new bug.

http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_intent.cpp#L109

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:106
&gt; +Ewk_File_Chooser_Settings* ewk_file_chooser_settings_new(const WebCore::FileChooserSettings&amp; coreSettings)

I think this API doesn&apos;t need to have coreSettings. It is just enough to have *setting*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676482</commentid>
    <comment_count>17</comment_count>
      <attachid>153943</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-24 00:58:43 -0700</bug_when>
    <thetext>Comment on attachment 153943
Patch

Set r- because of many comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676501</commentid>
    <comment_count>18</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-24 01:18:47 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 153943 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153943&amp;action=review
&gt; 
&gt; Stupid question: How is the client support to use this API? Both the constructor and destructor are private and the patch does not introduce any where to retrieve the Ewk_File_Choose_Settings from somewhere else. In itself, the patch seems to add code but no real functionality. Am I missing something?

Client can access this by run_open_panel to get attribute of panel.

&gt; &gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:65
&gt; &gt; +    Vector&lt;WTF::String&gt;::const_iterator it = settings-&gt;fileChooserSettings.acceptMIMETypes.begin();
&gt; 
&gt; As per coding style, you should avoid using iterators and use indexes instead.
&gt; 

I didn&apos;t know about that, could you show me the url of guide?

&gt; &gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:67
&gt; &gt; +        mimetypes = eina_list_append(mimetypes, strdup((*it).utf8().data()));
&gt; 
&gt; I thought we prefered to use eina_stringshare in EFL port.
&gt; 

I agree. but we need to change strdup to eina_string_share in the ewk_intent like gyuyoung said.

&gt; &gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.h:107
&gt; &gt; + * @return one of these string &quot;camera&quot;, &quot;camcorder&quot;, &quot;microphone&quot; 
&gt; 
&gt; If the values are predetermined, why not use an enumeration instead? That would be much better for the clients.

I agree.

Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676509</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-24 01:26:24 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 153943 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153943&amp;action=review
&gt; &gt; 
&gt; &gt; Stupid question: How is the client support to use this API? Both the constructor and destructor are private and the patch does not introduce any where to retrieve the Ewk_File_Choose_Settings from somewhere else. In itself, the patch seems to add code but no real functionality. Am I missing something?
&gt; 
&gt; Client can access this by run_open_panel to get attribute of panel.

ewk_view_run_open_panel() is private as well. If you mean the run_open_panel callback on the Ewk_View, then I still don&apos;t get it because the definition looks like this:

Eina_Bool (*run_open_panel)(Ewk_View_Smart_Data *sd, Evas_Object *frame, Eina_Bool allows_multiple_files, Eina_List *accept_types, Eina_List **selected_filenames);

It does not use Ewk_File_Choose_Settings and your patch does not seem to make it use it either.

&gt; 
&gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:65
&gt; &gt; &gt; +    Vector&lt;WTF::String&gt;::const_iterator it = settings-&gt;fileChooserSettings.acceptMIMETypes.begin();
&gt; &gt; 
&gt; &gt; As per coding style, you should avoid using iterators and use indexes instead.
&gt; &gt; 
&gt; 
&gt; I didn&apos;t know about that, could you show me the url of guide?

http://www.webkit.org/coding/coding-style.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676542</commentid>
    <comment_count>20</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-24 02:08:29 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; (From update of attachment 153943 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153943&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Stupid question: How is the client support to use this API? Both the constructor and destructor are private and the patch does not introduce any where to retrieve the Ewk_File_Choose_Settings from somewhere else. In itself, the patch seems to add code but no real functionality. Am I missing something?
&gt; &gt; 
&gt; &gt; Client can access this by run_open_panel to get attribute of panel.
&gt; 
&gt; ewk_view_run_open_panel() is private as well. If you mean the run_open_panel callback on the Ewk_View, then I still don&apos;t get it because the definition looks like this:
&gt; 
&gt; Eina_Bool (*run_open_panel)(Ewk_View_Smart_Data *sd, Evas_Object *frame, Eina_Bool allows_multiple_files, Eina_List *accept_types, Eina_List **selected_filenames);
&gt; 
&gt; It does not use Ewk_File_Choose_Settings and your patch does not seem to make it use it either.

I would like to change prototype of run_open_panel. That is not enough to use file open dialog.(bug 91956)

&gt; 
&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_file_chooser_settings.cpp:65
&gt; &gt; &gt; &gt; +    Vector&lt;WTF::String&gt;::const_iterator it = settings-&gt;fileChooserSettings.acceptMIMETypes.begin();
&gt; &gt; &gt; 
&gt; &gt; &gt; As per coding style, you should avoid using iterators and use indexes instead.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I didn&apos;t know about that, could you show me the url of guide?
&gt; 
&gt; http://www.webkit.org/coding/coding-style.html

Thanks. I forgot them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676618</commentid>
    <comment_count>21</comment_count>
      <attachid>154009</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-24 03:46:43 -0700</bug_when>
    <thetext>Created attachment 154009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677497</commentid>
    <comment_count>22</comment_count>
      <attachid>154009</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-24 18:47:09 -0700</bug_when>
    <thetext>Comment on attachment 154009
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_file_chooser.h:86
&gt; + *         the Eina_List and its items should be freed after use (use free() to free the items)

I would recommend to mention eina_stringshare_del().

For example,
the Eina_List and its items should be freed after use. Use eina_stringshare_del()
to free the items.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser.h:96
&gt; + *         the Eina_List and its items should be freed after use (use free() to free the items)

ditto.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser.h:109
&gt; + *         the Eina_List and its items should be freed after use (use free() to free the items)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677511</commentid>
    <comment_count>23</comment_count>
      <attachid>154220</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-24 19:03:00 -0700</bug_when>
    <thetext>Created attachment 154220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677531</commentid>
    <comment_count>24</comment_count>
      <attachid>154220</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-24 19:26:46 -0700</bug_when>
    <thetext>Comment on attachment 154220
Patch

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

When you submit modified patch, please take a look this patch further. In addition, please run layout test as well. I don&apos;t like too long bug review thread.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser.cpp:90
&gt; +    if (capture == &quot;camera&quot;)

If possible, follow enum type definition order.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser.cpp:99
&gt; +    return EWK_FILE_CHOOSER_CAPTURE_TYPE_FILESYSTEM;

I wonder if this patch can guarantee that capture only has camera, camcorder, microphone and file system.

If not so, you have to modify this as below,

if (capture == &quot;filesystem&quot;)
    return EWK_FILE_CHOOSER_CAPTURE_TYPE_FILESYSTEM;

return EWK_FILE_CHOOSER_CAPTURE_TYPE_INVALID;

&gt; Source/WebKit/efl/ewk/ewk_file_chooser.cpp:112
&gt; +void ewk_file_chooser_free(Ewk_File_Chooser* ewkFileChooser)

Other functions are using just *chooser*. Keep to be consistent with other functions.

&gt; Source/WebKit/efl/ewk/ewk_file_chooser.h:112
&gt; + *         (use eina_stringshare_del() to free the items)

I think you don&apos;t need to use ( ). See also below comment.

http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_intent.h#L80

I will not use (..) in my next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677541</commentid>
    <comment_count>25</comment_count>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-24 19:51:41 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 154220 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154220&amp;action=review
&gt; 
&gt; When you submit modified patch, please take a look this patch further. In addition, please run layout test as well. I don&apos;t like too long bug review thread.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_file_chooser.cpp:90
&gt; &gt; +    if (capture == &quot;camera&quot;)
&gt; 
&gt; If possible, follow enum type definition order.

I think ordering is right.
filesystem is a basic type of capture attribute.
That&apos;s why, I let filesystem in the first of enum.
And use that for defalut return value.

http://trac.webkit.org/browser/trunk/Source/WebCore/html/HTMLInputElement.cpp#L1723

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_file_chooser.cpp:99
&gt; &gt; +    return EWK_FILE_CHOOSER_CAPTURE_TYPE_FILESYSTEM;
&gt; 
&gt; I wonder if this patch can guarantee that capture only has camera, camcorder, microphone and file system.
&gt; 
&gt; If not so, you have to modify this as below,

As you can see in the WebCore, http://trac.webkit.org/browser/trunk/Source/WebCore/html/HTMLInputElement.cpp#L1723
If there is not a valid value, input element works with &quot;filesystem&quot;.

So, EWK_FILE_CHOOSER_CAPTURE_TYPE_INVALID is only used when Ewk_File_Chooser pointer or capture attribute is invalid.
Therefore I think current implementation is right.

&gt; 
&gt; if (capture == &quot;filesystem&quot;)
&gt;     return EWK_FILE_CHOOSER_CAPTURE_TYPE_FILESYSTEM;
&gt; 
&gt; return EWK_FILE_CHOOSER_CAPTURE_TYPE_INVALID;
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_file_chooser.cpp:112
&gt; &gt; +void ewk_file_chooser_free(Ewk_File_Chooser* ewkFileChooser)
&gt; 
&gt; Other functions are using just *chooser*. Keep to be consistent with other functions.

OK.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_file_chooser.h:112
&gt; &gt; + *         (use eina_stringshare_del() to free the items)
&gt; 
&gt; I think you don&apos;t need to use ( ). See also below comment.
&gt; 
&gt; http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_intent.h#L80
&gt; 
&gt; I will not use (..) in my next patch.

No problem. 
but I wonder which one is right? &quot;Use...&quot; like a ewk_intest.h or &quot;use...&quot;.
I thought we don&apos;t use capital letter with @return.
But, you didn&apos;t mention about that.

Thanks gyuyoung.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677641</commentid>
    <comment_count>26</comment_count>
      <attachid>154220</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-24 22:37:06 -0700</bug_when>
    <thetext>Comment on attachment 154220
Patch

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

&gt;&gt;&gt; Source/WebKit/efl/ewk/ewk_file_chooser.cpp:99
&gt;&gt;&gt; +    return EWK_FILE_CHOOSER_CAPTURE_TYPE_FILESYSTEM;
&gt;&gt; 
&gt;&gt; I wonder if this patch can guarantee that capture only has camera, camcorder, microphone and file system.
&gt;&gt; 
&gt;&gt; If not so, you have to modify this as below,
&gt;&gt; 
&gt;&gt; if (capture == &quot;filesystem&quot;)
&gt;&gt;     return EWK_FILE_CHOOSER_CAPTURE_TYPE_FILESYSTEM;
&gt;&gt; 
&gt;&gt; return EWK_FILE_CHOOSER_CAPTURE_TYPE_INVALID;
&gt; 
&gt; As you can see in the WebCore, http://trac.webkit.org/browser/trunk/Source/WebCore/html/HTMLInputElement.cpp#L1723
&gt; If there is not a valid value, input element works with &quot;filesystem&quot;.
&gt; 
&gt; So, EWK_FILE_CHOOSER_CAPTURE_TYPE_INVALID is only used when Ewk_File_Chooser pointer or capture attribute is invalid.
&gt; Therefore I think current implementation is right.

Ok, I understand.

&gt;&gt;&gt; Source/WebKit/efl/ewk/ewk_file_chooser.h:112
&gt;&gt;&gt; + *         (use eina_stringshare_del() to free the items)
&gt;&gt; 
&gt;&gt; I think you don&apos;t need to use ( ). See also below comment.
&gt;&gt; 
&gt;&gt; http://trac.webkit.org/browser/trunk/Source/WebKit/efl/ewk/ewk_intent.h#L80
&gt;&gt; 
&gt;&gt; I will not use (..) in my next patch.
&gt; 
&gt; No problem. 
&gt; but I wonder which one is right? &quot;Use...&quot; like a ewk_intest.h or &quot;use...&quot;.
&gt; I thought we don&apos;t use capital letter with @return.
&gt; But, you didn&apos;t mention about that.
&gt; 
&gt; Thanks gyuyoung.

Please use lower case. I&apos;m going to change uppercase in ewk_intent.h

&gt; Source/WebKit/efl/ewk/ewk_file_chooser.h:119
&gt; + * The capture attributes is to support HTML Media Capture.

Why don&apos;t you mention more information as chromium port ?

    // See http://www.w3.org/TR/html-media-capture/ for the semantics of the
    // capture attribute. This string will either be empty (meaning the feature
    // is disabled) or one of the following values:
    //  - filesystem (default)
    //  - camera
    //  - camcorder
    //  - microphone

&gt; Source/WebKit/efl/ewk/ewk_file_chooser_private.h:28
&gt; +void ewk_file_chooser_free(Ewk_File_Chooser* ewkFileChooser);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677726</commentid>
    <comment_count>27</comment_count>
      <attachid>154281</attachid>
    <who name="Kihong Kwon">kihong.kwon</who>
    <bug_when>2012-07-25 00:19:00 -0700</bug_when>
    <thetext>Created attachment 154281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677740</commentid>
    <comment_count>28</comment_count>
      <attachid>154281</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-25 00:36:53 -0700</bug_when>
    <thetext>Comment on attachment 154281
Patch

LGTM now, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677750</commentid>
    <comment_count>29</comment_count>
      <attachid>154281</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-25 00:49:40 -0700</bug_when>
    <thetext>Comment on attachment 154281
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677851</commentid>
    <comment_count>30</comment_count>
      <attachid>154281</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 03:01:09 -0700</bug_when>
    <thetext>Comment on attachment 154281
Patch

Clearing flags on attachment: 154281

Committed r123597: &lt;http://trac.webkit.org/changeset/123597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677852</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 03:01:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153743</attachid>
            <date>2012-07-23 00:30:41 -0700</date>
            <delta_ts>2012-07-23 00:56:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91957-20120723163032.patch</filename>
            <type>text/plain</type>
            <size>14424</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJiMDczOGEyZjFlNjJlNWE3
MmIzODVhOWU5NzI2OTA4YTg3NDI5OGIuLjgxOWM0ZDIzMTdiNGJkZDI0MzgzNWYzNTgzNmYxZTMy
Njc0ODU5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjMgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEZpbGUg
Q2hvb3NlciBTZXR0aW5ncyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxOTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mgc291cmNlIGFuZCBoZWFk
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wNy0yMCAgQ2hyaXN0
b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxd
IFByb3h5IGNvbmZpZ3VyYXRpb24gc2hvdWxkIGhvbm9yIHRoZSBub19wcm94eSBlbnZpcm9ubWVu
dCB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDNlN2I1NDc5M2U5OTI2ZGFkMTg4OTgzZTM0
ZWQzNjYzNDY1NzA1ZGIuLmVmZjk0OWQ4ODEyY2NlZTMzYmY4NjFjMGEzZjIzYzdlYmRhNjBjZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wNy0yMyAgS2lob25nIEt3
b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgRmlsZSBD
aG9vc2VyIFNldHRpbmdzIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBjaG9vc2VyIHNldHRpbmdzLgorICAgICAgICBU
aGlzIEFQSXMgYWxsb3cgYW4gYXBwbGljYXRpb24obGlrZSBhIGJyb3dzZXIpIHF1ZXJpZXMgaW5m
b3JtYXRpb25zCisgICAgICAgIGFib3V0IG11bHRpcGxlIGZpbGVzIGFsbG93ZWQsIGRpcmVjdG9y
eSB1cGxvYWQgYWxsb3dlZCwgYWNjZXB0IG1pbWV0eXBlcyBsaXN0CisgICAgICAgICwgYWNjZXB0
IGZpbGUgZXh0ZW50aW9ucyBsaXN0LCBzZWxlY3RlZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRv
IHN1cHBvcnQgSFRNTCBtZWRpYSBjYXB0dXJlLgorCisgICAgICAgICogZXdrL0VXZWJLaXQuaDoK
KyAgICAgICAgKiBld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5jcHA6IEFkZGVkLgorICAg
ICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MpOgorICAgICAgICAoX0V3a19GaWxlX0No
b29zZXJfU2V0dGluZ3M6Ol9Fd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKToKKyAgICAgICAgKGV3
a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWxsb3dzX211bHRpcGxlX2ZpbGVzX2dldCk6CisgICAg
ICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dl
dCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2FjY2VwdF9taW1ldHlwZXNf
Z2V0KToKKyAgICAgICAgKGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0
ZW50aW9uc19nZXQpOgorICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19zZWxlY3Rl
ZF9maWxlc19nZXQpOgorICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19jYXB0dXJl
X2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX25ldyk6CisgICAgICAg
ICogZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogZXdr
L2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTA3LTIwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gUHJveHkgY29uZmlndXJhdGlvbiBzaG91bGQg
aG9ub3IgdGhlIG5vX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCBjNmVjZTk4ZmI0MTRjMTU4YWZjNWI5ZjE1NDFjZTZjYmM5YjZlNzAxLi42MWUw
YzRmMTlmNTMxYmE3OGViYzkxMjNiYjc0YmRjZGQ1YzYwMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwu
Y21ha2UKQEAgLTEzMiw2ICsxMzIsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAg
IGVmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAogICAgIGVmbC9ld2svZXdrX2Nvb2tpZXMuY3Bw
CiAgICAgZWZsL2V3ay9ld2tfY3VzdG9tX2hhbmRsZXIuY3BwCisgICAgZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzLmNwcAogICAgIGVmbC9ld2svZXdrX2ZyYW1lLmNwcAogICAgIGVm
bC9ld2svZXdrX2hpc3RvcnkuY3BwCiAgICAgZWZsL2V3ay9ld2tfaW50ZW50LmNwcApAQCAtMjc0
LDYgKzI3NSw3IEBAIFNFVChFV2ViS2l0X0hFQURFUlMKICAgICAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vZWZsL2V3ay9ld2tfYXV0aC5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vZWZsL2V3ay9ld2tfY29va2llcy5oCisgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5oCiAgICAgJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2ZyYW1lLmgKICAgICAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfaGlzdG9yeS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L2VmbC9ld2svZXdrX2ludGVudC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svRVdlYktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAppbmRl
eCBmOTA4NjAzNzNmZmFkNTZiYjBkMzBlZmIyZWU1ZjUwZWE5MTgyOGE4Li5iODJhODk1ZDQ0YmQ2
M2U2NGZiMmViMzFmZDA5MjBjZWE4Y2QwZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svRVdlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJld2tfYXV0aC5oIgogI2luY2x1ZGUgImV3a19jb250
ZXh0bWVudS5oIgogI2luY2x1ZGUgImV3a19jb29raWVzLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVf
Y2hvb3Nlcl9zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a19mcmFtZS5oIgogI2luY2x1ZGUgImV3
a19oaXN0b3J5LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
NzJlN2VmOTRlODI4NjM5YTAyMTJmYjkzNWE2ZjNmN2EzNWNlODcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5jcHAKQEAg
LTAsMCArMSwxMzEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5ncy5oIgorCisjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKKyNpbmNsdWRlICJld2tf
ZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1Y3QgX0V3a19GaWxlX0Nob29z
ZXJfU2V0dGluZ3MgeworICAgIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmIGZp
bGVDaG9vc2VyU2V0dGluZ3M7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAgY29uc3Qg
Y2hhciogY2FwdHVyZTsKKyNlbmRpZgorCisgICAgX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3Mo
Y29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MKKyNpZiBFTkFCTEUo
TUVESUFfQ0FQVFVSRSkKKyAgICAgICAgLCBjb25zdCBjaGFyKiBjYXB0dXJlU3RyaW5nCisjZW5k
aWYKKyAgICApCisgICAgICAgIDogZmlsZUNob29zZXJTZXR0aW5ncyhzZXR0aW5ncykKKyNpZiBF
TkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICAgICAgLCBjYXB0dXJlKGNhcHR1cmVTdHJpbmcpCisj
ZW5kaWYKKyAgICB7IH0KK307CisKK0VpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdz
X2FsbG93c19tdWx0aXBsZV9maWxlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5n
cyogc2V0dGluZ3MpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNldHRp
bmdzLCBmYWxzZSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5maWxlQ2hvb3NlclNldHRpbmdzLmFs
bG93c011bHRpcGxlRmlsZXM7Cit9CisKK0VpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX3NldHRp
bmdzX2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1Nl
dHRpbmdzICpzZXR0aW5ncykKK3sKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIGZhbHNlKTsKKyAgICByZXR1
cm4gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWxsb3dzRGlyZWN0b3J5VXBsb2FkOwor
I2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRWluYV9MaXN0KiBld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzX2FjY2VwdF9taW1ldHlwZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0No
b29zZXJfU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzZXR0aW5ncywgMCk7CisKKyAgICBFaW5hX0xpc3QqIG1pbWV0eXBlcyA9IDA7Cisg
ICAgVmVjdG9yPFdURjo6U3RyaW5nPiBhY2NlcHRNSU1FVHlwZXMgPSBzZXR0aW5ncy0+ZmlsZUNo
b29zZXJTZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGFjY2VwdE1JTUVUeXBlcy5zaXplKCk7IGkrKykgeworICAgICAgICBjb25zdCBjaGFyKiBt
aW1lVHlwZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGFjY2VwdE1JTUVUeXBlc1tpXS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgbWltZXR5cGVzID0gZWluYV9saXN0X2FwcGVuZChtaW1ldHlwZXMs
IG1pbWVUeXBlKTsKKyAgICB9CisKKyAgICByZXR1cm4gbWltZXR5cGVzOworfQorCitFaW5hX0xp
c3QqIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQo
Y29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyAqc2V0dGluZ3MpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNldHRpbmdzLCAwKTsKKworICAgIEVpbmFfTGlzdCog
ZmlsZUV4dGVudGlvbnMgPSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gYWNjZXB0RmlsZUV4
dGVuc2lvbnMgPSBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0aW5ncy5hY2NlcHRGaWxlRXh0ZW5z
aW9uczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWNjZXB0RmlsZUV4dGVuc2lvbnMu
c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgY29uc3QgY2hhciogZmlsZUV4dGVudGlvbiA9IGVpbmFf
c3RyaW5nc2hhcmVfYWRkKGFjY2VwdEZpbGVFeHRlbnNpb25zW2ldLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBmaWxlRXh0ZW50aW9ucyA9IGVpbmFfbGlzdF9hcHBlbmQoZmlsZUV4dGVudGlvbnMs
IGZpbGVFeHRlbnRpb24pOworICAgIH0KKworICAgIHJldHVybiBmaWxlRXh0ZW50aW9uczsKK30K
KworRWluYV9MaXN0KiBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3NlbGVjdGVkX2ZpbGVzX2dl
dChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzICpzZXR0aW5ncykKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOworCisgICAgRWluYV9MaXN0
KiBmaWxlcyA9IDA7CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBzZWxlY3RlZEZpbGVzID0gc2V0
dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3Muc2VsZWN0ZWRGaWxlczsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWxlcy5zaXplKCk7IGkrKykgeworICAgICAgICBjb25z
dCBjaGFyKiBmaWxlID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2VsZWN0ZWRGaWxlc1tpXS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgZmlsZXMgPSBlaW5hX2xpc3RfYXBwZW5kKGZpbGVzLCBmaWxl
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmlsZXM7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19maWxl
X2Nob29zZXJfc2V0dGluZ3NfY2FwdHVyZV9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0
aW5ncyogc2V0dGluZ3MpCit7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNldHRpbmdzLCAwKTsKKyAgICByZXR1cm4gc2V0dGlu
Z3MtPmNhcHR1cmU7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK0V3a19GaWxl
X0Nob29zZXJfU2V0dGluZ3MqIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfbmV3KGNvbnN0IFdl
YkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmIGNvcmVTZXR0aW5ncykKK3sKKyAgICBFd2tfRmls
ZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5ncyA9IG5ldyBFd2tfRmlsZV9DaG9vc2VyX1NldHRp
bmdzKGNvcmVTZXR0aW5ncworI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQorICAgICAgICAsIGVp
bmFfc3RyaW5nc2hhcmVfYWRkKHNldHRpbmdzLT5maWxlQ2hvb3NlclNldHRpbmdzLT5jYXB0dXJl
LnV0ZjgoKS5kYXRhKCkKKyNlbmRpZgorICAgICk7CisgICAgcmV0dXJuIHNldHRpbmdzOworfQor
Cit2b2lkIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfZnJlZShFd2tfRmlsZV9DaG9vc2VyX1Nl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBlaW5h
X3N0cmluZ3NoYXJlX2RlbChzZXR0aW5ncy0+Y2FwdHVyZSk7CisjZW5kaWYKKyAgICBkZWxldGUg
c2V0dGluZ3M7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hv
b3Nlcl9zZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ZDRiMTBmMDUwNDg5MzAxY2FmZWI2OGEyOGRm
MGJjODY2MTFiYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoqCisgKiBAZmlsZSAgICBl
d2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmgKKyAqIEBicmllZiAgIEZpbGUgQ2hvb3NlciBTZXR0
aW5ncyBBUEkuCisgKgorICogRmlsZSBDaG9vc2VyIFNldHRpbmdzIGlzIGEgc2V0IG9mIGF0dHJp
YnV0ZXMgZm9yIGZpbGUgc2VsZWN0aW9uIGRpYWxvZy4KKyAqIEl0IGluY2x1ZGVzIGF0dHJpYnV0
ZSB2YWx1ZXMgcmVnYXJkaW5nOgorICogLSBhbGxvd2FuY2Ugb2YgbXVsdGlwbGUgZmlsZXMgc2Vs
ZWN0aW9uCisgKiAtIGFsbG93YW5jZSBvZiB1cGxvYWQgZGlyZWN0b3J5CisgKiAtIGxpc3Qgb2Yg
YWNjZXB0ZWQgbWltZSB0eXBlcworICogLSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9u
cworICogLSBsaXN0IG9mIGluaXRpYWwgc2VsZWN0ZWQgZmlsZSBuYW1lcworICogLSBjYXB0dXJl
IGF0dHJpYnV0ZSBmb3IgSFRNTCBtZWRpYSBjYXB0dXJlLgorICogV2UgY2FuIHVzZSB0aGVzZSBh
dHRyaWJ1dGVzIGJ5IGZpbGUgY2hvb3NlciBzZXR0aW5ncyBBUElzLgorICoKKyAqLworCisjaWZu
ZGVmIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfaAorI2RlZmluZSBld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBfRXdrX0ZpbGVfQ2hvb3Nlcl9T
ZXR0aW5ncyBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzOworCisvKioKKyAqIFF1ZXJ5IGlmIG11
bHRpcGxlIGZpbGVzIGFyZSBzdXBwb3J0ZWQgYnkgZmlsZSBjaG9vc2VyLgorICoKKyAqIEBwYXJh
bSBzIGZpbGUgY2hvb3NlciBzZXR0aW5ncyBvYmplY3QKKyAqCisgKiBJdCByZXR1cm5zIGEgYm9v
bGVhbiB2YWx1ZSB3aGljaCBpbmRpY2F0ZXMgaWYgbXVsdGlwbGUgZmlsZSBpcyBzdXBwb3J0ZWQg
b3Igbm90LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1cHBvcnQgbXVsdGlwbGUg
ZmlsZXMgb3IgQGMgRUlOQV9GQUxTRSBvbiBub3Qgc3VwcG9ydC4KKyAqLworRUFQSSBFaW5hX0Jv
b2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfbXVsdGlwbGVfZmlsZXNfZ2V0KGNv
bnN0IEV3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgKnMpOworCisvKioKKyAqIFF1ZXJ5IGlmIGRp
cmVjdG9yeSB1cGxvYWQgaXMgc3VwcG9ydGVkIGJ5IGZpbGUgY2hvb3Nlci4KKyAqCisgKiBAcGFy
YW0gcyBmaWxlIGNob29zZXIgc2V0dGluZ3Mgb2JqZWN0CisgKgorICogSXQgcmV0dXJucyBhIGJv
b2xlYW4gdmFsdWUgd2hpY2ggaW5kaWNhdGVzIGlmIGRpcmVjdG9yeSB1cGxvYWQgaXMgc3VwcG9y
dGVkIG9yIG5vdC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdXBwb3J0IGRpcmVj
dG9yeSB1cGxvYWQgb3IgQGMgRUlOQV9GQUxTRSBvbiBub3Qgc3VwcG9ydC4KKyAqLworRUFQSSBF
aW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfZGlyZWN0b3J5X3VwbG9h
ZF9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyAqcyk7CisKKy8qKgorICogUmV0
dXJucyB0aGUgbGlzdCBvZiBhY2NlcHRlZCBtaW1ldHlwZXMgb2YgdGhlIGZpbGUgY2hvb3Nlci4K
KyAqCisgKiBFYWNoIGl0ZW0gb2YgdGhlIGxpc3Qgc2hvdWxkIGJlIHJlbGVhc2VkIHVzaW5nIGVp
bmFfc3RyaW5nc2hhcmVfZGVsKCkuCisgKgorICogQHBhcmFtIHMgZmlsZSBjaG9vc2VyIHNldHRp
bmdzIG9iamVjdAorICoKKyAqIEByZXR1cm4gbGlzdCBvZiBhY2NlcHRlZCBtaW1ldHlwZXMKKyAq
LworRUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWNjZXB0X21pbWV0
eXBlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyAqcyk7CisKKy8qKgorICog
UmV0dXJucyB0aGUgbGlzdCBvZiBhY2NlcHRlZCBmaWxlIGV4dGVudGlvbnMgb2YgdGhlIGZpbGUg
Y2hvb3Nlci4KKyAqCisgKiBFYWNoIGl0ZW0gb2YgdGhlIGxpc3Qgc2hvdWxkIGJlIHJlbGVhc2Vk
IHVzaW5nIGVpbmFfc3RyaW5nc2hhcmVfZGVsKCkuCisgKgorICogQHBhcmFtIHMgZmlsZSBjaG9v
c2VyIHNldHRpbmdzIG9iamVjdAorICoKKyAqIEByZXR1cm4gbGlzdCBvZiBhY2NlcHRlZCBmaWxl
IGV4dGVudGlvbnMKKyAqLworRUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2Nob29zZXJfc2V0dGlu
Z3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0
aW5ncyAqcyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBmaWxlIG5h
bWVzIG9mIHRoZSBmaWxlIGNob29zZXIuCisgKgorICogVGhpcyBsaXN0IGluZGljYXRlcyBwcmV2
aW91c2x5IHNlbGVjdGVkIGZpbGUgbmFtZXMgZm9yIHRoZSBmaWxlIGNob29zZXIuCisgKiBZb3Ug
bWF5IHdhbnQgdG8gZGlwbGF5IHRoZXNlIGZpbGUgbmFtZXMgb24geW91ciBkaWFsb2cuCisgKgor
ICogRWFjaCBpdGVtIG9mIHRoZSBsaXN0IHNob3VsZCBiZSByZWxlYXNlZCB1c2luZyBlaW5hX3N0
cmluZ3NoYXJlX2RlbCgpLgorICoKKyAqIEBwYXJhbSBzIGZpbGUgY2hvb3NlciBzZXR0aW5ncyBv
YmplY3QKKyAqCisgKiBAcmV0dXJuIGxpc3Qgb2Ygc2VsZWN0ZWQgZmlsZSBuYW1lcworICovCitF
QVBJIEVpbmFfTGlzdCAqZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19zZWxlY3RlZF9maWxlc19n
ZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyAqcyk7CisKKy8qKgorICogUmV0dXJu
cyB0aGUgY2FwdHVyZSBhdHRyaWJ1dGUgb2YgdGhlIGZpbGUgc2hvb3Nlci4KKyAqCisgKiBUaGUg
Y2FwdHVyZSBhdHRyaWJ1dGVzIGlzIHRvIHN1cHBvcnQgSFRNTCBNZWRpYSBDYXB0dXJlLgorICoK
KyAqIEBwYXJhbSBvIGZpbGUgY2hvb3NlciBzZXR0aW5ncyBvYmplY3QKKyAqCisgKiBAcmV0dXJu
IE9uZSBvZiB0aGVzZSBzdHJpbmcgImNhbWVyYSIsICJjYW1jb3JkZXIiLCAibWljcm9waG9uZSIg
b3IgImZpbGVzeXN0ZW0iIG9yIEBjIE5VTEwgaWYgdGhlcmUgaXMgbm90IGEgcHJvcGVyIHNlY3Vy
aXR5IG9yaWdpbiBzY2hlbWUKKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzX2NhcHR1cmVfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MqIHMp
OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2ZpbGVf
Y2hvb3Nlcl9zZXR0aW5nc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhkMzBjOGYx
ZWEyMGEwMTgyYjYyYTAwZGRjYTQ0M2JlY2ZmZWU3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaApAQCAt
MCwwICsxLDMyIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2lmbmRlZiBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGVfaAorI2Rl
ZmluZSBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGVfaAorCisvLyBmb3J3YXJkIGRl
Y2xhcmF0aW9ucworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEZpbGVDaG9vc2VyU2V0dGlu
Z3M7Cit9CisKK0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MqIGV3a19maWxlX2Nob29zZXJfc2V0
dGluZ3NfbmV3KGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmIG9yaWdpbik7Cit2
b2lkIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfZnJlZShFd2tfRmlsZV9DaG9vc2VyX1NldHRp
bmdzICpvKTsKKworI2VuZGlmIC8vIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZV9o
CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153747</attachid>
            <date>2012-07-23 00:56:59 -0700</date>
            <delta_ts>2012-07-23 03:33:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91957-20120723165650.patch</filename>
            <type>text/plain</type>
            <size>14364</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJiMDczOGEyZjFlNjJlNWE3
MmIzODVhOWU5NzI2OTA4YTg3NDI5OGIuLjgxOWM0ZDIzMTdiNGJkZDI0MzgzNWYzNTgzNmYxZTMy
Njc0ODU5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjMgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEZpbGUg
Q2hvb3NlciBTZXR0aW5ncyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxOTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mgc291cmNlIGFuZCBoZWFk
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wNy0yMCAgQ2hyaXN0
b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxd
IFByb3h5IGNvbmZpZ3VyYXRpb24gc2hvdWxkIGhvbm9yIHRoZSBub19wcm94eSBlbnZpcm9ubWVu
dCB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDNlN2I1NDc5M2U5OTI2ZGFkMTg4OTgzZTM0
ZWQzNjYzNDY1NzA1ZGIuLmVmZjk0OWQ4ODEyY2NlZTMzYmY4NjFjMGEzZjIzYzdlYmRhNjBjZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wNy0yMyAgS2lob25nIEt3
b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBBZGQgRmlsZSBD
aG9vc2VyIFNldHRpbmdzIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBjaG9vc2VyIHNldHRpbmdzLgorICAgICAgICBU
aGlzIEFQSXMgYWxsb3cgYW4gYXBwbGljYXRpb24obGlrZSBhIGJyb3dzZXIpIHF1ZXJpZXMgaW5m
b3JtYXRpb25zCisgICAgICAgIGFib3V0IG11bHRpcGxlIGZpbGVzIGFsbG93ZWQsIGRpcmVjdG9y
eSB1cGxvYWQgYWxsb3dlZCwgYWNjZXB0IG1pbWV0eXBlcyBsaXN0CisgICAgICAgICwgYWNjZXB0
IGZpbGUgZXh0ZW50aW9ucyBsaXN0LCBzZWxlY3RlZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRv
IHN1cHBvcnQgSFRNTCBtZWRpYSBjYXB0dXJlLgorCisgICAgICAgICogZXdrL0VXZWJLaXQuaDoK
KyAgICAgICAgKiBld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5jcHA6IEFkZGVkLgorICAg
ICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MpOgorICAgICAgICAoX0V3a19GaWxlX0No
b29zZXJfU2V0dGluZ3M6Ol9Fd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKToKKyAgICAgICAgKGV3
a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWxsb3dzX211bHRpcGxlX2ZpbGVzX2dldCk6CisgICAg
ICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dl
dCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2FjY2VwdF9taW1ldHlwZXNf
Z2V0KToKKyAgICAgICAgKGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0
ZW50aW9uc19nZXQpOgorICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19zZWxlY3Rl
ZF9maWxlc19nZXQpOgorICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19jYXB0dXJl
X2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX25ldyk6CisgICAgICAg
ICogZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuaDogQWRkZWQuCisgICAgICAgICogZXdr
L2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorCiAyMDEyLTA3LTIwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF0gUHJveHkgY29uZmlndXJhdGlvbiBzaG91bGQg
aG9ub3IgdGhlIG5vX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCBjNmVjZTk4ZmI0MTRjMTU4YWZjNWI5ZjE1NDFjZTZjYmM5YjZlNzAxLi42MWUw
YzRmMTlmNTMxYmE3OGViYzkxMjNiYjc0YmRjZGQ1YzYwMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwu
Y21ha2UKQEAgLTEzMiw2ICsxMzIsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAg
IGVmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAogICAgIGVmbC9ld2svZXdrX2Nvb2tpZXMuY3Bw
CiAgICAgZWZsL2V3ay9ld2tfY3VzdG9tX2hhbmRsZXIuY3BwCisgICAgZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzLmNwcAogICAgIGVmbC9ld2svZXdrX2ZyYW1lLmNwcAogICAgIGVm
bC9ld2svZXdrX2hpc3RvcnkuY3BwCiAgICAgZWZsL2V3ay9ld2tfaW50ZW50LmNwcApAQCAtMjc0
LDYgKzI3NSw3IEBAIFNFVChFV2ViS2l0X0hFQURFUlMKICAgICAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vZWZsL2V3ay9ld2tfYXV0aC5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNF
X0RJUn0vZWZsL2V3ay9ld2tfY29va2llcy5oCisgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9E
SVJ9L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5oCiAgICAgJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2ZyYW1lLmgKICAgICAke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfaGlzdG9yeS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L2VmbC9ld2svZXdrX2ludGVudC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svRVdlYktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAppbmRl
eCBmOTA4NjAzNzNmZmFkNTZiYjBkMzBlZmIyZWU1ZjUwZWE5MTgyOGE4Li5iODJhODk1ZDQ0YmQ2
M2U2NGZiMmViMzFmZDA5MjBjZWE4Y2QwZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svRVdlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJld2tfYXV0aC5oIgogI2luY2x1ZGUgImV3a19jb250
ZXh0bWVudS5oIgogI2luY2x1ZGUgImV3a19jb29raWVzLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVf
Y2hvb3Nlcl9zZXR0aW5ncy5oIgogI2luY2x1ZGUgImV3a19mcmFtZS5oIgogI2luY2x1ZGUgImV3
a19oaXN0b3J5LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBi
OTBkMDViNmMzYzM5Nzc5NzI2N2RhZDBkMjkyNDcwZmNhMTAzYzcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5jcHAKQEAg
LTAsMCArMSwxMzEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5ncy5oIgorCisjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKKyNpbmNsdWRlICJld2tf
ZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1Y3QgX0V3a19GaWxlX0Nob29z
ZXJfU2V0dGluZ3MgeworICAgIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmIGZp
bGVDaG9vc2VyU2V0dGluZ3M7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAgY29uc3Qg
Y2hhciogY2FwdHVyZTsKKyNlbmRpZgorCisgICAgX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3Mo
Y29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MKKyNpZiBFTkFCTEUo
TUVESUFfQ0FQVFVSRSkKKyAgICAgICAgLCBjb25zdCBjaGFyKiBjYXB0dXJlU3RyaW5nCisjZW5k
aWYKKyAgICApCisgICAgICAgIDogZmlsZUNob29zZXJTZXR0aW5ncyhzZXR0aW5ncykKKyNpZiBF
TkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICAgICAgLCBjYXB0dXJlKGNhcHR1cmVTdHJpbmcpCisj
ZW5kaWYKKyAgICB7IH0KK307CisKK0VpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdz
X2FsbG93c19tdWx0aXBsZV9maWxlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5n
cyogc2V0dGluZ3MpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNldHRp
bmdzLCBmYWxzZSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5maWxlQ2hvb3NlclNldHRpbmdzLmFs
bG93c011bHRpcGxlRmlsZXM7Cit9CisKK0VpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX3NldHRp
bmdzX2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1Nl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIGZhbHNlKTsKKyAgICByZXR1
cm4gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWxsb3dzRGlyZWN0b3J5VXBsb2FkOwor
I2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRWluYV9MaXN0KiBld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzX2FjY2VwdF9taW1ldHlwZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0No
b29zZXJfU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChzZXR0aW5ncywgMCk7CisKKyAgICBFaW5hX0xpc3QqIG1pbWV0eXBlcyA9IDA7Cisg
ICAgVmVjdG9yPFdURjo6U3RyaW5nPiBhY2NlcHRNSU1FVHlwZXMgPSBzZXR0aW5ncy0+ZmlsZUNo
b29zZXJTZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXM7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGFjY2VwdE1JTUVUeXBlcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBjaGFyKiBt
aW1lVHlwZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGFjY2VwdE1JTUVUeXBlc1tpXS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgbWltZXR5cGVzID0gZWluYV9saXN0X2FwcGVuZChtaW1ldHlwZXMs
IG1pbWVUeXBlKTsKKyAgICB9CisKKyAgICByZXR1cm4gbWltZXR5cGVzOworfQorCitFaW5hX0xp
c3QqIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQo
Y29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNldHRpbmdzLCAwKTsKKworICAgIEVpbmFfTGlzdCog
ZmlsZUV4dGVudGlvbnMgPSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gYWNjZXB0RmlsZUV4
dGVuc2lvbnMgPSBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0aW5ncy5hY2NlcHRGaWxlRXh0ZW5z
aW9uczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWNjZXB0RmlsZUV4dGVuc2lvbnMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgY2hhciogZmlsZUV4dGVudGlvbiA9IGVpbmFf
c3RyaW5nc2hhcmVfYWRkKGFjY2VwdEZpbGVFeHRlbnNpb25zW2ldLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBmaWxlRXh0ZW50aW9ucyA9IGVpbmFfbGlzdF9hcHBlbmQoZmlsZUV4dGVudGlvbnMs
IGZpbGVFeHRlbnRpb24pOworICAgIH0KKworICAgIHJldHVybiBmaWxlRXh0ZW50aW9uczsKK30K
KworRWluYV9MaXN0KiBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3NlbGVjdGVkX2ZpbGVzX2dl
dChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOworCisgICAgRWluYV9MaXN0
KiBmaWxlcyA9IDA7CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBzZWxlY3RlZEZpbGVzID0gc2V0
dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3Muc2VsZWN0ZWRGaWxlczsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2VsZWN0ZWRGaWxlcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25z
dCBjaGFyKiBmaWxlID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoc2VsZWN0ZWRGaWxlc1tpXS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgZmlsZXMgPSBlaW5hX2xpc3RfYXBwZW5kKGZpbGVzLCBmaWxl
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmlsZXM7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19maWxl
X2Nob29zZXJfc2V0dGluZ3NfY2FwdHVyZV9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0
aW5ncyogc2V0dGluZ3MpCit7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNldHRpbmdzLCAwKTsKKyAgICByZXR1cm4gc2V0dGlu
Z3MtPmNhcHR1cmU7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK0V3a19GaWxl
X0Nob29zZXJfU2V0dGluZ3MqIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfbmV3KGNvbnN0IFdl
YkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MmIGNvcmVTZXR0aW5ncykKK3sKKyAgICBFd2tfRmls
ZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5ncyA9IG5ldyBFd2tfRmlsZV9DaG9vc2VyX1NldHRp
bmdzKGNvcmVTZXR0aW5ncworI2lmIEVOQUJMRShNRURJQV9DQVBUVVJFKQorICAgICAgICAsIGVp
bmFfc3RyaW5nc2hhcmVfYWRkKHNldHRpbmdzLT5maWxlQ2hvb3NlclNldHRpbmdzLT5jYXB0dXJl
LnV0ZjgoKS5kYXRhKCkKKyNlbmRpZgorICAgICk7CisgICAgcmV0dXJuIHNldHRpbmdzOworfQor
Cit2b2lkIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfZnJlZShFd2tfRmlsZV9DaG9vc2VyX1Nl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBlaW5h
X3N0cmluZ3NoYXJlX2RlbChzZXR0aW5ncy0+Y2FwdHVyZSk7CisjZW5kaWYKKyAgICBkZWxldGUg
c2V0dGluZ3M7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hv
b3Nlcl9zZXR0aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNTQyMTQyNTFiYjk2YjVjZjQwM2IxNjgxMTA1
ZDEyZDFmMDFjODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5oCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoqCisgKiBAZmlsZSAgICBl
d2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmgKKyAqIEBicmllZiAgIEZpbGUgQ2hvb3NlciBTZXR0
aW5ncyBBUEkuCisgKgorICogRmlsZSBDaG9vc2VyIFNldHRpbmdzIGlzIGEgc2V0IG9mIGF0dHJp
YnV0ZXMgZm9yIGZpbGUgc2VsZWN0aW9uIGRpYWxvZy4KKyAqIEl0IGluY2x1ZGVzIGF0dHJpYnV0
ZSB2YWx1ZXMgcmVnYXJkaW5nOgorICogLSBhbGxvd2FuY2Ugb2YgbXVsdGlwbGUgZmlsZXMgc2Vs
ZWN0aW9uCisgKiAtIGFsbG93YW5jZSBvZiB1cGxvYWQgZGlyZWN0b3J5CisgKiAtIGxpc3Qgb2Yg
YWNjZXB0ZWQgbWltZSB0eXBlcworICogLSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9u
cworICogLSBsaXN0IG9mIGluaXRpYWwgc2VsZWN0ZWQgZmlsZSBuYW1lcworICogLSBjYXB0dXJl
IGF0dHJpYnV0ZSBmb3IgSFRNTCBtZWRpYSBjYXB0dXJlLgorICovCisKKyNpZm5kZWYgZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19oCisjZGVmaW5lIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Nf
aAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzIEV3
a19GaWxlX0Nob29zZXJfU2V0dGluZ3M7CisKKy8qKgorICogUXVlcnkgaWYgbXVsdGlwbGUgZmls
ZXMgYXJlIHN1cHBvcnRlZCBieSBmaWxlIGNob29zZXIuCisgKgorICogQHBhcmFtIHMgZmlsZSBj
aG9vc2VyIHNldHRpbmdzIG9iamVjdAorICoKKyAqIEl0IHJldHVybnMgYSBib29sZWFuIHZhbHVl
IHdoaWNoIGluZGljYXRlcyBpZiBtdWx0aXBsZSBmaWxlIGlzIHN1cHBvcnRlZCBvciBub3QuCisg
KgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VwcG9ydCBtdWx0aXBsZSBmaWxlcyBvciBA
YyBFSU5BX0ZBTFNFIG9uIG5vdCBzdXBwb3J0LgorICovCitFQVBJIEVpbmFfQm9vbCBld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzX2FsbG93c19tdWx0aXBsZV9maWxlc19nZXQoY29uc3QgRXdrX0Zp
bGVfQ2hvb3Nlcl9TZXR0aW5ncyAqcyk7CisKKy8qKgorICogUXVlcnkgaWYgZGlyZWN0b3J5IHVw
bG9hZCBpcyBzdXBwb3J0ZWQgYnkgZmlsZSBjaG9vc2VyLgorICoKKyAqIEBwYXJhbSBzIGZpbGUg
Y2hvb3NlciBzZXR0aW5ncyBvYmplY3QKKyAqCisgKiBJdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1
ZSB3aGljaCBpbmRpY2F0ZXMgaWYgZGlyZWN0b3J5IHVwbG9hZCBpcyBzdXBwb3J0ZWQgb3Igbm90
LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1cHBvcnQgZGlyZWN0b3J5IHVwbG9h
ZCBvciBAYyBFSU5BX0ZBTFNFIG9uIG5vdCBzdXBwb3J0LgorICovCitFQVBJIEVpbmFfQm9vbCBl
d2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldChjb25z
dCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzICpzKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBs
aXN0IG9mIGFjY2VwdGVkIG1pbWV0eXBlcyBvZiB0aGUgZmlsZSBjaG9vc2VyLgorICoKKyAqIEVh
Y2ggaXRlbSBvZiB0aGUgbGlzdCBzaG91bGQgYmUgcmVsZWFzZWQgdXNpbmcgZWluYV9zdHJpbmdz
aGFyZV9kZWwoKS4KKyAqCisgKiBAcGFyYW0gcyBmaWxlIGNob29zZXIgc2V0dGluZ3Mgb2JqZWN0
CisgKgorICogQHJldHVybiBsaXN0IG9mIGFjY2VwdGVkIG1pbWV0eXBlcworICovCitFQVBJIEVp
bmFfTGlzdCAqZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hY2NlcHRfbWltZXR5cGVzX2dldChj
b25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzICpzKTsKKworLyoqCisgKiBSZXR1cm5zIHRo
ZSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9ucyBvZiB0aGUgZmlsZSBjaG9vc2VyLgor
ICoKKyAqIEVhY2ggaXRlbSBvZiB0aGUgbGlzdCBzaG91bGQgYmUgcmVsZWFzZWQgdXNpbmcgZWlu
YV9zdHJpbmdzaGFyZV9kZWwoKS4KKyAqCisgKiBAcGFyYW0gcyBmaWxlIGNob29zZXIgc2V0dGlu
Z3Mgb2JqZWN0CisgKgorICogQHJldHVybiBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9u
cworICovCitFQVBJIEVpbmFfTGlzdCAqZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hY2NlcHRf
ZmlsZV9leHRlbnRpb25zX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzICpzKTsK
KworLyoqCisgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIHNlbGVjdGVkIGZpbGUgbmFtZXMgb2YgdGhl
IGZpbGUgY2hvb3Nlci4KKyAqCisgKiBUaGlzIGxpc3QgaW5kaWNhdGVzIHByZXZpb3VzbHkgc2Vs
ZWN0ZWQgZmlsZSBuYW1lcyBmb3IgdGhlIGZpbGUgY2hvb3Nlci4KKyAqIFlvdSBtYXkgd2FudCB0
byBkaXBsYXkgdGhlc2UgZmlsZSBuYW1lcyBvbiB5b3VyIGRpYWxvZy4KKyAqCisgKiBFYWNoIGl0
ZW0gb2YgdGhlIGxpc3Qgc2hvdWxkIGJlIHJlbGVhc2VkIHVzaW5nIGVpbmFfc3RyaW5nc2hhcmVf
ZGVsKCkuCisgKgorICogQHBhcmFtIHMgZmlsZSBjaG9vc2VyIHNldHRpbmdzIG9iamVjdAorICoK
KyAqIEByZXR1cm4gbGlzdCBvZiBzZWxlY3RlZCBmaWxlIG5hbWVzCisgKi8KK0VBUEkgRWluYV9M
aXN0ICpld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3NlbGVjdGVkX2ZpbGVzX2dldChjb25zdCBF
d2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzICpzKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBjYXB0
dXJlIGF0dHJpYnV0ZSBvZiB0aGUgZmlsZSBzaG9vc2VyLgorICoKKyAqIFRoZSBjYXB0dXJlIGF0
dHJpYnV0ZXMgaXMgdG8gc3VwcG9ydCBIVE1MIE1lZGlhIENhcHR1cmUuCisgKgorICogQHBhcmFt
IG8gZmlsZSBjaG9vc2VyIHNldHRpbmdzIG9iamVjdAorICoKKyAqIEByZXR1cm4gT25lIG9mIHRo
ZXNlIHN0cmluZyAiY2FtZXJhIiwgImNhbWNvcmRlciIsICJtaWNyb3Bob25lIiBvciAiZmlsZXN5
c3RlbSIgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSBwcm9wZXIgc2VjdXJpdHkgb3JpZ2lu
IHNjaGVtZQorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Nf
Y2FwdHVyZV9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyAqcyk7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfZmlsZV9jaG9vc2VyX3Nl
dHRpbmdzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9j
aG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjMzOTE0OWU4MmU1MzcyYWFk
ODE5NDBmOGUyMDlhMzZlODNiNzczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzIg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aWZuZGVmIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19m
aWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZV9oCisKKy8vIGZvcndhcmQgZGVjbGFyYXRpb25z
CituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKK30KKwor
RXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19uZXco
Y29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYgb3JpZ2luKTsKK3ZvaWQgZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19mcmVlKEV3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MqIHNldHRp
bmdzKTsKKworI2VuZGlmIC8vIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZV9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153765</attachid>
            <date>2012-07-23 03:33:18 -0700</date>
            <delta_ts>2012-07-23 04:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91957-20120723193310.patch</filename>
            <type>text/plain</type>
            <size>14547</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmFkZWEzN2NhNDFmYjNj
MDU1ZjJlNTNlZjRkODAwYzc4OTdmOWQuLmY0ZDJkODQyMmIwZjgyYjk1MTZjZTI1YzZkNDc1NDUx
MTlkMTMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjMgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEZpbGUg
Q2hvb3NlciBTZXR0aW5ncyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxOTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mgc291cmNlIGFuZCBoZWFk
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wNy0yMiAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRF
Ul9UQUcgYW5kIEVOQUJMRV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5k
IEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4
IGE2ZmI0YTU4NDA4YzE1Y2MxODBiZWY1ZThmZGI3OTMxYjZmNjE3N2IuLmRjZGZlYmI2YmQzZWM5
M2U4NjFhOTMxOGIyODRmOGYwOTMwMjQzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxMi0wNy0yMyAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4K
KworICAgICAgICBbRUZMXSBBZGQgRmlsZSBDaG9vc2VyIFNldHRpbmdzIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE5NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBj
aG9vc2VyIHNldHRpbmdzLgorICAgICAgICBUaGlzIEFQSXMgYWxsb3cgYW4gYXBwbGljYXRpb24o
bGlrZSBhIGJyb3dzZXIpIHF1ZXJpZXMgaW5mb3JtYXRpb25zCisgICAgICAgIGFib3V0IG11bHRp
cGxlIGZpbGVzIGFsbG93ZWQsIGRpcmVjdG9yeSB1cGxvYWQgYWxsb3dlZCwgYWNjZXB0IG1pbWV0
eXBlcyBsaXN0CisgICAgICAgICwgYWNjZXB0IGZpbGUgZXh0ZW50aW9ucyBsaXN0LCBzZWxlY3Rl
ZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRvIHN1cHBvcnQgSFRNTCBtZWRpYSBjYXB0dXJlLgor
CisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBld2svZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGlu
Z3MpOgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3M6Ol9Fd2tfRmlsZV9DaG9v
c2VyX1NldHRpbmdzKToKKyAgICAgICAgKGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWxsb3dz
X211bHRpcGxlX2ZpbGVzX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdz
X2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzX2FjY2VwdF9taW1ldHlwZXNfZ2V0KToKKyAgICAgICAgKGV3a19maWxlX2Nob29z
ZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQpOgorICAgICAgICAoZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19zZWxlY3RlZF9maWxlc19nZXQpOgorICAgICAgICAoZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19jYXB0dXJlX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX25ldyk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2Zy
ZWUpOgorICAgICAgICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmg6IEFkZGVkLgor
ICAgICAgICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJM
RV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVT
U19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNmNkYzli
Nzc1ZmRmNTk1ZjE3Mzc2MjNmMmQwOGM2ZTAxOTY2YjdiZi4uY2Y0NDk0YzlkYTlhNDhlNDgwNjQ1
Y2NkYjVhNjA5NzUyNWIxZTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMzIsNiAr
MTMyLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19jb250
ZXh0bWVudS5jcHAKICAgICBlZmwvZXdrL2V3a19jb29raWVzLmNwcAogICAgIGVmbC9ld2svZXdr
X2N1c3RvbV9oYW5kbGVyLmNwcAorICAgIGVmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5n
cy5jcHAKICAgICBlZmwvZXdrL2V3a19mcmFtZS5jcHAKICAgICBlZmwvZXdrL2V3a19oaXN0b3J5
LmNwcAogICAgIGVmbC9ld2svZXdrX2ludGVudC5jcHAKQEAgLTI3NCw2ICsyNzUsNyBAQCBTRVQo
RVdlYktpdF9IRUFERVJTCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2sv
ZXdrX2F1dGguaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19j
b250ZXh0bWVudS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdr
X2Nvb2tpZXMuaAorICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19m
aWxlX2Nob29zZXJfc2V0dGluZ3MuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9l
ZmwvZXdrL2V3a19mcmFtZS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9l
d2svZXdrX2hpc3RvcnkuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdr
L2V3a19pbnRlbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKaW5kZXggZjkwODYwMzczZmZhZDU2
YmIwZDMwZWZiMmVlNWY1MGVhOTE4MjhhOC4uYjgyYTg5NWQ0NGJkNjNlNjRmYjJlYjMxZmQwOTIw
Y2VhOGNkMGY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiZXdrX2F1dGguaCIKICNpbmNsdWRlICJld2tfY29udGV4dG1lbnUuaCIKICNpbmNs
dWRlICJld2tfY29va2llcy5oIgorI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJld2tfZnJhbWUuaCIKICNpbmNsdWRlICJld2tfaGlzdG9yeS5oIgogI2lu
Y2x1ZGUgImV3a19pbnRlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZmlsZV9jaG9vc2VyX3NldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTA5MjdhNDU1ODNmZDI5ODJl
OTVjZDc3YmYwMmE0YmRmZmFlZDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsMTIzIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuaCIKKwor
I2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0
aW5nc19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1Y3Qg
X0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgeworICAgIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9v
c2VyU2V0dGluZ3MmIGZpbGVDaG9vc2VyU2V0dGluZ3M7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRV
UkUpCisgICAgY29uc3QgY2hhciogY2FwdHVyZTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElB
X0NBUFRVUkUpCisgICAgX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MgLCBjb25zdCBjaGFyKiBjYXB0dXJlU3RyaW5n
KQorICAgICAgICA6IGZpbGVDaG9vc2VyU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgICwgY2Fw
dHVyZShjYXB0dXJlU3RyaW5nKQorI2Vsc2UKKyAgICBfRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5n
cyhjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKKyAgICAgICAg
OiBmaWxlQ2hvb3NlclNldHRpbmdzKHNldHRpbmdzKQorI2VuZGlmCisgICAgeyB9Cit9OworCitF
aW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfbXVsdGlwbGVfZmlsZXNf
Z2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXR0aW5ncywgZmFsc2UpOworICAgIHJldHVy
biBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOworfQor
CitFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfZGlyZWN0b3J5X3Vw
bG9hZF9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpCit7Cisj
aWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNldHRpbmdzLCBmYWxzZSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5maWxlQ2hvb3Nl
clNldHRpbmdzLmFsbG93c0RpcmVjdG9yeVVwbG9hZDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCit9CisKK0VpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hY2Nl
cHRfbWltZXR5cGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5n
cykKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOwor
CisgICAgRWluYV9MaXN0KiBtaW1ldHlwZXMgPSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0
TUlNRVR5cGVzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IHNldHRpbmdzLT5maWxlQ2hvb3Nl
clNldHRpbmdzLmFjY2VwdE1JTUVUeXBlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgbWltZXR5cGVz
ID0gZWluYV9saXN0X2FwcGVuZChtaW1ldHlwZXMsIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCgqaXQp
LnV0ZjgoKS5kYXRhKCkpKTsKKworICAgIHJldHVybiBtaW1ldHlwZXM7Cit9CisKK0VpbmFfTGlz
dCogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hY2NlcHRfZmlsZV9leHRlbnRpb25zX2dldChj
b25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOworCisgICAgRWluYV9MaXN0KiBm
aWxlRXh0ZW50aW9ucyA9IDA7CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0aW5ncy5hY2NlcHRGaWxlRXh0ZW5zaW9u
cy5iZWdpbigpOworICAgIGZvciAoOyBpdCAhPSBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0aW5n
cy5hY2NlcHRGaWxlRXh0ZW5zaW9ucy5lbmQoKTsgKytpdCkKKyAgICAgICAgZmlsZUV4dGVudGlv
bnMgPSBlaW5hX2xpc3RfYXBwZW5kKGZpbGVFeHRlbnRpb25zLCBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCgoKml0KS51dGY4KCkuZGF0YSgpKSk7CisKKyAgICByZXR1cm4gZmlsZUV4dGVudGlvbnM7Cit9
CisKK0VpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19zZWxlY3RlZF9maWxlc19n
ZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNldHRpbmdzLCAwKTsKKworICAgIEVpbmFfTGlz
dCogZmlsZXMgPSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3Muc2VsZWN0ZWRGaWxlcy5iZWdpbigpOwor
ICAgIGZvciAoOyBpdCAhPSBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0aW5ncy5zZWxlY3RlZEZp
bGVzLmVuZCgpOyArK2l0KQorICAgICAgICBmaWxlcyA9IGVpbmFfbGlzdF9hcHBlbmQoZmlsZXMs
IGVpbmFfc3RyaW5nc2hhcmVfYWRkKCgqaXQpLnV0ZjgoKS5kYXRhKCkpKTsKKworICAgIHJldHVy
biBmaWxlczsKK30KKworY29uc3QgY2hhciogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19jYXB0
dXJlX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5ncykKK3sKKyNp
ZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoc2V0dGluZ3MsIDApOworICAgIHJldHVybiBzZXR0aW5ncy0+Y2FwdHVyZTsKKyNlbHNlCisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogZXdr
X2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19uZXcoY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0
aW5ncyYgY29yZVNldHRpbmdzKQoreworCisjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAg
cmV0dXJuIG5ldyBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKGNvcmVTZXR0aW5ncywgZWluYV9z
dHJpbmdzaGFyZV9hZGQoc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MtPmNhcHR1cmUudXRm
OCgpLmRhdGEoKSkpOworI2Vsc2UKKyAgICByZXR1cm4gbmV3IEV3a19GaWxlX0Nob29zZXJfU2V0
dGluZ3MoY29yZVNldHRpbmdzKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19maWxlX2Nob29zZXJf
c2V0dGluZ3NfZnJlZShFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5ncykKK3sKKyNp
ZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChzZXR0aW5n
cy0+Y2FwdHVyZSk7CisjZW5kaWYKKyAgICBkZWxldGUgc2V0dGluZ3M7Cit9CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmggYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZiMWQ4OWFjMjdjYjdhYjNmNzVmODM1NjRhYzgzNmMyZWI4ZmZiYWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5ncy5o
CkBAIC0wLDAgKzEsMTE4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdz
LmgKKyAqIEBicmllZiAgIEZpbGUgQ2hvb3NlciBTZXR0aW5ncyBBUEkuCisgKgorICogRmlsZSBD
aG9vc2VyIFNldHRpbmdzIGlzIGEgc2V0IG9mIGF0dHJpYnV0ZXMgZm9yIGZpbGUgc2VsZWN0aW9u
IGRpYWxvZy4KKyAqIEl0IGluY2x1ZGVzIGF0dHJpYnV0ZSB2YWx1ZXMgcmVnYXJkaW5nOgorICog
LSBhbGxvd2FuY2Ugb2YgbXVsdGlwbGUgZmlsZXMgc2VsZWN0aW9uCisgKiAtIGFsbG93YW5jZSBv
ZiB1cGxvYWQgZGlyZWN0b3J5CisgKiAtIGxpc3Qgb2YgYWNjZXB0ZWQgbWltZSB0eXBlcworICog
LSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9ucworICogLSBsaXN0IG9mIGluaXRpYWwg
c2VsZWN0ZWQgZmlsZSBuYW1lcworICogLSBjYXB0dXJlIGF0dHJpYnV0ZSBmb3IgSFRNTCBtZWRp
YSBjYXB0dXJlCisgKi8KKworI2lmbmRlZiBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2gKKyNk
ZWZpbmUgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1
Y3QgX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5nczsK
KworLyoqCisgKiBRdWVyeSBpZiBtdWx0aXBsZSBmaWxlcyBhcmUgc3VwcG9ydGVkIGJ5IGZpbGUg
Y2hvb3Nlci4KKyAqCisgKiBAcGFyYW0gcyBmaWxlIGNob29zZXIgc2V0dGluZ3Mgb2JqZWN0Cisg
KgorICogSXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggaW5kaWNhdGVzIGlmIG11bHRp
cGxlIGZpbGUgaXMgc3VwcG9ydGVkIG9yIG5vdC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJV
RSBvbiBzdXBwb3J0IG11bHRpcGxlIGZpbGVzIG9yIEBjIEVJTkFfRkFMU0Ugb24gbm90IHN1cHBv
cnQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3Nf
bXVsdGlwbGVfZmlsZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgKnMpOwor
CisvKioKKyAqIFF1ZXJ5IGlmIGRpcmVjdG9yeSB1cGxvYWQgaXMgc3VwcG9ydGVkIGJ5IGZpbGUg
Y2hvb3Nlci4KKyAqCisgKiBAcGFyYW0gcyBmaWxlIGNob29zZXIgc2V0dGluZ3Mgb2JqZWN0Cisg
KgorICogSXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggaW5kaWNhdGVzIGlmIGRpcmVj
dG9yeSB1cGxvYWQgaXMgc3VwcG9ydGVkIG9yIG5vdC4KKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFf
VFJVRSBvbiBzdXBwb3J0IGRpcmVjdG9yeSB1cGxvYWQgb3IgQGMgRUlOQV9GQUxTRSBvbiBub3Qg
c3VwcG9ydAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2Fs
bG93c19kaXJlY3RvcnlfdXBsb2FkX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdz
ICpzKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFjY2VwdGVkIG1pbWV0eXBlcyBv
ZiB0aGUgZmlsZSBjaG9vc2VyLgorICoKKyAqIEVhY2ggaXRlbSBvZiB0aGUgbGlzdCBzaG91bGQg
YmUgcmVsZWFzZWQgdXNpbmcgZnJlZSgpLgorICoKKyAqIEBwYXJhbSBzIGZpbGUgY2hvb3NlciBz
ZXR0aW5ncyBvYmplY3QKKyAqCisgKiBAcmV0dXJuIGxpc3Qgb2YgYWNjZXB0ZWQgbWltZXR5cGVz
IG9yIEBjIE5VTEwgaWYgdGhlcmUgaXMgbm90IGEgcHJvcGVyIGZpbGUgY2hvb3NlciBzZXR0aW5n
cyBzY2hlbWUKKyAqLworRUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Nf
YWNjZXB0X21pbWV0eXBlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyAqcyk7
CisKKy8qKgorICogUmV0dXJucyB0aGUgbGlzdCBvZiBhY2NlcHRlZCBmaWxlIGV4dGVudGlvbnMg
b2YgdGhlIGZpbGUgY2hvb3Nlci4KKyAqCisgKiBFYWNoIGl0ZW0gb2YgdGhlIGxpc3Qgc2hvdWxk
IGJlIHJlbGVhc2VkIHVzaW5nIGZyZWUoKS4KKyAqCisgKiBAcGFyYW0gcyBmaWxlIGNob29zZXIg
c2V0dGluZ3Mgb2JqZWN0CisgKgorICogQHJldHVybiBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0
ZW50aW9ucyBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBhIHByb3BlciBmaWxlIGNob29zZXIg
c2V0dGluZ3Mgc2NoZW1lCisgKi8KK0VBUEkgRWluYV9MaXN0ICpld2tfZmlsZV9jaG9vc2VyX3Nl
dHRpbmdzX2FjY2VwdF9maWxlX2V4dGVudGlvbnNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXJf
U2V0dGluZ3MgKnMpOworCisvKioKKyAqIFJldHVybnMgdGhlIGxpc3Qgb2Ygc2VsZWN0ZWQgZmls
ZSBuYW1lcyBvZiB0aGUgZmlsZSBjaG9vc2VyLgorICoKKyAqIFRoaXMgbGlzdCBpbmRpY2F0ZXMg
cHJldmlvdXNseSBzZWxlY3RlZCBmaWxlIG5hbWVzIGZvciB0aGUgZmlsZSBjaG9vc2VyLgorICog
WW91IG1heSB3YW50IHRvIGRpcGxheSB0aGVzZSBmaWxlIG5hbWVzIG9uIHlvdXIgZGlhbG9nLgor
ICoKKyAqIEVhY2ggaXRlbSBvZiB0aGUgbGlzdCBzaG91bGQgYmUgcmVsZWFzZWQgdXNpbmcgZnJl
ZSgpLgorICoKKyAqIEBwYXJhbSBzIGZpbGUgY2hvb3NlciBzZXR0aW5ncyBvYmplY3QKKyAqCisg
KiBAcmV0dXJuIGxpc3Qgb2Ygc2VsZWN0ZWQgZmlsZSBuYW1lcyBvciBAYyBOVUxMIGlmIHRoZXJl
IGlzIG5vdCBhIHByb3BlciBmaWxlIGNob29zZXIgc2V0dGluZ3Mgc2NoZW1lCisgKi8KK0VBUEkg
RWluYV9MaXN0ICpld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3NlbGVjdGVkX2ZpbGVzX2dldChj
b25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzICpzKTsKKworLyoqCisgKiBSZXR1cm5zIHRo
ZSBjYXB0dXJlIGF0dHJpYnV0ZSBvZiB0aGUgZmlsZSBzaG9vc2VyLgorICoKKyAqIFRoZSBjYXB0
dXJlIGF0dHJpYnV0ZXMgaXMgdG8gc3VwcG9ydCBIVE1MIE1lZGlhIENhcHR1cmUuCisgKgorICog
QHBhcmFtIG8gZmlsZSBjaG9vc2VyIHNldHRpbmdzIG9iamVjdAorICoKKyAqIEByZXR1cm4gT25l
IG9mIHRoZXNlIHN0cmluZyAiY2FtZXJhIiwgImNhbWNvcmRlciIsICJtaWNyb3Bob25lIiBvciAi
ZmlsZXN5c3RlbSIgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSBwcm9wZXIgZmlsZSBjaG9v
c2VyIHNldHRpbmdzIHNjaGVtZQorICovCitFQVBJIGNvbnN0IGNoYXIgKmV3a19maWxlX2Nob29z
ZXJfc2V0dGluZ3NfY2FwdHVyZV9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyAq
cyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjMzOTE0
OWU4MmU1MzcyYWFkODE5NDBmOGUyMDlhMzZlODNiNzczCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZS5oCkBA
IC0wLDAgKzEsMzIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaWZuZGVmIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZV9oCisj
ZGVmaW5lIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZV9oCisKKy8vIGZvcndhcmQg
ZGVjbGFyYXRpb25zCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgRmlsZUNob29zZXJTZXR0
aW5nczsKK30KKworRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogZXdrX2ZpbGVfY2hvb3Nlcl9z
ZXR0aW5nc19uZXcoY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYgb3JpZ2luKTsK
K3ZvaWQgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19mcmVlKEV3a19GaWxlX0Nob29zZXJfU2V0
dGluZ3MqIHNldHRpbmdzKTsKKworI2VuZGlmIC8vIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Nf
cHJpdmF0ZV9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153770</attachid>
            <date>2012-07-23 04:02:45 -0700</date>
            <delta_ts>2012-07-23 05:33:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91957-20120723200236.patch</filename>
            <type>text/plain</type>
            <size>14505</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmFkZWEzN2NhNDFmYjNj
MDU1ZjJlNTNlZjRkODAwYzc4OTdmOWQuLmY0ZDJkODQyMmIwZjgyYjk1MTZjZTI1YzZkNDc1NDUx
MTlkMTMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjMgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEZpbGUg
Q2hvb3NlciBTZXR0aW5ncyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxOTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mgc291cmNlIGFuZCBoZWFk
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wNy0yMiAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRF
Ul9UQUcgYW5kIEVOQUJMRV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5k
IEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4
IGE2ZmI0YTU4NDA4YzE1Y2MxODBiZWY1ZThmZGI3OTMxYjZmNjE3N2IuLmRjZGZlYmI2YmQzZWM5
M2U4NjFhOTMxOGIyODRmOGYwOTMwMjQzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxMi0wNy0yMyAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4K
KworICAgICAgICBbRUZMXSBBZGQgRmlsZSBDaG9vc2VyIFNldHRpbmdzIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE5NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBj
aG9vc2VyIHNldHRpbmdzLgorICAgICAgICBUaGlzIEFQSXMgYWxsb3cgYW4gYXBwbGljYXRpb24o
bGlrZSBhIGJyb3dzZXIpIHF1ZXJpZXMgaW5mb3JtYXRpb25zCisgICAgICAgIGFib3V0IG11bHRp
cGxlIGZpbGVzIGFsbG93ZWQsIGRpcmVjdG9yeSB1cGxvYWQgYWxsb3dlZCwgYWNjZXB0IG1pbWV0
eXBlcyBsaXN0CisgICAgICAgICwgYWNjZXB0IGZpbGUgZXh0ZW50aW9ucyBsaXN0LCBzZWxlY3Rl
ZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRvIHN1cHBvcnQgSFRNTCBtZWRpYSBjYXB0dXJlLgor
CisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBld2svZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGlu
Z3MpOgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3M6Ol9Fd2tfRmlsZV9DaG9v
c2VyX1NldHRpbmdzKToKKyAgICAgICAgKGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWxsb3dz
X211bHRpcGxlX2ZpbGVzX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdz
X2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzX2FjY2VwdF9taW1ldHlwZXNfZ2V0KToKKyAgICAgICAgKGV3a19maWxlX2Nob29z
ZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQpOgorICAgICAgICAoZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19zZWxlY3RlZF9maWxlc19nZXQpOgorICAgICAgICAoZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19jYXB0dXJlX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX25ldyk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2Zy
ZWUpOgorICAgICAgICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmg6IEFkZGVkLgor
ICAgICAgICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJM
RV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVT
U19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNmNkYzli
Nzc1ZmRmNTk1ZjE3Mzc2MjNmMmQwOGM2ZTAxOTY2YjdiZi4uY2Y0NDk0YzlkYTlhNDhlNDgwNjQ1
Y2NkYjVhNjA5NzUyNWIxZTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMzIsNiAr
MTMyLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19jb250
ZXh0bWVudS5jcHAKICAgICBlZmwvZXdrL2V3a19jb29raWVzLmNwcAogICAgIGVmbC9ld2svZXdr
X2N1c3RvbV9oYW5kbGVyLmNwcAorICAgIGVmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5n
cy5jcHAKICAgICBlZmwvZXdrL2V3a19mcmFtZS5jcHAKICAgICBlZmwvZXdrL2V3a19oaXN0b3J5
LmNwcAogICAgIGVmbC9ld2svZXdrX2ludGVudC5jcHAKQEAgLTI3NCw2ICsyNzUsNyBAQCBTRVQo
RVdlYktpdF9IRUFERVJTCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2sv
ZXdrX2F1dGguaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19j
b250ZXh0bWVudS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdr
X2Nvb2tpZXMuaAorICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19m
aWxlX2Nob29zZXJfc2V0dGluZ3MuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9l
ZmwvZXdrL2V3a19mcmFtZS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9l
d2svZXdrX2hpc3RvcnkuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdr
L2V3a19pbnRlbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKaW5kZXggZjkwODYwMzczZmZhZDU2
YmIwZDMwZWZiMmVlNWY1MGVhOTE4MjhhOC4uYjgyYTg5NWQ0NGJkNjNlNjRmYjJlYjMxZmQwOTIw
Y2VhOGNkMGY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiZXdrX2F1dGguaCIKICNpbmNsdWRlICJld2tfY29udGV4dG1lbnUuaCIKICNpbmNs
dWRlICJld2tfY29va2llcy5oIgorI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJld2tfZnJhbWUuaCIKICNpbmNsdWRlICJld2tfaGlzdG9yeS5oIgogI2lu
Y2x1ZGUgImV3a19pbnRlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZmlsZV9jaG9vc2VyX3NldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDU0MWQyNzc5OWQwMjIyMzE5
YzNjZTdlZTcwMjY5NmZjZWYyNzUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsMTIzIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuaCIKKwor
I2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0
aW5nc19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1Y3Qg
X0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgeworICAgIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9v
c2VyU2V0dGluZ3MmIGZpbGVDaG9vc2VyU2V0dGluZ3M7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRV
UkUpCisgICAgY29uc3QgY2hhciogY2FwdHVyZTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElB
X0NBUFRVUkUpCisgICAgX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MgLCBjb25zdCBjaGFyKiBjYXB0dXJlU3RyaW5n
KQorICAgICAgICA6IGZpbGVDaG9vc2VyU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgICwgY2Fw
dHVyZShjYXB0dXJlU3RyaW5nKQorI2Vsc2UKKyAgICBfRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5n
cyhjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKKyAgICAgICAg
OiBmaWxlQ2hvb3NlclNldHRpbmdzKHNldHRpbmdzKQorI2VuZGlmCisgICAgeyB9Cit9OworCitF
aW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfbXVsdGlwbGVfZmlsZXNf
Z2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXR0aW5ncywgZmFsc2UpOworICAgIHJldHVy
biBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOworfQor
CitFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfZGlyZWN0b3J5X3Vw
bG9hZF9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpCit7Cisj
aWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNldHRpbmdzLCBmYWxzZSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5maWxlQ2hvb3Nl
clNldHRpbmdzLmFsbG93c0RpcmVjdG9yeVVwbG9hZDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCit9CisKK0VpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hY2Nl
cHRfbWltZXR5cGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5n
cykKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOwor
CisgICAgRWluYV9MaXN0KiBtaW1ldHlwZXMgPSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0
TUlNRVR5cGVzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IHNldHRpbmdzLT5maWxlQ2hvb3Nl
clNldHRpbmdzLmFjY2VwdE1JTUVUeXBlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgbWltZXR5cGVz
ID0gZWluYV9saXN0X2FwcGVuZChtaW1ldHlwZXMsIHN0cmR1cCgoKml0KS51dGY4KCkuZGF0YSgp
KSk7CisKKyAgICByZXR1cm4gbWltZXR5cGVzOworfQorCitFaW5hX0xpc3QqIGV3a19maWxlX2No
b29zZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQoY29uc3QgRXdrX0ZpbGVf
Q2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNldHRpbmdzLCAwKTsKKworICAgIEVpbmFfTGlzdCogZmlsZUV4dGVudGlvbnMg
PSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2V0dGlu
Z3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMuYmVnaW4oKTsKKyAg
ICBmb3IgKDsgaXQgIT0gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0RmlsZUV4
dGVuc2lvbnMuZW5kKCk7ICsraXQpCisgICAgICAgIGZpbGVFeHRlbnRpb25zID0gZWluYV9saXN0
X2FwcGVuZChmaWxlRXh0ZW50aW9ucywgc3RyZHVwKCgqaXQpLnV0ZjgoKS5kYXRhKCkpKTsKKwor
ICAgIHJldHVybiBmaWxlRXh0ZW50aW9uczsKK30KKworRWluYV9MaXN0KiBld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX3NlbGVjdGVkX2ZpbGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1Nl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c2V0dGluZ3MsIDApOworCisgICAgRWluYV9MaXN0KiBmaWxlcyA9IDA7CisgICAgVmVjdG9yPFdU
Rjo6U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0
aW5ncy5zZWxlY3RlZEZpbGVzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IHNldHRpbmdzLT5m
aWxlQ2hvb3NlclNldHRpbmdzLnNlbGVjdGVkRmlsZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGZp
bGVzID0gZWluYV9saXN0X2FwcGVuZChmaWxlcywgc3RyZHVwKCgqaXQpLnV0ZjgoKS5kYXRhKCkp
KTsKKworICAgIHJldHVybiBmaWxlczsKK30KKworY29uc3QgY2hhciogZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5nc19jYXB0dXJlX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOworICAgIHJldHVybiBzZXR0aW5ncy0+Y2Fw
dHVyZTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworRXdrX0ZpbGVfQ2hvb3Nl
cl9TZXR0aW5ncyogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19uZXcoY29uc3QgV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyYgY29yZVNldHRpbmdzKQoreworCisjaWYgRU5BQkxFKE1FRElB
X0NBUFRVUkUpCisgICAgcmV0dXJuIG5ldyBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKGNvcmVT
ZXR0aW5ncywgZWluYV9zdHJpbmdzaGFyZV9hZGQoc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGlu
Z3MtPmNhcHR1cmUudXRmOCgpLmRhdGEoKSkpOworI2Vsc2UKKyAgICByZXR1cm4gbmV3IEV3a19G
aWxlX0Nob29zZXJfU2V0dGluZ3MoY29yZVNldHRpbmdzKTsKKyNlbmRpZgorfQorCit2b2lkIGV3
a19maWxlX2Nob29zZXJfc2V0dGluZ3NfZnJlZShFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBlaW5hX3N0cmluZ3No
YXJlX2RlbChzZXR0aW5ncy0+Y2FwdHVyZSk7CisjZW5kaWYKKyAgICBkZWxldGUgc2V0dGluZ3M7
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0
aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQyYTYzMDY1NTI1NTk1YTRmODM0MjYwMDljNDgzOGE1OTZlNjU2
OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hv
b3Nlcl9zZXR0aW5ncy5oCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfZmlsZV9j
aG9vc2VyX3NldHRpbmdzLmgKKyAqIEBicmllZiAgIEZpbGUgQ2hvb3NlciBTZXR0aW5ncyBBUEku
CisgKgorICogRmlsZSBDaG9vc2VyIFNldHRpbmdzIGlzIGEgc2V0IG9mIGF0dHJpYnV0ZXMgZm9y
IGZpbGUgc2VsZWN0aW9uIGRpYWxvZy4KKyAqIEl0IGluY2x1ZGVzIGF0dHJpYnV0ZSB2YWx1ZXMg
cmVnYXJkaW5nOgorICogLSBhbGxvd2FuY2Ugb2YgbXVsdGlwbGUgZmlsZXMgc2VsZWN0aW9uCisg
KiAtIGFsbG93YW5jZSBvZiB1cGxvYWQgZGlyZWN0b3J5CisgKiAtIGxpc3Qgb2YgYWNjZXB0ZWQg
bWltZSB0eXBlcworICogLSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9ucworICogLSBs
aXN0IG9mIGluaXRpYWwgc2VsZWN0ZWQgZmlsZSBuYW1lcworICogLSBjYXB0dXJlIGF0dHJpYnV0
ZSBmb3IgSFRNTCBtZWRpYSBjYXB0dXJlCisgKi8KKworI2lmbmRlZiBld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzX2gKKyNkZWZpbmUgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19oCisKKyNpbmNs
dWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KwordHlwZWRlZiBzdHJ1Y3QgX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgRXdrX0ZpbGVfQ2hv
b3Nlcl9TZXR0aW5nczsKKworLyoqCisgKiBRdWVyeSBpZiBtdWx0aXBsZSBmaWxlcyBhcmUgc3Vw
cG9ydGVkIGJ5IGZpbGUgY2hvb3Nlci4KKyAqCisgKiBAcGFyYW0gcyBmaWxlIGNob29zZXIgc2V0
dGluZ3Mgb2JqZWN0CisgKgorICogSXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggaW5k
aWNhdGVzIGlmIG11bHRpcGxlIGZpbGUgaXMgc3VwcG9ydGVkIG9yIG5vdC4KKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdXBwb3J0IG11bHRpcGxlIGZpbGVzIG9yIEBjIEVJTkFfRkFM
U0Ugb24gbm90IHN1cHBvcnQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9z
ZXR0aW5nc19hbGxvd3NfbXVsdGlwbGVfZmlsZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXJf
U2V0dGluZ3MgKnMpOworCisvKioKKyAqIFF1ZXJ5IGlmIGRpcmVjdG9yeSB1cGxvYWQgaXMgc3Vw
cG9ydGVkIGJ5IGZpbGUgY2hvb3Nlci4KKyAqCisgKiBAcGFyYW0gcyBmaWxlIGNob29zZXIgc2V0
dGluZ3Mgb2JqZWN0CisgKgorICogSXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggaW5k
aWNhdGVzIGlmIGRpcmVjdG9yeSB1cGxvYWQgaXMgc3VwcG9ydGVkIG9yIG5vdC4KKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdXBwb3J0IGRpcmVjdG9yeSB1cGxvYWQgb3IgQGMgRUlO
QV9GQUxTRSBvbiBub3Qgc3VwcG9ydAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldChjb25zdCBFd2tfRmlsZV9D
aG9vc2VyX1NldHRpbmdzICpzKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFjY2Vw
dGVkIG1pbWV0eXBlcyBvZiB0aGUgZmlsZSBjaG9vc2VyLgorICoKKyAqIEVhY2ggaXRlbSBvZiB0
aGUgbGlzdCBzaG91bGQgYmUgcmVsZWFzZWQgdXNpbmcgZnJlZSgpLgorICoKKyAqIEBwYXJhbSBz
IGZpbGUgY2hvb3NlciBzZXR0aW5ncyBvYmplY3QKKyAqCisgKiBAcmV0dXJuIGxpc3Qgb2YgYWNj
ZXB0ZWQgbWltZXR5cGVzIG9yIEBjIE5VTEwgaWYgdGhlcmUgaXMgbm90IGEgcHJvcGVyIGZpbGUg
Y2hvb3NlciBzZXR0aW5ncyBzY2hlbWUKKyAqLworRUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2No
b29zZXJfc2V0dGluZ3NfYWNjZXB0X21pbWV0eXBlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nl
cl9TZXR0aW5ncyAqcyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgbGlzdCBvZiBhY2NlcHRlZCBm
aWxlIGV4dGVudGlvbnMgb2YgdGhlIGZpbGUgY2hvb3Nlci4KKyAqCisgKiBFYWNoIGl0ZW0gb2Yg
dGhlIGxpc3Qgc2hvdWxkIGJlIHJlbGVhc2VkIHVzaW5nIGZyZWUoKS4KKyAqCisgKiBAcGFyYW0g
cyBmaWxlIGNob29zZXIgc2V0dGluZ3Mgb2JqZWN0CisgKgorICogQHJldHVybiBsaXN0IG9mIGFj
Y2VwdGVkIGZpbGUgZXh0ZW50aW9ucyBvciBAYyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBhIHByb3Bl
ciBmaWxlIGNob29zZXIgc2V0dGluZ3Mgc2NoZW1lCisgKi8KK0VBUEkgRWluYV9MaXN0ICpld2tf
ZmlsZV9jaG9vc2VyX3NldHRpbmdzX2FjY2VwdF9maWxlX2V4dGVudGlvbnNfZ2V0KGNvbnN0IEV3
a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgKnMpOworCisvKioKKyAqIFJldHVybnMgdGhlIGxpc3Qg
b2Ygc2VsZWN0ZWQgZmlsZSBuYW1lcyBvZiB0aGUgZmlsZSBjaG9vc2VyLgorICoKKyAqIFRoaXMg
bGlzdCBpbmRpY2F0ZXMgcHJldmlvdXNseSBzZWxlY3RlZCBmaWxlIG5hbWVzIGZvciB0aGUgZmls
ZSBjaG9vc2VyLgorICogWW91IG1heSB3YW50IHRvIGRpcGxheSB0aGVzZSBmaWxlIG5hbWVzIG9u
IHlvdXIgZGlhbG9nLgorICoKKyAqIEVhY2ggaXRlbSBvZiB0aGUgbGlzdCBzaG91bGQgYmUgcmVs
ZWFzZWQgdXNpbmcgZnJlZSgpLgorICoKKyAqIEBwYXJhbSBzIGZpbGUgY2hvb3NlciBzZXR0aW5n
cyBvYmplY3QKKyAqCisgKiBAcmV0dXJuIGxpc3Qgb2Ygc2VsZWN0ZWQgZmlsZSBuYW1lcyBvciBA
YyBOVUxMIGlmIHRoZXJlIGlzIG5vdCBhIHByb3BlciBmaWxlIGNob29zZXIgc2V0dGluZ3Mgc2No
ZW1lCisgKi8KK0VBUEkgRWluYV9MaXN0ICpld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3NlbGVj
dGVkX2ZpbGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzICpzKTsKKworLyoq
CisgKiBSZXR1cm5zIHRoZSBjYXB0dXJlIGF0dHJpYnV0ZSBvZiB0aGUgZmlsZSBzaG9vc2VyLgor
ICoKKyAqIFRoZSBjYXB0dXJlIGF0dHJpYnV0ZXMgaXMgdG8gc3VwcG9ydCBIVE1MIE1lZGlhIENh
cHR1cmUuCisgKgorICogQHBhcmFtIG8gZmlsZSBjaG9vc2VyIHNldHRpbmdzIG9iamVjdAorICoK
KyAqIEByZXR1cm4gb25lIG9mIHRoZXNlIHN0cmluZyAiY2FtZXJhIiwgImNhbWNvcmRlciIsICJt
aWNyb3Bob25lIiBvciAiZmlsZXN5c3RlbSIgb3IgQGMgTlVMTCBpZiB0aGVyZSBpcyBub3QgYSBw
cm9wZXIgZmlsZSBjaG9vc2VyIHNldHRpbmdzIHNjaGVtZQorICovCitFQVBJIGNvbnN0IGNoYXIg
KmV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfY2FwdHVyZV9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hv
b3Nlcl9TZXR0aW5ncyAqcyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvLyBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZjMzOTE0OWU4MmU1MzcyYWFkODE5NDBmOGUyMDlhMzZlODNiNzczCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGlu
Z3NfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19maWxlX2Nob29zZXJfc2V0dGlu
Z3NfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJpdmF0ZV9o
CisKKy8vIGZvcndhcmQgZGVjbGFyYXRpb25zCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3Qg
RmlsZUNob29zZXJTZXR0aW5nczsKK30KKworRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogZXdr
X2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19uZXcoY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0
aW5ncyYgb3JpZ2luKTsKK3ZvaWQgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19mcmVlKEV3a19G
aWxlX0Nob29zZXJfU2V0dGluZ3MqIHNldHRpbmdzKTsKKworI2VuZGlmIC8vIGV3a19maWxlX2No
b29zZXJfc2V0dGluZ3NfcHJpdmF0ZV9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153784</attachid>
            <date>2012-07-23 05:33:38 -0700</date>
            <delta_ts>2012-07-23 20:01:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91957-20120723213330.patch</filename>
            <type>text/plain</type>
            <size>14521</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmFkZWEzN2NhNDFmYjNj
MDU1ZjJlNTNlZjRkODAwYzc4OTdmOWQuLmY0ZDJkODQyMmIwZjgyYjk1MTZjZTI1YzZkNDc1NDUx
MTlkMTMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjMgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEZpbGUg
Q2hvb3NlciBTZXR0aW5ncyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxOTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mgc291cmNlIGFuZCBoZWFk
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wNy0yMiAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRF
Ul9UQUcgYW5kIEVOQUJMRV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5k
IEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4
IGE2ZmI0YTU4NDA4YzE1Y2MxODBiZWY1ZThmZGI3OTMxYjZmNjE3N2IuLmRjZGZlYmI2YmQzZWM5
M2U4NjFhOTMxOGIyODRmOGYwOTMwMjQzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxMi0wNy0yMyAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4K
KworICAgICAgICBbRUZMXSBBZGQgRmlsZSBDaG9vc2VyIFNldHRpbmdzIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE5NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBj
aG9vc2VyIHNldHRpbmdzLgorICAgICAgICBUaGlzIEFQSXMgYWxsb3cgYW4gYXBwbGljYXRpb24o
bGlrZSBhIGJyb3dzZXIpIHF1ZXJpZXMgaW5mb3JtYXRpb25zCisgICAgICAgIGFib3V0IG11bHRp
cGxlIGZpbGVzIGFsbG93ZWQsIGRpcmVjdG9yeSB1cGxvYWQgYWxsb3dlZCwgYWNjZXB0IG1pbWV0
eXBlcyBsaXN0CisgICAgICAgICwgYWNjZXB0IGZpbGUgZXh0ZW50aW9ucyBsaXN0LCBzZWxlY3Rl
ZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRvIHN1cHBvcnQgSFRNTCBtZWRpYSBjYXB0dXJlLgor
CisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBld2svZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGlu
Z3MpOgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3M6Ol9Fd2tfRmlsZV9DaG9v
c2VyX1NldHRpbmdzKToKKyAgICAgICAgKGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWxsb3dz
X211bHRpcGxlX2ZpbGVzX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdz
X2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzX2FjY2VwdF9taW1ldHlwZXNfZ2V0KToKKyAgICAgICAgKGV3a19maWxlX2Nob29z
ZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQpOgorICAgICAgICAoZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19zZWxlY3RlZF9maWxlc19nZXQpOgorICAgICAgICAoZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19jYXB0dXJlX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX25ldyk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2Zy
ZWUpOgorICAgICAgICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmg6IEFkZGVkLgor
ICAgICAgICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJM
RV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVT
U19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNmNkYzli
Nzc1ZmRmNTk1ZjE3Mzc2MjNmMmQwOGM2ZTAxOTY2YjdiZi4uY2Y0NDk0YzlkYTlhNDhlNDgwNjQ1
Y2NkYjVhNjA5NzUyNWIxZTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMzIsNiAr
MTMyLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19jb250
ZXh0bWVudS5jcHAKICAgICBlZmwvZXdrL2V3a19jb29raWVzLmNwcAogICAgIGVmbC9ld2svZXdr
X2N1c3RvbV9oYW5kbGVyLmNwcAorICAgIGVmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5n
cy5jcHAKICAgICBlZmwvZXdrL2V3a19mcmFtZS5jcHAKICAgICBlZmwvZXdrL2V3a19oaXN0b3J5
LmNwcAogICAgIGVmbC9ld2svZXdrX2ludGVudC5jcHAKQEAgLTI3NCw2ICsyNzUsNyBAQCBTRVQo
RVdlYktpdF9IRUFERVJTCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2sv
ZXdrX2F1dGguaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19j
b250ZXh0bWVudS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdr
X2Nvb2tpZXMuaAorICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19m
aWxlX2Nob29zZXJfc2V0dGluZ3MuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9l
ZmwvZXdrL2V3a19mcmFtZS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9l
d2svZXdrX2hpc3RvcnkuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdr
L2V3a19pbnRlbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKaW5kZXggZjkwODYwMzczZmZhZDU2
YmIwZDMwZWZiMmVlNWY1MGVhOTE4MjhhOC4uYjgyYTg5NWQ0NGJkNjNlNjRmYjJlYjMxZmQwOTIw
Y2VhOGNkMGY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiZXdrX2F1dGguaCIKICNpbmNsdWRlICJld2tfY29udGV4dG1lbnUuaCIKICNpbmNs
dWRlICJld2tfY29va2llcy5oIgorI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJld2tfZnJhbWUuaCIKICNpbmNsdWRlICJld2tfaGlzdG9yeS5oIgogI2lu
Y2x1ZGUgImV3a19pbnRlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZmlsZV9jaG9vc2VyX3NldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDU0MWQyNzc5OWQwMjIyMzE5
YzNjZTdlZTcwMjY5NmZjZWYyNzUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsMTIzIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuaCIKKwor
I2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0
aW5nc19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1Y3Qg
X0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgeworICAgIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9v
c2VyU2V0dGluZ3MmIGZpbGVDaG9vc2VyU2V0dGluZ3M7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRV
UkUpCisgICAgY29uc3QgY2hhciogY2FwdHVyZTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElB
X0NBUFRVUkUpCisgICAgX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MgLCBjb25zdCBjaGFyKiBjYXB0dXJlU3RyaW5n
KQorICAgICAgICA6IGZpbGVDaG9vc2VyU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgICwgY2Fw
dHVyZShjYXB0dXJlU3RyaW5nKQorI2Vsc2UKKyAgICBfRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5n
cyhjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKKyAgICAgICAg
OiBmaWxlQ2hvb3NlclNldHRpbmdzKHNldHRpbmdzKQorI2VuZGlmCisgICAgeyB9Cit9OworCitF
aW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfbXVsdGlwbGVfZmlsZXNf
Z2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXR0aW5ncywgZmFsc2UpOworICAgIHJldHVy
biBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOworfQor
CitFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfZGlyZWN0b3J5X3Vw
bG9hZF9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpCit7Cisj
aWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNldHRpbmdzLCBmYWxzZSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5maWxlQ2hvb3Nl
clNldHRpbmdzLmFsbG93c0RpcmVjdG9yeVVwbG9hZDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCit9CisKK0VpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hY2Nl
cHRfbWltZXR5cGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5n
cykKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOwor
CisgICAgRWluYV9MaXN0KiBtaW1ldHlwZXMgPSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0
TUlNRVR5cGVzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IHNldHRpbmdzLT5maWxlQ2hvb3Nl
clNldHRpbmdzLmFjY2VwdE1JTUVUeXBlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgbWltZXR5cGVz
ID0gZWluYV9saXN0X2FwcGVuZChtaW1ldHlwZXMsIHN0cmR1cCgoKml0KS51dGY4KCkuZGF0YSgp
KSk7CisKKyAgICByZXR1cm4gbWltZXR5cGVzOworfQorCitFaW5hX0xpc3QqIGV3a19maWxlX2No
b29zZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQoY29uc3QgRXdrX0ZpbGVf
Q2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNldHRpbmdzLCAwKTsKKworICAgIEVpbmFfTGlzdCogZmlsZUV4dGVudGlvbnMg
PSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2V0dGlu
Z3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMuYmVnaW4oKTsKKyAg
ICBmb3IgKDsgaXQgIT0gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0RmlsZUV4
dGVuc2lvbnMuZW5kKCk7ICsraXQpCisgICAgICAgIGZpbGVFeHRlbnRpb25zID0gZWluYV9saXN0
X2FwcGVuZChmaWxlRXh0ZW50aW9ucywgc3RyZHVwKCgqaXQpLnV0ZjgoKS5kYXRhKCkpKTsKKwor
ICAgIHJldHVybiBmaWxlRXh0ZW50aW9uczsKK30KKworRWluYV9MaXN0KiBld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX3NlbGVjdGVkX2ZpbGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1Nl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c2V0dGluZ3MsIDApOworCisgICAgRWluYV9MaXN0KiBmaWxlcyA9IDA7CisgICAgVmVjdG9yPFdU
Rjo6U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0
aW5ncy5zZWxlY3RlZEZpbGVzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IHNldHRpbmdzLT5m
aWxlQ2hvb3NlclNldHRpbmdzLnNlbGVjdGVkRmlsZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGZp
bGVzID0gZWluYV9saXN0X2FwcGVuZChmaWxlcywgc3RyZHVwKCgqaXQpLnV0ZjgoKS5kYXRhKCkp
KTsKKworICAgIHJldHVybiBmaWxlczsKK30KKworY29uc3QgY2hhciogZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5nc19jYXB0dXJlX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOworICAgIHJldHVybiBzZXR0aW5ncy0+Y2Fw
dHVyZTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworRXdrX0ZpbGVfQ2hvb3Nl
cl9TZXR0aW5ncyogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19uZXcoY29uc3QgV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyYgY29yZVNldHRpbmdzKQoreworCisjaWYgRU5BQkxFKE1FRElB
X0NBUFRVUkUpCisgICAgcmV0dXJuIG5ldyBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKGNvcmVT
ZXR0aW5ncywgZWluYV9zdHJpbmdzaGFyZV9hZGQoc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGlu
Z3MtPmNhcHR1cmUudXRmOCgpLmRhdGEoKSkpOworI2Vsc2UKKyAgICByZXR1cm4gbmV3IEV3a19G
aWxlX0Nob29zZXJfU2V0dGluZ3MoY29yZVNldHRpbmdzKTsKKyNlbmRpZgorfQorCit2b2lkIGV3
a19maWxlX2Nob29zZXJfc2V0dGluZ3NfZnJlZShFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBlaW5hX3N0cmluZ3No
YXJlX2RlbChzZXR0aW5ncy0+Y2FwdHVyZSk7CisjZW5kaWYKKyAgICBkZWxldGUgc2V0dGluZ3M7
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0
aW5ncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVlNzJjOWU4OWU2NzZjMGEyN2EwMjg3MjNmYjMwOGEyODBhN2Q4
NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hv
b3Nlcl9zZXR0aW5ncy5oCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfZmlsZV9j
aG9vc2VyX3NldHRpbmdzLmgKKyAqIEBicmllZiAgIEZpbGUgQ2hvb3NlciBTZXR0aW5ncyBBUEku
CisgKgorICogRmlsZSBDaG9vc2VyIFNldHRpbmdzIGlzIGEgc2V0IG9mIGF0dHJpYnV0ZXMgZm9y
IGZpbGUgc2VsZWN0aW9uIGRpYWxvZy4KKyAqIEl0IGluY2x1ZGVzIGF0dHJpYnV0ZSB2YWx1ZXMg
cmVnYXJkaW5nOgorICogLSBhbGxvd2FuY2Ugb2YgbXVsdGlwbGUgZmlsZXMgc2VsZWN0aW9uCisg
KiAtIGFsbG93YW5jZSBvZiB1cGxvYWQgZGlyZWN0b3J5CisgKiAtIGxpc3Qgb2YgYWNjZXB0ZWQg
bWltZSB0eXBlcworICogLSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9ucworICogLSBs
aXN0IG9mIGluaXRpYWwgc2VsZWN0ZWQgZmlsZSBuYW1lcworICogLSBjYXB0dXJlIGF0dHJpYnV0
ZSBmb3IgSFRNTCBtZWRpYSBjYXB0dXJlCisgKi8KKworI2lmbmRlZiBld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzX2gKKyNkZWZpbmUgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19oCisKKyNpbmNs
dWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYK
KwordHlwZWRlZiBzdHJ1Y3QgX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgRXdrX0ZpbGVfQ2hv
b3Nlcl9TZXR0aW5nczsKKworLyoqCisgKiBRdWVyeSBpZiBtdWx0aXBsZSBmaWxlcyBhcmUgc3Vw
cG9ydGVkIGJ5IGZpbGUgY2hvb3Nlci4KKyAqCisgKiBAcGFyYW0gcyBmaWxlIGNob29zZXIgc2V0
dGluZ3Mgb2JqZWN0CisgKgorICogSXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggaW5k
aWNhdGVzIGlmIG11bHRpcGxlIGZpbGUgaXMgc3VwcG9ydGVkIG9yIG5vdC4KKyAqCisgKiBAcmV0
dXJuIEBjIEVJTkFfVFJVRSBvbiBzdXBwb3J0IG11bHRpcGxlIGZpbGVzIG9yIEBjIEVJTkFfRkFM
U0Ugb24gbm90IHN1cHBvcnQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9z
ZXR0aW5nc19hbGxvd3NfbXVsdGlwbGVfZmlsZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXJf
U2V0dGluZ3MgKnMpOworCisvKioKKyAqIFF1ZXJ5IGlmIGRpcmVjdG9yeSB1cGxvYWQgaXMgc3Vw
cG9ydGVkIGJ5IGZpbGUgY2hvb3Nlci4KKyAqCisgKiBAcGFyYW0gcyBmaWxlIGNob29zZXIgc2V0
dGluZ3Mgb2JqZWN0CisgKgorICogSXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggaW5k
aWNhdGVzIGlmIGRpcmVjdG9yeSB1cGxvYWQgaXMgc3VwcG9ydGVkIG9yIG5vdC4KKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdXBwb3J0IGRpcmVjdG9yeSB1cGxvYWQgb3IgQGMgRUlO
QV9GQUxTRSBvbiBub3Qgc3VwcG9ydAorICovCitFQVBJIEVpbmFfQm9vbCBld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldChjb25zdCBFd2tfRmlsZV9D
aG9vc2VyX1NldHRpbmdzICpzKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFjY2Vw
dGVkIG1pbWV0eXBlcyBvZiB0aGUgZmlsZSBjaG9vc2VyCisgKgorICogQHBhcmFtIHMgZmlsZSBj
aG9vc2VyIHNldHRpbmdzIG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIEVpbmFfTGlzdCBvZiBhY2Nl
cHRlZCBtaW1ldHlwZXMgb24gc3VjY2Vzcywgb3IgQGMgTlVMTCBvbiBmYWlsdXJlLAorICogICAg
ICAgICB0aGUgRWluYV9MaXN0IGFuZCBpdHMgaXRlbXMgc2hvdWxkIGJlIGZyZWVkIGFmdGVyIHVz
ZSAodXNlIGZyZWUoKSB0byBmcmVlIHRoZSBpdGVtcykKKyAqLworRUFQSSBFaW5hX0xpc3QgKmV3
a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWNjZXB0X21pbWV0eXBlc19nZXQoY29uc3QgRXdrX0Zp
bGVfQ2hvb3Nlcl9TZXR0aW5ncyAqcyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgbGlzdCBvZiBh
Y2NlcHRlZCBmaWxlIGV4dGVudGlvbnMgb2YgdGhlIGZpbGUgY2hvb3NlcgorICoKKyAqIEBwYXJh
bSBzIGZpbGUgY2hvb3NlciBzZXR0aW5ncyBvYmplY3QuCisgKgorICogQHJldHVybiBAYyBFaW5h
X0xpc3Qgb2YgYWNjZXB0ZWQgZmlsZSBleHRlbnRpb25zIG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwg
b24gZmFpbHVyZSwKKyAqICAgICAgICAgdGhlIEVpbmFfTGlzdCBhbmQgaXRzIGl0ZW1zIHNob3Vs
ZCBiZSBmcmVlZCBhZnRlciB1c2UgKHVzZSBmcmVlKCkgdG8gZnJlZSB0aGUgaXRlbXMpIAorICov
CitFQVBJIEVpbmFfTGlzdCAqZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hY2NlcHRfZmlsZV9l
eHRlbnRpb25zX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzICpzKTsKKworLyoq
CisgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIHNlbGVjdGVkIGZpbGUgbmFtZXMgb2YgdGhlIGZpbGUg
Y2hvb3Nlci4KKyAqCisgKiBUaGlzIGxpc3QgaW5kaWNhdGVzIHByZXZpb3VzbHkgc2VsZWN0ZWQg
ZmlsZSBuYW1lcyBmb3IgdGhlIGZpbGUgY2hvb3Nlci4KKyAqIFRoZXNlIGNhbiBiZSB1c2VkIGJ5
IGluaXRpYWwgdmFsdWVzIG9mIHRoZSBmaWxlIGRpYWxvZy4KKyAqCisgKiBAcGFyYW0gcyBmaWxl
IGNob29zZXIgc2V0dGluZ3Mgb2JqZWN0CisgKgorICogQHJldHVybiBAYyBFaW5hX0xpc3Qgb2Yg
c2VsZWN0ZWQgZmlsZSBuYW1lcyBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCisg
KiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5kIGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0
ZXIgdXNlICh1c2UgZnJlZSgpIHRvIGZyZWUgdGhlIGl0ZW1zKQorICovCitFQVBJIEVpbmFfTGlz
dCAqZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19zZWxlY3RlZF9maWxlc19nZXQoY29uc3QgRXdr
X0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyAqcyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgY2FwdHVy
ZSBhdHRyaWJ1dGUgb2YgdGhlIGZpbGUgY2hvb3Nlci4KKyAqCisgKiBUaGUgY2FwdHVyZSBhdHRy
aWJ1dGVzIGlzIHRvIHN1cHBvcnQgSFRNTCBNZWRpYSBDYXB0dXJlLgorICoKKyAqIEBwYXJhbSBv
IGZpbGUgY2hvb3NlciBzZXR0aW5ncyBvYmplY3QKKyAqCisgKiBAcmV0dXJuIG9uZSBvZiB0aGVz
ZSBzdHJpbmcgImNhbWVyYSIsICJjYW1jb3JkZXIiLCAibWljcm9waG9uZSIgCisgKiAgICAgICAg
IG9yICJmaWxlc3lzdGVtIiBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUKKyAqLwor
RUFQSSBjb25zdCBjaGFyICpld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2NhcHR1cmVfZ2V0KGNv
bnN0IEV3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgKnMpOworCisjaWZkZWYgX19jcGx1c3BsdXMK
K30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5n
c19wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYzMzkxNDllODJlNTM3MmFhZDgxOTQwZjhlMjA5YTM2
ZTgzYjc3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfZmls
ZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGVfaAorI2RlZmluZSBld2tfZmlsZV9jaG9vc2VyX3Nl
dHRpbmdzX3ByaXZhdGVfaAorCisvLyBmb3J3YXJkIGRlY2xhcmF0aW9ucworbmFtZXNwYWNlIFdl
YkNvcmUgeworc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7Cit9CisKK0V3a19GaWxlX0Nob29z
ZXJfU2V0dGluZ3MqIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfbmV3KGNvbnN0IFdlYkNvcmU6
OkZpbGVDaG9vc2VyU2V0dGluZ3MmIG9yaWdpbik7Cit2b2lkIGV3a19maWxlX2Nob29zZXJfc2V0
dGluZ3NfZnJlZShFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5ncyk7CisKKyNlbmRp
ZiAvLyBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGVfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153943</attachid>
            <date>2012-07-23 20:02:01 -0700</date>
            <delta_ts>2012-07-24 03:46:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91957-20120724120152.patch</filename>
            <type>text/plain</type>
            <size>14519</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmFkZWEzN2NhNDFmYjNj
MDU1ZjJlNTNlZjRkODAwYzc4OTdmOWQuLmY0ZDJkODQyMmIwZjgyYjk1MTZjZTI1YzZkNDc1NDUx
MTlkMTMwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjMgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEZpbGUg
Q2hvb3NlciBTZXR0aW5ncyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxOTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mgc291cmNlIGFuZCBoZWFk
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wNy0yMiAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRF
Ul9UQUcgYW5kIEVOQUJMRV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5k
IEVOQUJMRV9QUk9HUkVTU19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4
IGE2ZmI0YTU4NDA4YzE1Y2MxODBiZWY1ZThmZGI3OTMxYjZmNjE3N2IuLmRjZGZlYmI2YmQzZWM5
M2U4NjFhOTMxOGIyODRmOGYwOTMwMjQzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxMi0wNy0yMyAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4K
KworICAgICAgICBbRUZMXSBBZGQgRmlsZSBDaG9vc2VyIFNldHRpbmdzIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE5NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBj
aG9vc2VyIHNldHRpbmdzLgorICAgICAgICBUaGlzIEFQSXMgYWxsb3cgYW4gYXBwbGljYXRpb24o
bGlrZSBhIGJyb3dzZXIpIHF1ZXJpZXMgaW5mb3JtYXRpb25zCisgICAgICAgIGFib3V0IG11bHRp
cGxlIGZpbGVzIGFsbG93ZWQsIGRpcmVjdG9yeSB1cGxvYWQgYWxsb3dlZCwgYWNjZXB0IG1pbWV0
eXBlcyBsaXN0CisgICAgICAgICwgYWNjZXB0IGZpbGUgZXh0ZW50aW9ucyBsaXN0LCBzZWxlY3Rl
ZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRvIHN1cHBvcnQgSFRNTCBtZWRpYSBjYXB0dXJlLgor
CisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBld2svZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5ncy5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGlu
Z3MpOgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3M6Ol9Fd2tfRmlsZV9DaG9v
c2VyX1NldHRpbmdzKToKKyAgICAgICAgKGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWxsb3dz
X211bHRpcGxlX2ZpbGVzX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdz
X2FsbG93c19kaXJlY3RvcnlfdXBsb2FkX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2Vy
X3NldHRpbmdzX2FjY2VwdF9taW1ldHlwZXNfZ2V0KToKKyAgICAgICAgKGV3a19maWxlX2Nob29z
ZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQpOgorICAgICAgICAoZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19zZWxlY3RlZF9maWxlc19nZXQpOgorICAgICAgICAoZXdrX2Zp
bGVfY2hvb3Nlcl9zZXR0aW5nc19jYXB0dXJlX2dldCk6CisgICAgICAgIChld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX25ldyk6CisgICAgICAgIChld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX2Zy
ZWUpOgorICAgICAgICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmg6IEFkZGVkLgor
ICAgICAgICAqIGV3ay9ld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX3ByaXZhdGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJM
RV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVT
U19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNmNkYzli
Nzc1ZmRmNTk1ZjE3Mzc2MjNmMmQwOGM2ZTAxOTY2YjdiZi4uY2Y0NDk0YzlkYTlhNDhlNDgwNjQ1
Y2NkYjVhNjA5NzUyNWIxZTU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVm
bC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMzIsNiAr
MTMyLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19jb250
ZXh0bWVudS5jcHAKICAgICBlZmwvZXdrL2V3a19jb29raWVzLmNwcAogICAgIGVmbC9ld2svZXdr
X2N1c3RvbV9oYW5kbGVyLmNwcAorICAgIGVmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5n
cy5jcHAKICAgICBlZmwvZXdrL2V3a19mcmFtZS5jcHAKICAgICBlZmwvZXdrL2V3a19oaXN0b3J5
LmNwcAogICAgIGVmbC9ld2svZXdrX2ludGVudC5jcHAKQEAgLTI3NCw2ICsyNzUsNyBAQCBTRVQo
RVdlYktpdF9IRUFERVJTCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2sv
ZXdrX2F1dGguaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19j
b250ZXh0bWVudS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdr
X2Nvb2tpZXMuaAorICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19m
aWxlX2Nob29zZXJfc2V0dGluZ3MuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9l
ZmwvZXdrL2V3a19mcmFtZS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9l
d2svZXdrX2hpc3RvcnkuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdr
L2V3a19pbnRlbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQu
aCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKaW5kZXggZjkwODYwMzczZmZhZDU2
YmIwZDMwZWZiMmVlNWY1MGVhOTE4MjhhOC4uYjgyYTg5NWQ0NGJkNjNlNjRmYjJlYjMxZmQwOTIw
Y2VhOGNkMGY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiZXdrX2F1dGguaCIKICNpbmNsdWRlICJld2tfY29udGV4dG1lbnUuaCIKICNpbmNs
dWRlICJld2tfY29va2llcy5oIgorI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJld2tfZnJhbWUuaCIKICNpbmNsdWRlICJld2tfaGlzdG9yeS5oIgogI2lu
Y2x1ZGUgImV3a19pbnRlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZmlsZV9jaG9vc2VyX3NldHRpbmdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODkyNjhlNWM2Zjg1NjY4ODE0
MGZjNzRiOTE2MDI2MDYwZGFhNDFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfc2V0dGluZ3MuaCIKKwor
I2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0
aW5nc19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitzdHJ1Y3Qg
X0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MgeworICAgIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9v
c2VyU2V0dGluZ3MmIGZpbGVDaG9vc2VyU2V0dGluZ3M7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRV
UkUpCisgICAgY29uc3QgY2hhciogY2FwdHVyZTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElB
X0NBUFRVUkUpCisgICAgX0V3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MoY29uc3QgV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyYgc2V0dGluZ3MgLCBjb25zdCBjaGFyKiBjYXB0dXJlU3RyaW5n
KQorICAgICAgICA6IGZpbGVDaG9vc2VyU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgICwgY2Fw
dHVyZShjYXB0dXJlU3RyaW5nKQorI2Vsc2UKKyAgICBfRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5n
cyhjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJiBzZXR0aW5ncykKKyAgICAgICAg
OiBmaWxlQ2hvb3NlclNldHRpbmdzKHNldHRpbmdzKQorI2VuZGlmCisgICAgeyB9Cit9OworCitF
aW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfbXVsdGlwbGVfZmlsZXNf
Z2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXJfU2V0dGluZ3MqIHNldHRpbmdzKQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXR0aW5ncywgZmFsc2UpOworICAgIHJldHVy
biBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzOworfQor
CitFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hbGxvd3NfZGlyZWN0b3J5X3Vw
bG9hZF9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpCit7Cisj
aWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHNldHRpbmdzLCBmYWxzZSk7CisgICAgcmV0dXJuIHNldHRpbmdzLT5maWxlQ2hvb3Nl
clNldHRpbmdzLmFsbG93c0RpcmVjdG9yeVVwbG9hZDsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCit9CisKK0VpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19hY2Nl
cHRfbWltZXR5cGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBzZXR0aW5n
cykKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOwor
CisgICAgRWluYV9MaXN0KiBtaW1ldHlwZXMgPSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0
TUlNRVR5cGVzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IHNldHRpbmdzLT5maWxlQ2hvb3Nl
clNldHRpbmdzLmFjY2VwdE1JTUVUeXBlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgbWltZXR5cGVz
ID0gZWluYV9saXN0X2FwcGVuZChtaW1ldHlwZXMsIHN0cmR1cCgoKml0KS51dGY4KCkuZGF0YSgp
KSk7CisKKyAgICByZXR1cm4gbWltZXR5cGVzOworfQorCitFaW5hX0xpc3QqIGV3a19maWxlX2No
b29zZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQoY29uc3QgRXdrX0ZpbGVf
Q2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNldHRpbmdzLCAwKTsKKworICAgIEVpbmFfTGlzdCogZmlsZUV4dGVudGlvbnMg
PSAwOworICAgIFZlY3RvcjxXVEY6OlN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2V0dGlu
Z3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0RmlsZUV4dGVuc2lvbnMuYmVnaW4oKTsKKyAg
ICBmb3IgKDsgaXQgIT0gc2V0dGluZ3MtPmZpbGVDaG9vc2VyU2V0dGluZ3MuYWNjZXB0RmlsZUV4
dGVuc2lvbnMuZW5kKCk7ICsraXQpCisgICAgICAgIGZpbGVFeHRlbnRpb25zID0gZWluYV9saXN0
X2FwcGVuZChmaWxlRXh0ZW50aW9ucywgc3RyZHVwKCgqaXQpLnV0ZjgoKS5kYXRhKCkpKTsKKwor
ICAgIHJldHVybiBmaWxlRXh0ZW50aW9uczsKK30KKworRWluYV9MaXN0KiBld2tfZmlsZV9jaG9v
c2VyX3NldHRpbmdzX3NlbGVjdGVkX2ZpbGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1Nl
dHRpbmdzKiBzZXR0aW5ncykKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
c2V0dGluZ3MsIDApOworCisgICAgRWluYV9MaXN0KiBmaWxlcyA9IDA7CisgICAgVmVjdG9yPFdU
Rjo6U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzZXR0aW5ncy0+ZmlsZUNob29zZXJTZXR0
aW5ncy5zZWxlY3RlZEZpbGVzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IHNldHRpbmdzLT5m
aWxlQ2hvb3NlclNldHRpbmdzLnNlbGVjdGVkRmlsZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGZp
bGVzID0gZWluYV9saXN0X2FwcGVuZChmaWxlcywgc3RyZHVwKCgqaXQpLnV0ZjgoKS5kYXRhKCkp
KTsKKworICAgIHJldHVybiBmaWxlczsKK30KKworY29uc3QgY2hhciogZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5nc19jYXB0dXJlX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzKiBz
ZXR0aW5ncykKK3sKKyNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIDApOworICAgIHJldHVybiBzZXR0aW5ncy0+Y2Fw
dHVyZTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworRXdrX0ZpbGVfQ2hvb3Nl
cl9TZXR0aW5ncyogZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19uZXcoY29uc3QgV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyYgY29yZVNldHRpbmdzKQoreworI2lmIEVOQUJMRShNRURJQV9D
QVBUVVJFKQorICAgIHJldHVybiBuZXcgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyhjb3JlU2V0
dGluZ3MsIGVpbmFfc3RyaW5nc2hhcmVfYWRkKHNldHRpbmdzLT5maWxlQ2hvb3NlclNldHRpbmdz
LT5jYXB0dXJlLnV0ZjgoKS5kYXRhKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIG5ldyBFd2tfRmls
ZV9DaG9vc2VyX1NldHRpbmdzKGNvcmVTZXR0aW5ncyk7CisjZW5kaWYKK30KKwordm9pZCBld2tf
ZmlsZV9jaG9vc2VyX3NldHRpbmdzX2ZyZWUoRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogc2V0
dGluZ3MpCit7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAgZWluYV9zdHJpbmdzaGFy
ZV9kZWwoc2V0dGluZ3MtPmNhcHR1cmUpOworI2VuZGlmCisgICAgZGVsZXRlIHNldHRpbmdzOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9z
ZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGlu
Z3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZTcyYzllODllNjc2YzBhMjdhMDI4NzIzZmIzMDhhMjgwYTdkODQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29z
ZXJfc2V0dGluZ3MuaApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKy8qKgorICogQGZpbGUgICAgZXdrX2ZpbGVfY2hv
b3Nlcl9zZXR0aW5ncy5oCisgKiBAYnJpZWYgICBGaWxlIENob29zZXIgU2V0dGluZ3MgQVBJLgor
ICoKKyAqIEZpbGUgQ2hvb3NlciBTZXR0aW5ncyBpcyBhIHNldCBvZiBhdHRyaWJ1dGVzIGZvciBm
aWxlIHNlbGVjdGlvbiBkaWFsb2cuCisgKiBJdCBpbmNsdWRlcyBhdHRyaWJ1dGUgdmFsdWVzIHJl
Z2FyZGluZzoKKyAqIC0gYWxsb3dhbmNlIG9mIG11bHRpcGxlIGZpbGVzIHNlbGVjdGlvbgorICog
LSBhbGxvd2FuY2Ugb2YgdXBsb2FkIGRpcmVjdG9yeQorICogLSBsaXN0IG9mIGFjY2VwdGVkIG1p
bWUgdHlwZXMKKyAqIC0gbGlzdCBvZiBhY2NlcHRlZCBmaWxlIGV4dGVudGlvbnMKKyAqIC0gbGlz
dCBvZiBpbml0aWFsIHNlbGVjdGVkIGZpbGUgbmFtZXMKKyAqIC0gY2FwdHVyZSBhdHRyaWJ1dGUg
Zm9yIEhUTUwgbWVkaWEgY2FwdHVyZQorICovCisKKyNpZm5kZWYgZXdrX2ZpbGVfY2hvb3Nlcl9z
ZXR0aW5nc19oCisjZGVmaW5lIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfaAorCisjaW5jbHVk
ZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisK
K3R5cGVkZWYgc3RydWN0IF9Fd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzIEV3a19GaWxlX0Nob29z
ZXJfU2V0dGluZ3M7CisKKy8qKgorICogUXVlcnkgaWYgbXVsdGlwbGUgZmlsZXMgYXJlIHN1cHBv
cnRlZCBieSBmaWxlIGNob29zZXIuCisgKgorICogQHBhcmFtIHMgZmlsZSBjaG9vc2VyIHNldHRp
bmdzIG9iamVjdAorICoKKyAqIEl0IHJldHVybnMgYSBib29sZWFuIHZhbHVlIHdoaWNoIGluZGlj
YXRlcyBpZiBtdWx0aXBsZSBmaWxlIGlzIHN1cHBvcnRlZCBvciBub3QuCisgKgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VwcG9ydCBtdWx0aXBsZSBmaWxlcyBvciBAYyBFSU5BX0ZBTFNF
IG9uIG5vdCBzdXBwb3J0CisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19maWxlX2Nob29zZXJfc2V0
dGluZ3NfYWxsb3dzX211bHRpcGxlX2ZpbGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyX1Nl
dHRpbmdzICpzKTsKKworLyoqCisgKiBRdWVyeSBpZiBkaXJlY3RvcnkgdXBsb2FkIGlzIHN1cHBv
cnRlZCBieSBmaWxlIGNob29zZXIuCisgKgorICogQHBhcmFtIHMgZmlsZSBjaG9vc2VyIHNldHRp
bmdzIG9iamVjdAorICoKKyAqIEl0IHJldHVybnMgYSBib29sZWFuIHZhbHVlIHdoaWNoIGluZGlj
YXRlcyBpZiBkaXJlY3RvcnkgdXBsb2FkIGlzIHN1cHBvcnRlZCBvciBub3QuCisgKgorICogQHJl
dHVybiBAYyBFSU5BX1RSVUUgb24gc3VwcG9ydCBkaXJlY3RvcnkgdXBsb2FkIG9yIEBjIEVJTkFf
RkFMU0Ugb24gbm90IHN1cHBvcnQKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nl
cl9zZXR0aW5nc19hbGxvd3NfZGlyZWN0b3J5X3VwbG9hZF9nZXQoY29uc3QgRXdrX0ZpbGVfQ2hv
b3Nlcl9TZXR0aW5ncyAqcyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgbGlzdCBvZiBhY2NlcHRl
ZCBtaW1ldHlwZXMgb2YgdGhlIGZpbGUgY2hvb3NlcgorICoKKyAqIEBwYXJhbSBzIGZpbGUgY2hv
b3NlciBzZXR0aW5ncyBvYmplY3QuCisgKgorICogQHJldHVybiBFaW5hX0xpc3Qgb2YgYWNjZXB0
ZWQgbWltZXR5cGVzIG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVyZSwKKyAqICAgICAg
ICAgdGhlIEVpbmFfTGlzdCBhbmQgaXRzIGl0ZW1zIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2Ug
KHVzZSBmcmVlKCkgdG8gZnJlZSB0aGUgaXRlbXMpCisgKi8KK0VBUEkgRWluYV9MaXN0ICpld2tf
ZmlsZV9jaG9vc2VyX3NldHRpbmdzX2FjY2VwdF9taW1ldHlwZXNfZ2V0KGNvbnN0IEV3a19GaWxl
X0Nob29zZXJfU2V0dGluZ3MgKnMpOworCisvKioKKyAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWNj
ZXB0ZWQgZmlsZSBleHRlbnRpb25zIG9mIHRoZSBmaWxlIGNob29zZXIKKyAqCisgKiBAcGFyYW0g
cyBmaWxlIGNob29zZXIgc2V0dGluZ3Mgb2JqZWN0LgorICoKKyAqIEByZXR1cm4gQGMgRWluYV9M
aXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9ucyBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9u
IGZhaWx1cmUsCisgKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5kIGl0cyBpdGVtcyBzaG91bGQg
YmUgZnJlZWQgYWZ0ZXIgdXNlICh1c2UgZnJlZSgpIHRvIGZyZWUgdGhlIGl0ZW1zKSAKKyAqLwor
RUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfYWNjZXB0X2ZpbGVfZXh0
ZW50aW9uc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyAqcyk7CisKKy8qKgor
ICogUmV0dXJucyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBmaWxlIG5hbWVzIG9mIHRoZSBmaWxlIGNo
b29zZXIuCisgKgorICogVGhpcyBsaXN0IGluZGljYXRlcyBwcmV2aW91c2x5IHNlbGVjdGVkIGZp
bGUgbmFtZXMgZm9yIHRoZSBmaWxlIGNob29zZXIuCisgKiBUaGVzZSBjYW4gYmUgdXNlZCBieSBp
bml0aWFsIHZhbHVlcyBvZiB0aGUgZmlsZSBkaWFsb2cuCisgKgorICogQHBhcmFtIHMgZmlsZSBj
aG9vc2VyIHNldHRpbmdzIG9iamVjdAorICoKKyAqIEByZXR1cm4gQGMgRWluYV9MaXN0IG9mIHNl
bGVjdGVkIGZpbGUgbmFtZXMgb24gc3VjY2Vzcywgb3IgQGMgTlVMTCBvbiBmYWlsdXJlLAorICog
ICAgICAgICB0aGUgRWluYV9MaXN0IGFuZCBpdHMgaXRlbXMgc2hvdWxkIGJlIGZyZWVkIGFmdGVy
IHVzZSAodXNlIGZyZWUoKSB0byBmcmVlIHRoZSBpdGVtcykKKyAqLworRUFQSSBFaW5hX0xpc3Qg
KmV3a19maWxlX2Nob29zZXJfc2V0dGluZ3Nfc2VsZWN0ZWRfZmlsZXNfZ2V0KGNvbnN0IEV3a19G
aWxlX0Nob29zZXJfU2V0dGluZ3MgKnMpOworCisvKioKKyAqIFJldHVybnMgdGhlIGNhcHR1cmUg
YXR0cmlidXRlIG9mIHRoZSBmaWxlIGNob29zZXIuCisgKgorICogVGhlIGNhcHR1cmUgYXR0cmli
dXRlcyBpcyB0byBzdXBwb3J0IEhUTUwgTWVkaWEgQ2FwdHVyZS4KKyAqCisgKiBAcGFyYW0gbyBm
aWxlIGNob29zZXIgc2V0dGluZ3Mgb2JqZWN0CisgKgorICogQHJldHVybiBvbmUgb2YgdGhlc2Ug
c3RyaW5nICJjYW1lcmEiLCAiY2FtY29yZGVyIiwgIm1pY3JvcGhvbmUiIAorICogICAgICAgICBv
ciAiZmlsZXN5c3RlbSIgb24gc3VjY2Vzcywgb3IgQGMgTlVMTCBvbiBmYWlsdXJlCisgKi8KK0VB
UEkgY29uc3QgY2hhciAqZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19jYXB0dXJlX2dldChjb25z
dCBFd2tfRmlsZV9DaG9vc2VyX1NldHRpbmdzICpzKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8vIGV3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3NfcHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXJfc2V0dGluZ3Nf
cHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMzM5MTQ5ZTgyZTUzNzJhYWQ4MTk0MGY4ZTIwOWEzNmU4
M2I3NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVf
Y2hvb3Nlcl9zZXR0aW5nc19wcml2YXRlLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX2ZpbGVf
Y2hvb3Nlcl9zZXR0aW5nc19wcml2YXRlX2gKKyNkZWZpbmUgZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0
aW5nc19wcml2YXRlX2gKKworLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK3N0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOworfQorCitFd2tfRmlsZV9DaG9vc2Vy
X1NldHRpbmdzKiBld2tfZmlsZV9jaG9vc2VyX3NldHRpbmdzX25ldyhjb25zdCBXZWJDb3JlOjpG
aWxlQ2hvb3NlclNldHRpbmdzJiBvcmlnaW4pOwordm9pZCBld2tfZmlsZV9jaG9vc2VyX3NldHRp
bmdzX2ZyZWUoRXdrX0ZpbGVfQ2hvb3Nlcl9TZXR0aW5ncyogc2V0dGluZ3MpOworCisjZW5kaWYg
Ly8gZXdrX2ZpbGVfY2hvb3Nlcl9zZXR0aW5nc19wcml2YXRlX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154009</attachid>
            <date>2012-07-24 03:46:43 -0700</date>
            <delta_ts>2012-07-24 19:02:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91957-20120724194633.patch</filename>
            <type>text/plain</type>
            <size>14027</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmFkZWEzN2NhNDFmYjNj
MDU1ZjJlNTNlZjRkODAwYzc4OTdmOWQuLmEzZGUyMGJjMGEwY2U2ZWYyYmQ2MWIxMjg2ZjU0ZTBh
OGExMjk2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjQgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEZpbGUg
Q2hvb3NlciBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkxOTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGV3a19maWxlX2Nob29zZXIgc291cmNlIGFuZCBoZWFkZXIuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJMRV9Q
Uk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVTU19F
TEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGE2ZmI0YTU4NDA4YzE1Y2Mx
ODBiZWY1ZThmZGI3OTMxYjZmNjE3N2IuLmU4NDVlNDc2ZmU4ZjRiZTQ1NzZiMDgyM2U5ZmNkYWNl
NmZjNWRjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNy0yNCAg
S2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBB
ZGQgRmlsZSBDaG9vc2VyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBjaG9vc2VyLiBUaGVzZSBBUElzIGFsbG93IGFu
IGFwcGxpY2F0aW9uKGxpa2UgYSBicm93c2VyKSBxdWVyaWVzIGluZm9ybWF0aW9ucworICAgICAg
ICBhYm91dCBtdWx0aXBsZSBmaWxlcyBhbGxvd2VkLCBkaXJlY3RvcnkgdXBsb2FkIGFsbG93ZWQs
IGFjY2VwdCBtaW1ldHlwZXMgbGlzdCwKKyAgICAgICAgYWNjZXB0IGZpbGUgZXh0ZW50aW9ucyBs
aXN0LCBzZWxlY3RlZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRvIHN1cHBvcnQgSFRNTCBtZWRp
YSBjYXB0dXJlLgorCisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBld2svZXdr
X2ZpbGVfY2hvb3Nlci5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXIpOgor
ICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9hbGxvd3NfbXVsdGlwbGVfZmlsZXNfZ2V0KToKKyAg
ICAgICAgKGV3a19maWxlX2Nob29zZXJfYWxsb3dzX2RpcmVjdG9yeV91cGxvYWRfZ2V0KToKKyAg
ICAgICAgKGV3a19maWxlX2Nob29zZXJfYWNjZXB0X21pbWV0eXBlc19nZXQpOgorICAgICAgICAo
ZXdrX2ZpbGVfY2hvb3Nlcl9hY2NlcHRfZmlsZV9leHRlbnRpb25zX2dldCk6CisgICAgICAgIChl
d2tfZmlsZV9jaG9vc2VyX3NlbGVjdGVkX2ZpbGVzX2dldCk6CisgICAgICAgIChld2tfZmlsZV9j
aG9vc2VyX2NhcHR1cmVfZ2V0KToKKyAgICAgICAgKGV3a19maWxlX2Nob29zZXJfbmV3KToKKyAg
ICAgICAgKGV3a19maWxlX2Nob29zZXJfZnJlZSk6CisgICAgICAgICogZXdrL2V3a19maWxlX2No
b29zZXIuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19maWxlX2Nob29zZXJfcHJpdmF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA3LTIyICBLZW50IFRhbXVyYSAg
PHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgRU5BQkxFX01FVEVSX1RBRyBh
bmQgRU5BQkxFX1BST0dSRVNTX1RBRyB0byBFTkFCTEVfTUVURVJfRUxFTUVOVCBhbmQgRU5BQkxF
X1BST0dSRVNTX0VMRU1FTlQgcmVzcGVjdGl2ZWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCA2Y2RjOWI3NzVmZGY1OTVmMTczNzYyM2YyZDA4YzZlMDE5NjZiN2JmLi43ZGRmMzY0NjZhMWY2
NWFmOTg3MDNhNWVlNTY5MzFjOGQyZjI1ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKQEAg
LTEzMiw2ICsxMzIsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2sv
ZXdrX2NvbnRleHRtZW51LmNwcAogICAgIGVmbC9ld2svZXdrX2Nvb2tpZXMuY3BwCiAgICAgZWZs
L2V3ay9ld2tfY3VzdG9tX2hhbmRsZXIuY3BwCisgICAgZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2Vy
LmNwcAogICAgIGVmbC9ld2svZXdrX2ZyYW1lLmNwcAogICAgIGVmbC9ld2svZXdrX2hpc3Rvcnku
Y3BwCiAgICAgZWZsL2V3ay9ld2tfaW50ZW50LmNwcApAQCAtMjc0LDYgKzI3NSw3IEBAIFNFVChF
V2ViS2l0X0hFQURFUlMKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9l
d2tfYXV0aC5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2Nv
bnRleHRtZW51LmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tf
Y29va2llcy5oCisgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2Zp
bGVfY2hvb3Nlci5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdr
X2ZyYW1lLmgKICAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfaGlz
dG9yeS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2ludGVu
dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaAppbmRleCBmOTA4NjAzNzNmZmFkNTZiYjBkMzBlZmIy
ZWU1ZjUwZWE5MTgyOGE4Li43YzkxYzNjOWE4MzhiOWM1NDFkZjdkYWU0MWZlZWZjYzE3ODllNDA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJl
d2tfYXV0aC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0bWVudS5oIgogI2luY2x1ZGUgImV3a19j
b29raWVzLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nlci5oIgogI2luY2x1ZGUgImV3a19m
cmFtZS5oIgogI2luY2x1ZGUgImV3a19oaXN0b3J5LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZlNmVhOTg1MDRlMzc0ZTU3YTQ2NTkyNDBmYzc5OTliZjMzNGE4N2QKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHAKQEAgLTAsMCAr
MSwxMTcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2ZpbGVfY2hvb3Nlci5oIgor
CisjaW5jbHVkZSAiRmlsZUNob29zZXIuaCIKKyNpbmNsdWRlICJld2tfZmlsZV9jaG9vc2VyX3By
aXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3N0cnVjdCBfRXdrX0Zp
bGVfQ2hvb3NlciB7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZpbGVDaG9vc2VyPiBmaWxlQ2hvb3Nl
cjsKK307CisKK0VpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX2FsbG93c19tdWx0aXBsZV9maWxl
c19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciogY2hvb3NlcikKK3sKKyAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoY2hvb3NlciwgZmFsc2UpOworICAgIHJldHVybiBjaG9vc2Vy
LT5maWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5hbGxvd3NNdWx0aXBsZUZpbGVzOworfQorCitFaW5h
X0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9hbGxvd3NfZGlyZWN0b3J5X3VwbG9hZF9nZXQoY29uc3Qg
RXdrX0ZpbGVfQ2hvb3NlciogY2hvb3NlcikKK3sKKyNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9B
RCkKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2hvb3NlciwgZmFsc2UpOwor
ICAgIHJldHVybiBjaG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5hbGxvd3NEaXJlY3Rv
cnlVcGxvYWQ7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitFaW5hX0xp
c3QqIGV3a19maWxlX2Nob29zZXJfYWNjZXB0X21pbWV0eXBlc19nZXQoY29uc3QgRXdrX0ZpbGVf
Q2hvb3NlciogY2hvb3NlcikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
Y2hvb3NlciwgMCk7CisKKyAgICBFaW5hX0xpc3QqIG1pbWV0eXBlcyA9IDA7CisgICAgc2l6ZV90
IGNvdW50ID0gY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuYWNjZXB0TUlNRVR5cGVz
LnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAg
IG1pbWV0eXBlcyA9IGVpbmFfbGlzdF9hcHBlbmQobWltZXR5cGVzLCBlaW5hX3N0cmluZ3NoYXJl
X2FkZChjaG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGluZ3MoKS5hY2NlcHRNSU1FVHlwZXNbaV0u
dXRmOCgpLmRhdGEoKSkpOworCisgICAgcmV0dXJuIG1pbWV0eXBlczsKK30KKworRWluYV9MaXN0
KiBld2tfZmlsZV9jaG9vc2VyX2FjY2VwdF9maWxlX2V4dGVudGlvbnNfZ2V0KGNvbnN0IEV3a19G
aWxlX0Nob29zZXIqIGNob29zZXIpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGNob29zZXIsIDApOworCisgICAgRWluYV9MaXN0KiBmaWxlRXh0ZW50aW9ucyA9IDA7Cisg
ICAgc2l6ZV90IGNvdW50ID0gY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuYWNjZXB0
RmlsZUV4dGVuc2lvbnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7
ICsraSkKKyAgICAgICAgZmlsZUV4dGVudGlvbnMgPSBlaW5hX2xpc3RfYXBwZW5kKGZpbGVFeHRl
bnRpb25zLCBlaW5hX3N0cmluZ3NoYXJlX2FkZChjaG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGlu
Z3MoKS5hY2NlcHRGaWxlRXh0ZW5zaW9uc1tpXS51dGY4KCkuZGF0YSgpKSk7CisKKyAgICByZXR1
cm4gZmlsZUV4dGVudGlvbnM7Cit9CisKK0VpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nlcl9zZWxl
Y3RlZF9maWxlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciogY2hvb3NlcikKK3sKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2hvb3NlciwgMCk7CisKKyAgICBFaW5hX0xp
c3QqIGZpbGVzID0gMDsKKyAgICBzaXplX3QgY291bnQgPSBjaG9vc2VyLT5maWxlQ2hvb3Nlci0+
c2V0dGluZ3MoKS5zZWxlY3RlZEZpbGVzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpCisgICAgICAgIGZpbGVzID0gZWluYV9saXN0X2FwcGVuZChmaWxlcywg
ZWluYV9zdHJpbmdzaGFyZV9hZGQoY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuc2Vs
ZWN0ZWRGaWxlc1tpXS51dGY4KCkuZGF0YSgpKSk7CisKKyAgICByZXR1cm4gZmlsZXM7Cit9CisK
K0V3a19GaWxlX0Nob29zZXJfQ2FwdHVyZV9UeXBlIGV3a19maWxlX2Nob29zZXJfY2FwdHVyZV9n
ZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciogY2hvb3NlcikKK3sKKyNpZiBFTkFCTEUoTUVESUFf
Q0FQVFVSRSkKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2hvb3NlciwgRVdL
X0ZJTEVfQ0hPT1NFUl9DQVBUVVJFX1RZUEVfSU5WQUxJRCk7CisKKyAgICBTdHJpbmcgY2FwdHVy
ZSA9IGNob29zZXItPmZpbGVDaG9vc2VyLT5zZXR0aW5ncygpLmNhcHR1cmU7CisKKyAgICBpZiAo
Y2FwdHVyZSA9PSAiY2FtZXJhIikKKyAgICAgICAgcmV0dXJuIEVXS19GSUxFX0NIT09TRVJfQ0FQ
VFVSRV9UWVBFX0NBTUVSQTsKKworICAgIGlmIChjYXB0dXJlID09ICJjYW1jb3JkZXIiKQorICAg
ICAgICByZXR1cm4gRVdLX0ZJTEVfQ0hPT1NFUl9DQVBUVVJFX1RZUEVfQ0FNQ09SREVSOworCisg
ICAgaWYgKGNhcHR1cmUgPT0gIm1pY3JvcGhvbmUiKQorICAgICAgICByZXR1cm4gRVdLX0ZJTEVf
Q0hPT1NFUl9DQVBUVVJFX1RZUEVfTUlDUk9QSE9ORTsKKworICAgIHJldHVybiBFV0tfRklMRV9D
SE9PU0VSX0NBUFRVUkVfVFlQRV9GSUxFU1lTVEVNOworI2Vsc2UKKyAgICByZXR1cm4gRVdLX0ZJ
TEVfQ0hPT1NFUl9DQVBUVVJFX1RZUEVfSU5WQUxJRDsKKyNlbmRpZgorfQorCitFd2tfRmlsZV9D
aG9vc2VyKiBld2tfZmlsZV9jaG9vc2VyX25ldyhXZWJDb3JlOjpGaWxlQ2hvb3NlciogZmlsZUNo
b29zZXIpCit7CisgICAgRXdrX0ZpbGVfQ2hvb3NlciogZXdrRmlsZUNob29zZXIgPSBuZXcgRXdr
X0ZpbGVfQ2hvb3NlcjsKKyAgICBld2tGaWxlQ2hvb3Nlci0+ZmlsZUNob29zZXIgPSBmaWxlQ2hv
b3NlcjsKKyAgICByZXR1cm4gZXdrRmlsZUNob29zZXI7Cit9CisKK3ZvaWQgZXdrX2ZpbGVfY2hv
b3Nlcl9mcmVlKEV3a19GaWxlX0Nob29zZXIqIGV3a0ZpbGVDaG9vc2VyKQoreworICAgIGV3a0Zp
bGVDaG9vc2VyLT5maWxlQ2hvb3NlciA9IDA7CisgICAgZGVsZXRlIGV3a0ZpbGVDaG9vc2VyOwor
fQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5o
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MmIzOTYzYTI5MjI2ODA3MDVlZGJmOGEyOWExMGNiMzYyYzFiNGZmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29zZXIuaApAQCAtMCwwICsxLDEy
OCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
Ky8qKgorICogQGZpbGUgICAgZXdrX2ZpbGVfY2hvb3Nlci5oCisgKiBAYnJpZWYgICBGaWxlIENo
b29zZXIgQVBJLgorICoKKyAqIEZpbGUgQ2hvb3NlciBzdXBwb3J0cyBBUElzIGZvciBmaWxlIHNl
bGVjdGlvbiBkaWFsb2cuCisgKiBUaGlzIHN1cHBvcnQgYXR0cmlidXRlcyBvZiBmaWxlIGNob29z
ZXIgcmVnYXJkaW5nOgorICogLSBhbGxvd2FuY2Ugb2YgbXVsdGlwbGUgZmlsZXMgc2VsZWN0aW9u
CisgKiAtIGFsbG93YW5jZSBvZiB1cGxvYWQgZGlyZWN0b3J5CisgKiAtIGxpc3Qgb2YgYWNjZXB0
ZWQgbWltZSB0eXBlcworICogLSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9ucworICog
LSBsaXN0IG9mIGluaXRpYWwgc2VsZWN0ZWQgZmlsZSBuYW1lcworICogLSBjYXB0dXJlIGF0dHJp
YnV0ZSBmb3IgSFRNTCBtZWRpYSBjYXB0dXJlCisgKi8KKworI2lmbmRlZiBld2tfZmlsZV9jaG9v
c2VyX2gKKyNkZWZpbmUgZXdrX2ZpbGVfY2hvb3Nlcl9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1
Y3QgX0V3a19GaWxlX0Nob29zZXIgRXdrX0ZpbGVfQ2hvb3NlcjsKKworLyoqCisgKiBcZW51bSAg
ICBfRXdrX0ZpbGVfQ2hvb3Nlcl9DYXB0dXJlX1R5cGUKKyAqIEBicmllZiAgIFR5cGVzIG9mIGNh
cHR1cmUgYXR0cmlidXRlIG9mIGZpbGUgY2hvb3NlciB0byBzdXBwb3J0IHRoZSBIVE1MIG1lZGlh
IGNhcHR1cmUuCisgKi8KK2VudW0gX0V3a19GaWxlX0Nob29zZXJfQ2FwdHVyZV9UeXBlIHsKKyAg
ICBFV0tfRklMRV9DSE9PU0VSX0NBUFRVUkVfVFlQRV9JTlZBTElELAorICAgIEVXS19GSUxFX0NI
T09TRVJfQ0FQVFVSRV9UWVBFX0ZJTEVTWVNURU0sCisgICAgRVdLX0ZJTEVfQ0hPT1NFUl9DQVBU
VVJFX1RZUEVfQ0FNRVJBLAorICAgIEVXS19GSUxFX0NIT09TRVJfQ0FQVFVSRV9UWVBFX0NBTUNP
UkRFUiwKKyAgICBFV0tfRklMRV9DSE9PU0VSX0NBUFRVUkVfVFlQRV9NSUNST1BIT05FCit9Owor
dHlwZWRlZiBlbnVtIF9Fd2tfRmlsZV9DaG9vc2VyX0NhcHR1cmVfVHlwZSBFd2tfRmlsZV9DaG9v
c2VyX0NhcHR1cmVfVHlwZTsKKworLyoqCisgKiBRdWVyeSBpZiBtdWx0aXBsZSBmaWxlcyBhcmUg
c3VwcG9ydGVkIGJ5IGZpbGUgY2hvb3Nlci4KKyAqCisgKiBAcGFyYW0gZiBmaWxlIGNob29zZXIg
b2JqZWN0CisgKgorICogSXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgd2hpY2ggaW5kaWNhdGVz
IGlmIG11bHRpcGxlIGZpbGUgaXMgc3VwcG9ydGVkIG9yIG5vdC4KKyAqCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdXBwb3J0IG11bHRpcGxlIGZpbGVzIG9yIEBjIEVJTkFfRkFMU0Ugb3Ro
ZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19maWxlX2Nob29zZXJfYWxsb3dzX211bHRp
cGxlX2ZpbGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyICpmKTsKKworLyoqCisgKiBRdWVy
eSBpZiBkaXJlY3RvcnkgdXBsb2FkIGlzIHN1cHBvcnRlZCBieSBmaWxlIGNob29zZXIuCisgKgor
ICogQHBhcmFtIGYgZmlsZSBjaG9vc2VyIG9iamVjdAorICoKKyAqIEl0IHJldHVybnMgYSBib29s
ZWFuIHZhbHVlIHdoaWNoIGluZGljYXRlcyBpZiBkaXJlY3RvcnkgdXBsb2FkIGlzIHN1cHBvcnRl
ZCBvciBub3QuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VwcG9ydCBkaXJlY3Rv
cnkgdXBsb2FkIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29s
IGV3a19maWxlX2Nob29zZXJfYWxsb3dzX2RpcmVjdG9yeV91cGxvYWRfZ2V0KGNvbnN0IEV3a19G
aWxlX0Nob29zZXIgKmYpOworCisvKioKKyAqIFJldHVybnMgdGhlIGxpc3Qgb2YgYWNjZXB0ZWQg
bWltZXR5cGVzIG9mIHRoZSBmaWxlIGNob29zZXIKKyAqCisgKiBAcGFyYW0gZiBmaWxlIGNob29z
ZXIgb2JqZWN0LgorICoKKyAqIEByZXR1cm4gRWluYV9MaXN0IG9mIGFjY2VwdGVkIG1pbWV0eXBl
cyBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCisgKiAgICAgICAgIHRoZSBFaW5h
X0xpc3QgYW5kIGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlICh1c2UgZnJlZSgp
IHRvIGZyZWUgdGhlIGl0ZW1zKQorICovCitFQVBJIEVpbmFfTGlzdCAqZXdrX2ZpbGVfY2hvb3Nl
cl9hY2NlcHRfbWltZXR5cGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyICpmKTsKKworLyoq
CisgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW50aW9ucyBvZiB0aGUg
ZmlsZSBjaG9vc2VyCisgKgorICogQHBhcmFtIGYgZmlsZSBjaG9vc2VyIG9iamVjdC4KKyAqCisg
KiBAcmV0dXJuIEBjIEVpbmFfTGlzdCBvZiBhY2NlcHRlZCBmaWxlIGV4dGVudGlvbnMgb24gc3Vj
Y2Vzcywgb3IgQGMgTlVMTCBvbiBmYWlsdXJlLAorICogICAgICAgICB0aGUgRWluYV9MaXN0IGFu
ZCBpdHMgaXRlbXMgc2hvdWxkIGJlIGZyZWVkIGFmdGVyIHVzZSAodXNlIGZyZWUoKSB0byBmcmVl
IHRoZSBpdGVtcykKKyAqLworRUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2Nob29zZXJfYWNjZXB0
X2ZpbGVfZXh0ZW50aW9uc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciAqZik7CisKKy8qKgor
ICogUmV0dXJucyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBmaWxlIG5hbWVzIG9mIHRoZSBmaWxlIGNo
b29zZXIuCisgKgorICogVGhpcyBsaXN0IGluZGljYXRlcyBwcmV2aW91c2x5IHNlbGVjdGVkIGZp
bGUgbmFtZXMgb2YgdGhlIGZpbGUgY2hvb3Nlci4KKyAqIFRoZXNlIGNhbiBiZSB1c2VkIGJ5IGlu
aXRpYWwgdmFsdWVzIG9mIHRoZSBmaWxlIGRpYWxvZy4KKyAqCisgKiBAcGFyYW0gZiBmaWxlIGNo
b29zZXIgb2JqZWN0CisgKgorICogQHJldHVybiBAYyBFaW5hX0xpc3Qgb2Ygc2VsZWN0ZWQgZmls
ZSBuYW1lcyBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCisgKiAgICAgICAgIHRo
ZSBFaW5hX0xpc3QgYW5kIGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlICh1c2Ug
ZnJlZSgpIHRvIGZyZWUgdGhlIGl0ZW1zKQorICovCitFQVBJIEVpbmFfTGlzdCAqZXdrX2ZpbGVf
Y2hvb3Nlcl9zZWxlY3RlZF9maWxlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciAqZik7CisK
Ky8qKgorICogUmV0dXJucyB0aGUgY2FwdHVyZSBhdHRyaWJ1dGUgb2YgdGhlIGZpbGUgY2hvb3Nl
ci4KKyAqCisgKiBUaGUgY2FwdHVyZSBhdHRyaWJ1dGVzIGlzIHRvIHN1cHBvcnQgSFRNTCBNZWRp
YSBDYXB0dXJlLgorICoKKyAqIEBwYXJhbSBmIGZpbGUgY2hvb3NlciBvYmplY3QKKyAqCisgKiBA
cmV0dXJuIEBjIEV3a19GaWxlX0Nob29zZXJfQ2FwdHVyZV9UeXBlIG9uIHN1cHBvcnRpbmcgSFRN
TCBtZWRpYSBjYXB0dXJlIG9yIEBjIDAgb24gZmFpbHVyZQorICovCitFQVBJIEV3a19GaWxlX0No
b29zZXJfQ2FwdHVyZV9UeXBlIGV3a19maWxlX2Nob29zZXJfY2FwdHVyZV9nZXQoY29uc3QgRXdr
X0ZpbGVfQ2hvb3NlciAqZik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvLyBld2tfZmlsZV9jaG9vc2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZmlsZV9jaG9vc2VyX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZmlsZV9jaG9vc2VyX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGEzY2FkMWNhMDc0M2ZkZjVi
YWM0NzZiMWM4YjFhYjM3MTQyMmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19maWxlX2Nob29zZXJfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3
a19maWxlX2Nob29zZXJfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19maWxlX2Nob29zZXJfcHJpdmF0
ZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZpbGVDaG9vc2VyOworfQorCitFd2tf
RmlsZV9DaG9vc2VyKiBld2tfZmlsZV9jaG9vc2VyX25ldyhXZWJDb3JlOjpGaWxlQ2hvb3Nlciog
ZmlsZUNob29zZXIpOwordm9pZCBld2tfZmlsZV9jaG9vc2VyX2ZyZWUoRXdrX0ZpbGVfQ2hvb3Nl
ciogZXdrRmlsZUNob29zZXIpOworCisjZW5kaWYgLy8gZXdrX2ZpbGVfY2hvb3Nlcl9wcml2YXRl
X2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154220</attachid>
            <date>2012-07-24 19:03:00 -0700</date>
            <delta_ts>2012-07-25 00:18:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91957-20120725110250.patch</filename>
            <type>text/plain</type>
            <size>14079</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmFkZWEzN2NhNDFmYjNj
MDU1ZjJlNTNlZjRkODAwYzc4OTdmOWQuLmEzZGUyMGJjMGEwY2U2ZWYyYmQ2MWIxMjg2ZjU0ZTBh
OGExMjk2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjQgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEZpbGUg
Q2hvb3NlciBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkxOTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGV3a19maWxlX2Nob29zZXIgc291cmNlIGFuZCBoZWFkZXIuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJMRV9Q
Uk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVTU19F
TEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGZlMmU2YzU2ZTNlYTEwYTY4
MmU3YmRmNWNjNjg2NGI4NzgwNWViYTkuLmFlYjUyODBmMTIzYTU0MDk4MTkzNWRhZmQ2Yzc3OGM2
YTgyM2ZmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNy0yNCAg
S2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBB
ZGQgRmlsZSBDaG9vc2VyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBjaG9vc2VyLiBUaGVzZSBBUElzIGFsbG93IGFu
IGFwcGxpY2F0aW9uKGxpa2UgYSBicm93c2VyKSBxdWVyaWVzIGluZm9ybWF0aW9ucworICAgICAg
ICBhYm91dCBtdWx0aXBsZSBmaWxlcyBhbGxvd2VkLCBkaXJlY3RvcnkgdXBsb2FkIGFsbG93ZWQs
IGFjY2VwdCBtaW1ldHlwZXMgbGlzdCwKKyAgICAgICAgYWNjZXB0IGZpbGUgZXh0ZW50aW9ucyBs
aXN0LCBzZWxlY3RlZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRvIHN1cHBvcnQgSFRNTCBtZWRp
YSBjYXB0dXJlLgorCisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBld2svZXdr
X2ZpbGVfY2hvb3Nlci5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXIpOgor
ICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9hbGxvd3NfbXVsdGlwbGVfZmlsZXNfZ2V0KToKKyAg
ICAgICAgKGV3a19maWxlX2Nob29zZXJfYWxsb3dzX2RpcmVjdG9yeV91cGxvYWRfZ2V0KToKKyAg
ICAgICAgKGV3a19maWxlX2Nob29zZXJfYWNjZXB0X21pbWV0eXBlc19nZXQpOgorICAgICAgICAo
ZXdrX2ZpbGVfY2hvb3Nlcl9hY2NlcHRfZmlsZV9leHRlbnRpb25zX2dldCk6CisgICAgICAgIChl
d2tfZmlsZV9jaG9vc2VyX3NlbGVjdGVkX2ZpbGVzX2dldCk6CisgICAgICAgIChld2tfZmlsZV9j
aG9vc2VyX2NhcHR1cmVfZ2V0KToKKyAgICAgICAgKGV3a19maWxlX2Nob29zZXJfbmV3KToKKyAg
ICAgICAgKGV3a19maWxlX2Nob29zZXJfZnJlZSk6CisgICAgICAgICogZXdrL2V3a19maWxlX2No
b29zZXIuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19maWxlX2Nob29zZXJfcHJpdmF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA3LTIzICBQaWVycmUgUm9zc2kg
IDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAgIFVuaWZ5IG51bVRvdWNoRXZlbnRI
YW5kbGVyc0NoYW5nZWQgYW5kIG5lZWRUb3VjaEV2ZW50cyBpbiB0aGUgY2hyb21lIGNsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNmNkYzliNzc1ZmRmNTk1ZjE3Mzc2MjNmMmQwOGM2
ZTAxOTY2YjdiZi4uN2RkZjM2NDY2YTFmNjVhZjk4NzAzYTVlZTU2OTMxYzhkMmYyNWQ1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMzIsNiArMTMyLDcgQEAgTElTVChBUFBFTkQgV2Vi
S2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAKICAgICBlZmwvZXdr
L2V3a19jb29raWVzLmNwcAogICAgIGVmbC9ld2svZXdrX2N1c3RvbV9oYW5kbGVyLmNwcAorICAg
IGVmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHAKICAgICBlZmwvZXdrL2V3a19mcmFtZS5jcHAK
ICAgICBlZmwvZXdrL2V3a19oaXN0b3J5LmNwcAogICAgIGVmbC9ld2svZXdrX2ludGVudC5jcHAK
QEAgLTI3NCw2ICsyNzUsNyBAQCBTRVQoRVdlYktpdF9IRUFERVJTCiAgICAgJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2F1dGguaAogICAgICR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5oCiAgICAgJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2Nvb2tpZXMuaAorICAgICR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9lZmwvZXdrL2V3a19maWxlX2Nob29zZXIuaAogICAgICR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19mcmFtZS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L2VmbC9ld2svZXdrX2hpc3RvcnkuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9lZmwvZXdrL2V3a19pbnRlbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL0VXZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKaW5kZXgg
ZjkwODYwMzczZmZhZDU2YmIwZDMwZWZiMmVlNWY1MGVhOTE4MjhhOC4uN2M5MWMzYzlhODM4Yjlj
NTQxZGY3ZGFlNDFmZWVmY2MxNzg5ZTQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL0VXZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiZXdrX2F1dGguaCIKICNpbmNsdWRlICJld2tfY29udGV4
dG1lbnUuaCIKICNpbmNsdWRlICJld2tfY29va2llcy5oIgorI2luY2x1ZGUgImV3a19maWxlX2No
b29zZXIuaCIKICNpbmNsdWRlICJld2tfZnJhbWUuaCIKICNpbmNsdWRlICJld2tfaGlzdG9yeS5o
IgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZmlsZV9jaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTZlYTk4NTA0ZTM3NGU1N2E0NjU5MjQwZmM3OTk5
YmYzMzRhODdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
aWxlX2Nob29zZXIuY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgImV3a19maWxlX2Nob29zZXIuaCIKKworI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCisjaW5j
bHVkZSAiZXdrX2ZpbGVfY2hvb3Nlcl9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCitzdHJ1Y3QgX0V3a19GaWxlX0Nob29zZXIgeworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXI7Cit9OworCitFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hv
b3Nlcl9hbGxvd3NfbXVsdGlwbGVfZmlsZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNo
b29zZXIpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNob29zZXIsIGZh
bHNlKTsKKyAgICByZXR1cm4gY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuYWxsb3dz
TXVsdGlwbGVGaWxlczsKK30KKworRWluYV9Cb29sIGV3a19maWxlX2Nob29zZXJfYWxsb3dzX2Rp
cmVjdG9yeV91cGxvYWRfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNob29zZXIpCit7Cisj
aWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGNob29zZXIsIGZhbHNlKTsKKyAgICByZXR1cm4gY2hvb3Nlci0+ZmlsZUNob29zZXIt
PnNldHRpbmdzKCkuYWxsb3dzRGlyZWN0b3J5VXBsb2FkOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworRWluYV9MaXN0KiBld2tfZmlsZV9jaG9vc2VyX2FjY2VwdF9taW1l
dHlwZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNob29zZXIpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNob29zZXIsIDApOworCisgICAgRWluYV9MaXN0KiBt
aW1ldHlwZXMgPSAwOworICAgIHNpemVfdCBjb3VudCA9IGNob29zZXItPmZpbGVDaG9vc2VyLT5z
ZXR0aW5ncygpLmFjY2VwdE1JTUVUeXBlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3VudDsgKytpKQorICAgICAgICBtaW1ldHlwZXMgPSBlaW5hX2xpc3RfYXBwZW5kKG1p
bWV0eXBlcywgZWluYV9zdHJpbmdzaGFyZV9hZGQoY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRp
bmdzKCkuYWNjZXB0TUlNRVR5cGVzW2ldLnV0ZjgoKS5kYXRhKCkpKTsKKworICAgIHJldHVybiBt
aW1ldHlwZXM7Cit9CisKK0VpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nlcl9hY2NlcHRfZmlsZV9l
eHRlbnRpb25zX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyKiBjaG9vc2VyKQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjaG9vc2VyLCAwKTsKKworICAgIEVpbmFfTGlz
dCogZmlsZUV4dGVudGlvbnMgPSAwOworICAgIHNpemVfdCBjb3VudCA9IGNob29zZXItPmZpbGVD
aG9vc2VyLT5zZXR0aW5ncygpLmFjY2VwdEZpbGVFeHRlbnNpb25zLnNpemUoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGZpbGVFeHRlbnRpb25zID0g
ZWluYV9saXN0X2FwcGVuZChmaWxlRXh0ZW50aW9ucywgZWluYV9zdHJpbmdzaGFyZV9hZGQoY2hv
b3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuYWNjZXB0RmlsZUV4dGVuc2lvbnNbaV0udXRm
OCgpLmRhdGEoKSkpOworCisgICAgcmV0dXJuIGZpbGVFeHRlbnRpb25zOworfQorCitFaW5hX0xp
c3QqIGV3a19maWxlX2Nob29zZXJfc2VsZWN0ZWRfZmlsZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0No
b29zZXIqIGNob29zZXIpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNo
b29zZXIsIDApOworCisgICAgRWluYV9MaXN0KiBmaWxlcyA9IDA7CisgICAgc2l6ZV90IGNvdW50
ID0gY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuc2VsZWN0ZWRGaWxlcy5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBmaWxlcyA9
IGVpbmFfbGlzdF9hcHBlbmQoZmlsZXMsIGVpbmFfc3RyaW5nc2hhcmVfYWRkKGNob29zZXItPmZp
bGVDaG9vc2VyLT5zZXR0aW5ncygpLnNlbGVjdGVkRmlsZXNbaV0udXRmOCgpLmRhdGEoKSkpOwor
CisgICAgcmV0dXJuIGZpbGVzOworfQorCitFd2tfRmlsZV9DaG9vc2VyX0NhcHR1cmVfVHlwZSBl
d2tfZmlsZV9jaG9vc2VyX2NhcHR1cmVfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNob29z
ZXIpCit7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGNob29zZXIsIEVXS19GSUxFX0NIT09TRVJfQ0FQVFVSRV9UWVBFX0lOVkFM
SUQpOworCisgICAgU3RyaW5nIGNhcHR1cmUgPSBjaG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGlu
Z3MoKS5jYXB0dXJlOworCisgICAgaWYgKGNhcHR1cmUgPT0gImNhbWVyYSIpCisgICAgICAgIHJl
dHVybiBFV0tfRklMRV9DSE9PU0VSX0NBUFRVUkVfVFlQRV9DQU1FUkE7CisKKyAgICBpZiAoY2Fw
dHVyZSA9PSAiY2FtY29yZGVyIikKKyAgICAgICAgcmV0dXJuIEVXS19GSUxFX0NIT09TRVJfQ0FQ
VFVSRV9UWVBFX0NBTUNPUkRFUjsKKworICAgIGlmIChjYXB0dXJlID09ICJtaWNyb3Bob25lIikK
KyAgICAgICAgcmV0dXJuIEVXS19GSUxFX0NIT09TRVJfQ0FQVFVSRV9UWVBFX01JQ1JPUEhPTkU7
CisKKyAgICByZXR1cm4gRVdLX0ZJTEVfQ0hPT1NFUl9DQVBUVVJFX1RZUEVfRklMRVNZU1RFTTsK
KyNlbHNlCisgICAgcmV0dXJuIEVXS19GSUxFX0NIT09TRVJfQ0FQVFVSRV9UWVBFX0lOVkFMSUQ7
CisjZW5kaWYKK30KKworRXdrX0ZpbGVfQ2hvb3NlciogZXdrX2ZpbGVfY2hvb3Nlcl9uZXcoV2Vi
Q29yZTo6RmlsZUNob29zZXIqIGZpbGVDaG9vc2VyKQoreworICAgIEV3a19GaWxlX0Nob29zZXIq
IGV3a0ZpbGVDaG9vc2VyID0gbmV3IEV3a19GaWxlX0Nob29zZXI7CisgICAgZXdrRmlsZUNob29z
ZXItPmZpbGVDaG9vc2VyID0gZmlsZUNob29zZXI7CisgICAgcmV0dXJuIGV3a0ZpbGVDaG9vc2Vy
OworfQorCit2b2lkIGV3a19maWxlX2Nob29zZXJfZnJlZShFd2tfRmlsZV9DaG9vc2VyKiBld2tG
aWxlQ2hvb3NlcikKK3sKKyAgICBld2tGaWxlQ2hvb3Nlci0+ZmlsZUNob29zZXIgPSAwOworICAg
IGRlbGV0ZSBld2tGaWxlQ2hvb3NlcjsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19maWxlX2Nob29zZXIuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRjZjg5YTlmZDcxYTliMTVlNGQxYzE2ODQxMzk1NWEw
ZThiOWZjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyLmgKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19maWxlX2Nob29z
ZXIuaAorICogQGJyaWVmICAgRmlsZSBDaG9vc2VyIEFQSS4KKyAqCisgKiBGaWxlIENob29zZXIg
c3VwcG9ydHMgQVBJcyBmb3IgZmlsZSBzZWxlY3Rpb24gZGlhbG9nLgorICogVGhpcyBzdXBwb3J0
IGF0dHJpYnV0ZXMgb2YgZmlsZSBjaG9vc2VyIHJlZ2FyZGluZzoKKyAqIC0gYWxsb3dhbmNlIG9m
IG11bHRpcGxlIGZpbGVzIHNlbGVjdGlvbgorICogLSBhbGxvd2FuY2Ugb2YgdXBsb2FkIGRpcmVj
dG9yeQorICogLSBsaXN0IG9mIGFjY2VwdGVkIG1pbWUgdHlwZXMKKyAqIC0gbGlzdCBvZiBhY2Nl
cHRlZCBmaWxlIGV4dGVuc2lvbnMKKyAqIC0gbGlzdCBvZiBpbml0aWFsIHNlbGVjdGVkIGZpbGUg
bmFtZXMKKyAqIC0gY2FwdHVyZSBhdHRyaWJ1dGUgZm9yIEhUTUwgbWVkaWEgY2FwdHVyZQorICov
CisKKyNpZm5kZWYgZXdrX2ZpbGVfY2hvb3Nlcl9oCisjZGVmaW5lIGV3a19maWxlX2Nob29zZXJf
aAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfRmlsZV9DaG9vc2VyIEV3a19GaWxlX0No
b29zZXI7CisKKy8qKgorICogXGVudW0gICAgX0V3a19GaWxlX0Nob29zZXJfQ2FwdHVyZV9UeXBl
CisgKiBAYnJpZWYgICBUeXBlcyBvZiBjYXB0dXJlIGF0dHJpYnV0ZSBvZiBmaWxlIGNob29zZXIg
dG8gc3VwcG9ydCB0aGUgSFRNTCBtZWRpYSBjYXB0dXJlLgorICovCitlbnVtIF9Fd2tfRmlsZV9D
aG9vc2VyX0NhcHR1cmVfVHlwZSB7CisgICAgRVdLX0ZJTEVfQ0hPT1NFUl9DQVBUVVJFX1RZUEVf
SU5WQUxJRCwKKyAgICBFV0tfRklMRV9DSE9PU0VSX0NBUFRVUkVfVFlQRV9GSUxFU1lTVEVNLAor
ICAgIEVXS19GSUxFX0NIT09TRVJfQ0FQVFVSRV9UWVBFX0NBTUVSQSwKKyAgICBFV0tfRklMRV9D
SE9PU0VSX0NBUFRVUkVfVFlQRV9DQU1DT1JERVIsCisgICAgRVdLX0ZJTEVfQ0hPT1NFUl9DQVBU
VVJFX1RZUEVfTUlDUk9QSE9ORQorfTsKK3R5cGVkZWYgZW51bSBfRXdrX0ZpbGVfQ2hvb3Nlcl9D
YXB0dXJlX1R5cGUgRXdrX0ZpbGVfQ2hvb3Nlcl9DYXB0dXJlX1R5cGU7CisKKy8qKgorICogUXVl
cnkgaWYgbXVsdGlwbGUgZmlsZXMgYXJlIHN1cHBvcnRlZCBieSBmaWxlIGNob29zZXIuCisgKgor
ICogQHBhcmFtIGYgZmlsZSBjaG9vc2VyIG9iamVjdAorICoKKyAqIEl0IHJldHVybnMgYSBib29s
ZWFuIHZhbHVlIHdoaWNoIGluZGljYXRlcyBpZiBtdWx0aXBsZSBmaWxlIGlzIHN1cHBvcnRlZCBv
ciBub3QuCisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VwcG9ydCBtdWx0aXBsZSBm
aWxlcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tf
ZmlsZV9jaG9vc2VyX2FsbG93c19tdWx0aXBsZV9maWxlc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hv
b3NlciAqZik7CisKKy8qKgorICogUXVlcnkgaWYgZGlyZWN0b3J5IHVwbG9hZCBpcyBzdXBwb3J0
ZWQgYnkgZmlsZSBjaG9vc2VyLgorICoKKyAqIEBwYXJhbSBmIGZpbGUgY2hvb3NlciBvYmplY3QK
KyAqCisgKiBJdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSB3aGljaCBpbmRpY2F0ZXMgaWYgZGly
ZWN0b3J5IHVwbG9hZCBpcyBzdXBwb3J0ZWQgb3Igbm90LgorICoKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1cHBvcnQgZGlyZWN0b3J5IHVwbG9hZCBvciBAYyBFSU5BX0ZBTFNFIG90aGVy
d2lzZQorICovCitFQVBJIEVpbmFfQm9vbCBld2tfZmlsZV9jaG9vc2VyX2FsbG93c19kaXJlY3Rv
cnlfdXBsb2FkX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyICpmKTsKKworLyoqCisgKiBSZXR1
cm5zIHRoZSBsaXN0IG9mIGFjY2VwdGVkIG1pbWV0eXBlcyBvZiB0aGUgZmlsZSBjaG9vc2VyCisg
KgorICogQHBhcmFtIGYgZmlsZSBjaG9vc2VyIG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIEVpbmFf
TGlzdCBvZiBhY2NlcHRlZCBtaW1ldHlwZXMgb24gc3VjY2Vzcywgb3IgQGMgTlVMTCBvbiBmYWls
dXJlLAorICogICAgICAgICB0aGUgRWluYV9MaXN0IGFuZCBpdHMgaXRlbXMgc2hvdWxkIGJlIGZy
ZWVkIGFmdGVyIHVzZQorICogICAgICAgICAodXNlIGVpbmFfc3RyaW5nc2hhcmVfZGVsKCkgdG8g
ZnJlZSB0aGUgaXRlbXMpCisgKi8KK0VBUEkgRWluYV9MaXN0ICpld2tfZmlsZV9jaG9vc2VyX2Fj
Y2VwdF9taW1ldHlwZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIgKmYpOworCisvKioKKyAq
IFJldHVybnMgdGhlIGxpc3Qgb2YgYWNjZXB0ZWQgZmlsZSBleHRlbnNpb25zIG9mIHRoZSBmaWxl
IGNob29zZXIKKyAqCisgKiBAcGFyYW0gZiBmaWxlIGNob29zZXIgb2JqZWN0LgorICoKKyAqIEBy
ZXR1cm4gQGMgRWluYV9MaXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW5zaW9ucyBvbiBzdWNjZXNz
LCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCisgKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5kIGl0
cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlCisgKiAgICAgICAgICh1c2UgZWluYV9z
dHJpbmdzaGFyZV9kZWwoKSB0byBmcmVlIHRoZSBpdGVtcykKKyAqLworRUFQSSBFaW5hX0xpc3Qg
KmV3a19maWxlX2Nob29zZXJfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQoY29uc3QgRXdrX0Zp
bGVfQ2hvb3NlciAqZik7CisKKy8qKgorICogUmV0dXJucyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBm
aWxlIG5hbWVzIG9mIHRoZSBmaWxlIGNob29zZXIuCisgKgorICogVGhpcyBsaXN0IGluZGljYXRl
cyBwcmV2aW91c2x5IHNlbGVjdGVkIGZpbGUgbmFtZXMgb2YgdGhlIGZpbGUgY2hvb3Nlci4KKyAq
IFRoZXNlIGNhbiBiZSB1c2VkIGJ5IGluaXRpYWwgdmFsdWVzIG9mIHRoZSBmaWxlIGRpYWxvZy4K
KyAqCisgKiBAcGFyYW0gZiBmaWxlIGNob29zZXIgb2JqZWN0CisgKgorICogQHJldHVybiBAYyBF
aW5hX0xpc3Qgb2Ygc2VsZWN0ZWQgZmlsZSBuYW1lcyBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9u
IGZhaWx1cmUsCisgKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5kIGl0cyBpdGVtcyBzaG91bGQg
YmUgZnJlZWQgYWZ0ZXIgdXNlCisgKiAgICAgICAgICh1c2UgZWluYV9zdHJpbmdzaGFyZV9kZWwo
KSB0byBmcmVlIHRoZSBpdGVtcykKKyAqLworRUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2Nob29z
ZXJfc2VsZWN0ZWRfZmlsZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIgKmYpOworCisvKioK
KyAqIFJldHVybnMgdGhlIGNhcHR1cmUgYXR0cmlidXRlIG9mIHRoZSBmaWxlIGNob29zZXIuCisg
KgorICogVGhlIGNhcHR1cmUgYXR0cmlidXRlcyBpcyB0byBzdXBwb3J0IEhUTUwgTWVkaWEgQ2Fw
dHVyZS4KKyAqCisgKiBAcGFyYW0gZiBmaWxlIGNob29zZXIgb2JqZWN0CisgKgorICogQHJldHVy
biBAYyBFd2tfRmlsZV9DaG9vc2VyX0NhcHR1cmVfVHlwZSBvbiBzdXBwb3J0aW5nIEhUTUwgbWVk
aWEgY2FwdHVyZSBvciBAYyAwIG9uIGZhaWx1cmUKKyAqLworRUFQSSBFd2tfRmlsZV9DaG9vc2Vy
X0NhcHR1cmVfVHlwZSBld2tfZmlsZV9jaG9vc2VyX2NhcHR1cmVfZ2V0KGNvbnN0IEV3a19GaWxl
X0Nob29zZXIgKmYpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYg
Ly8gZXdrX2ZpbGVfY2hvb3Nlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZpbGVfY2hvb3Nlcl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zp
bGVfY2hvb3Nlcl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYThhM2NhZDFjYTA3NDNmZGY1YmFjNDc2
YjFjOGIxYWIzNzE0MjJlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZmlsZV9jaG9vc2VyX3ByaXZhdGUuaApAQCAtMCwwICsxLDMxIEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfZmls
ZV9jaG9vc2VyX3ByaXZhdGVfaAorI2RlZmluZSBld2tfZmlsZV9jaG9vc2VyX3ByaXZhdGVfaAor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGaWxlQ2hvb3NlcjsKK30KKworRXdrX0ZpbGVf
Q2hvb3NlciogZXdrX2ZpbGVfY2hvb3Nlcl9uZXcoV2ViQ29yZTo6RmlsZUNob29zZXIqIGZpbGVD
aG9vc2VyKTsKK3ZvaWQgZXdrX2ZpbGVfY2hvb3Nlcl9mcmVlKEV3a19GaWxlX0Nob29zZXIqIGV3
a0ZpbGVDaG9vc2VyKTsKKworI2VuZGlmIC8vIGV3a19maWxlX2Nob29zZXJfcHJpdmF0ZV9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154281</attachid>
            <date>2012-07-25 00:19:00 -0700</date>
            <delta_ts>2012-07-25 03:01:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91957-20120725161849.patch</filename>
            <type>text/plain</type>
            <size>14171</size>
            <attacher name="Kihong Kwon">kihong.kwon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhMmFkZWEzN2NhNDFmYjNj
MDU1ZjJlNTNlZjRkODAwYzc4OTdmOWQuLmEzZGUyMGJjMGEwY2U2ZWYyYmQ2MWIxMjg2ZjU0ZTBh
OGExMjk2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDctMjQgIEtpaG9uZyBL
d29uICA8a2lob25nLmt3b25Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gQWRkIEZpbGUg
Q2hvb3NlciBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkxOTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGV3a19maWxlX2Nob29zZXIgc291cmNlIGFuZCBoZWFkZXIuCisKKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJMRV9Q
Uk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVTU19F
TEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGZlMmU2YzU2ZTNlYTEwYTY4
MmU3YmRmNWNjNjg2NGI4NzgwNWViYTkuLmFlYjUyODBmMTIzYTU0MDk4MTkzNWRhZmQ2Yzc3OGM2
YTgyM2ZmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMi0wNy0yNCAg
S2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBB
ZGQgRmlsZSBDaG9vc2VyIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE5NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgQVBJcyBmb3IgZmlsZSBjaG9vc2VyLiBUaGVzZSBBUElzIGFsbG93IGFu
IGFwcGxpY2F0aW9uKGxpa2UgYSBicm93c2VyKSBxdWVyaWVzIGluZm9ybWF0aW9ucworICAgICAg
ICBhYm91dCBtdWx0aXBsZSBmaWxlcyBhbGxvd2VkLCBkaXJlY3RvcnkgdXBsb2FkIGFsbG93ZWQs
IGFjY2VwdCBtaW1ldHlwZXMgbGlzdCwKKyAgICAgICAgYWNjZXB0IGZpbGUgZXh0ZW50aW9ucyBs
aXN0LCBzZWxlY3RlZCBmaWxlcyBsaXN0IGFuZCBjYXB0dXJlIHRvIHN1cHBvcnQgSFRNTCBtZWRp
YSBjYXB0dXJlLgorCisgICAgICAgICogZXdrL0VXZWJLaXQuaDoKKyAgICAgICAgKiBld2svZXdr
X2ZpbGVfY2hvb3Nlci5jcHA6IEFkZGVkLgorICAgICAgICAoX0V3a19GaWxlX0Nob29zZXIpOgor
ICAgICAgICAoZXdrX2ZpbGVfY2hvb3Nlcl9hbGxvd3NfbXVsdGlwbGVfZmlsZXNfZ2V0KToKKyAg
ICAgICAgKGV3a19maWxlX2Nob29zZXJfYWxsb3dzX2RpcmVjdG9yeV91cGxvYWRfZ2V0KToKKyAg
ICAgICAgKGV3a19maWxlX2Nob29zZXJfYWNjZXB0X21pbWV0eXBlc19nZXQpOgorICAgICAgICAo
ZXdrX2ZpbGVfY2hvb3Nlcl9hY2NlcHRfZmlsZV9leHRlbnRpb25zX2dldCk6CisgICAgICAgIChl
d2tfZmlsZV9jaG9vc2VyX3NlbGVjdGVkX2ZpbGVzX2dldCk6CisgICAgICAgIChld2tfZmlsZV9j
aG9vc2VyX2NhcHR1cmVfZ2V0KToKKyAgICAgICAgKGV3a19maWxlX2Nob29zZXJfbmV3KToKKyAg
ICAgICAgKGV3a19maWxlX2Nob29zZXJfZnJlZSk6CisgICAgICAgICogZXdrL2V3a19maWxlX2No
b29zZXIuaDogQWRkZWQuCisgICAgICAgICogZXdrL2V3a19maWxlX2Nob29zZXJfcHJpdmF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA3LTIzICBQaWVycmUgUm9zc2kg
IDxwaWVycmUucm9zc2lAZ21haWwuY29tPgogCiAgICAgICAgIFVuaWZ5IG51bVRvdWNoRXZlbnRI
YW5kbGVyc0NoYW5nZWQgYW5kIG5lZWRUb3VjaEV2ZW50cyBpbiB0aGUgY2hyb21lIGNsaWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNmNkYzliNzc1ZmRmNTk1ZjE3Mzc2MjNmMmQwOGM2
ZTAxOTY2YjdiZi4uN2RkZjM2NDY2YTFmNjVhZjk4NzAzYTVlZTU2OTMxYzhkMmYyNWQ1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMzIsNiArMTMyLDcgQEAgTElTVChBUFBFTkQgV2Vi
S2l0X1NPVVJDRVMKICAgICBlZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAKICAgICBlZmwvZXdr
L2V3a19jb29raWVzLmNwcAogICAgIGVmbC9ld2svZXdrX2N1c3RvbV9oYW5kbGVyLmNwcAorICAg
IGVmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHAKICAgICBlZmwvZXdrL2V3a19mcmFtZS5jcHAK
ICAgICBlZmwvZXdrL2V3a19oaXN0b3J5LmNwcAogICAgIGVmbC9ld2svZXdrX2ludGVudC5jcHAK
QEAgLTI3NCw2ICsyNzUsNyBAQCBTRVQoRVdlYktpdF9IRUFERVJTCiAgICAgJHtDTUFLRV9DVVJS
RU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2F1dGguaAogICAgICR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5oCiAgICAgJHtDTUFLRV9DVVJSRU5U
X1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2Nvb2tpZXMuaAorICAgICR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9lZmwvZXdrL2V3a19maWxlX2Nob29zZXIuaAogICAgICR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19mcmFtZS5oCiAgICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L2VmbC9ld2svZXdrX2hpc3RvcnkuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9lZmwvZXdrL2V3a19pbnRlbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL0VXZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKaW5kZXgg
ZjkwODYwMzczZmZhZDU2YmIwZDMwZWZiMmVlNWY1MGVhOTE4MjhhOC4uN2M5MWMzYzlhODM4Yjlj
NTQxZGY3ZGFlNDFmZWVmY2MxNzg5ZTQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL0VXZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svRVdlYktpdC5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiZXdrX2F1dGguaCIKICNpbmNsdWRlICJld2tfY29udGV4
dG1lbnUuaCIKICNpbmNsdWRlICJld2tfY29va2llcy5oIgorI2luY2x1ZGUgImV3a19maWxlX2No
b29zZXIuaCIKICNpbmNsdWRlICJld2tfZnJhbWUuaCIKICNpbmNsdWRlICJld2tfaGlzdG9yeS5o
IgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZmlsZV9jaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmls
ZV9jaG9vc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODZiZGM1NDIyOTBhYWEyZjBjODA1YmIyNTJlYTgz
ZThhMDVhYTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
aWxlX2Nob29zZXIuY3BwCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgImV3a19maWxlX2Nob29zZXIuaCIKKworI2luY2x1ZGUgIkZpbGVDaG9vc2VyLmgiCisjaW5j
bHVkZSAiZXdrX2ZpbGVfY2hvb3Nlcl9wcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorCitzdHJ1Y3QgX0V3a19GaWxlX0Nob29zZXIgeworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGaWxlQ2hvb3Nlcj4gZmlsZUNob29zZXI7Cit9OworCitFaW5hX0Jvb2wgZXdrX2ZpbGVfY2hv
b3Nlcl9hbGxvd3NfbXVsdGlwbGVfZmlsZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNo
b29zZXIpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNob29zZXIsIGZh
bHNlKTsKKyAgICByZXR1cm4gY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuYWxsb3dz
TXVsdGlwbGVGaWxlczsKK30KKworRWluYV9Cb29sIGV3a19maWxlX2Nob29zZXJfYWxsb3dzX2Rp
cmVjdG9yeV91cGxvYWRfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNob29zZXIpCit7Cisj
aWYgRU5BQkxFKERJUkVDVE9SWV9VUExPQUQpCisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGNob29zZXIsIGZhbHNlKTsKKyAgICByZXR1cm4gY2hvb3Nlci0+ZmlsZUNob29zZXIt
PnNldHRpbmdzKCkuYWxsb3dzRGlyZWN0b3J5VXBsb2FkOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworRWluYV9MaXN0KiBld2tfZmlsZV9jaG9vc2VyX2FjY2VwdF9taW1l
dHlwZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNob29zZXIpCit7CisgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNob29zZXIsIDApOworCisgICAgRWluYV9MaXN0KiBt
aW1ldHlwZXMgPSAwOworICAgIHNpemVfdCBjb3VudCA9IGNob29zZXItPmZpbGVDaG9vc2VyLT5z
ZXR0aW5ncygpLmFjY2VwdE1JTUVUeXBlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3VudDsgKytpKQorICAgICAgICBtaW1ldHlwZXMgPSBlaW5hX2xpc3RfYXBwZW5kKG1p
bWV0eXBlcywgZWluYV9zdHJpbmdzaGFyZV9hZGQoY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRp
bmdzKCkuYWNjZXB0TUlNRVR5cGVzW2ldLnV0ZjgoKS5kYXRhKCkpKTsKKworICAgIHJldHVybiBt
aW1ldHlwZXM7Cit9CisKK0VpbmFfTGlzdCogZXdrX2ZpbGVfY2hvb3Nlcl9hY2NlcHRfZmlsZV9l
eHRlbnRpb25zX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyKiBjaG9vc2VyKQoreworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjaG9vc2VyLCAwKTsKKworICAgIEVpbmFfTGlz
dCogZmlsZUV4dGVudGlvbnMgPSAwOworICAgIHNpemVfdCBjb3VudCA9IGNob29zZXItPmZpbGVD
aG9vc2VyLT5zZXR0aW5ncygpLmFjY2VwdEZpbGVFeHRlbnNpb25zLnNpemUoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgIGZpbGVFeHRlbnRpb25zID0g
ZWluYV9saXN0X2FwcGVuZChmaWxlRXh0ZW50aW9ucywgZWluYV9zdHJpbmdzaGFyZV9hZGQoY2hv
b3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuYWNjZXB0RmlsZUV4dGVuc2lvbnNbaV0udXRm
OCgpLmRhdGEoKSkpOworCisgICAgcmV0dXJuIGZpbGVFeHRlbnRpb25zOworfQorCitFaW5hX0xp
c3QqIGV3a19maWxlX2Nob29zZXJfc2VsZWN0ZWRfZmlsZXNfZ2V0KGNvbnN0IEV3a19GaWxlX0No
b29zZXIqIGNob29zZXIpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNo
b29zZXIsIDApOworCisgICAgRWluYV9MaXN0KiBmaWxlcyA9IDA7CisgICAgc2l6ZV90IGNvdW50
ID0gY2hvb3Nlci0+ZmlsZUNob29zZXItPnNldHRpbmdzKCkuc2VsZWN0ZWRGaWxlcy5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBmaWxlcyA9
IGVpbmFfbGlzdF9hcHBlbmQoZmlsZXMsIGVpbmFfc3RyaW5nc2hhcmVfYWRkKGNob29zZXItPmZp
bGVDaG9vc2VyLT5zZXR0aW5ncygpLnNlbGVjdGVkRmlsZXNbaV0udXRmOCgpLmRhdGEoKSkpOwor
CisgICAgcmV0dXJuIGZpbGVzOworfQorCitFd2tfRmlsZV9DaG9vc2VyX0NhcHR1cmVfVHlwZSBl
d2tfZmlsZV9jaG9vc2VyX2NhcHR1cmVfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIqIGNob29z
ZXIpCit7CisjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCisgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKGNob29zZXIsIEVXS19GSUxFX0NIT09TRVJfQ0FQVFVSRV9UWVBFX0lOVkFM
SUQpOworCisgICAgU3RyaW5nIGNhcHR1cmUgPSBjaG9vc2VyLT5maWxlQ2hvb3Nlci0+c2V0dGlu
Z3MoKS5jYXB0dXJlOworCisgICAgaWYgKGNhcHR1cmUgPT0gImNhbWVyYSIpCisgICAgICAgIHJl
dHVybiBFV0tfRklMRV9DSE9PU0VSX0NBUFRVUkVfVFlQRV9DQU1FUkE7CisKKyAgICBpZiAoY2Fw
dHVyZSA9PSAiY2FtY29yZGVyIikKKyAgICAgICAgcmV0dXJuIEVXS19GSUxFX0NIT09TRVJfQ0FQ
VFVSRV9UWVBFX0NBTUNPUkRFUjsKKworICAgIGlmIChjYXB0dXJlID09ICJtaWNyb3Bob25lIikK
KyAgICAgICAgcmV0dXJuIEVXS19GSUxFX0NIT09TRVJfQ0FQVFVSRV9UWVBFX01JQ1JPUEhPTkU7
CisKKyAgICByZXR1cm4gRVdLX0ZJTEVfQ0hPT1NFUl9DQVBUVVJFX1RZUEVfRklMRVNZU1RFTTsK
KyNlbHNlCisgICAgcmV0dXJuIEVXS19GSUxFX0NIT09TRVJfQ0FQVFVSRV9UWVBFX0lOVkFMSUQ7
CisjZW5kaWYKK30KKworRXdrX0ZpbGVfQ2hvb3NlciogZXdrX2ZpbGVfY2hvb3Nlcl9uZXcoV2Vi
Q29yZTo6RmlsZUNob29zZXIqIGZpbGVDaG9vc2VyKQoreworICAgIEV3a19GaWxlX0Nob29zZXIq
IGV3a0ZpbGVDaG9vc2VyID0gbmV3IEV3a19GaWxlX0Nob29zZXI7CisgICAgZXdrRmlsZUNob29z
ZXItPmZpbGVDaG9vc2VyID0gZmlsZUNob29zZXI7CisgICAgcmV0dXJuIGV3a0ZpbGVDaG9vc2Vy
OworfQorCit2b2lkIGV3a19maWxlX2Nob29zZXJfZnJlZShFd2tfRmlsZV9DaG9vc2VyKiBjaG9v
c2VyKQoreworICAgIGNob29zZXItPmZpbGVDaG9vc2VyID0gMDsKKyAgICBkZWxldGUgY2hvb3Nl
cjsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19maWxlX2Nob29z
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzQ1OTBkNGRkY2Q2ODU3MmFkM2EzNGIzYmE1MzNjNDBlZTQ5MTRhNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9vc2VyLmgKQEAgLTAsMCAr
MSwxMzIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisvKioKKyAqIEBmaWxlICAgIGV3a19maWxlX2Nob29zZXIuaAorICogQGJyaWVmICAgRmls
ZSBDaG9vc2VyIEFQSS4KKyAqCisgKiBGaWxlIENob29zZXIgc3VwcG9ydHMgQVBJcyBmb3IgZmls
ZSBzZWxlY3Rpb24gZGlhbG9nLgorICogVGhpcyBzdXBwb3J0IGF0dHJpYnV0ZXMgb2YgZmlsZSBj
aG9vc2VyIHJlZ2FyZGluZzoKKyAqIC0gYWxsb3dhbmNlIG9mIG11bHRpcGxlIGZpbGVzIHNlbGVj
dGlvbgorICogLSBhbGxvd2FuY2Ugb2YgdXBsb2FkIGRpcmVjdG9yeQorICogLSBsaXN0IG9mIGFj
Y2VwdGVkIG1pbWUgdHlwZXMKKyAqIC0gbGlzdCBvZiBhY2NlcHRlZCBmaWxlIGV4dGVuc2lvbnMK
KyAqIC0gbGlzdCBvZiBpbml0aWFsIHNlbGVjdGVkIGZpbGUgbmFtZXMKKyAqIC0gY2FwdHVyZSBh
dHRyaWJ1dGUgZm9yIEhUTUwgbWVkaWEgY2FwdHVyZQorICovCisKKyNpZm5kZWYgZXdrX2ZpbGVf
Y2hvb3Nlcl9oCisjZGVmaW5lIGV3a19maWxlX2Nob29zZXJfaAorCisjaW5jbHVkZSA8RWluYS5o
PgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYg
c3RydWN0IF9Fd2tfRmlsZV9DaG9vc2VyIEV3a19GaWxlX0Nob29zZXI7CisKKy8qKgorICogXGVu
dW0gICAgX0V3a19GaWxlX0Nob29zZXJfQ2FwdHVyZV9UeXBlCisgKiBAYnJpZWYgICBUeXBlcyBv
ZiBjYXB0dXJlIGF0dHJpYnV0ZSBvZiBmaWxlIGNob29zZXIgdG8gc3VwcG9ydCB0aGUgSFRNTCBt
ZWRpYSBjYXB0dXJlLgorICovCitlbnVtIF9Fd2tfRmlsZV9DaG9vc2VyX0NhcHR1cmVfVHlwZSB7
CisgICAgRVdLX0ZJTEVfQ0hPT1NFUl9DQVBUVVJFX1RZUEVfSU5WQUxJRCwKKyAgICBFV0tfRklM
RV9DSE9PU0VSX0NBUFRVUkVfVFlQRV9GSUxFU1lTVEVNLAorICAgIEVXS19GSUxFX0NIT09TRVJf
Q0FQVFVSRV9UWVBFX0NBTUVSQSwKKyAgICBFV0tfRklMRV9DSE9PU0VSX0NBUFRVUkVfVFlQRV9D
QU1DT1JERVIsCisgICAgRVdLX0ZJTEVfQ0hPT1NFUl9DQVBUVVJFX1RZUEVfTUlDUk9QSE9ORQor
fTsKK3R5cGVkZWYgZW51bSBfRXdrX0ZpbGVfQ2hvb3Nlcl9DYXB0dXJlX1R5cGUgRXdrX0ZpbGVf
Q2hvb3Nlcl9DYXB0dXJlX1R5cGU7CisKKy8qKgorICogUXVlcnkgaWYgbXVsdGlwbGUgZmlsZXMg
YXJlIHN1cHBvcnRlZCBieSBmaWxlIGNob29zZXIuCisgKgorICogQHBhcmFtIGYgZmlsZSBjaG9v
c2VyIG9iamVjdC4KKyAqCisgKiBJdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSB3aGljaCBpbmRp
Y2F0ZXMgaWYgbXVsdGlwbGUgZmlsZSBpcyBzdXBwb3J0ZWQgb3Igbm90LgorICoKKyAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIG9uIHN1cHBvcnQgbXVsdGlwbGUgZmlsZXMgb3IgQGMgRUlOQV9GQUxT
RSBvdGhlcndpc2UuCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a19maWxlX2Nob29zZXJfYWxsb3dz
X211bHRpcGxlX2ZpbGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyICpmKTsKKworLyoqCisg
KiBRdWVyeSBpZiBkaXJlY3RvcnkgdXBsb2FkIGlzIHN1cHBvcnRlZCBieSBmaWxlIGNob29zZXIu
CisgKgorICogQHBhcmFtIGYgZmlsZSBjaG9vc2VyIG9iamVjdC4KKyAqCisgKiBJdCByZXR1cm5z
IGEgYm9vbGVhbiB2YWx1ZSB3aGljaCBpbmRpY2F0ZXMgaWYgZGlyZWN0b3J5IHVwbG9hZCBpcyBz
dXBwb3J0ZWQgb3Igbm90LgorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1cHBvcnQg
ZGlyZWN0b3J5IHVwbG9hZCBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KKyAqLworRUFQSSBF
aW5hX0Jvb2wgZXdrX2ZpbGVfY2hvb3Nlcl9hbGxvd3NfZGlyZWN0b3J5X3VwbG9hZF9nZXQoY29u
c3QgRXdrX0ZpbGVfQ2hvb3NlciAqZik7CisKKy8qKgorICogUmV0dXJucyB0aGUgbGlzdCBvZiBh
Y2NlcHRlZCBtaW1ldHlwZXMgb2YgdGhlIGZpbGUgY2hvb3Nlci4KKyAqCisgKiBAcGFyYW0gZiBm
aWxlIGNob29zZXIgb2JqZWN0LgorICoKKyAqIEByZXR1cm4gRWluYV9MaXN0IG9mIGFjY2VwdGVk
IG1pbWV0eXBlcyBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCisgKiAgICAgICAg
IHRoZSBFaW5hX0xpc3QgYW5kIGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLiBV
c2UgZWluYV9zdHJpbmdzaGFyZV9kZWwoKQorICogICAgICAgICB0byBmcmVlIHRoZSBpdGVtcy4K
KyAqLworRUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2Nob29zZXJfYWNjZXB0X21pbWV0eXBlc19n
ZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciAqZik7CisKKy8qKgorICogUmV0dXJucyB0aGUgbGlz
dCBvZiBhY2NlcHRlZCBmaWxlIGV4dGVuc2lvbnMgb2YgdGhlIGZpbGUgY2hvb3Nlci4KKyAqCisg
KiBAcGFyYW0gZiBmaWxlIGNob29zZXIgb2JqZWN0LgorICoKKyAqIEByZXR1cm4gQGMgRWluYV9M
aXN0IG9mIGFjY2VwdGVkIGZpbGUgZXh0ZW5zaW9ucyBvbiBzdWNjZXNzLCBvciBAYyBOVUxMIG9u
IGZhaWx1cmUsCisgKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5kIGl0cyBpdGVtcyBzaG91bGQg
YmUgZnJlZWQgYWZ0ZXIgdXNlLiBVc2UgZWluYV9zdHJpbmdzaGFyZV9kZWwoKQorICogICAgICAg
ICB0byBmcmVlIHRoZSBpdGVtcy4KKyAqLworRUFQSSBFaW5hX0xpc3QgKmV3a19maWxlX2Nob29z
ZXJfYWNjZXB0X2ZpbGVfZXh0ZW50aW9uc19nZXQoY29uc3QgRXdrX0ZpbGVfQ2hvb3NlciAqZik7
CisKKy8qKgorICogUmV0dXJucyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBmaWxlIG5hbWVzIG9mIHRo
ZSBmaWxlIGNob29zZXIuCisgKgorICogVGhpcyBsaXN0IGluZGljYXRlcyBwcmV2aW91c2x5IHNl
bGVjdGVkIGZpbGUgbmFtZXMgb2YgdGhlIGZpbGUgY2hvb3Nlci4KKyAqIFRoZXNlIGNhbiBiZSB1
c2VkIGJ5IGluaXRpYWwgdmFsdWVzIG9mIHRoZSBmaWxlIGRpYWxvZy4KKyAqCisgKiBAcGFyYW0g
ZiBmaWxlIGNob29zZXIgb2JqZWN0LgorICoKKyAqIEByZXR1cm4gQGMgRWluYV9MaXN0IG9mIHNl
bGVjdGVkIGZpbGUgbmFtZXMgb24gc3VjY2Vzcywgb3IgQGMgTlVMTCBvbiBmYWlsdXJlLAorICog
ICAgICAgICB0aGUgRWluYV9MaXN0IGFuZCBpdHMgaXRlbXMgc2hvdWxkIGJlIGZyZWVkIGFmdGVy
IHVzZS4gVXNlIGVpbmFfc3RyaW5nc2hhcmVfZGVsKCkKKyAqICAgICAgICAgdG8gZnJlZSB0aGUg
aXRlbXMuCisgKi8KK0VBUEkgRWluYV9MaXN0ICpld2tfZmlsZV9jaG9vc2VyX3NlbGVjdGVkX2Zp
bGVzX2dldChjb25zdCBFd2tfRmlsZV9DaG9vc2VyICpmKTsKKworLyoqCisgKiBSZXR1cm5zIHRo
ZSBjYXB0dXJlIGF0dHJpYnV0ZSBvZiB0aGUgZmlsZSBjaG9vc2VyIHRvIHN1cHBvcnQgSFRNTCBt
ZWRpYSBjYXB0dXJlLgorICoKKyAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1tZWRp
YS1jYXB0dXJlLyBmb3IgdGhlIHNlbWFudGljcyBvZiB0aGUgY2FwdHVyZSBhdHRyaWJ1dGUuCisg
KgorICogQHBhcmFtIGYgZmlsZSBjaG9vc2VyIG9iamVjdC4KKyAqCisgKiBAcmV0dXJuIEBjIEV3
a19GaWxlX0Nob29zZXJfQ2FwdHVyZV9UeXBlIG9uIHN1cHBvcnRpbmcgSFRNTCBtZWRpYSBjYXB0
dXJlIG9yCisgKiAgICAgICAgIEBjIEVXS19GSUxFX0NIT09TRVJfQ0FQVFVSRV9UWVBFX0lOVkFM
SUQgb24gZmFpbHVyZS4KKyAqLworRUFQSSBFd2tfRmlsZV9DaG9vc2VyX0NhcHR1cmVfVHlwZSBl
d2tfZmlsZV9jaG9vc2VyX2NhcHR1cmVfZ2V0KGNvbnN0IEV3a19GaWxlX0Nob29zZXIgKmYpOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX2ZpbGVfY2hv
b3Nlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nl
cl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlcl9wcml2
YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTE5ZTU0YWUxYmU3YjA1MjczOTRjODhjMmExZGE0Mjg4M2Q3MjJk
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZmlsZV9jaG9v
c2VyX3ByaXZhdGUuaApAQCAtMCwwICsxLDMxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAx
MiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfZmlsZV9jaG9vc2VyX3ByaXZh
dGVfaAorI2RlZmluZSBld2tfZmlsZV9jaG9vc2VyX3ByaXZhdGVfaAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBGaWxlQ2hvb3NlcjsKK30KKworRXdrX0ZpbGVfQ2hvb3NlciogZXdrX2Zp
bGVfY2hvb3Nlcl9uZXcoV2ViQ29yZTo6RmlsZUNob29zZXIqIGZpbGVDaG9vc2VyKTsKK3ZvaWQg
ZXdrX2ZpbGVfY2hvb3Nlcl9mcmVlKEV3a19GaWxlX0Nob29zZXIqIGNob29zZXIpOworCisjZW5k
aWYgLy8gZXdrX2ZpbGVfY2hvb3Nlcl9wcml2YXRlX2gKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>