<?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>72946</bug_id>
          
          <creation_ts>2011-11-22 05:59:49 -0800</creation_ts>
          <short_desc>[GTK] Add WebKitURIResponse to WebKit2 GTK+ API</short_desc>
          <delta_ts>2011-11-29 03:11:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72949</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>507547</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-22 05:59:49 -0800</bug_when>
    <thetext>It will be needed by Download and Policy clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507552</commentid>
    <comment_count>1</comment_count>
      <attachid>116213</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-22 06:11:08 -0800</bug_when>
    <thetext>Created attachment 116213
Patch

It only returns uri, content_length and status_code for now. It doesn&apos;t include unit tests, because it will be covered by other unit tests like downloads and policy client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507559</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-22 06:21:41 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508016</commentid>
    <comment_count>3</comment_count>
      <attachid>116213</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-23 02:10:18 -0800</bug_when>
    <thetext>Comment on attachment 116213
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitNetworkResponse.cpp:130
&gt; + * the server. It will normally be a #SoupKnownStatusCode, eg,
&gt; + * %SOUP_STATUS_OK, though of course it might actually be an unknown
&gt; + * status code.

I would rephrase this slightly to: It will normally be a #SoupKnownStatusCode, for example %SOUP_STATUS_OK, though the server can respond with any unsigned integer. We need to look into how we can properly link to soup documentation so this doesn&apos;t produce errors during the gktdoc-fixxref run.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitNetworkResponse.cpp:153
&gt; +guint64 webkit_network_response_get_content_length(WebKitNetworkResponse* response)

Any reason this isn&apos;t a property? It is appropriate to use gsize here instead of guint64? Soup seems to use goffset, which I assume is the same data type as gsize.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitNetworkResponse.cpp:170
&gt; +    WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, &quot;uri&quot;, uri.get(), NULL));

Ah, is this why you&apos;ve chosen to use a property for uri, but not the others? I guess I would prefer that all private data be properties or none of them.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitNetworkResponse.cpp:176
&gt; +SoupMessage*
&gt; +webkitNetworkResponseGetSoupMessage(WebKitNetworkResponse* response)

Extra newline here. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508144</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-23 07:58:14 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 116213 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116213&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitNetworkResponse.cpp:130
&gt; &gt; + * the server. It will normally be a #SoupKnownStatusCode, eg,
&gt; &gt; + * %SOUP_STATUS_OK, though of course it might actually be an unknown
&gt; &gt; + * status code.
&gt; 
&gt; I would rephrase this slightly to: It will normally be a #SoupKnownStatusCode, for example %SOUP_STATUS_OK, though the server can respond with any unsigned integer. 

I copied it literally from the libsoup api docs :-P

&gt; We need to look into how we can properly link to soup documentation so this doesn&apos;t produce errors during the gktdoc-fixxref run.

Right.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitNetworkResponse.cpp:153
&gt; &gt; +guint64 webkit_network_response_get_content_length(WebKitNetworkResponse* response)
&gt; 
&gt; Any reason this isn&apos;t a property? It is appropriate to use gsize here instead of guint64? Soup seems to use goffset, which I assume is the same data type as gsize.

Because data length used by WebKit2 internal API is uint64_t

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitNetworkResponse.cpp:170
&gt; &gt; +    WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, &quot;uri&quot;, uri.get(), NULL));
&gt; 
&gt; Ah, is this why you&apos;ve chosen to use a property for uri, but not the others? I guess I would prefer that all private data be properties or none of them.

Yes, because it&apos;s construct only.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitNetworkResponse.cpp:176
&gt; &gt; +SoupMessage*
&gt; &gt; +webkitNetworkResponseGetSoupMessage(WebKitNetworkResponse* response)
&gt; 
&gt; Extra newline here. :)

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508776</commentid>
    <comment_count>5</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2011-11-24 07:37:47 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; We need to look into how we can properly link to soup documentation so this doesn&apos;t produce errors during the gktdoc-fixxref run.

I think if you have the libsoup gtk-docs installed in the prefix you are installing webkit into, it will find them automatically.

&gt; &gt; &gt; +guint64 webkit_network_response_get_content_length(WebKitNetworkResponse* response)
&gt; &gt; 
&gt; &gt; Any reason this isn&apos;t a property? It is appropriate to use gsize here instead of guint64? Soup seems to use goffset, which I assume is the same data type as gsize.

(Not always. gsize is size_t and goffset is offset_t. On x86_64 they&apos;re both 64-bit but on x86 size_t is 32-bit.)

&gt; &gt; Ah, is this why you&apos;ve chosen to use a property for uri, but not the others? I guess I would prefer that all private data be properties or none of them.
&gt; 
&gt; Yes, because it&apos;s construct only.

Having properties for everything is more language-bindings-friendly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508778</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-24 07:42:55 -0800</bug_when>
    <thetext>(In reply to comment #5)

&gt; Having properties for everything is more language-bindings-friendly.

In this case, I think it makes sense to have all members be properties or none of them, but not only some of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508780</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-24 07:48:35 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; 
&gt; &gt; Having properties for everything is more language-bindings-friendly.
&gt; 
&gt; In this case, I think it makes sense to have all members be properties or none of them, but not only some of them.

Good point, I agree, I&apos;ll update the wiki accordingly http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API

btw, I&apos;ll rename this and NetworkRequest as WebKitURIRequest/Response if nobody objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508782</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-24 07:51:16 -0800</bug_when>
    <thetext>(In reply to comment #7)

&gt; btw, I&apos;ll rename this and NetworkRequest as WebKitURIRequest/Response if nobody objects.

I like WebKitURIRequest. It&apos;s more accurate and less typing. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509786</commentid>
    <comment_count>9</comment_count>
      <attachid>116749</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-28 06:37:05 -0800</bug_when>
    <thetext>Created attachment 116749
Updated patch

Updated according to review comments and renamed to WebKitURIResponse</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510003</commentid>
    <comment_count>10</comment_count>
      <attachid>116749</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-11-28 11:23:30 -0800</bug_when>
    <thetext>Comment on attachment 116749
Updated patch

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

Nice.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:98
&gt; +     * The URI to which the response will be made.

Maybe change this to &quot;The URI for which the response was made.&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:104
&gt; +                                                        _(&quot;The URI to which the response will be made.&quot;),

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp:182
&gt; + * be 0 if the server provided incorrect or missing Content-Length.

You have &quot;an&quot; after provided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510657</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-29 03:11:14 -0800</bug_when>
    <thetext>Committed r101350: &lt;http://trac.webkit.org/changeset/101350&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116213</attachid>
            <date>2011-11-22 06:11:08 -0800</date>
            <delta_ts>2011-11-28 06:37:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-network-response.diff</filename>
            <type>text/plain</type>
            <size>16706</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZTk4YWE3Li4yMzYwZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMTEtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJLaXROZXR3b3JrUmVzcG9uc2UgdG8gV2ViS2l0MiBH
VEsrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI5NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOiBBZGQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5ldHdvcmtSZXNwb25zZS5jcHA6IEFkZGVkLgorICAg
ICAgICAod2Via2l0TmV0d29ya1Jlc3BvbnNlRmluYWxpemUpOgorICAgICAgICAod2Via2l0TmV0
d29ya1Jlc3BvbnNlR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0TmV0d29ya1Jlc3BvbnNl
U2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X25ldHdvcmtfcmVzcG9uc2VfY2xhc3NfaW5p
dCk6CisgICAgICAgICh3ZWJraXRfbmV0d29ya19yZXNwb25zZV9pbml0KToKKyAgICAgICAgKHdl
YmtpdF9uZXR3b3JrX3Jlc3BvbnNlX2dldF91cmkpOiBSZXR1cm4gdGhlIFVSSSBvZiB0aGUgcmVz
cG9uc2UuCisgICAgICAgICh3ZWJraXRfbmV0d29ya19yZXNwb25zZV9nZXRfc3RhdHVzX2NvZGUp
OiBSZXR1cm4gdGhlIHN0YXR1cyBjb2RlCisgICAgICAgIG9mIHRoZSByZXNwb25zZSwgb3IgU09V
UF9TVEFUVVNfTk9ORS4KKyAgICAgICAgKHdlYmtpdF9uZXR3b3JrX3Jlc3BvbnNlX2dldF9jb250
ZW50X2xlbmd0aCk6IFJldHVybiB0aGUgZXhwZWN0ZWQKKyAgICAgICAgY29udGVudCBsZW5ndGgg
b2YgdGhlIHJlc3BvbnNlLgorICAgICAgICAod2Via2l0TmV0d29ya1Jlc3BvbnNlQ3JlYXRlRm9y
U291cE1lc3NhZ2UpOiBQcml2YXRlIGZ1bmN0aW9uIHRvCisgICAgICAgIGNyZWF0ZSBhIG5ldHdv
cmsgcmVzcG9uc2UgZnJvbSBhIFNvdXBNZXNzYWdlLgorICAgICAgICAod2Via2l0TmV0d29ya1Jl
c3BvbnNlR2V0U291cE1lc3NhZ2UpOiBSZXR1cm4gdGhlIHNvdXAgbWVzc2FnZQorICAgICAgICBh
c3NvY2lhdGVkIHRvIHRoZSByZXNwb25zZS4KKyAgICAgICAgKHdlYmtpdE5ldHdvcmtSZXNwb25z
ZVNldENvbnRlbnRMZW5ndGgpOiBTZXQgdGhlIGV4cGVjdGVkIGNvbnRlbnQKKyAgICAgICAgbGVu
Z3RoIG9mIHRoZSByZXNwb25zZS4gVGhpcyBpcyB1c2VmdWwgZm9yIG5vbiBodHRwIHJlc3BvbnNl
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROZXR3b3JrUmVzcG9uc2UuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmV0d29ya1Jlc3BvbnNl
UHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN5bWJvbHMuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOiBBZGQKKyAgICAgICAgd2Via2l0X25ldHdv
cmtfcmVzcG9uc2VfZ2V0X3R5cGUoKS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJr
aXQyLmg6IEFkZCBXZWJLaXROZXdvcmtSZXNwb25zZS5oLgorCiAyMDExLTExLTIxICBBbGV4aXMg
TWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF1bV0sy
XSBSRUdSRVNTSU9OKDEwMDQ4Myk6IEl0IG1hZGUgMiBBUEkgdGVzdHMgZmFpbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbQppbmRleCA3NWEwNDcwLi5iZWYwNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAt
ODAsNiArODAsNyBAQCB3ZWJraXQyZ3RrX2hlYWRlcnMgPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXREZWZpbmVzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RXJyb3IuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRO
ZXR3b3JrUmVxdWVzdC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5l
dHdvcmtSZXNwb25zZS5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2Fk
ZXJDbGllbnQuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5n
cy5oIFwKQEAgLTUwNCw2ICs1MDUsOSBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01B
Sk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX1NPVQogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmV0d29ya1JlcXVlc3QuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROZXR3b3JrUmVxdWVzdC5oIFwKKwlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROZXR3b3JrUmVzcG9uc2UuY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROZXR3b3JrUmVzcG9u
c2UuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TmV0d29ya1Jl
c3BvbnNlUHJpdmF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQcml2YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNl
dHRpbmdzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0
dGluZ3MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXROZXR3b3JrUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0TmV0d29ya1Jlc3BvbnNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5hYTk4MjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0TmV0d29ya1Jlc3BvbnNlLmNwcApAQCAtMCwwICsxLDE4NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViS2l0TmV0d29ya1Jlc3BvbnNlLmgiCisKKyNpbmNsdWRlICJXZWJLaXRO
ZXR3b3JrUmVzcG9uc2VQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0UHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworZW51bSB7CisgICAgUFJP
UF8wLAorCisgICAgUFJPUF9VUkkKK307CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitH
X0RFRklORV9UWVBFKFdlYktpdE5ldHdvcmtSZXNwb25zZSwgd2Via2l0X25ldHdvcmtfcmVzcG9u
c2UsIEdfVFlQRV9PQkpFQ1QpCisKK3N0cnVjdCBfV2ViS2l0TmV0d29ya1Jlc3BvbnNlUHJpdmF0
ZSB7CisgICAgQ1N0cmluZyB1cmk7CisgICAgR1JlZlB0cjxTb3VwTWVzc2FnZT4gbWVzc2FnZTsK
KyAgICBndWludDY0IGNvbnRlbnRMZW5ndGg7Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXROZXR3
b3JrUmVzcG9uc2VGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV0VCS0lUX05FVFdP
UktfUkVTUE9OU0Uob2JqZWN0KS0+cHJpdi0+fldlYktpdE5ldHdvcmtSZXNwb25zZVByaXZhdGUo
KTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfbmV0d29ya19yZXNwb25zZV9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXROZXR3b3JrUmVz
cG9uc2VHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdE5ldHdvcmtSZXNwb25z
ZSogcmVzcG9uc2UgPSBXRUJLSVRfTkVUV09SS19SRVNQT05TRShvYmplY3QpOworCisgICAgc3dp
dGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfVVJJOgorICAgICAgICBnX3ZhbHVlX3NldF9z
dHJpbmcodmFsdWUsIHdlYmtpdF9uZXR3b3JrX3Jlc3BvbnNlX2dldF91cmkocmVzcG9uc2UpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgd2Via2l0TmV0d29ya1Jlc3BvbnNlU2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFt
U3BlYykKK3sKKyAgICBXZWJLaXROZXR3b3JrUmVzcG9uc2UqIHJlc3BvbnNlID0gV0VCS0lUX05F
VFdPUktfUkVTUE9OU0Uob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2Fz
ZSBQUk9QX1VSSToKKyAgICAgICAgcmVzcG9uc2UtPnByaXYtPnVyaSA9IGdfdmFsdWVfZ2V0X3N0
cmluZyh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsK
KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9uZXR3b3JrX3Jlc3BvbnNlX2NsYXNzX2lu
aXQoV2ViS2l0TmV0d29ya1Jlc3BvbnNlQ2xhc3MqIHJlc3BvbnNlQ2xhc3MpCit7CisgICAgR09i
amVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlc3BvbnNlQ2xhc3MpOwor
CisgICAgb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0TmV0d29ya1Jlc3BvbnNlRmluYWxp
emU7CisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdE5ldHdvcmtSZXNwb25z
ZUdldFByb3BlcnR5OworICAgIG9iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXROZXR3
b3JrUmVzcG9uc2VTZXRQcm9wZXJ0eTsKKworICAgIC8qKgorICAgICAqIFdlYktpdE5ldHdvcmtS
ZXNwb25zZTp1cmk6CisgICAgICoKKyAgICAgKiBUaGUgVVJJIHRvIHdoaWNoIHRoZSByZXNwb25z
ZSB3aWxsIGJlIG1hZGUuCisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w
ZXJ0eShvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X3N0cmluZygidXJpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiVVJJIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBVUkkgdG8gd2hpY2ggdGhlIHJlc3BvbnNl
IHdpbGwgYmUgbWFkZS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJB
TV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkpOworCisgICAgZ190eXBlX2Ns
YXNzX2FkZF9wcml2YXRlKHJlc3BvbnNlQ2xhc3MsIHNpemVvZihXZWJLaXROZXR3b3JrUmVzcG9u
c2VQcml2YXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9uZXR3b3JrX3Jlc3BvbnNlX2lu
aXQoV2ViS2l0TmV0d29ya1Jlc3BvbnNlKiByZXNwb25zZSkKK3sKKyAgICBXZWJLaXROZXR3b3Jr
UmVzcG9uc2VQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHJlc3Bv
bnNlLCBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFU1BPTlNFLCBXZWJLaXROZXR3b3JrUmVzcG9uc2VQ
cml2YXRlKTsKKyAgICByZXNwb25zZS0+cHJpdiA9IHByaXY7CisgICAgbmV3IChwcml2KSBXZWJL
aXROZXR3b3JrUmVzcG9uc2VQcml2YXRlKCk7Cit9CisKKy8qKgorICogd2Via2l0X25ldHdvcmtf
cmVzcG9uc2VfZ2V0X3VyaToKKyAqIEByZXNwb25zZTogYSAjV2ViS2l0TmV0d29ya1Jlc3BvbnNl
CisgKgorICogUmV0dXJuczogdGhlIHVyaSBvZiB0aGUgI1dlYktpdE5ldHdvcmtSZXNwb25zZQor
ICovCitjb25zdCBnY2hhciogd2Via2l0X25ldHdvcmtfcmVzcG9uc2VfZ2V0X3VyaShXZWJLaXRO
ZXR3b3JrUmVzcG9uc2UqIHJlc3BvbnNlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19ORVRXT1JLX1JFU1BPTlNFKHJlc3BvbnNlKSwgMCk7CisKKyAgICByZXR1cm4gcmVz
cG9uc2UtPnByaXYtPnVyaS5kYXRhKCk7Cit9CisKKy8qKgorICogd2Via2l0X25ldHdvcmtfcmVz
cG9uc2VfZ2V0X3N0YXR1c19jb2RlOgorICogQHJlc3BvbnNlOiBhICNXZWJLaXROZXR3b3JrUmVz
cG9uc2UKKyAqCisgKiBHZXQgdGhlIHN0YXR1cyBjb2RlIG9mIHRoZSAjV2ViS2l0TmV0d29ya1Jl
c3BvbnNlIGFzIHJldHVybmVkIGJ5CisgKiB0aGUgc2VydmVyLiBJdCB3aWxsIG5vcm1hbGx5IGJl
IGEgI1NvdXBLbm93blN0YXR1c0NvZGUsIGVnLAorICogJVNPVVBfU1RBVFVTX09LLCB0aG91Z2gg
b2YgY291cnNlIGl0IG1pZ2h0IGFjdHVhbGx5IGJlIGFuIHVua25vd24KKyAqIHN0YXR1cyBjb2Rl
LgorICoKKyAqIFJldHVybnM6IHRoZSBzdGF0dXMgY29kZSBvZiBAcmVzcG9uc2UKKyAqLworZ3Vp
bnQgd2Via2l0X25ldHdvcmtfcmVzcG9uc2VfZ2V0X3N0YXR1c19jb2RlKFdlYktpdE5ldHdvcmtS
ZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X05FVFdPUktfUkVTUE9OU0UocmVzcG9uc2UpLCBTT1VQX1NUQVRVU19OT05FKTsKKworICAgIGlm
ICghcmVzcG9uc2UtPnByaXYtPm1lc3NhZ2UpCisgICAgICAgIHJldHVybiBTT1VQX1NUQVRVU19O
T05FOworCisgICAgcmV0dXJuIHJlc3BvbnNlLT5wcml2LT5tZXNzYWdlLT5zdGF0dXNfY29kZTsK
K30KKworLyoqCisgKiB3ZWJraXRfbmV0d29ya19yZXNwb25zZV9nZXRfY29udGVudF9sZW5ndGg6
CisgKiBAcmVzcG9uc2U6IGEgI1dlYktpdE5ldHdvcmtSZXNwb25zZQorICoKKyAqIEdldCB0aGUg
ZXhwZWN0ZWQgY29udGVudCBsZW5ndGggb2YgdGhlICNXZWJLaXROZXR3b3JrUmVzcG9uc2UuIEl0
IGNhbgorICogYmUgMCBpZiB0aGUgc2VydmVyIHByb3ZpZGVkIGluY29ycmVjdCBvciBtaXNzaW5n
IENvbnRlbnQtTGVuZ3RoLgorICoKKyAqIFJldHVybnM6IHRoZSBleHBlY3RlZCBjb250ZW50IGxl
bmd0aCBvZiBAcmVzcG9uc2UuCisgKi8KK2d1aW50NjQgd2Via2l0X25ldHdvcmtfcmVzcG9uc2Vf
Z2V0X2NvbnRlbnRfbGVuZ3RoKFdlYktpdE5ldHdvcmtSZXNwb25zZSogcmVzcG9uc2UpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX05FVFdPUktfUkVTUE9OU0UocmVzcG9u
c2UpLCAwKTsKKworICAgIGlmIChyZXNwb25zZS0+cHJpdi0+Y29udGVudExlbmd0aCkKKyAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlLT5wcml2LT5jb250ZW50TGVuZ3RoOworCisgICAgaWYgKCFyZXNw
b25zZS0+cHJpdi0+bWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBTb3VwTWVzc2Fn
ZSogbWVzc2FnZSA9IHJlc3BvbnNlLT5wcml2LT5tZXNzYWdlLmdldCgpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxndWludDY0Pihzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfY29udGVudF9sZW5n
dGgobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycykpOworfQorCitXZWJLaXROZXR3b3JrUmVzcG9u
c2UqIHdlYmtpdE5ldHdvcmtSZXNwb25zZUNyZWF0ZUZvclNvdXBNZXNzYWdlKFNvdXBNZXNzYWdl
KiBtZXNzYWdlKQoreworICAgIEdPd25QdHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0cmluZyhz
b3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgRkFMU0UpKTsKKyAgICBXZWJLaXROZXR3b3Jr
UmVzcG9uc2UqIHJlc3BvbnNlID0gV0VCS0lUX05FVFdPUktfUkVTUE9OU0UoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX05FVFdPUktfUkVTUE9OU0UsICJ1cmkiLCB1cmkuZ2V0KCksIE5VTEwpKTsK
KyAgICByZXNwb25zZS0+cHJpdi0+bWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgcmV0dXJuIHJlc3Bv
bnNlOworfQorCitTb3VwTWVzc2FnZSoKK3dlYmtpdE5ldHdvcmtSZXNwb25zZUdldFNvdXBNZXNz
YWdlKFdlYktpdE5ldHdvcmtSZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgcmV0dXJuIHJlc3Bv
bnNlLT5wcml2LT5tZXNzYWdlLmdldCgpOworfQorCit2b2lkIHdlYmtpdE5ldHdvcmtSZXNwb25z
ZVNldENvbnRlbnRMZW5ndGgoV2ViS2l0TmV0d29ya1Jlc3BvbnNlKiByZXNwb25zZSwgZ3VpbnQ2
NCBjb250ZW50TGVuZ3RoKQoreworICAgIHJlc3BvbnNlLT5wcml2LT5jb250ZW50TGVuZ3RoID0g
Y29udGVudExlbmd0aDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdE5ldHdvcmtSZXNwb25zZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0TmV0d29ya1Jlc3BvbnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMmU1MzU5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5ldHdvcmtSZXNwb25zZS5oCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmICFkZWZpbmVkKF9fV0VC
S0lUMl9IX0lOU0lERV9fKSAmJiAhZGVmaW5lZChXRUJLSVQyX0NPTVBJTEFUSU9OKQorI2Vycm9y
ICJPbmx5IDx3ZWJraXQyL3dlYmtpdDIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKKyNl
bmRpZgorCisjaWZuZGVmIFdlYktpdE5ldHdvcmtSZXNwb25zZV9oCisjZGVmaW5lIFdlYktpdE5l
dHdvcmtSZXNwb25zZV9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdl
YmtpdDIvV2ViS2l0RGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lU
X1RZUEVfTkVUV09SS19SRVNQT05TRSAgICAgICAgICAgICh3ZWJraXRfbmV0d29ya19yZXNwb25z
ZV9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfTkVUV09SS19SRVNQT05TRShvYmopICAgICAg
ICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9ORVRX
T1JLX1JFU1BPTlNFLCBXZWJLaXROZXR3b3JrUmVzcG9uc2UpKQorI2RlZmluZSBXRUJLSVRfSVNf
TkVUV09SS19SRVNQT05TRShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
KChvYmopLCBXRUJLSVRfVFlQRV9ORVRXT1JLX1JFU1BPTlNFKSkKKyNkZWZpbmUgV0VCS0lUX05F
VFdPUktfUkVTUE9OU0VfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgo
a2xhc3MpLCAgV0VCS0lUX1RZUEVfTkVUV09SS19SRVNQT05TRSwgV2ViS2l0TmV0d29ya1Jlc3Bv
bnNlQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfTkVUV09SS19SRVNQT05TRV9DTEFTUyhrbGFz
cykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9ORVRXT1JL
X1JFU1BPTlNFKSkKKyNkZWZpbmUgV0VCS0lUX05FVFdPUktfUkVTUE9OU0VfR0VUX0NMQVNTKG9i
aikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfTkVUV09S
S19SRVNQT05TRSwgV2ViS2l0TmV0d29ya1Jlc3BvbnNlQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0TmV0d29ya1Jlc3BvbnNlIFdlYktpdE5ldHdvcmtSZXNwb25zZTsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXROZXR3b3JrUmVzcG9uc2VDbGFzcyBXZWJLaXROZXR3b3JrUmVzcG9uc2VD
bGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXROZXR3b3JrUmVzcG9uc2VQcml2YXRlIFdlYktp
dE5ldHdvcmtSZXNwb25zZVByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0TmV0d29ya1Jlc3BvbnNl
IHsKKyAgICBHT2JqZWN0IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIFdlYktp
dE5ldHdvcmtSZXNwb25zZVByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdE5ldHdv
cmtSZXNwb25zZUNsYXNzIHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCit9Owor
CitXRUJLSVRfQVBJIEdUeXBlCit3ZWJraXRfbmV0d29ya19yZXNwb25zZV9nZXRfdHlwZSAgICAg
ICAgICAgKHZvaWQpOworCitXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF9uZXR3b3Jr
X3Jlc3BvbnNlX2dldF91cmkgICAgICAgICAgICAoV2ViS2l0TmV0d29ya1Jlc3BvbnNlICpyZXNw
b25zZSk7CisKK1dFQktJVF9BUEkgZ3VpbnQKK3dlYmtpdF9uZXR3b3JrX3Jlc3BvbnNlX2dldF9z
dGF0dXNfY29kZSAgICAoV2ViS2l0TmV0d29ya1Jlc3BvbnNlICpyZXNwb25zZSk7CisKK1dFQktJ
VF9BUEkgZ3VpbnQ2NAord2Via2l0X25ldHdvcmtfcmVzcG9uc2VfZ2V0X2NvbnRlbnRfbGVuZ3Ro
IChXZWJLaXROZXR3b3JrUmVzcG9uc2UgKnJlc3BvbnNlKTsKKworR19FTkRfREVDTFMKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRO
ZXR3b3JrUmVzcG9uc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXROZXR3b3JrUmVzcG9uc2VQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDRkMWUwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5ldHdvcmtSZXNwb25zZVByaXZhdGUuaApAQCAtMCwwICsx
LDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViS2l0TmV0d29ya1Jlc3BvbnNlUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdE5l
dHdvcmtSZXNwb25zZVByaXZhdGVfaAorCisjaW5jbHVkZSAiV2ViS2l0TmV0d29ya1Jlc3BvbnNl
LmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisKK1dlYktpdE5ldHdvcmtSZXNwb25zZSog
d2Via2l0TmV0d29ya1Jlc3BvbnNlQ3JlYXRlRm9yU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqKTsK
K1NvdXBNZXNzYWdlKiB3ZWJraXROZXR3b3JrUmVzcG9uc2VHZXRTb3VwTWVzc2FnZShXZWJLaXRO
ZXR3b3JrUmVzcG9uc2UqKTsKK3ZvaWQgd2Via2l0TmV0d29ya1Jlc3BvbnNlU2V0Q29udGVudExl
bmd0aChXZWJLaXROZXR3b3JrUmVzcG9uc2UqLCBndWludDY0IGNvbnRlbnRMZW5ndGgpOworCisj
ZW5kaWYgLy8gV2ViS2l0TmV0d29ya1Jlc3BvbnNlUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dAppbmRleCAzYjNlOWViLi5mYmIzZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQKQEAgLTI1MCw2ICsyNTAsMjcgQEAgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdHlwZQog
PC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPldlYktpdE5ldHdvcmtSZXNwb25zZTwvRklM
RT4KK1dlYktpdE5ldHdvcmtSZXNwb25zZQord2Via2l0X25ldHdvcmtfcmVzcG9uc2VfZ2V0X3Vy
aQord2Via2l0X25ldHdvcmtfcmVzcG9uc2VfZ2V0X3N0YXR1c19jb2RlCit3ZWJraXRfbmV0d29y
a19yZXNwb25zZV9nZXRfY29udGVudF9sZW5ndGgKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitX
ZWJLaXROZXR3b3JrUmVzcG9uc2VDbGFzcworV0VCS0lUX1RZUEVfTkVUV09SS19SRVNQT05TRQor
V0VCS0lUX05FVFdPUktfUkVTUE9OU0UKK1dFQktJVF9JU19ORVRXT1JLX1JFU1BPTlNFCitXRUJL
SVRfTkVUV09SS19SRVNQT05TRV9DTEFTUworV0VCS0lUX0lTX05FVFdPUktfUkVTUE9OU0VfQ0xB
U1MKK1dFQktJVF9ORVRXT1JLX1JFU1BPTlNFX0dFVF9DTEFTUworCis8U1VCU0VDVElPTiBQcml2
YXRlPgorV2ViS2l0TmV0d29ya1Jlc3BvbnNlUHJpdmF0ZQord2Via2l0X25ldHdvcmtfcmVzcG9u
c2VfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRFcnJvcjwv
RklMRT4KIFdFQktJVF9ORVRXT1JLX0VSUk9SCiBXRUJLSVRfUExVR0lOX0VSUk9SCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlw
ZXMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlw
ZXMKaW5kZXggNGI1MTdmYi4uZjY4NDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtNiwzICs2LDQgQEAg
d2Via2l0X3dlYl9jb250ZXh0X2dldF90eXBlCiB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0
X3R5cGUKIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX2dldF90eXBlCiB3ZWJraXRfc2V0
dGluZ3NfZ2V0X3R5cGUKK3dlYmtpdF9uZXR3b3JrX3Jlc3BvbnNlX2dldF90eXBlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKaW5kZXggYjJiNTY2My4uODIxMWU1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0RW51bVR5cGVzLmg+CiAjaW5jbHVk
ZSA8d2Via2l0Mi9XZWJLaXRFcnJvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0TmV0d29y
a1JlcXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdE5ldHdvcmtSZXNwb25zZS5oPgog
I2luY2x1ZGUgPHdlYmtpdDIvV2ViS2l0U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dl
YktpdFdlYkNvbnRleHQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYkxvYWRlckNsaWVu
dC5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116749</attachid>
            <date>2011-11-28 06:37:05 -0800</date>
            <delta_ts>2011-11-28 11:23:29 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-uri-response.diff</filename>
            <type>text/plain</type>
            <size>18574</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3YmJmNTEyLi5iMzBhNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzgg
QEAKIDIwMTEtMTEtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEFkZCBXZWJLaXRVUklSZXNwb25zZSB0byBXZWJLaXQyIEdUSysg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk0
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05V
bWFrZWZpbGUuYW06IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKHdl
YmtpdFVSSVJlc3BvbnNlRmluYWxpemUpOgorICAgICAgICAod2Via2l0VVJJUmVzcG9uc2VHZXRQ
cm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRVUklSZXNwb25zZVNldFByb3BlcnR5KToKKyAgICAg
ICAgKHdlYmtpdF91cmlfcmVzcG9uc2VfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfdXJp
X3Jlc3BvbnNlX2luaXQpOgorICAgICAgICAod2Via2l0X3VyaV9yZXNwb25zZV9nZXRfdXJpKTog
UmV0dXJuIHRoZSBVUkkgb2YgdGhlIHJlc3BvbnNlLgorICAgICAgICAod2Via2l0X3VyaV9yZXNw
b25zZV9nZXRfc3RhdHVzX2NvZGUpOiBSZXR1cm4gdGhlIHN0YXR1cyBjb2RlIG9mCisgICAgICAg
IHRoZSByZXNwb25zZSwgb3IgU09VUF9TVEFUVVNfTk9ORS4KKyAgICAgICAgKHdlYmtpdF91cmlf
cmVzcG9uc2VfZ2V0X2NvbnRlbnRfbGVuZ3RoKTogUmV0dXJuIHRoZSBleHBlY3RlZAorICAgICAg
ICBjb250ZW50IGxlbmd0aCBvZiB0aGUgcmVzcG9uc2UuCisgICAgICAgICh3ZWJraXRVUklSZXNw
b25zZUNyZWF0ZUZvclNvdXBNZXNzYWdlKTogUHJpdmF0ZSBmdW5jdGlvbiB0bworICAgICAgICBj
cmVhdGUgYSByZXNwb25zZSBvYmplY3QgZnJvbSBhIFNvdXBNZXNzYWdlLgorICAgICAgICAod2Vi
a2l0VVJJUmVzcG9uc2VHZXRTb3VwTWVzc2FnZSk6IFJldHVybiB0aGUgc291cCBtZXNzYWdlCisg
ICAgICAgIGFzc29jaWF0ZWQgdG8gdGhlIHJlc3BvbnNlLgorICAgICAgICAod2Via2l0VVJJUmVz
cG9uc2VTZXRDb250ZW50TGVuZ3RoKTogU2V0IHRoZSBleHBlY3RlZCBjb250ZW50CisgICAgICAg
IGxlbmd0aCBvZiB0aGUgcmVzcG9uc2UuIFRoaXMgaXMgdXNlZnVsIGZvciBub24gaHR0cCByZXNw
b25zZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2VQcml2
YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1kb2NzLnNnbWw6IEFkZCBuZXcgc2VjdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN5bWJvbHMuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzOiBBZGQKKyAgICAgICAg
d2Via2l0X3VyaV9yZXNwb25zZV9nZXRfdHlwZSgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL3dlYmtpdDIuaDogQWRkIFdlYktpdFVSSVJlc3BvbnNlLmguCisKKzIwMTEtMTEtMjggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtd
IFJlbmFtZSBXZWJLaXROZXR3b3JrUmVxdWVzdCB0byBXZWJLaXRVUklSZXF1ZXN0CiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzIwMgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGMwYzA3M2YuLmNmYzAyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBA
IC04Myw2ICs4Myw3IEBAIHdlYmtpdDJndGtfaGVhZGVycyA9IFwKIAkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5oIFwKIAkkKFdlYktpdDIpL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5oIFwKKwkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVSSVJlc3BvbnNlLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlldy5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC01
MDgsNiArNTA5LDkgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9O
QF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5nc1ByaXZhdGUuaCBcCiAJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVxdWVzdC5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuaCBcCisJU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuY3BwIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5oIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZVByaXZhdGUuaCBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklS
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklS
ZXNwb25zZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExMTAxZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVSSVJlc3BvbnNlLmNwcApAQCAtMCwwICsxLDIxNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0VVJJ
UmVzcG9uc2UuaCIKKworI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRVUklSZXNwb25zZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgorI2lu
Y2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfVVJJLAorICAgIFBS
T1BfU1RBVFVTX0NPREUsCisgICAgUFJPUF9DT05URU5UX0xFTkdUSAorfTsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0VVJJUmVzcG9uc2UsIHdlYmtp
dF91cmlfcmVzcG9uc2UsIEdfVFlQRV9PQkpFQ1QpCisKK3N0cnVjdCBfV2ViS2l0VVJJUmVzcG9u
c2VQcml2YXRlIHsKKyAgICBDU3RyaW5nIHVyaTsKKyAgICBHUmVmUHRyPFNvdXBNZXNzYWdlPiBt
ZXNzYWdlOworICAgIGd1aW50NjQgY29udGVudExlbmd0aDsKK307CisKK3N0YXRpYyB2b2lkIHdl
YmtpdFVSSVJlc3BvbnNlRmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdFQktJVF9V
UklfUkVTUE9OU0Uob2JqZWN0KS0+cHJpdi0+fldlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZSgpOwor
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF91cmlfcmVzcG9uc2VfcGFyZW50X2NsYXNzKS0+Zmlu
YWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0VVJJUmVzcG9uc2VHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFt
U3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdFVSSVJlc3BvbnNlKiByZXNwb25zZSA9IFdF
QktJVF9VUklfUkVTUE9OU0Uob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAg
Y2FzZSBQUk9QX1VSSToKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRf
dXJpX3Jlc3BvbnNlX2dldF91cmkocmVzcG9uc2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX1NUQVRVU19DT0RFOgorICAgICAgICBnX3ZhbHVlX3NldF91aW50KHZhbHVlLCB3ZWJr
aXRfdXJpX3Jlc3BvbnNlX2dldF9zdGF0dXNfY29kZShyZXNwb25zZSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBST1BfQ09OVEVOVF9MRU5HVEg6CisgICAgICAgIGdfdmFsdWVfc2V0X3Vp
bnQ2NCh2YWx1ZSwgd2Via2l0X3VyaV9yZXNwb25zZV9nZXRfY29udGVudF9sZW5ndGgocmVzcG9u
c2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgd2Via2l0VVJJUmVzcG9uc2VTZXRQcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFy
YW1TcGVjKQoreworICAgIFdlYktpdFVSSVJlc3BvbnNlKiByZXNwb25zZSA9IFdFQktJVF9VUklf
UkVTUE9OU0Uob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9Q
X1VSSToKKyAgICAgICAgcmVzcG9uc2UtPnByaXYtPnVyaSA9IGdfdmFsdWVfZ2V0X3N0cmluZyh2
YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dB
Uk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF91cmlfcmVzcG9uc2VfY2xhc3NfaW5pdChXZWJLaXRV
UklSZXNwb25zZUNsYXNzKiByZXNwb25zZUNsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2Jq
ZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXNwb25zZUNsYXNzKTsKKworICAgIG9iamVjdENs
YXNzLT5maW5hbGl6ZSA9IHdlYmtpdFVSSVJlc3BvbnNlRmluYWxpemU7CisgICAgb2JqZWN0Q2xh
c3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdFVSSVJlc3BvbnNlR2V0UHJvcGVydHk7CisgICAgb2Jq
ZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdFVSSVJlc3BvbnNlU2V0UHJvcGVydHk7CisK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRVUklSZXNwb25zZTp1cmk6CisgICAgICoKKyAgICAgKiBU
aGUgVVJJIHRvIHdoaWNoIHRoZSByZXNwb25zZSB3aWxsIGJlIG1hZGUuCisgICAgICovCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShvYmplY3RDbGFzcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfVVJJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygidXJpIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVVJJIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRo
ZSBVUkkgdG8gd2hpY2ggdGhlIHJlc3BvbnNlIHdpbGwgYmUgbWFkZS4iKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVD
VF9PTkxZKSkpOworICAgIC8qKgorICAgICAqIFdlYktpdFVSSVJlc3BvbnNlOnN0YXR1cy1jb2Rl
OgorICAgICAqCisgICAgICogVGhlIHN0YXR1cyBjb2RlIG9mIHRoZSByZXNwb25zZSBhcyByZXR1
cm5lZCBieSB0aGUgc2VydmVyLgorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkob2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX1NUQVRVU19DT0RFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX3VpbnQoInN0YXR1cy1jb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlN0YXR1cyBDb2RlIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgc3Rh
dHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlIGFzIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIuIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBH
X01BWFVJTlQsIFNPVVBfU1RBVFVTX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKworICAg
IC8qKgorICAgICAqIFdlYktpdFVSSVJlc3BvbnNlOmNvbnRlbnQtbGVuZ3RoOgorICAgICAqCisg
ICAgICogVGhlIGV4cGVjdGVkIGNvbnRlbnQgbGVuZ3RoIG9mIHRoZSByZXNwb25zZS4KKyAgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9DT05URU5UX0xFTkdUSCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY191aW50NjQoImNv
bnRlbnQtbGVuZ3RoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiQ29udGVudCBMZW5ndGgiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIGV4cGVjdGVkIGNvbnRl
bnQgbGVuZ3RoIG9mIHRoZSByZXNwb25zZS4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgR19NQVhVSU5UNjQsIDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9Q
QVJBTV9SRUFEQUJMRSkpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlc3BvbnNl
Q2xhc3MsIHNpemVvZihXZWJLaXRVUklSZXNwb25zZVByaXZhdGUpKTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3VyaV9yZXNwb25zZV9pbml0KFdlYktpdFVSSVJlc3BvbnNlKiByZXNwb25zZSkK
K3sKKyAgICBXZWJLaXRVUklSZXNwb25zZVByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0Vf
R0VUX1BSSVZBVEUocmVzcG9uc2UsIFdFQktJVF9UWVBFX1VSSV9SRVNQT05TRSwgV2ViS2l0VVJJ
UmVzcG9uc2VQcml2YXRlKTsKKyAgICByZXNwb25zZS0+cHJpdiA9IHByaXY7CisgICAgbmV3IChw
cml2KSBXZWJLaXRVUklSZXNwb25zZVByaXZhdGUoKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXJp
X3Jlc3BvbnNlX2dldF91cmk6CisgKiBAcmVzcG9uc2U6IGEgI1dlYktpdFVSSVJlc3BvbnNlCisg
KgorICogUmV0dXJuczogdGhlIHVyaSBvZiB0aGUgI1dlYktpdFVSSVJlc3BvbnNlCisgKi8KK2Nv
bnN0IGdjaGFyKiB3ZWJraXRfdXJpX3Jlc3BvbnNlX2dldF91cmkoV2ViS2l0VVJJUmVzcG9uc2Uq
IHJlc3BvbnNlKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VUklfUkVT
UE9OU0UocmVzcG9uc2UpLCAwKTsKKworICAgIHJldHVybiByZXNwb25zZS0+cHJpdi0+dXJpLmRh
dGEoKTsKK30KKworLyoqCisgKiB3ZWJraXRfdXJpX3Jlc3BvbnNlX2dldF9zdGF0dXNfY29kZToK
KyAqIEByZXNwb25zZTogYSAjV2ViS2l0VVJJUmVzcG9uc2UKKyAqCisgKiBHZXQgdGhlIHN0YXR1
cyBjb2RlIG9mIHRoZSAjV2ViS2l0VVJJUmVzcG9uc2UgYXMgcmV0dXJuZWQgYnkKKyAqIHRoZSBz
ZXJ2ZXIuIEl0IHdpbGwgbm9ybWFsbHkgYmUgYSAjU291cEtub3duU3RhdHVzQ29kZSwgZm9yCisg
KiBleGFtcGxlICVTT1VQX1NUQVRVU19PSywgdGhvdWdoIHRoZSBzZXJ2ZXIgY2FuIHJlc3BvbmQg
d2l0aCBhbnkKKyAqIHVuc2lnbmVkIGludGVnZXIuCisgKgorICogUmV0dXJuczogdGhlIHN0YXR1
cyBjb2RlIG9mIEByZXNwb25zZQorICovCitndWludCB3ZWJraXRfdXJpX3Jlc3BvbnNlX2dldF9z
dGF0dXNfY29kZShXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSksIFNPVVBfU1RBVFVT
X05PTkUpOworCisgICAgaWYgKCFyZXNwb25zZS0+cHJpdi0+bWVzc2FnZSkKKyAgICAgICAgcmV0
dXJuIFNPVVBfU1RBVFVTX05PTkU7CisKKyAgICByZXR1cm4gcmVzcG9uc2UtPnByaXYtPm1lc3Nh
Z2UtPnN0YXR1c19jb2RlOworfQorCisvKioKKyAqIHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X2Nv
bnRlbnRfbGVuZ3RoOgorICogQHJlc3BvbnNlOiBhICNXZWJLaXRVUklSZXNwb25zZQorICoKKyAq
IEdldCB0aGUgZXhwZWN0ZWQgY29udGVudCBsZW5ndGggb2YgdGhlICNXZWJLaXRVUklSZXNwb25z
ZS4gSXQgY2FuCisgKiBiZSAwIGlmIHRoZSBzZXJ2ZXIgcHJvdmlkZWQgaW5jb3JyZWN0IG9yIG1p
c3NpbmcgQ29udGVudC1MZW5ndGguCisgKgorICogUmV0dXJuczogdGhlIGV4cGVjdGVkIGNvbnRl
bnQgbGVuZ3RoIG9mIEByZXNwb25zZS4KKyAqLworZ3VpbnQ2NCB3ZWJraXRfdXJpX3Jlc3BvbnNl
X2dldF9jb250ZW50X2xlbmd0aChXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSksIDAp
OworCisgICAgaWYgKHJlc3BvbnNlLT5wcml2LT5jb250ZW50TGVuZ3RoKQorICAgICAgICByZXR1
cm4gcmVzcG9uc2UtPnByaXYtPmNvbnRlbnRMZW5ndGg7CisKKyAgICBpZiAoIXJlc3BvbnNlLT5w
cml2LT5tZXNzYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFNvdXBNZXNzYWdlKiBtZXNz
YWdlID0gcmVzcG9uc2UtPnByaXYtPm1lc3NhZ2UuZ2V0KCk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGd1aW50NjQ+KHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9jb250ZW50X2xlbmd0aChtZXNz
YWdlLT5yZXNwb25zZV9oZWFkZXJzKSk7Cit9CisKK1dlYktpdFVSSVJlc3BvbnNlKiB3ZWJraXRV
UklSZXNwb25zZUNyZWF0ZUZvclNvdXBNZXNzYWdlKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQorewor
ICAgIEdPd25QdHI8Y2hhcj4gdXJpKHNvdXBfdXJpX3RvX3N0cmluZyhzb3VwX21lc3NhZ2VfZ2V0
X3VyaShtZXNzYWdlKSwgRkFMU0UpKTsKKyAgICBXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2Ug
PSBXRUJLSVRfVVJJX1JFU1BPTlNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VUklfUkVTUE9O
U0UsICJ1cmkiLCB1cmkuZ2V0KCksIE5VTEwpKTsKKyAgICByZXNwb25zZS0+cHJpdi0+bWVzc2Fn
ZSA9IG1lc3NhZ2U7CisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorCitTb3VwTWVzc2FnZSogd2Vi
a2l0VVJJUmVzcG9uc2VHZXRTb3VwTWVzc2FnZShXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2Up
Cit7CisgICAgcmV0dXJuIHJlc3BvbnNlLT5wcml2LT5tZXNzYWdlLmdldCgpOworfQorCit2b2lk
IHdlYmtpdFVSSVJlc3BvbnNlU2V0Q29udGVudExlbmd0aChXZWJLaXRVUklSZXNwb25zZSogcmVz
cG9uc2UsIGd1aW50NjQgY29udGVudExlbmd0aCkKK3sKKyAgICByZXNwb25zZS0+cHJpdi0+Y29u
dGVudExlbmd0aCA9IGNvbnRlbnRMZW5ndGg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jZmJlNGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2UuaApAQCAtMCwwICsxLDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZiAhZGVmaW5lZChfX1dF
QktJVDJfSF9JTlNJREVfXykgJiYgIWRlZmluZWQoV0VCS0lUMl9DT01QSUxBVElPTikKKyNlcnJv
ciAiT25seSA8d2Via2l0Mi93ZWJraXQyLmg+IGNhbiBiZSBpbmNsdWRlZCBkaXJlY3RseS4iCisj
ZW5kaWYKKworI2lmbmRlZiBXZWJLaXRVUklSZXNwb25zZV9oCisjZGVmaW5lIFdlYktpdFVSSVJl
c3BvbnNlX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0Mi9X
ZWJLaXREZWZpbmVzLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9V
UklfUkVTUE9OU0UgICAgICAgICAgICAod2Via2l0X3VyaV9yZXNwb25zZV9nZXRfdHlwZSgpKQor
I2RlZmluZSBXRUJLSVRfVVJJX1JFU1BPTlNFKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNL
X0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9UWVBFX1VSSV9SRVNQT05TRSwgV2ViS2l0VVJJ
UmVzcG9uc2UpKQorI2RlZmluZSBXRUJLSVRfSVNfVVJJX1JFU1BPTlNFKG9iaikgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9UWVBFX1VSSV9SRVNQT05T
RSkpCisjZGVmaW5lIFdFQktJVF9VUklfUkVTUE9OU0VfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVVJJX1JFU1BPTlNFLCBXZWJL
aXRVUklSZXNwb25zZUNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1VSSV9SRVNQT05TRV9DTEFT
UyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQRV9V
UklfUkVTUE9OU0UpKQorI2RlZmluZSBXRUJLSVRfVVJJX1JFU1BPTlNFX0dFVF9DTEFTUyhvYmop
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX1VSSV9SRVNQ
T05TRSwgV2ViS2l0VVJJUmVzcG9uc2VDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRV
UklSZXNwb25zZSBXZWJLaXRVUklSZXNwb25zZTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRVUklS
ZXNwb25zZUNsYXNzIFdlYktpdFVSSVJlc3BvbnNlQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0VVJJUmVzcG9uc2VQcml2YXRlIFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZTsKKworc3RydWN0
IF9XZWJLaXRVUklSZXNwb25zZSB7CisgICAgR09iamVjdCBwYXJlbnQ7CisKKyAgICAvKjwgcHJp
dmF0ZSA+Ki8KKyAgICBXZWJLaXRVUklSZXNwb25zZVByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1
Y3QgX1dlYktpdFVSSVJlc3BvbnNlQ2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xh
c3M7CisKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X3R5
cGUgICAgICAgICAgICh2b2lkKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRf
dXJpX3Jlc3BvbnNlX2dldF91cmkgICAgICAgICAgICAoV2ViS2l0VVJJUmVzcG9uc2UgKnJlc3Bv
bnNlKTsKKworV0VCS0lUX0FQSSBndWludAord2Via2l0X3VyaV9yZXNwb25zZV9nZXRfc3RhdHVz
X2NvZGUgICAgKFdlYktpdFVSSVJlc3BvbnNlICpyZXNwb25zZSk7CisKK1dFQktJVF9BUEkgZ3Vp
bnQ2NAord2Via2l0X3VyaV9yZXNwb25zZV9nZXRfY29udGVudF9sZW5ndGggKFdlYktpdFVSSVJl
c3BvbnNlICpyZXNwb25zZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJUmVzcG9uc2VQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXNwb25zZVBy
aXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTg0ZjhiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJ
UmVzcG9uc2VQcml2YXRlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYktpdFVSSVJlc3BvbnNlUHJp
dmF0ZV9oCisjZGVmaW5lIFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJX
ZWJLaXRVUklSZXNwb25zZS5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorCitXZWJLaXRV
UklSZXNwb25zZSogd2Via2l0VVJJUmVzcG9uc2VDcmVhdGVGb3JTb3VwTWVzc2FnZShTb3VwTWVz
c2FnZSopOworU291cE1lc3NhZ2UqIHdlYmtpdFVSSVJlc3BvbnNlR2V0U291cE1lc3NhZ2UoV2Vi
S2l0VVJJUmVzcG9uc2UqKTsKK3ZvaWQgd2Via2l0VVJJUmVzcG9uc2VTZXRDb250ZW50TGVuZ3Ro
KFdlYktpdFVSSVJlc3BvbnNlKiwgZ3VpbnQ2NCBjb250ZW50TGVuZ3RoKTsKKworI2VuZGlmIC8v
IFdlYktpdFVSSVJlc3BvbnNlUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbAppbmRleCBlZGUy
NGU5Li41Njc2ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKQEAgLTE4LDcgKzE4LDggQEAKICAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0QmFja0ZvcndhcmRMaXN0LnhtbCIvPgogICAg
IDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtLnhtbCIvPgog
ICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9XZWJLaXRTZXR0aW5ncy54bWwiLz4KLSAgICA8eGk6
aW5jbHVkZSBocmVmPSJ4bWwvV2ViS2l0TmV0d29ya1JlcXVlc3QueG1sIi8+CisgICAgPHhpOmlu
Y2x1ZGUgaHJlZj0ieG1sL1dlYktpdFVSSVJlcXVlc3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUg
aHJlZj0ieG1sL1dlYktpdFVSSVJlc3BvbnNlLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9
InhtbC9XZWJLaXRFcnJvci54bWwiLz4KICAgPC9jaGFwdGVyPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rp
b25zLnR4dAppbmRleCBiYzA5MzZjLi5iNDk1NTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50
eHQKQEAgLTI1MCw2ICsyNTAsMjcgQEAgd2Via2l0X3VyaV9yZXF1ZXN0X2dldF90eXBlCiA8L1NF
Q1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+V2ViS2l0VVJJUmVzcG9uc2U8L0ZJTEU+CitXZWJL
aXRVUklSZXNwb25zZQord2Via2l0X3VyaV9yZXNwb25zZV9nZXRfdXJpCit3ZWJraXRfdXJpX3Jl
c3BvbnNlX2dldF9zdGF0dXNfY29kZQord2Via2l0X3VyaV9yZXNwb25zZV9nZXRfY29udGVudF9s
ZW5ndGgKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitXZWJLaXRVUklSZXNwb25zZUNsYXNzCitX
RUJLSVRfVFlQRV9VUklfUkVTUE9OU0UKK1dFQktJVF9VUklfUkVTUE9OU0UKK1dFQktJVF9JU19V
UklfUkVTUE9OU0UKK1dFQktJVF9VUklfUkVTUE9OU0VfQ0xBU1MKK1dFQktJVF9JU19VUklfUkVT
UE9OU0VfQ0xBU1MKK1dFQktJVF9VUklfUkVTUE9OU0VfR0VUX0NMQVNTCisKKzxTVUJTRUNUSU9O
IFByaXZhdGU+CitXZWJLaXRVUklSZXNwb25zZVByaXZhdGUKK3dlYmtpdF91cmlfcmVzcG9uc2Vf
Z2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRFcnJvcjwvRklM
RT4KIFdFQktJVF9ORVRXT1JLX0VSUk9SCiBXRUJLSVRfUExVR0lOX0VSUk9SCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGsudHlwZXMK
aW5kZXggNGI1MTdmYi4uYTE5NmI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLnR5cGVzCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay50eXBlcwpAQCAtNiwzICs2LDQgQEAgd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF90eXBlCiB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X3R5
cGUKIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX2dldF90eXBlCiB3ZWJraXRfc2V0dGlu
Z3NfZ2V0X3R5cGUKK3dlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X3R5cGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDIuaAppbmRleCA2OWE3YjU5Li5jNTA4OGFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvd2Via2l0Mi5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRFcnJvci5oPgogI2luY2x1ZGUgPHdlYmtpdDIv
V2ViS2l0U2V0dGluZ3MuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlcXVlc3QuaD4K
KyNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFVSSVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d2Via2l0
Mi9XZWJLaXRXZWJDb250ZXh0Lmg+CiAjaW5jbHVkZSA8d2Via2l0Mi9XZWJLaXRXZWJMb2FkZXJD
bGllbnQuaD4KICNpbmNsdWRlIDx3ZWJraXQyL1dlYktpdFdlYlZpZXdCYXNlLmg+Cg==
</data>
<flag name="review"
          id="115996"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>