<?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>104578</bug_id>
          
          <creation_ts>2012-12-10 11:28:40 -0800</creation_ts>
          <short_desc>[GTK][WK2] New API to detect display/execution of insecure content</short_desc>
          <delta_ts>2012-12-12 04:02:30 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Mario Sanchez Prada">mario</assigned_to>
          <cc>abarth</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dpranke</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>levin</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>787579</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-12-10 11:28:40 -0800</bug_when>
    <thetext>We need to expose this to applications so they can notify the user in some ways when content from untrusted sources (e.g. from http) has been loaded from a document coming through a trusted connection (https).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787701</commentid>
    <comment_count>1</comment_count>
      <attachid>178630</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-12-10 13:54:39 -0800</bug_when>
    <thetext>Created attachment 178630
Patch proposal + Unit tests

Here comes a patch proposal. Asking for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787705</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 13:56:03 -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>788214</commentid>
    <comment_count>3</comment_count>
      <attachid>178754</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-12-11 02:14:06 -0800</bug_when>
    <thetext>Created attachment 178754
Patch proposal + Unit tests

Second patch after getting some feedback from Carlos in the hackfest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789388</commentid>
    <comment_count>4</comment_count>
      <attachid>178754</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-12-12 02:40:24 -0800</bug_when>
    <thetext>Comment on attachment 178754
Patch proposal + Unit tests

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

Looks good, as long as cgarcia is okay with the fact that WEBKIT_INSECURE_CONTENT_RUN is not called WEBKIT_INSECURE_CONTENT_EVENT_RUN and WEBKIT_INSECURE_CONTENT_DISPLAYED is not called WEBKIT_INSECURE_CONTENT_EVENT_DISPLAYED. I don&apos;t think they are too long, but it&apos;s not a huge deal.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1245
&gt; +     * This signal is emitted when insecure content has been detected
&gt; +     * in a page loaded through a secure connection. This typically
&gt; +     * means that an external resource from an unstrusted source
&gt; +     * (e.g. non HTTPS) has been run or displayed.
&gt; +     *

You might want to try to more clearly describe the situation as &quot;mixing of HTTPS and non-HTTPS content&quot;

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:92
&gt; +    static void insecure_content_detected_callback(WebKitWebView* webView, WebKitInsecureContentEvent event, InsecureContentTest* test)

Please use WebKit naming conventions here.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:148
&gt; +        char* contents;
&gt; +        gsize length;
&gt; +
&gt; +        g_file_get_contents(pathToFile.get(), &amp;contents, &amp;length, 0);

Okay. Super nit, but wouldn&apos;t it make more sense to &quot;glue&quot; the declarations with the statement that uses them?

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:157
&gt; +        gsize length;
&gt; +
&gt; +        g_file_get_contents(pathToFile.get(), &amp;contents, &amp;length, 0);

Same here.

&gt; Tools/Scripts/webkitpy/style/checker.py:184
&gt; +      &quot;-readability/enum_casing&quot;,
&gt;        &quot;-whitespace/parens&quot;]),
&gt; +
&gt; +    ([# The GTK+ API use upper case, underscore separated, words in
&gt; +      # certain types of enums (e.g. signals, properties).
&gt; +      &quot;Source/WebKit2/UIProcess/API/gtk&quot;],
&gt; +     [&quot;-readability/enum_casing&quot;]),

I think maybe this is a bit too broad. We want to detect enum style violations in these files too. Perhaps just turn webkitWebViewInsecureContentDetected into webkitWebViewInsecureContentRun and webkitWebViewInsecureContentDisplayed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789434</commentid>
    <comment_count>5</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-12-12 03:58:56 -0800</bug_when>
    <thetext>Thanks for the review Martin. Will address those issues right before landing.

(In reply to comment #4)
&gt; (From update of attachment 178754 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178754&amp;action=review
&gt; 
&gt; Looks good, as long as cgarcia is okay with the fact that WEBKIT_INSECURE_CONTENT_RUN is not called 
&gt; WEBKIT_INSECURE_CONTENT_EVENT_RUN and WEBKIT_INSECURE_CONTENT_DISPLAYED is not called 
&gt; WEBKIT_INSECURE_CONTENT_EVENT_DISPLAYED. I don&apos;t think they are too long, but it&apos;s not a huge deal.

Yes, Carlos is fine with that too.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1245
&gt; &gt; +     * This signal is emitted when insecure content has been detected
&gt; &gt; +     * in a page loaded through a secure connection. This typically
&gt; &gt; +     * means that an external resource from an unstrusted source
&gt; &gt; +     * (e.g. non HTTPS) has been run or displayed.
&gt; &gt; +     *
&gt; 
&gt; You might want to try to more clearly describe the situation as &quot;mixing of HTTPS and non-HTTPS content&quot;

Ok.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:92
&gt; &gt; +    static void insecure_content_detected_callback(WebKitWebView* webView, WebKitInsecureContentEvent event, InsecureContentTest* test)
&gt; 
&gt; Please use WebKit naming conventions here.

Oops! Sorry.
 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:148
&gt; &gt; +        char* contents;
&gt; &gt; +        gsize length;
&gt; &gt; +
&gt; &gt; +        g_file_get_contents(pathToFile.get(), &amp;contents, &amp;length, 0);
&gt; 
&gt; Okay. Super nit, but wouldn&apos;t it make more sense to &quot;glue&quot; the declarations with the statement that uses them?

Ok.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestSSL.cpp:157
&gt; &gt; +        gsize length;
&gt; &gt; +
&gt; &gt; +        g_file_get_contents(pathToFile.get(), &amp;contents, &amp;length, 0);
&gt; 
&gt; Same here.

Ok.
 
&gt; &gt; Tools/Scripts/webkitpy/style/checker.py:184
&gt; &gt; +      &quot;-readability/enum_casing&quot;,
&gt; &gt;        &quot;-whitespace/parens&quot;]),
&gt; &gt; +
&gt; &gt; +    ([# The GTK+ API use upper case, underscore separated, words in
&gt; &gt; +      # certain types of enums (e.g. signals, properties).
&gt; &gt; +      &quot;Source/WebKit2/UIProcess/API/gtk&quot;],
&gt; &gt; +     [&quot;-readability/enum_casing&quot;]),
&gt; 
&gt; I think maybe this is a bit too broad. We want to detect enum style violations in these files too. 
&gt; Perhaps just turn webkitWebViewInsecureContentDetected into webkitWebViewInsecureContentRun
&gt; and webkitWebViewInsecureContentDisplayed.

I think there&apos;s no need to change anything in this regard after the clarifications during the hackfest, so I&apos;ll leave it as it is now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789438</commentid>
    <comment_count>6</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-12-12 04:02:30 -0800</bug_when>
    <thetext>Committed r137450: &lt;http://trac.webkit.org/changeset/137450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178630</attachid>
            <date>2012-12-10 13:54:39 -0800</date>
            <delta_ts>2012-12-11 02:14:00 -0800</delta_ts>
            <desc>Patch proposal + Unit tests</desc>
            <filename>bug-104578-20121210225159.patch</filename>
            <type>text/plain</type>
            <size>22801</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjc3NTI1ZjliMjUzMGIx
ODZjZjc5NDkyYzBjOTYzMWMzYmUzNmY3MC4uMmJhMjI5NmFlMWJiZWI5MjdhZDQ4OTM0MzRiN2Nj
ZjhlZGViYWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTEwICBNYXJp
byBTYW5jaGV6IFByYWRhICA8bWFyaW9Ad2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXVtXSzJd
IE5ldyBBUEkgdG8gZGV0ZWN0IGRpc3BsYXkvZXhlY3V0aW9uIG9mIGluc2VjdXJlIGNvbnRlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU3OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5l
dyBBUEkgYW5kIGRvY3VtZW50YXRpb24gZm9yIGRldGVjdGluZyBpbnNlY3VyZSBjb250ZW50Lgor
CisgICAgICAgIEltcGxlbWVudGVkIG5lZWRlZCBmdW5jdGlvbnMgZnJvbSBDIEFQSSdzIFdLUGFn
ZUxvYWRlckNsaWVudAorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6
IEltcGxlbWVudGVkLgorICAgICAgICAoZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOiBE
aXR0by4KKyAgICAgICAgKGF0dGFjaExvYWRlckNsaWVudFRvVmlldyk6IEFkZGVkIG5ld2x5IGlt
cGxlbWVudGVkIGZ1bmN0aW9ucy4KKworICAgICAgICBBZGRlZCBuZXcgJ2luc2VjdXJlLWNvbnRl
bnQtZGV0ZWN0ZWQnIHNpZ25hbCB0byBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0
KTogSW5zdGFsbGVkIG5ldyBzaWduYWwuCisgICAgICAgICh3ZWJraXRXZWJWaWV3SW5zZWN1cmVD
b250ZW50RGV0ZWN0ZWQpOiBIZWxwZXIgZnVuY3Rpb24gYWRlZCB0bworICAgICAgICBwcml2YXRl
IEFQSSB0byBlbWl0IHRoZSBuZXcgc2lnbmFsIGZyb20gdGhlIHBhZ2UgbG9hZGVyIGNsaWVudC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgIChf
V2ViS2l0V2ViVmlld0NsYXNzKTogQWRkZWQgbmV3IHNpZ25hbC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6IEFkZGVkIHByb3RvdHlwZSBvZiB0
aGUKKyAgICAgICAgbmV3IGhlbHBlciBmdW5jdGlvbiB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250
ZW50RGV0ZWN0ZWQoKS4KKworICAgICAgICBBZGRlZCBuZXcgdW5pdCB0ZXN0cy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVzdFNT
TCk6IFVwZGF0ZWQgdG8gdGhlIG5ldyB2YXJpYWJsZSBuYW1lIGZvciB0aGUgaHR0cHMgc2VydmVy
LgorICAgICAgICAodGVzdEluc2VjdXJlQ29udGVudCk6IE5ldyB1bml0IHRlc3QuCisgICAgICAg
IChodHRwc1NlcnZlckNhbGxiYWNrKTogUmVuYW1lZCBmcm9tIHNlcnZlckNhbGxiYWNrKCkgYW5k
IHVwZGF0ZWQKKyAgICAgICAgdG8gcmV0dXJuIEhUTUwgY29udGVudCBsaW5raW5nIHRvIGV4dGVy
bmFsIHJlc291cmNlcyBpbiBhbgorICAgICAgICBpbnNlY3VyZSAocGxhaW4gaHR0cCkgc2VydmVy
LCB0byBiZSB1c2VkIGJ5IHRoZSBuZXcgdGVzdC4KKyAgICAgICAgKGh0dHBTZXJ2ZXJDYWxsYmFj
ayk6IE5ldyBjYWxsYmFjayBmb3IgYSBuZXcgaHR0cCBzZXJ2ZXIsIHRoYXQKKyAgICAgICAgd2ls
bCBzZXJ2ZSBhIHNjcmlwdCBhbmQgYW4gaW1hZ2Ugd2hlbiByZXF1ZXN0ZWQuCisgICAgICAgIChi
ZWZvcmVBbGwpOiBSdW4gdGhlIG5ldyBodHRwIHNlcnZlciwgYmVzaWRlcyB0aGUgaHR0cHMgb25l
LgorICAgICAgICAoYWZ0ZXJBbGwpOiBEZWxldGUgYm90aCB0aGUgaHR0cCBhbmQgdGhlIGh0dHBz
IHNlcnZlci4KKworICAgICAgICBVcGRhdGVkIGRvY3VtZW50YXRpb24gd2l0aCBuZXcgQVBJLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dDogQWRkZWQgcmVmZXJlbmNlcworICAgICAgICB0byB0aGUgbmV3IFdlYktpdEluc2VjdXJlQ29u
dGVudEV2ZW50IGVudW0gdHlwZS4KKwogMjAxMi0xMi0wOSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5o
YW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4IHVudXNlZCBwYXJhbWV0ZXIgY29tcGlsZSB3
YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdExvYWRlckNsaWVudC5jcHAKaW5kZXggMWVhZTI2NzUzOWJjYjA4ZTU2YTk5Y2E2ZGEzYTAy
Zjc3YWE5MGRmNC4uYWI5OGUxOWUyZjcwNzg0MGM4YjJhMzRiMWY3YTg1MGJmMjc1MTBlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xMDYsNiArMTA2LDIyIEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVU
aXRsZUZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0aXRsZVJlZiwgV0tGcmFt
CiAgICAgd2Via2l0V2ViVmlld1NldFRpdGxlKFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwg
dG9JbXBsKHRpdGxlUmVmKS0+c3RyaW5nKCkudXRmOCgpKTsKIH0KIAorc3RhdGljIHZvaWQgZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7Cisg
ICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm47CisKKyAg
ICB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250ZW50RGV0ZWN0ZWQoV0VCS0lUX1dFQl9WSUVXKGNs
aWVudEluZm8pLCBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9FVkVOVF9ESVNQTEFZRUQpOworfQor
CitzdGF0aWMgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKQoreworICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgd2Via2l0V2ViVmlld0luc2VjdXJlQ29udGVudERldGVjdGVkKFdFQktJ
VF9XRUJfVklFVyhjbGllbnRJbmZvKSwgV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfRVZFTlRfUlVO
KTsKK30KKwogc3RhdGljIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgd2Via2l0V2ViVmlld1NldEVzdGltYXRlZExv
YWRQcm9ncmVzcyhXRUJLSVRfV0VCX1ZJRVcoY2xpZW50SW5mbyksIFdLUGFnZUdldEVzdGltYXRl
ZFByb2dyZXNzKHBhZ2UpKTsKQEAgLTEzOCw4ICsxNTQsOCBAQCB2b2lkIGF0dGFjaExvYWRlckNs
aWVudFRvVmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICAwLCAvLyBkaWRGaXJz
dExheW91dEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeQot
ICAgICAgICAwLCAvLyBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKLSAgICAgICAg
MCwgLy8gZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAgICAgZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudEZvckZyYW1lLAorICAgICAgICBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZSwKICAgICAgICAgMCwgLy8gY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZUluRnJhbWUKICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFt
ZSwKICAgICAgICAgZGlkQ2hhbmdlUHJvZ3Jlc3MsIC8vIGRpZFN0YXJ0UHJvZ3Jlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5k
ZXggZmIwYzVlZDlhYjljYTNmOGViZmI5MzE4YWQwYjczZDIzZDczNjk4Mi4uOGZjYmJjYzZlMGVl
ZjJjYTMyZGQ2Nzk1YzFiYjYzOGQ4YmYxODc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTk3LDYgKzk3LDggQEAgZW51
bSB7CiAKICAgICBTVUJNSVRfRk9STSwKIAorICAgIElOU0VDVVJFX0NPTlRFTlRfREVURUNURUQs
CisKICAgICBMQVNUX1NJR05BTAogfTsKIApAQCAtMTIzMCw2ICsxMjMyLDI5IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmll
d0NsYXNzKQogICAgICAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX09C
SkVDVCwKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfRk9STV9TVUJNSVNTSU9OX1JFUVVFU1QpOworCisgICAgLyoq
CisgICAgICogV2ViS2l0V2ViVmlldzo6aW5zZWN1cmUtY29udGVudC1kZXRlY3RlZDoKKyAgICAg
KiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQKKyAgICAgKiBAZXZlbnQ6IHRoZSAjV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQKKyAg
ICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiBpbnNlY3VyZSBjb250ZW50
IGhhcyBiZWVuIGRldGVjdGVkCisgICAgICogaW4gYSBwYWdlIGxvYWRlZCB0aHJvdWdoIGEgc2Vj
dXJlIGNvbm5lY3Rpb24uIFRoaXMgdHlwaWNhbGx5CisgICAgICogbWVhbnMgdGhhdCBhbiBleHRl
cm5hbCByZXNvdXJjZSBmcm9tIGFuIHVuc3RydXN0ZWQgc291cmNlCisgICAgICogKGUuZy4gbm9u
IEhUVFBTKSBoYXMgYmVlbiBydW4gb3IgZGlzcGxheWVkLgorICAgICAqCisgICAgICogWW91IGNh
biBjaGVjayB0aGUgQHR5cGUgcGFyYW1ldGVyIHRvIGtub3cgZXhhY3RseSB3aGljaCBraW5kIG9m
CisgICAgICogZXZlbnQgaGFzIGJlZW4gZGV0ZWN0ZWQgKHNlZSAjV2ViS2l0SW5zZWN1cmVDb250
ZW50RXZlbnQpLgorICAgICAqLworICAgIHNpZ25hbHNbSU5TRUNVUkVfQ09OVEVOVF9ERVRFQ1RF
RF0gPQorICAgICAgICBnX3NpZ25hbF9uZXcoImluc2VjdXJlLWNvbnRlbnQtZGV0ZWN0ZWQiLAor
ICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAg
IEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdl
YlZpZXdDbGFzcywgaW5zZWN1cmVfY29udGVudF9kZXRlY3RlZCksCisgICAgICAgICAgICAwLCAw
LAorICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX0VOVU0sCisgICAgICAgICAg
ICBHX1RZUEVfTk9ORSwgMSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0lOU0VDVVJFX0NPTlRF
TlRfRVZFTlQpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wgaXNMb2FkaW5nKQpAQCAtMTYxNyw2ICsxNjQyLDEx
IEBAIHZvaWQgd2Via2l0V2ViVmlld0hhbmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIEF1dGhlbnRpCiAgICAgZGlhbG9nLT5zaG93KCk7CiB9CiAKK3Zv
aWQgd2Via2l0V2ViVmlld0luc2VjdXJlQ29udGVudERldGVjdGVkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50IHR5cGUpCit7CisgICAgZ19zaWduYWxf
ZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0lOU0VDVVJFX0NPTlRFTlRfREVURUNURURdLCAwLCB0eXBl
KTsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA3YzgzODEzMjlk
NGU5MzY0MDFlMTlmMmM1YjU2MTVhNGYwMzU4NGJjLi5kNGM5ODBmMzBkZmU4ZDdmOWMzYjMyYWMz
YzJhYjAzMDdjYjFlYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5oCkBAIC0xMjksNiArMTI5LDIzIEBAIHR5cGVkZWYgZW51bSB7CiAg
ICAgV0VCS0lUX1NBVkVfTU9ERV9NSFRNTAogfSBXZWJLaXRTYXZlTW9kZTsKIAorLyoqCisgKiBX
ZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudDoKKyAqIEBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9F
VkVOVF9SVU46IEluc2VjdXJlIGNvbnRlbnQgaGFzIGJlZW4KKyAqIGRldGVjdGVkIGJ5IHRyeWlu
ZyB0byBleGVjdXRlIGFueSBraW5kIG9mIGxvZ2ljIChlLmcuIGEgc2NyaXB0KQorICogZnJvbSBh
biB1bnRydXN0ZWQgc291cmNlLgorICogQFdFQktJVF9JTlNFQ1VSRV9DT05URU5UX0VWRU5UX0RJ
U1BMQVlFRDogSW5zZWN1cmUgY29udGVudCBoYXMgYmVlbgorICogZGV0ZWN0ZWQgYnkgdHJ5aW5n
IHRvIGRpc3BsYXkgYW55IGtpbmQgb2YgcmVzb3VyY2UgKGUuZy4gYW4gaW1hZ2UpCisgKiBmcm9t
IGFuIHVudHJ1c3RlZCBzb3VyY2UuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUg
dGhlIGRpZmZlcmVudCBldmVudHMgd2hpY2ggY2FuIHRyaWdnZXIKKyAqIHRoZSBkZXRlY3Rpb24g
b2YgaW5zZWN1cmUgY29udGVudCBiZWluZyBsb2FkZWQuCisgKi8KK3R5cGVkZWYgZW51bSB7Cisg
ICAgV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfRVZFTlRfUlVOLAorICAgIFdFQktJVF9JTlNFQ1VS
RV9DT05URU5UX0VWRU5UX0RJU1BMQVlFRAorfSBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudDsK
Kwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7
CiAKQEAgLTEzOSw0NSArMTU2LDQ3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiBzdHJ1Y3Qg
X1dlYktpdFdlYlZpZXdDbGFzcyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VDbGFzcyBwYXJlbnQ7
CiAKLSAgICB2b2lkICAgICAgICgqIGxvYWRfY2hhbmdlZCkgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCk7
Ci0gICAgZ2Jvb2xlYW4gICAoKiBsb2FkX2ZhaWxlZCkgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg
ICAgICAgICAgICAgICpmYWlsaW5nX3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAgKmVycm9yKTsKLQotICAg
IEd0a1dpZGdldCAqKCogY3JlYXRlKSAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogcmVhZHlfdG9fc2hvdykg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZv
aWQgICAgICAgKCogcnVuX2FzX21vZGFsKSAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCogY2xvc2UpICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotCi0gICAgZ2Jv
b2xlYW4gICAoKiBzY3JpcHRfZGlhbG9nKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRTY3JpcHREaWFsb2cgICAgICAgICAgKmRpYWxvZyk7Ci0KLSAgICBnYm9vbGVh
biAgICgqIGRlY2lkZV9wb2xpY3kpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFBvbGljeURlY2lzaW9uICAgICAgICAqZGVjaXNpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25UeXBlICAgICB0
eXBlKTsKLSAgICBnYm9vbGVhbiAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICAgICAqcGVybWlzc2lv
bl9yZXF1ZXN0KTsKLSAgICB2b2lkICAgICAgICgqIG1vdXNlX3RhcmdldF9jaGFuZ2VkKSAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAqaGl0
X3Rlc3RfcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKLSAgICBnYm9vbGVhbiAg
ICgqIHByaW50KSAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAg
KndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdFByaW50T3BlcmF0aW9uICAgICAgICAqcHJpbnRfb3BlcmF0aW9uKTsKLSAgICB2b2lkICAg
ICAgICgqIHJlc291cmNlX2xvYWRfc3RhcnRlZCkgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYktpdFdlYlJlc291cmNlICAgICAgICAgICAqcmVzb3VyY2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAgICAgICAgICAgICpy
ZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAgICgqIGVudGVyX2Z1bGxzY3JlZW4pICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICBnYm9vbGVhbiAgICgqIGxl
YXZlX2Z1bGxzY3JlZW4pICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92
aWV3KTsKLSAgICBnYm9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgIChXZWJLaXRX
ZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCAgICAqcmVxdWVzdCk7
Ci0gICAgZ2Jvb2xlYW4gICAoKiBjb250ZXh0X21lbnUpICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAgICp3ZWJfdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVudSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudCAgICAg
ICAgICAgICAgICAgICAgKmV2ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0KTsK
LSAgICB2b2lkICAgICAgICgqIGNvbnRleHRfbWVudV9kaXNtaXNzZWQpIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKLSAgICB2b2lkICAgICAgICgqIHN1Ym1pdF9mb3Jt
KSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEZvcm1TdWJtaXNz
aW9uUmVxdWVzdCAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAoKiBsb2FkX2NoYW5nZWQpICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRMb2FkRXZlbnQg
ICAgICAgICAgICAgIGxvYWRfZXZlbnQpOworICAgIGdib29sZWFuICAgKCogbG9hZF9mYWlsZWQp
ICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2
ZW50ICAgICAgICAgICAgICBsb2FkX2V2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAqZmFpbGluZ191
cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9y
ICAgICAgICAgICAgICAgICAgICAgICplcnJvcik7CisKKyAgICBHdGtXaWRnZXQgKigqIGNyZWF0
ZSkgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92
aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHJlYWR5X3RvX3Nob3cpICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHJ1
bl9hc19tb2RhbCkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIGNsb3NlKSAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKworICAgIGdib29sZWFuICAg
KCogc2NyaXB0X2RpYWxvZykgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
ICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0U2NyaXB0RGlhbG9nICAgICAgICAgICpkaWFsb2cpICA7CisKKyAgICBnYm9vbGVh
biAgICgqIGRlY2lkZV9wb2xpY3kpICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdFBvbGljeURlY2lzaW9uICAgICAgICAqZGVjaXNpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb25U
eXBlICAgICB0eXBlKTsKKyAgICBnYm9vbGVhbiAgICgqIHBlcm1pc3Npb25fcmVxdWVzdCkgICAg
ICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0
ICAgICAqcGVybWlzc2lvbl9yZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICgqIG1vdXNlX3Rhcmdl
dF9jaGFuZ2VkKSAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEhpdFRl
c3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgbW9k
aWZpZXJzKTsKKyAgICBnYm9vbGVhbiAgICgqIHByaW50KSAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFByaW50T3BlcmF0aW9uICAgICAgICAq
cHJpbnRfb3BlcmF0aW9uKTsKKyAgICB2b2lkICAgICAgICgqIHJlc291cmNlX2xvYWRfc3RhcnRl
ZCkgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdFdlYlJlc291cmNlICAg
ICAgICAgICAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCAgICAgICAgICAgICpyZXF1ZXN0KTsKKyAgICBnYm9v
bGVhbiAgICgqIGVudGVyX2Z1bGxzY3JlZW4pICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgKndlYl92aWV3KTsKKyAgICBnYm9vbGVhbiAgICgqIGxlYXZlX2Z1bGxzY3JlZW4p
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICBn
Ym9vbGVhbiAgICgqIHJ1bl9maWxlX2Nob29zZXIpICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCAgICAqcmVxdWVzdCk7CisgICAg
Z2Jvb2xlYW4gICAoKiBjb250ZXh0X21lbnUpICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRDb250ZXh0TWVudSAgICAgICAgICAgKmNvbnRleHRfbWVudSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudCAg
ICAgICAgICAgICAgICAgICAgKmV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdEhpdFRlc3RSZXN1bHQgICAgICAgICAqaGl0X3Rlc3RfcmVz
dWx0KTsKKyAgICB2b2lkICAgICAgICgqIGNvbnRleHRfbWVudV9kaXNtaXNzZWQpICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3KTsKKyAgICB2b2lkICAgICAgICgqIHN1
Ym1pdF9mb3JtKSAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndl
Yl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisgICAgdm9pZCAgICAgICAoKiBp
bnNlY3VyZV9jb250ZW50X2RldGVjdGVkKSAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudCAgIGV2ZW50KTsKIAogICAgIC8qIFBhZGRpbmcgZm9y
IGZ1dHVyZSBleHBhbnNpb24gKi8KICAgICB2b2lkICgqX3dlYmtpdF9yZXNlcnZlZDApICh2b2lk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDY2ZGE1ODQ3NmE0ZjZkYTQ3NGYxNTUzOTYwNzExNWMyZWMx
YzRmZDcuLjBkZTBkMTdmN2I1YTU0NGZmNjJkYjE2ODdmYjZlZWRhZmExM2E3MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1By
aXZhdGUuaApAQCAtNTYsNSArNTYsNiBAQCBib29sIHdlYmtpdFdlYlZpZXdMZWF2ZUZ1bGxTY3Jl
ZW4oV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3UG9wdWxhdGVDb250ZXh0TWVu
dShXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpJbW11dGFibGVBcnJheSogcHJvcG9zZWRNZW51LCBX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHQqKTsKIHZvaWQgd2Via2l0V2ViVmlld1N1Ym1pdEZvcm1S
ZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGb3JtU3VibWlzc2lvblJlcXVlc3QqKTsKIHZv
aWQgd2Via2l0V2ViVmlld0hhbmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKTsKK3ZvaWQgd2Via2l0
V2ViVmlld0luc2VjdXJlQ29udGVudERldGVjdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRJbnNl
Y3VyZUNvbnRlbnRFdmVudCk7CiAKICNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCAyZjZmNTRiMGRmYzM5ZGQ2NTJjYWQxMWU0YjIx
YjFhZGNiNDIyYmRiLi5kOTQxMGVmMjNiNDcwMzNhMzdhNTg2NTcwYTE1ZTdkMjc0NTIzYzY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTY4LDYgKzY4LDcgQEAgV2ViS2l0V2ViVmll
dwogV2ViS2l0TG9hZEV2ZW50CiBXZWJLaXRQb2xpY3lEZWNpc2lvblR5cGUKIFdlYktpdFNhdmVN
b2RlCitXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAogCiA8U1VCU0VDVElPTiBFZGl0aW5nIENv
bW1hbmRzPgogV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAKaW5kZXggOGZhMDEzZGM0ZDk0
NTU1MjdmYmM5YmUwOWY4MmEzYTJiNGRiMzY1Yy4uNGU0MTg3MGZiMmNkZmFkN2YwYmM5MGFlNDlm
YWRkMDlkOWRkNmRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFNTTC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdFNTTC5jcHAKQEAgLTIzLDggKzIzLDExIEBACiAjaW5jbHVkZSAiV2ViS2l0
VGVzdFNlcnZlci5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAotc3RhdGljIFdlYktpdFRlc3RT
ZXJ2ZXIqIGtTZXJ2ZXI7CitzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga0h0dHBzU2VydmVyOwor
c3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtIdHRwU2VydmVyOworCiBzdGF0aWMgY29uc3QgY2hh
ciogaW5kZXhIVE1MID0gIjxodG1sPjxib2R5PlRlc3RpbmcgV2ViS2l0MkdUSysgU1NMPC9ib2R5
PjwvaHRtbGw+IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBpbnNlY3VyZUNvbnRlbnRIVE1MID0gIjxo
dG1sPjxzY3JpcHQgc3JjPVwiJXNcIj48L3NjcmlwdD48Ym9keT48cD5UZXh0ICsgaW1hZ2UgPGlt
ZyBzcmM9XCIlc1wiIGFsaWduPVwicmlnaHRcIi8+PC9wPjwvYm9keT48L2h0bWw+IjsKIAogY2xh
c3MgU1NMVGVzdDogcHVibGljIExvYWRUcmFja2luZ1Rlc3QgewogcHVibGljOgpAQCAtNjAsNyAr
NjMsNyBAQCBwdWJsaWM6CiAKIHN0YXRpYyB2b2lkIHRlc3RTU0woU1NMVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKIHsKLSAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii8iKS5kYXRhKCkpOworICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAg
ICBnX2Fzc2VydCh0ZXN0LT5tX2NlcnRpZmljYXRlKTsKICAgICAvLyBXZSBhbHdheXMgZXhwZWN0
IGVycm9ycyBiZWNhdXNlIHdlIGFyZSB1c2luZyBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLApA
QCAtNzUsNyArNzgsNDIgQEAgc3RhdGljIHZvaWQgdGVzdFNTTChTU0xUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3Rsc0Vycm9ycyk7CiB9CiAKLXN0YXRp
YyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1l
c3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCos
IGdwb2ludGVyKQorY2xhc3MgSW5zZWN1cmVDb250ZW50VGVzdDogcHVibGljIFdlYlZpZXdUZXN0
IHsKK3B1YmxpYzoKKyAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKEluc2VjdXJlQ29udGVudFRl
c3QpOworCisgICAgSW5zZWN1cmVDb250ZW50VGVzdCgpCisgICAgICAgIDogbV9pbnNlY3VyZUNv
bnRlbnRSdW4oZmFsc2UpCisgICAgICAgICwgbV9pbnNlY3VyZUNvbnRlbnREaXNwbGF5ZWQoZmFs
c2UpCisgICAgeworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImluc2VjdXJl
LWNvbnRlbnQtZGV0ZWN0ZWQiLCBHX0NBTExCQUNLKGluc2VjdXJlX2NvbnRlbnRfZGV0ZWN0ZWRf
Y2FsbGJhY2spLCB0aGlzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBpbnNlY3VyZV9jb250
ZW50X2RldGVjdGVkX2NhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEluc2Vj
dXJlQ29udGVudEV2ZW50IGV2ZW50LCBJbnNlY3VyZUNvbnRlbnRUZXN0KiB0ZXN0KQorICAgIHsK
KyAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSB0ZXN0LT5tX3dlYlZpZXcpOworCisgICAgICAg
IGlmIChldmVudCA9PSBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9FVkVOVF9SVU4pCisgICAgICAg
ICAgICB0ZXN0LT5tX2luc2VjdXJlQ29udGVudFJ1biA9IHRydWU7CisKKyAgICAgICAgaWYgKGV2
ZW50ID09IFdFQktJVF9JTlNFQ1VSRV9DT05URU5UX0VWRU5UX0RJU1BMQVlFRCkKKyAgICAgICAg
ICAgIHRlc3QtPm1faW5zZWN1cmVDb250ZW50RGlzcGxheWVkID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICBib29sIG1faW5zZWN1cmVDb250ZW50UnVuOworICAgIGJvb2wgbV9pbnNlY3VyZUNvbnRlbnRE
aXNwbGF5ZWQ7Cit9OworCitzdGF0aWMgdm9pZCB0ZXN0SW5zZWN1cmVDb250ZW50KEluc2VjdXJl
Q29udGVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bG9hZFVSSShr
SHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbnNlY3VyZS1jb250ZW50LyIpLmRhdGEoKSk7
CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBnX2Fzc2VydCh0ZXN0
LT5tX2luc2VjdXJlQ29udGVudFJ1bik7CisgICAgZ19hc3NlcnQodGVzdC0+bV9pbnNlY3VyZUNv
bnRlbnREaXNwbGF5ZWQpOworfQorCitzdGF0aWMgdm9pZCBodHRwc1NlcnZlckNhbGxiYWNrKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgs
IEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQogewogICAgIGlmICht
ZXNzYWdlLT5tZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7CiAgICAgICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CkBAIC04
NiwxOSArMTI0LDU4IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNl
cnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgIHNvdXBfbWVz
c2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKICAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NU
QVRJQywgaW5kZXhIVE1MLCBzdHJsZW4oaW5kZXhIVE1MKSk7CiAgICAgICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworICAgIH0gZWxzZSBpZiAo
Z19zdHJfZXF1YWwocGF0aCwgIi9pbnNlY3VyZS1jb250ZW50LyIpKSB7CisgICAgICAgIEdPd25Q
dHI8Y2hhcj4gcmVzcG9uc2VIVE1MKGdfc3RyZHVwX3ByaW50ZihpbnNlY3VyZUNvbnRlbnRIVE1M
LCBrSHR0cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3Qtc2NyaXB0IikuZGF0YSgpLCBrSHR0
cFNlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QtaW1hZ2UiKS5kYXRhKCkpKTsKKyAgICAgICAg
c291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVN
T1JZX0NPUFksIHJlc3BvbnNlSFRNTC5nZXQoKSwgc3RybGVuKHJlc3BvbnNlSFRNTC5nZXQoKSkp
OworICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19P
Syk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNl
X2JvZHkpOworICAgIH0gZWxzZQorICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNz
YWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQpOworfQorCitzdGF0aWMgdm9pZCBodHRwU2VydmVy
Q2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3Qg
Y2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCit7
CisgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKKyAgICAgICAg
c291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVO
VEVEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChnX3N0cl9lcXVhbChwYXRo
LCAiL3Rlc3Qtc2NyaXB0IikpIHsKKyAgICAgICAgR093blB0cjxjaGFyPiBwYXRoVG9GaWxlKGdf
YnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKCkuZGF0YSgpLCAibGluay10aXRs
ZS5qcyIsIE5VTEwpKTsKKyAgICAgICAgY2hhciogY29udGVudHM7CisgICAgICAgIGdzaXplIGxl
bmd0aDsKKworICAgICAgICBnX2ZpbGVfZ2V0X2NvbnRlbnRzKHBhdGhUb0ZpbGUuZ2V0KCksICZj
b250ZW50cywgJmxlbmd0aCwgMCk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZCht
ZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9UQUtFLCBjb250ZW50cywgbGVuZ3Ro
KTsKKyAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
T0spOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25z
ZV9ib2R5KTsKKyAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdGVzdC1pbWFnZSIp
KSB7CisgICAgICAgIEdPd25QdHI8Y2hhcj4gcGF0aFRvRmlsZShnX2J1aWxkX2ZpbGVuYW1lKFRl
c3Q6OmdldFdlYktpdDFUZXN0UmVzb3VjZXNEaXIoKS5kYXRhKCksICJibGFuay5pY28iLCBOVUxM
KSk7CisgICAgICAgIGNoYXIqIGNvbnRlbnRzOworICAgICAgICBnc2l6ZSBsZW5ndGg7CisKKyAg
ICAgICAgZ19maWxlX2dldF9jb250ZW50cyhwYXRoVG9GaWxlLmdldCgpLCAmY29udGVudHMsICZs
ZW5ndGgsIDApOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVz
cG9uc2VfYm9keSwgU09VUF9NRU1PUllfVEFLRSwgY29udGVudHMsIGxlbmd0aCk7CisgICAgICAg
IHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAg
ICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBf
U1RBVFVTX05PVF9GT1VORCk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsKLSAgICBrU2VydmVy
ID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOwot
ICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7CisgICAga0h0dHBzU2VydmVyID0gbmV3
IFdlYktpdFRlc3RTZXJ2ZXIoV2ViS2l0VGVzdFNlcnZlcjo6U2VydmVySFRUUFMpOworICAgIGtI
dHRwc1NlcnZlci0+cnVuKGh0dHBzU2VydmVyQ2FsbGJhY2spOworCisgICAga0h0dHBTZXJ2ZXIg
PSBuZXcgV2ViS2l0VGVzdFNlcnZlcihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQKTsKKyAg
ICBrSHR0cFNlcnZlci0+cnVuKGh0dHBTZXJ2ZXJDYWxsYmFjayk7CiAKICAgICBTU0xUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAic3NsIiwgdGVzdFNTTCk7CisgICAgSW5zZWN1cmVDb250ZW50
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImluc2VjdXJlLWNvbnRlbnQiLCB0ZXN0SW5zZWN1
cmVDb250ZW50KTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCiB7Ci0gICAgZGVsZXRlIGtTZXJ2ZXI7
CisgICAgZGVsZXRlIGtIdHRwc1NlcnZlcjsKKyAgICBkZWxldGUga0h0dHBTZXJ2ZXI7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDIwNDcw
OWU2YTdmZTNhMGZjZDgzYTYyNzE5ZWQ2YjRiYzdmZTczZC4uMzgyNTA4YmE3OGJjMDQ2MmZjNGYw
YmRjODFhYTE3Y2E1YTI2NDAzZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEyLTEwICBNYXJpbyBTYW5jaGV6
IFByYWRhICA8bWFyaW9Ad2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXVtXSzJdIE5ldyBBUEkg
dG8gZGV0ZWN0IGRpc3BsYXkvZXhlY3V0aW9uIG9mIGluc2VjdXJlIGNvbnRlbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU3OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBjb2Rpbmcgc3R5bGUg
ZXhjZXB0aW9uIGZvciAncmVhZGFiaWxpdHkvZW51bV9jYXNpbmcnIGluIEdUSy4KKworICAgICAg
ICBUaGUgR1RLKyBBUEkgdXNlIHVwcGVyIGNhc2UsIHVuZGVyc2NvcmUgc2VwYXJhdGVkLCB3b3Jk
cyBpbgorICAgICAgICBjZXJ0YWluIHR5cGVzIG9mIGVudW1zIChlLmcuIHNpZ25hbHMsIHByb3Bl
cnRpZXMpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OiBB
ZGRlZCBleGNlcHRpb24sIGJvdGggZm9yCisgICAgICAgIFdlYktpdEdUSysgYW5kIFdlYktpdDJH
VEsrLgorCiAyMDEyLTEyLTA4ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRlbC5jb20+CiAK
ICAgICAgICAgW0NNYWtlXSBBZGQgQ01ha2Ugc3R5bGUgY2hlY2tlcgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDkzOTU5NDcxZmY2MjI0NmQyYzI5YWMxMjFiODZj
MWY1NGRiNjU3NDMuLmQ4OTM1YjAxYzlkM2RhYmVlZTk2Mjk5Njg3M2U5MTRkM2FmMzY3NWYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTE3NSw3ICsxNzUsMTQg
QEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgICBbIi1yZWFkYWJpbGl0eS9uYW1pbmci
LAogICAgICAgIi1yZWFkYWJpbGl0eS9wYXJhbWV0ZXJfbmFtZSIsCiAgICAgICAiLXJlYWRhYmls
aXR5L251bGwiLAorICAgICAgIi1yZWFkYWJpbGl0eS9lbnVtX2Nhc2luZyIsCiAgICAgICAiLXdo
aXRlc3BhY2UvcGFyZW5zIl0pLAorCisgICAgKFsjIFRoZSBHVEsrIEFQSSB1c2UgdXBwZXIgY2Fz
ZSwgdW5kZXJzY29yZSBzZXBhcmF0ZWQsIHdvcmRzIGluCisgICAgICAjIGNlcnRhaW4gdHlwZXMg
b2YgZW51bXMgKGUuZy4gc2lnbmFscywgcHJvcGVydGllcykuCisgICAgICAiU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsiXSwKKyAgICAgWyItcmVhZGFiaWxpdHkvZW51bV9jYXNpbmci
XSksCisKICAgICAoWyMgSGVhZGVyIGZpbGVzIGluIEZvcndhcmRpbmdIZWFkZXJzIGhhdmUgbm8g
aGVhZGVyIGd1YXJkcyBvcgogICAgICAgIyBleGNlcHRpb25hbCBoZWFkZXIgZ3VhcmRzIChlLmcu
LCBXZWJDb3JlX0ZXRF9EZWJ1Z2dlcl9oKS4KICAgICAgICIvRm9yd2FyZGluZ0hlYWRlcnMvIl0s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178754</attachid>
            <date>2012-12-11 02:14:06 -0800</date>
            <delta_ts>2012-12-12 02:40:23 -0800</delta_ts>
            <desc>Patch proposal + Unit tests</desc>
            <filename>bug-104578-20121211111127.patch</filename>
            <type>text/plain</type>
            <size>22629</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjc3NTI1ZjliMjUzMGIx
ODZjZjc5NDkyYzBjOTYzMWMzYmUzNmY3MC4uMmJhMjI5NmFlMWJiZWI5MjdhZDQ4OTM0MzRiN2Nj
ZjhlZGViYWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEyLTEwICBNYXJp
byBTYW5jaGV6IFByYWRhICA8bWFyaW9Ad2Via2l0Lm9yZz4KKworICAgICAgICBbR1RLXVtXSzJd
IE5ldyBBUEkgdG8gZGV0ZWN0IGRpc3BsYXkvZXhlY3V0aW9uIG9mIGluc2VjdXJlIGNvbnRlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDU3OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5l
dyBBUEkgYW5kIGRvY3VtZW50YXRpb24gZm9yIGRldGVjdGluZyBpbnNlY3VyZSBjb250ZW50Lgor
CisgICAgICAgIEltcGxlbWVudGVkIG5lZWRlZCBmdW5jdGlvbnMgZnJvbSBDIEFQSSdzIFdLUGFn
ZUxvYWRlckNsaWVudAorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6
IEltcGxlbWVudGVkLgorICAgICAgICAoZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOiBE
aXR0by4KKyAgICAgICAgKGF0dGFjaExvYWRlckNsaWVudFRvVmlldyk6IEFkZGVkIG5ld2x5IGlt
cGxlbWVudGVkIGZ1bmN0aW9ucy4KKworICAgICAgICBBZGRlZCBuZXcgJ2luc2VjdXJlLWNvbnRl
bnQtZGV0ZWN0ZWQnIHNpZ25hbCB0byBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0
KTogSW5zdGFsbGVkIG5ldyBzaWduYWwuCisgICAgICAgICh3ZWJraXRXZWJWaWV3SW5zZWN1cmVD
b250ZW50RGV0ZWN0ZWQpOiBIZWxwZXIgZnVuY3Rpb24gYWRlZCB0bworICAgICAgICBwcml2YXRl
IEFQSSB0byBlbWl0IHRoZSBuZXcgc2lnbmFsIGZyb20gdGhlIHBhZ2UgbG9hZGVyIGNsaWVudC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgIChf
V2ViS2l0V2ViVmlld0NsYXNzKTogQWRkZWQgbmV3IHNpZ25hbC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6IEFkZGVkIHByb3RvdHlwZSBvZiB0
aGUKKyAgICAgICAgbmV3IGhlbHBlciBmdW5jdGlvbiB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250
ZW50RGV0ZWN0ZWQoKS4KKworICAgICAgICBBZGRlZCBuZXcgdW5pdCB0ZXN0cy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVzdFNT
TCk6IFVwZGF0ZWQgdG8gdGhlIG5ldyB2YXJpYWJsZSBuYW1lIGZvciB0aGUgaHR0cHMgc2VydmVy
LgorICAgICAgICAodGVzdEluc2VjdXJlQ29udGVudCk6IE5ldyB1bml0IHRlc3QuCisgICAgICAg
IChodHRwc1NlcnZlckNhbGxiYWNrKTogUmVuYW1lZCBmcm9tIHNlcnZlckNhbGxiYWNrKCkgYW5k
IHVwZGF0ZWQKKyAgICAgICAgdG8gcmV0dXJuIEhUTUwgY29udGVudCBsaW5raW5nIHRvIGV4dGVy
bmFsIHJlc291cmNlcyBpbiBhbgorICAgICAgICBpbnNlY3VyZSAocGxhaW4gaHR0cCkgc2VydmVy
LCB0byBiZSB1c2VkIGJ5IHRoZSBuZXcgdGVzdC4KKyAgICAgICAgKGh0dHBTZXJ2ZXJDYWxsYmFj
ayk6IE5ldyBjYWxsYmFjayBmb3IgYSBuZXcgaHR0cCBzZXJ2ZXIsIHRoYXQKKyAgICAgICAgd2ls
bCBzZXJ2ZSBhIHNjcmlwdCBhbmQgYW4gaW1hZ2Ugd2hlbiByZXF1ZXN0ZWQuCisgICAgICAgIChi
ZWZvcmVBbGwpOiBSdW4gdGhlIG5ldyBodHRwIHNlcnZlciwgYmVzaWRlcyB0aGUgaHR0cHMgb25l
LgorICAgICAgICAoYWZ0ZXJBbGwpOiBEZWxldGUgYm90aCB0aGUgaHR0cCBhbmQgdGhlIGh0dHBz
IHNlcnZlci4KKworICAgICAgICBVcGRhdGVkIGRvY3VtZW50YXRpb24gd2l0aCBuZXcgQVBJLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dDogQWRkZWQgcmVmZXJlbmNlcworICAgICAgICB0byB0aGUgbmV3IFdlYktpdEluc2VjdXJlQ29u
dGVudEV2ZW50IGVudW0gdHlwZS4KKwogMjAxMi0xMi0wOSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5o
YW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4IHVudXNlZCBwYXJhbWV0ZXIgY29tcGlsZSB3
YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdExvYWRlckNsaWVudC5jcHAKaW5kZXggMWVhZTI2NzUzOWJjYjA4ZTU2YTk5Y2E2ZGEzYTAy
Zjc3YWE5MGRmNC4uOWI5MGM0MDBhNTI2ZTJiMjk4OGQ0MzdlYmRiNTk2ODlhODc2ZjVmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0TG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xMDYsNiArMTA2LDE2IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVU
aXRsZUZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0aXRsZVJlZiwgV0tGcmFt
CiAgICAgd2Via2l0V2ViVmlld1NldFRpdGxlKFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwg
dG9JbXBsKHRpdGxlUmVmKS0+c3RyaW5nKCkudXRmOCgpKTsKIH0KIAorc3RhdGljIHZvaWQgZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7Cisg
ICAgd2Via2l0V2ViVmlld0luc2VjdXJlQ29udGVudERldGVjdGVkKFdFQktJVF9XRUJfVklFVyhj
bGllbnRJbmZvKSwgV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfRElTUExBWUVEKTsKK30KKworc3Rh
dGljIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
bykKK3sKKyAgICB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250ZW50RGV0ZWN0ZWQoV0VCS0lUX1dF
Ql9WSUVXKGNsaWVudEluZm8pLCBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9SVU4pOworfQorCiBz
dGF0aWMgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKIHsKICAgICB3ZWJraXRXZWJWaWV3U2V0RXN0aW1hdGVkTG9hZFByb2dyZXNz
KFdFQktJVF9XRUJfVklFVyhjbGllbnRJbmZvKSwgV0tQYWdlR2V0RXN0aW1hdGVkUHJvZ3Jlc3Mo
cGFnZSkpOwpAQCAtMTM4LDggKzE0OCw4IEBAIHZvaWQgYXR0YWNoTG9hZGVyQ2xpZW50VG9WaWV3
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgIDAsIC8vIGRpZEZpcnN0TGF5b3V0Rm9y
RnJhbWUKICAgICAgICAgMCwgLy8gZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJh
bWUKICAgICAgICAgMCwgLy8gZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Ci0gICAgICAgIDAs
IC8vIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZQotICAgICAgICAwLCAvLyBkaWRS
dW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZQorICAgICAgICBkaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUsCisgICAgICAgIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lLAogICAg
ICAgICAwLCAvLyBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZQog
ICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lLAogICAgICAg
ICBkaWRDaGFuZ2VQcm9ncmVzcywgLy8gZGlkU3RhcnRQcm9ncmVzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBmYjBjNWVk
OWFiOWNhM2Y4ZWJmYjkzMThhZDBiNzNkMjNkNzM2OTgyLi41ZDk0MThkYTJhMGMyNDVmZWQzODQ0
Mzc0YjNkNmIzODU1YjUyMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtOTcsNiArOTcsOCBAQCBlbnVtIHsKIAogICAg
IFNVQk1JVF9GT1JNLAogCisgICAgSU5TRUNVUkVfQ09OVEVOVF9ERVRFQ1RFRCwKKwogICAgIExB
U1RfU0lHTkFMCiB9OwogCkBAIC0xMjMwLDYgKzEyMzIsMjkgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAg
ICAgICAgICAgICAgICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fT0JKRUNULAogICAg
ICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCiAgICAgICAgICAgICAgICAgICAgICBX
RUJLSVRfVFlQRV9GT1JNX1NVQk1JU1NJT05fUkVRVUVTVCk7CisKKyAgICAvKioKKyAgICAgKiBX
ZWJLaXRXZWJWaWV3OjppbnNlY3VyZS1jb250ZW50LWRldGVjdGVkOgorICAgICAqIEB3ZWJfdmll
dzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAg
ICAqIEBldmVudDogdGhlICNXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAorICAgICAqCisgICAg
ICogVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGluc2VjdXJlIGNvbnRlbnQgaGFzIGJlZW4g
ZGV0ZWN0ZWQKKyAgICAgKiBpbiBhIHBhZ2UgbG9hZGVkIHRocm91Z2ggYSBzZWN1cmUgY29ubmVj
dGlvbi4gVGhpcyB0eXBpY2FsbHkKKyAgICAgKiBtZWFucyB0aGF0IGFuIGV4dGVybmFsIHJlc291
cmNlIGZyb20gYW4gdW5zdHJ1c3RlZCBzb3VyY2UKKyAgICAgKiAoZS5nLiBub24gSFRUUFMpIGhh
cyBiZWVuIHJ1biBvciBkaXNwbGF5ZWQuCisgICAgICoKKyAgICAgKiBZb3UgY2FuIGNoZWNrIHRo
ZSBAZXZlbnQgcGFyYW1ldGVyIHRvIGtub3cgZXhhY3RseSB3aGljaCBraW5kCisgICAgICogb2Yg
ZXZlbnQgaGFzIGJlZW4gZGV0ZWN0ZWQgKHNlZSAjV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQp
LgorICAgICAqLworICAgIHNpZ25hbHNbSU5TRUNVUkVfQ09OVEVOVF9ERVRFQ1RFRF0gPQorICAg
ICAgICBnX3NpZ25hbF9uZXcoImluc2VjdXJlLWNvbnRlbnQtZGV0ZWN0ZWQiLAorICAgICAgICAg
ICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFM
X1JVTl9MQVNULAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFz
cywgaW5zZWN1cmVfY29udGVudF9kZXRlY3RlZCksCisgICAgICAgICAgICAwLCAwLAorICAgICAg
ICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX0VOVU0sCisgICAgICAgICAgICBHX1RZUEVf
Tk9ORSwgMSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0lOU0VDVVJFX0NPTlRFTlRfRVZFTlQp
OwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGJvb2wgaXNMb2FkaW5nKQpAQCAtMTYxNyw2ICsxNjQyLDExIEBAIHZvaWQg
d2Via2l0V2ViVmlld0hhbmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIEF1dGhlbnRpCiAgICAgZGlhbG9nLT5zaG93KCk7CiB9CiAKK3ZvaWQgd2Via2l0
V2ViVmlld0luc2VjdXJlQ29udGVudERldGVjdGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdEluc2VjdXJlQ29udGVudEV2ZW50IHR5cGUpCit7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJW
aWV3LCBzaWduYWxzW0lOU0VDVVJFX0NPTlRFTlRfREVURUNURURdLCAwLCB0eXBlKTsKK30KKwog
LyoqCiAgKiB3ZWJraXRfd2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA3YzgzODEzMjlkNGU5MzY0MDFl
MTlmMmM1YjU2MTVhNGYwMzU4NGJjLi5mZGJjNjY2ZWZjOGU2N2NhZmQ2MjE1MDU3ZDZmYmVkM2M1
MDdkNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oCkBAIC0xMjksNiArMTI5LDIzIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lU
X1NBVkVfTU9ERV9NSFRNTAogfSBXZWJLaXRTYXZlTW9kZTsKIAorLyoqCisgKiBXZWJLaXRJbnNl
Y3VyZUNvbnRlbnRFdmVudDoKKyAqIEBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9SVU46IEluc2Vj
dXJlIGNvbnRlbnQgaGFzIGJlZW4gZGV0ZWN0ZWQgYnkKKyAqIHRyeWluZyB0byBleGVjdXRlIGFu
eSBraW5kIG9mIGxvZ2ljIChlLmcuIGEgc2NyaXB0KSBmcm9tIGFuCisgKiB1bnRydXN0ZWQgc291
cmNlLgorICogQFdFQktJVF9JTlNFQ1VSRV9DT05URU5UX0RJU1BMQVlFRDogSW5zZWN1cmUgY29u
dGVudCBoYXMgYmVlbgorICogZGV0ZWN0ZWQgYnkgdHJ5aW5nIHRvIGRpc3BsYXkgYW55IGtpbmQg
b2YgcmVzb3VyY2UgKGUuZy4gYW4gaW1hZ2UpCisgKiBmcm9tIGFuIHVudHJ1c3RlZCBzb3VyY2Uu
CisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIGRpZmZlcmVudCBldmVudHMg
d2hpY2ggY2FuIHRyaWdnZXIKKyAqIHRoZSBkZXRlY3Rpb24gb2YgaW5zZWN1cmUgY29udGVudC4K
KyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9SVU4sCisg
ICAgV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfRElTUExBWUVECit9IFdlYktpdEluc2VjdXJlQ29u
dGVudEV2ZW50OworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIFdlYktpdFdlYlZpZXdC
YXNlIHBhcmVudDsKIApAQCAtMTM5LDQ1ICsxNTYsNDcgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3
IHsKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNzIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZUNs
YXNzIHBhcmVudDsKIAotICAgIHZvaWQgICAgICAgKCogbG9hZF9jaGFuZ2VkKSAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TG9hZEV2ZW50ICAgICAgICAgICAgICBs
b2FkX2V2ZW50KTsKLSAgICBnYm9vbGVhbiAgICgqIGxvYWRfZmFpbGVkKSAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdExvYWRFdmVudCAgICAgICAgICAgICAgbG9h
ZF9ldmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnY2hhciAgICAgICAgICAgICAgICAgKmZhaWxpbmdfdXJpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICAqZXJy
b3IpOwotCi0gICAgR3RrV2lkZ2V0ICooKiBjcmVhdGUpICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiByZWFk
eV90b19zaG93KSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmll
dyk7Ci0gICAgdm9pZCAgICAgICAoKiBydW5fYXNfbW9kYWwpICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAgICAgICAoKiBjbG9zZSkg
ICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7
Ci0KLSAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9kaWFsb2cpICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFNjcmlwdERpYWxvZyAgICAgICAgICAqZGlhbG9nKTsKLQot
ICAgIGdib29sZWFuICAgKCogZGVjaWRlX3BvbGljeSkgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAgICAgICpkZWNpc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xpY3lEZWNpc2lv
blR5cGUgICAgIHR5cGUpOwotICAgIGdib29sZWFuICAgKCogcGVybWlzc2lvbl9yZXF1ZXN0KSAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgICAg
ICpwZXJtaXNzaW9uX3JlcXVlc3QpOwotICAgIHZvaWQgICAgICAgKCogbW91c2VfdGFyZ2V0X2No
YW5nZWQpICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAg
ICAgICAgICpoaXRfdGVzdF9yZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOwotICAg
IGdib29sZWFuICAgKCogcHJpbnQpICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0UHJpbnRPcGVyYXRpb24gICAgICAgICpwcmludF9vcGVyYXRpb24pOwot
ICAgIHZvaWQgICAgICAgKCogcmVzb3VyY2VfbG9hZF9zdGFydGVkKSAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UgICAgICAgICAgICpyZXNvdXJjZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRVUklSZXF1ZXN0ICAg
ICAgICAgICAgKnJlcXVlc3QpOwotICAgIGdib29sZWFuICAgKCogZW50ZXJfZnVsbHNjcmVlbikg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIGdib29s
ZWFuICAgKCogbGVhdmVfZnVsbHNjcmVlbikgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcpOwotICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hvb3NlcikgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAg
ICpyZXF1ZXN0KTsKLSAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51ICAgICAgICAgICAqY29u
dGV4dF9tZW51LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdk
a0V2ZW50ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAgICAgICpoaXRfdGVz
dF9yZXN1bHQpOwotICAgIHZvaWQgICAgICAgKCogY29udGV4dF9tZW51X2Rpc21pc3NlZCkgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOwotICAgIHZvaWQgICAgICAgKCog
c3VibWl0X2Zvcm0pICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKyAgICB2b2lkICAgICAgICgqIGxvYWRf
Y2hhbmdlZCkgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92
aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktp
dExvYWRFdmVudCAgICAgICAgICAgICAgbG9hZF9ldmVudCk7CisgICAgZ2Jvb2xlYW4gICAoKiBs
b2FkX2ZhaWxlZCkgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRMb2FkRXZlbnQgICAgICAgICAgICAgIGxvYWRfZXZlbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAg
ICpmYWlsaW5nX3VyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICAgKmVycm9yKTsKKworICAgIEd0a1dpZGdl
dCAqKCogY3JlYXRlKSAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgKCogcmVhZHlfdG9fc2hvdykgICAgICAg
ICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQg
ICAgICAgKCogcnVuX2FzX21vZGFsKSAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQgICAgICAgKCogY2xvc2UpICAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCisgICAg
Z2Jvb2xlYW4gICAoKiBzY3JpcHRfZGlhbG9nKSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRTY3JpcHREaWFsb2cgICAgICAgICAgKmRpYWxvZykgIDsKKwor
ICAgIGdib29sZWFuICAgKCogZGVjaWRlX3BvbGljeSkgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViS2l0UG9saWN5RGVjaXNpb24gICAgICAgICpkZWNpc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRQb2xp
Y3lEZWNpc2lvblR5cGUgICAgIHR5cGUpOworICAgIGdib29sZWFuICAgKCogcGVybWlzc2lvbl9y
ZXF1ZXN0KSAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UGVybWlz
c2lvblJlcXVlc3QgICAgICpwZXJtaXNzaW9uX3JlcXVlc3QpOworICAgIHZvaWQgICAgICAgKCog
bW91c2VfdGFyZ2V0X2NoYW5nZWQpICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAq
d2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0SGl0VGVzdFJlc3VsdCAgICAgICAgICpoaXRfdGVzdF9yZXN1bHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAg
ICAgICAgICBtb2RpZmllcnMpOworICAgIGdib29sZWFuICAgKCogcHJpbnQpICAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0UHJpbnRPcGVyYXRp
b24gICAgICAgICpwcmludF9vcGVyYXRpb24pOworICAgIHZvaWQgICAgICAgKCogcmVzb3VyY2Vf
bG9hZF9zdGFydGVkKSAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vi
UmVzb3VyY2UgICAgICAgICAgICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRVUklSZXF1ZXN0ICAgICAgICAgICAgKnJlcXVlc3Qp
OworICAgIGdib29sZWFuICAgKCogZW50ZXJfZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIGdib29sZWFuICAgKCogbGVhdmVf
ZnVsbHNjcmVlbikgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3Zp
ZXcpOworICAgIGdib29sZWFuICAgKCogcnVuX2ZpbGVfY2hvb3NlcikgICAgICAgICAgKFdlYktp
dFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0ICAgICpyZXF1
ZXN0KTsKKyAgICBnYm9vbGVhbiAgICgqIGNvbnRleHRfbWVudSkgICAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbnRleHRNZW51ICAgICAgICAgICAqY29u
dGV4dF9tZW51LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdka0V2ZW50ICAgICAgICAgICAgICAgICAgICAqZXZlbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SGl0VGVzdFJlc3VsdCAgICAgICAgICpo
aXRfdGVzdF9yZXN1bHQpOworICAgIHZvaWQgICAgICAgKCogY29udGV4dF9tZW51X2Rpc21pc3Nl
ZCkgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgICAqd2ViX3ZpZXcpOworICAgIHZvaWQg
ICAgICAgKCogc3VibWl0X2Zvcm0pICAgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKyAgICB2b2lk
ICAgICAgICgqIGluc2VjdXJlX2NvbnRlbnRfZGV0ZWN0ZWQpIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50ICAgZXZlbnQpOwogCiAgICAgLyog
UGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2Vy
dmVkMCkgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKaW5kZXggNjZkYTU4NDc2YTRmNmRhNDc0ZjE1NTM5
NjA3MTE1YzJlYzFjNGZkNy4uMGRlMGQxN2Y3YjVhNTQ0ZmY2MmRiMTY4N2ZiNmVlZGFmYTEzYTcw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC01Niw1ICs1Niw2IEBAIGJvb2wgd2Via2l0V2ViVmlld0xl
YXZlRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdQb3B1bGF0
ZUNvbnRleHRNZW51KFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OkltbXV0YWJsZUFycmF5KiBwcm9w
b3NlZE1lbnUsIFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3
U3VibWl0Rm9ybVJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVx
dWVzdCopOwogdm9pZCB3ZWJraXRXZWJWaWV3SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
V2ViS2l0V2ViVmlldyosIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopOwor
dm9pZCB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250ZW50RGV0ZWN0ZWQoV2ViS2l0V2ViVmlldyos
IFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50KTsKIAogI2VuZGlmIC8vIFdlYktpdFdlYlZpZXdQ
cml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IDJmNmY1NGIwZGZjMzlkZDY1
MmNhZDExZTRiMjFiMWFkY2I0MjJiZGIuLmQ5NDEwZWYyM2I0NzAzM2EzN2E1ODY1NzBhMTVlN2Qy
NzQ1MjNjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNjgsNiArNjgsNyBAQCBX
ZWJLaXRXZWJWaWV3CiBXZWJLaXRMb2FkRXZlbnQKIFdlYktpdFBvbGljeURlY2lzaW9uVHlwZQog
V2ViS2l0U2F2ZU1vZGUKK1dlYktpdEluc2VjdXJlQ29udGVudEV2ZW50CiAKIDxTVUJTRUNUSU9O
IEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFNTTC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcAppbmRleCA4
ZmEwMTNkYzRkOTQ1NTUyN2ZiYzliZTA5ZjgyYTNhMmI0ZGIzNjVjLi5iOTY3NWE4MDUyYWIyMDNl
YzVkOGY2YTg5ODYzODU2NmVkMmJhZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0U1NMLmNwcApAQCAtMjMsOCArMjMsMTEgQEAKICNpbmNs
dWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCi1zdGF0aWMg
V2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKK3N0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrSHR0
cHNTZXJ2ZXI7CitzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga0h0dHBTZXJ2ZXI7CisKIHN0YXRp
YyBjb25zdCBjaGFyKiBpbmRleEhUTUwgPSAiPGh0bWw+PGJvZHk+VGVzdGluZyBXZWJLaXQyR1RL
KyBTU0w8L2JvZHk+PC9odG1sbD4iOworc3RhdGljIGNvbnN0IGNoYXIqIGluc2VjdXJlQ29udGVu
dEhUTUwgPSAiPGh0bWw+PHNjcmlwdCBzcmM9XCIlc1wiPjwvc2NyaXB0Pjxib2R5PjxwPlRleHQg
KyBpbWFnZSA8aW1nIHNyYz1cIiVzXCIgYWxpZ249XCJyaWdodFwiLz48L3A+PC9ib2R5PjwvaHRt
bD4iOwogCiBjbGFzcyBTU0xUZXN0OiBwdWJsaWMgTG9hZFRyYWNraW5nVGVzdCB7CiBwdWJsaWM6
CkBAIC02MCw3ICs2Myw3IEBAIHB1YmxpYzoKIAogc3RhdGljIHZvaWQgdGVzdFNTTChTU0xUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXIt
PmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwogICAgIGdfYXNzZXJ0KHRlc3QtPm1fY2VydGlmaWNhdGUpOwogICAgIC8vIFdlIGFs
d2F5cyBleHBlY3QgZXJyb3JzIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2VsZi1zaWduZWQgY2Vy
dGlmaWNhdGUsCkBAIC03NSw3ICs3OCw0MiBAQCBzdGF0aWMgdm9pZCB0ZXN0U1NMKFNTTFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fdGxzRXJyb3JzKTsK
IH0KIAotc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3Vw
TWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGll
bnRDb250ZXh0KiwgZ3BvaW50ZXIpCitjbGFzcyBJbnNlY3VyZUNvbnRlbnRUZXN0OiBwdWJsaWMg
V2ViVmlld1Rlc3QgeworcHVibGljOgorICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoSW5zZWN1
cmVDb250ZW50VGVzdCk7CisKKyAgICBJbnNlY3VyZUNvbnRlbnRUZXN0KCkKKyAgICAgICAgOiBt
X2luc2VjdXJlQ29udGVudFJ1bihmYWxzZSkKKyAgICAgICAgLCBtX2luc2VjdXJlQ29udGVudERp
c3BsYXllZChmYWxzZSkKKyAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3
LCAiaW5zZWN1cmUtY29udGVudC1kZXRlY3RlZCIsIEdfQ0FMTEJBQ0soaW5zZWN1cmVfY29udGVu
dF9kZXRlY3RlZF9jYWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGlu
c2VjdXJlX2NvbnRlbnRfZGV0ZWN0ZWRfY2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQgZXZlbnQsIEluc2VjdXJlQ29udGVudFRlc3QqIHRl
c3QpCisgICAgeworICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IHRlc3QtPm1fd2ViVmlldyk7
CisKKyAgICAgICAgaWYgKGV2ZW50ID09IFdFQktJVF9JTlNFQ1VSRV9DT05URU5UX1JVTikKKyAg
ICAgICAgICAgIHRlc3QtPm1faW5zZWN1cmVDb250ZW50UnVuID0gdHJ1ZTsKKworICAgICAgICBp
ZiAoZXZlbnQgPT0gV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfRElTUExBWUVEKQorICAgICAgICAg
ICAgdGVzdC0+bV9pbnNlY3VyZUNvbnRlbnREaXNwbGF5ZWQgPSB0cnVlOworICAgIH0KKworICAg
IGJvb2wgbV9pbnNlY3VyZUNvbnRlbnRSdW47CisgICAgYm9vbCBtX2luc2VjdXJlQ29udGVudERp
c3BsYXllZDsKK307CisKK3N0YXRpYyB2b2lkIHRlc3RJbnNlY3VyZUNvbnRlbnQoSW5zZWN1cmVD
b250ZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5sb2FkVVJJKGtI
dHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luc2VjdXJlLWNvbnRlbnQvIikuZGF0YSgpKTsK
KyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIGdfYXNzZXJ0KHRlc3Qt
Pm1faW5zZWN1cmVDb250ZW50UnVuKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2luc2VjdXJlQ29u
dGVudERpc3BsYXllZCk7Cit9CisKK3N0YXRpYyB2b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291
cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwg
R0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1l
c3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKICAgICAgICAgc291cF9tZXNzYWdl
X3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsKQEAgLTg2
LDE5ICsxMjQsNTggQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2Vy
dmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICAgICAgc291cF9tZXNz
YWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwogICAgICAgICBzb3VwX21l
c3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RB
VElDLCBpbmRleEhUTUwsIHN0cmxlbihpbmRleEhUTUwpKTsKICAgICAgICAgc291cF9tZXNzYWdl
X2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgfSBlbHNlIGlmIChn
X3N0cl9lcXVhbChwYXRoLCAiL2luc2VjdXJlLWNvbnRlbnQvIikpIHsKKyAgICAgICAgR093blB0
cjxjaGFyPiByZXNwb25zZUhUTUwoZ19zdHJkdXBfcHJpbnRmKGluc2VjdXJlQ29udGVudEhUTUws
IGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC1zY3JpcHQiKS5kYXRhKCksIGtIdHRw
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC1pbWFnZSIpLmRhdGEoKSkpOworICAgICAgICBz
b3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1P
UllfQ09QWSwgcmVzcG9uc2VIVE1MLmdldCgpLCBzdHJsZW4ocmVzcG9uc2VIVE1MLmdldCgpKSk7
CisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09L
KTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2Vf
Ym9keSk7CisgICAgfSBlbHNlCisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3Nh
Z2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCk7Cit9CisKK3N0YXRpYyB2b2lkIGh0dHBTZXJ2ZXJD
YWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBj
aGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKK3sK
KyAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgeworICAgICAgICBz
b3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfSU1QTEVNRU5U
RUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgs
ICIvdGVzdC1zY3JpcHQiKSkgeworICAgICAgICBHT3duUHRyPGNoYXI+IHBhdGhUb0ZpbGUoZ19i
dWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoKS5kYXRhKCksICJsaW5rLXRpdGxl
LmpzIiwgTlVMTCkpOworICAgICAgICBjaGFyKiBjb250ZW50czsKKyAgICAgICAgZ3NpemUgbGVu
Z3RoOworCisgICAgICAgIGdfZmlsZV9nZXRfY29udGVudHMocGF0aFRvRmlsZS5nZXQoKSwgJmNv
bnRlbnRzLCAmbGVuZ3RoLCAwKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1l
c3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1RBS0UsIGNvbnRlbnRzLCBsZW5ndGgp
OworICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19P
Syk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNl
X2JvZHkpOworICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi90ZXN0LWltYWdlIikp
IHsKKyAgICAgICAgR093blB0cjxjaGFyPiBwYXRoVG9GaWxlKGdfYnVpbGRfZmlsZW5hbWUoVGVz
dDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgImJsYW5rLmljbyIsIE5VTEwp
KTsKKyAgICAgICAgY2hhciogY29udGVudHM7CisgICAgICAgIGdzaXplIGxlbmd0aDsKKworICAg
ICAgICBnX2ZpbGVfZ2V0X2NvbnRlbnRzKHBhdGhUb0ZpbGUuZ2V0KCksICZjb250ZW50cywgJmxl
bmd0aCwgMCk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNw
b25zZV9ib2R5LCBTT1VQX01FTU9SWV9UQUtFLCBjb250ZW50cywgbGVuZ3RoKTsKKyAgICAgICAg
c291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAgICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKICAg
ICB9IGVsc2UKICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9T
VEFUVVNfTk9UX0ZPVU5EKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQogewotICAgIGtTZXJ2ZXIg
PSBuZXcgV2ViS2l0VGVzdFNlcnZlcihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7Ci0g
ICAga1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKKyAgICBrSHR0cHNTZXJ2ZXIgPSBuZXcg
V2ViS2l0VGVzdFNlcnZlcihXZWJLaXRUZXN0U2VydmVyOjpTZXJ2ZXJIVFRQUyk7CisgICAga0h0
dHBzU2VydmVyLT5ydW4oaHR0cHNTZXJ2ZXJDYWxsYmFjayk7CisKKyAgICBrSHR0cFNlcnZlciA9
IG5ldyBXZWJLaXRUZXN0U2VydmVyKFdlYktpdFRlc3RTZXJ2ZXI6OlNlcnZlckhUVFApOworICAg
IGtIdHRwU2VydmVyLT5ydW4oaHR0cFNlcnZlckNhbGxiYWNrKTsKIAogICAgIFNTTFRlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJzc2wiLCB0ZXN0U1NMKTsKKyAgICBJbnNlY3VyZUNvbnRlbnRU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaW5zZWN1cmUtY29udGVudCIsIHRlc3RJbnNlY3Vy
ZUNvbnRlbnQpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKIHsKLSAgICBkZWxldGUga1NlcnZlcjsK
KyAgICBkZWxldGUga0h0dHBzU2VydmVyOworICAgIGRlbGV0ZSBrSHR0cFNlcnZlcjsKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MjA0NzA5
ZTZhN2ZlM2EwZmNkODNhNjI3MTllZDZiNGJjN2ZlNzNkLi4zODI1MDhiYTc4YmMwNDYyZmM0ZjBi
ZGM4MWFhMTdjYTVhMjY0MDNmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTItMTAgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtYXJpb0B3ZWJraXQub3JnPgorCisgICAgICAgIFtHVEtdW1dLMl0gTmV3IEFQSSB0
byBkZXRlY3QgZGlzcGxheS9leGVjdXRpb24gb2YgaW5zZWN1cmUgY29udGVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTc4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNvZGluZyBzdHlsZSBl
eGNlcHRpb24gZm9yICdyZWFkYWJpbGl0eS9lbnVtX2Nhc2luZycgaW4gR1RLLgorCisgICAgICAg
IFRoZSBHVEsrIEFQSSB1c2UgdXBwZXIgY2FzZSwgdW5kZXJzY29yZSBzZXBhcmF0ZWQsIHdvcmRz
IGluCisgICAgICAgIGNlcnRhaW4gdHlwZXMgb2YgZW51bXMgKGUuZy4gc2lnbmFscywgcHJvcGVy
dGllcykuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6IEFk
ZGVkIGV4Y2VwdGlvbiwgYm90aCBmb3IKKyAgICAgICAgV2ViS2l0R1RLKyBhbmQgV2ViS2l0MkdU
SysuCisKIDIwMTItMTItMDggIEhhbHRvbiBIdW8gIDxoYWx0b24uaHVvQGludGVsLmNvbT4KIAog
ICAgICAgICBbQ01ha2VdIEFkZCBDTWFrZSBzdHlsZSBjaGVja2VyCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggOTM5NTk0NzFmZjYyMjQ2ZDJjMjlhYzEyMWI4NmMx
ZjU0ZGI2NTc0My4uZDg5MzViMDFjOWQzZGFiZWVlOTYyOTk2ODczZTkxNGQzYWYzNjc1ZiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMTc1LDcgKzE3NSwxNCBA
QCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAgIFsiLXJlYWRhYmlsaXR5L25hbWluZyIs
CiAgICAgICAiLXJlYWRhYmlsaXR5L3BhcmFtZXRlcl9uYW1lIiwKICAgICAgICItcmVhZGFiaWxp
dHkvbnVsbCIsCisgICAgICAiLXJlYWRhYmlsaXR5L2VudW1fY2FzaW5nIiwKICAgICAgICItd2hp
dGVzcGFjZS9wYXJlbnMiXSksCisKKyAgICAoWyMgVGhlIEdUSysgQVBJIHVzZSB1cHBlciBjYXNl
LCB1bmRlcnNjb3JlIHNlcGFyYXRlZCwgd29yZHMgaW4KKyAgICAgICMgY2VydGFpbiB0eXBlcyBv
ZiBlbnVtcyAoZS5nLiBzaWduYWxzLCBwcm9wZXJ0aWVzKS4KKyAgICAgICJTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ayJdLAorICAgICBbIi1yZWFkYWJpbGl0eS9lbnVtX2Nhc2luZyJd
KSwKKwogICAgIChbIyBIZWFkZXIgZmlsZXMgaW4gRm9yd2FyZGluZ0hlYWRlcnMgaGF2ZSBubyBo
ZWFkZXIgZ3VhcmRzIG9yCiAgICAgICAjIGV4Y2VwdGlvbmFsIGhlYWRlciBndWFyZHMgKGUuZy4s
IFdlYkNvcmVfRldEX0RlYnVnZ2VyX2gpLgogICAgICAgIi9Gb3J3YXJkaW5nSGVhZGVycy8iXSwK
</data>
<flag name="review"
          id="195373"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="195720"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>