<?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>78557</bug_id>
          
          <creation_ts>2012-02-13 17:43:25 -0800</creation_ts>
          <short_desc>[WebSocket] Add extension attribute support</short_desc>
          <delta_ts>2012-02-14 18:12:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77522</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>ap</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>tkent</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tyoshino</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>555808</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-13 17:43:25 -0800</bug_when>
    <thetext>Add extension attribute support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555825</commentid>
    <comment_count>1</comment_count>
      <attachid>126880</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-13 18:07:24 -0800</bug_when>
    <thetext>Created attachment 126880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556014</commentid>
    <comment_count>2</comment_count>
      <attachid>126880</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-13 23:49:18 -0800</bug_when>
    <thetext>Comment on attachment 126880
Patch

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

Generally looks fine except for one comment. [Note: I don&apos;t have r+ privilege]

&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:228
&gt; +                    if (!acceptedExtensions.contains(extensionToken))

This code requires O(N^2)-time for N extension items, right? O(N^2) algorithm is not acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556110</commentid>
    <comment_count>3</comment_count>
      <attachid>126937</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 01:47:22 -0800</bug_when>
    <thetext>Created attachment 126937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556111</commentid>
    <comment_count>4</comment_count>
      <attachid>126880</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 01:47:56 -0800</bug_when>
    <thetext>Comment on attachment 126880
Patch

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

&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:228
&gt;&gt; +                    if (!acceptedExtensions.contains(extensionToken))
&gt; 
&gt; This code requires O(N^2)-time for N extension items, right? O(N^2) algorithm is not acceptable.

Used Vector&lt;bool&gt; as flags to determine whether the extensionToken should be appended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556114</commentid>
    <comment_count>5</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 01:49:18 -0800</bug_when>
    <thetext>Kent-san, Alexey,

Could you review the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556131</commentid>
    <comment_count>6</comment_count>
      <attachid>126937</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 02:08:23 -0800</bug_when>
    <thetext>Comment on attachment 126937
Patch

Talked with Yuta-san in person. I&apos;ll change the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556162</commentid>
    <comment_count>7</comment_count>
      <attachid>126946</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 02:49:33 -0800</bug_when>
    <thetext>Created attachment 126946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556167</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 02:52:45 -0800</bug_when>
    <thetext>Attachment 126946 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets
Using index info to reconstruct a base tree...
&lt;stdin&gt;:1578: trailing whitespace.
        
&lt;stdin&gt;:1647: trailing whitespace.
    
&lt;stdin&gt;:1657: trailing whitespace.
    
&lt;stdin&gt;:1672: trailing whitespace.
        return 0;        
&lt;stdin&gt;:1674: trailing whitespace.
    
warning: squelched 7 whitespace errors
warning: 12 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 168766 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556195</commentid>
    <comment_count>9</comment_count>
      <attachid>126946</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-02-14 03:56:07 -0800</bug_when>
    <thetext>Comment on attachment 126946
Patch

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

Looks OK. [Note: I don&apos;t have r+ privilege yet.]

&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:181
&gt; +    for (HashMap&lt;String, String&gt;::const_iterator iterator = extensionParameters.begin(); iterator != extensionParameters.end(); ++iterator) {

Please add a FIXME comment which indicates there&apos;s a possibility of changing the order of parameters due to HashMap. (As we told off-line, I assume you are going to fix this as a separate issue.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556204</commentid>
    <comment_count>10</comment_count>
      <attachid>126954</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 04:10:28 -0800</bug_when>
    <thetext>Created attachment 126954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556206</commentid>
    <comment_count>11</comment_count>
      <attachid>126946</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 04:10:57 -0800</bug_when>
    <thetext>Comment on attachment 126946
Patch

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

&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:181
&gt;&gt; +    for (HashMap&lt;String, String&gt;::const_iterator iterator = extensionParameters.begin(); iterator != extensionParameters.end(); ++iterator) {
&gt; 
&gt; Please add a FIXME comment which indicates there&apos;s a possibility of changing the order of parameters due to HashMap. (As we told off-line, I assume you are going to fix this as a separate issue.)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556207</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 04:13:28 -0800</bug_when>
    <thetext>Attachment 126954 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets
Using index info to reconstruct a base tree...
&lt;stdin&gt;:1578: trailing whitespace.
        
&lt;stdin&gt;:1647: trailing whitespace.
    
&lt;stdin&gt;:1657: trailing whitespace.
    
&lt;stdin&gt;:1672: trailing whitespace.
        return 0;        
&lt;stdin&gt;:1674: trailing whitespace.
    
warning: squelched 7 whitespace errors
warning: 12 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 168768 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging Source/WebCore/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556734</commentid>
    <comment_count>13</comment_count>
      <attachid>126954</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-14 16:05:35 -0800</bug_when>
    <thetext>Comment on attachment 126954
Patch

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

&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:268
&gt; +    return m_acceptedExtensionsBuilder.toAtomicString().string();

Why toAtomicString().string() instead of toString()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556740</commentid>
    <comment_count>14</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 16:16:43 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 126954 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126954&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:268
&gt; &gt; +    return m_acceptedExtensionsBuilder.toAtomicString().string();
&gt; 
&gt; Why toAtomicString().string() instead of toString()?

StringBuilder::toString() isn&apos;t a const member function so I can&apos;t call it in acceptedExtensions(), which is a const member function. Looks like win EWS is red and I can&apos;t call toAtomicString() here so I&apos;ll make m_acceptedExtensionsBuilder mutable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556746</commentid>
    <comment_count>15</comment_count>
      <attachid>126954</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-14 16:24:33 -0800</bug_when>
    <thetext>Comment on attachment 126954
Patch

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

&gt;&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:268
&gt;&gt;&gt; +    return m_acceptedExtensionsBuilder.toAtomicString().string();
&gt;&gt; 
&gt;&gt; Why toAtomicString().string() instead of toString()?
&gt; 
&gt; StringBuilder::toString() isn&apos;t a const member function so I can&apos;t call it in acceptedExtensions(), which is a const member function. Looks like win EWS is red and I can&apos;t call toAtomicString() here so I&apos;ll make m_acceptedExtensionsBuilder mutable.

Ah, I see. StringBuilder::toString() is not const.
How about StringBuilder::toStringPreserveCapacity()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556773</commentid>
    <comment_count>16</comment_count>
      <attachid>127081</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 16:53:39 -0800</bug_when>
    <thetext>Created attachment 127081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556774</commentid>
    <comment_count>17</comment_count>
      <attachid>126954</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 16:54:20 -0800</bug_when>
    <thetext>Comment on attachment 126954
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp:268
&gt;&gt;&gt;&gt; +    return m_acceptedExtensionsBuilder.toAtomicString().string();
&gt;&gt;&gt; 
&gt;&gt;&gt; Why toAtomicString().string() instead of toString()?
&gt;&gt; 
&gt;&gt; StringBuilder::toString() isn&apos;t a const member function so I can&apos;t call it in acceptedExtensions(), which is a const member function. Looks like win EWS is red and I can&apos;t call toAtomicString() here so I&apos;ll make m_acceptedExtensionsBuilder mutable.
&gt; 
&gt; Ah, I see. StringBuilder::toString() is not const.
&gt; How about StringBuilder::toStringPreserveCapacity()?

It works. Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556805</commentid>
    <comment_count>18</comment_count>
      <attachid>127081</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-14 17:26:56 -0800</bug_when>
    <thetext>Comment on attachment 127081
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556809</commentid>
    <comment_count>19</comment_count>
      <attachid>127081</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-02-14 17:32:48 -0800</bug_when>
    <thetext>Comment on attachment 127081
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556841</commentid>
    <comment_count>20</comment_count>
      <attachid>127081</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 18:12:03 -0800</bug_when>
    <thetext>Comment on attachment 127081
Patch

Clearing flags on attachment: 127081

Committed r107769: &lt;http://trac.webkit.org/changeset/107769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556842</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 18:12:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126880</attachid>
            <date>2012-02-13 18:07:24 -0800</date>
            <delta_ts>2012-02-14 01:47:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78557-20120214110722.patch</filename>
            <type>text/plain</type>
            <size>18336</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVhZDc4Mzg1Y2NjNGY4
YTIwNzQyOGI0MTAwODU2MmVlNTMwMGMyMC4uMjI4MzgyY2VlNjE0ODI2YzliYTBlZjAxZGU0NGE2
ZjViMmJmY2QwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAyLTEzICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZXh0ZW5zaW9uIGF0dHJpYnV0ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU1NworCisgICAgICAgIEltcGxlbWVudCBXZWJT
b2NrZXQgImV4dGVuc2lvbnMiIGF0dHJpYnV0ZSB0aGF0IGhvbGRzIGEgbGlzdCBvZgorICAgICAg
ICBleHRlbnNpb24gdGhlIHNlcnZlciBhY2NlcHRlZC4gTm8gY2hhbmdlIGluIGJlaGF2aW9yIGF0
IHRoaXMgdGltZQorICAgICAgICBiZWNhdXNlIHdlIGRvbid0IHNlbmQgYW55IGV4dGVuc2lvbiBv
biBoYW5kc2hha2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2V4dGVu
c2lvbnMuaHRtbCBjaGVja3MgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLgorCisgICAgICAg
ICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOiBBZGQgZXh0ZW5zaW9u
cygpLgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZXh0ZW5zaW9ucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMp
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6IEFkZGVkIG1f
ZXh0ZW5zaW9ucyBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmV4dGVuc2lvbnMpOiBS
ZXR1cm5zIG1fZXh0ZW5zaW9ucy4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAg
KFdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUpOiBTdG9yZXMgYWNjZXB0ZWQgZXh0ZW5zaW9u
VG9rZW4gaW50byBtX2FjY2VwdGVkRXh0ZW5zaW9ucworICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjphY2NlcHRlZEV4dGVu
c2lvbnMpOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaDoKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6YWNjZXB0ZWRFeHRlbnNpb25zKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
OgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OmV4dGVuc2lvbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6d29ya2VyQ29udGV4dERpZENvbm5lY3QpOiBDYWxscyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDb25uZWN0KTogUGFzc2Vz
IGV4dGVuc2lvbnMgYXMgYW4gYXJndW1lbnQuCisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwpOgorCiAyMDEyLTAyLTEzICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggdGhlIFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGVkZmNhMThkZjFlNzJlMmYzM2YwYmJkYjE4YjEzYjNmZTk1YjM0YTguLmM3
MGMxOTlmMTRkZmE3ZWU2NWQ1MzA0MmY2YjQ4ODhhNzdiNDViNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMTMgIEtlbmljaGkgSXNoaWJhc2hp
ICA8YmFzaGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIEFkZCBleHRlbnNp
b24gYXR0cmlidXRlIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc4NTU3CisKKyAgICAgICAgQWRkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXI6OmFjY2VwdGVkRXh0ZW5zaW9ucygpIGNoZWNrcy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1RfRik6CisKIDIwMTItMDIt
MTMgIE5pY28gV2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gTGV0IFdlYktpdDo6aW5pdGlhbGl6ZSBjYWxsIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
IG9uIG1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBlOTNjZjg2ODQ2MmNjZWU2ZmFhNGViNjNjOWE0M2Rj
YzQ2YzMzYzAzLi5hMTQ1ODJhOGZkOGJjM2JlZGQ3NjkyOTczZDEwMDJhNjEzMTIyMDllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdXNl
SGl4aWU3NlByb3RvY29sKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3Vi
cHJvdG9jb2woKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBj
YWxsYmFjayBpcyBpbnZva2VkLgorICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSA9IDA7
IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZv
a2VkLgogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJikgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHAKaW5kZXggM2JlMDRhOThmY2QzZWQ2NDBjZjcyODRjYzlhYzdhOTFlNjA4
MWU4OS4uMGRiNzA4ZjE3ZTEyZGU0M2M4MzM4NjE5MzNlYzI1ZDIwYWM3ZjczZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtOTUsNiArOTUsMjEgQEAgdm9p
ZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldFN1YnByb3RvY29s
KGNvbnN0IFN0cmluZyYgc3VicHIKICAgICAgICAgbWVtY3B5KG1fc3VicHJvdG9jb2wuZGF0YSgp
LCBzdWJwcm90b2NvbC5jaGFyYWN0ZXJzKCksIHNpemVvZihVQ2hhcikgKiBsZW5ndGgpOwogfQog
CitTdHJpbmcgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpleHRlbnNp
b25zKCkgY29uc3QKK3sKKyAgICBpZiAobV9leHRlbnNpb25zLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygiIik7CisgICAgcmV0dXJuIFN0cmluZyhtX2V4dGVuc2lvbnMpOworfQor
Cit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6c2V0RXh0ZW5z
aW9ucyhjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnMpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
ZXh0ZW5zaW9ucy5sZW5ndGgoKTsKKyAgICBtX2V4dGVuc2lvbnMucmVzaXplKGxlbmd0aCk7Cisg
ICAgaWYgKGxlbmd0aCkKKyAgICAgICAgbWVtY3B5KG1fZXh0ZW5zaW9ucy5kYXRhKCksIGV4dGVu
c2lvbnMuY2hhcmFjdGVycygpLCBzaXplb2YoVUNoYXIpICogbGVuZ3RoKTsKK30KKwogYm9vbCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNlbmRSZXF1ZXN0UmVzdWx0
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZW5kUmVxdWVzdFJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGVjOTM5N2NkYjQyNWE3YjE1YzZlZWZhNWYx
YTZiYjY3ODQyMmFhNzIuLmU4M2E4MGE0YmM5OTdhYTcwOWU3YTBmMjY1MjAxYWFkMmM0ZWJhOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaApAQCAtNTksOSArNTksMTEg
QEAgcHVibGljOgogICAgIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRVc2VIaXhpZTc2UHJvdG9jb2woYm9vbCk7CiAKLSAgICAvLyBTdWJwcm90b2NvbCBpcyBj
YWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENvbm5lY3QoKSBjYWxsYmFjayBp
cyBpbnZva2VkLgorICAgIC8vIFN1YnByb3RvY29sIGFuZCBleHRlbnNpb25zIGFyZSBjYWNoZWQg
dG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZv
a2VkLgogICAgIFN0cmluZyBzdWJwcm90b2NvbCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U3VicHJv
dG9jb2woY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGV4dGVuc2lvbnMoKSBjb25zdDsKKyAg
ICB2b2lkIHNldEV4dGVuc2lvbnMoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIHNlbmRSZXF1
ZXN0UmVzdWx0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZW5kUmVxdWVzdFJlc3VsdChib29sKTsK
QEAgLTk1LDcgKzk3LDkgQEAgcHJvdGVjdGVkOgogICAgIFdlYlNvY2tldENoYW5uZWxDbGllbnQq
IG1fY2xpZW50OwogICAgIGJvb2wgbV9zeW5jTWV0aG9kRG9uZTsKICAgICBib29sIG1fdXNlSGl4
aWU3NlByb3RvY29sOwotICAgIFZlY3RvcjxVQ2hhcj4gbV9zdWJwcm90b2NvbDsgLy8gVGhyZWFk
U2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBhIFN0cmluZyBtZW1iZXIgdmFyaWFibGUuCisg
ICAgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBTdHJpbmcgbWVtYmVyIHZh
cmlhYmxlcy4KKyAgICBWZWN0b3I8VUNoYXI+IG1fc3VicHJvdG9jb2w7CisgICAgVmVjdG9yPFVD
aGFyPiBtX2V4dGVuc2lvbnM7CiAgICAgYm9vbCBtX3NlbmRSZXF1ZXN0UmVzdWx0OwogICAgIHVu
c2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICBib29sIG1fc3VzcGVuZGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDMwMTBlYTMwZTViN2JlYWY4
MTFjMmY1ZjE3ZWU3ODJjODgyMTc1MTAuLjM2ZGJiNmYzMmMyNDk4M2MyMGY4NThlMGRhYzc3NjFm
YjY5YjEyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE1
NSw2ICsxNTUsNyBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgICwgbV9iaW5hcnlUeXBlKEJpbmFyeVR5cGVCbG9iKQogICAgICwgbV91
c2VIaXhpZTc2UHJvdG9jb2wodHJ1ZSkKICAgICAsIG1fc3VicHJvdG9jb2woIiIpCisgICAgLCBt
X2V4dGVuc2lvbnMoIiIpCiB7CiB9CiAKQEAgLTM4Nyw4ICszODgsNyBAQCBTdHJpbmcgV2ViU29j
a2V0OjpleHRlbnNpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAvLyBXZWJTb2NrZXQgcHJvdG9jb2wgZXh0
ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4g
bV9leHRlbnNpb25zOwogfQogCiBTdHJpbmcgV2ViU29ja2V0OjpiaW5hcnlUeXBlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGNhZTU3ZDJhNzYzZTYxNzE0
ZDY5MjExN2RmODZmMjA0NGI1NWI2NWQuLjFlNDQyNDVlOGExYzlmYWFiNzk4MWFlZmU1NzBkNWY1
MTY2ZTUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMTM2LDYg
KzEzNiw3IEBAIHByaXZhdGU6CiAgICAgQmluYXJ5VHlwZSBtX2JpbmFyeVR5cGU7CiAgICAgYm9v
bCBtX3VzZUhpeGllNzZQcm90b2NvbDsKICAgICBTdHJpbmcgbV9zdWJwcm90b2NvbDsKKyAgICBT
dHJpbmcgbV9leHRlbnNpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNTM0MzZl
MzlhZWI2NzZhMzU5MTg4Y2MxMGJmM2M2NDYzZmE3ZjBiZi4uMThmNDM1MWRjZTNmM2EyOGU2YjZh
OTU2M2JmMjIwYjk1ZGRkYWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNTMsNiArMTUzLDE3IEBAIFN0cmluZyBXZWJTb2NrZXRD
aGFubmVsOjpzdWJwcm90b2NvbCgpCiAgICAgcmV0dXJuIHNlcnZlclByb3RvY29sOwogfQogCitT
dHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCit7CisgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lvbnMiLCB0aGlzKTsKKyAgICBpZiAoIW1faGFu
ZHNoYWtlIHx8IG1faGFuZHNoYWtlLT5tb2RlKCkgIT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25u
ZWN0ZWQpCisgICAgICAgIHJldHVybiAiIjsKKyAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1faGFu
ZHNoYWtlLT5hY2NlcHRlZEV4dGVuc2lvbnMoKTsKKyAgICBpZiAoZXh0ZW5zaW9ucy5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuICIiOworICAgIHJldHVybiBleHRlbnNpb25zOworfQorCiBib29s
IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIExP
RyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwgdGhpcywgbWVzc2FnZS51
dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmgKaW5kZXggOWY5YmFiOGIxYzMwZmFiYmIzZTYwZDc1ZmZmN2E0ZTM5NTlmN2ZlMC4uOGJk
YjQ3ZmEyZmU3OTNlMTBiMTJjNGNhOTdjNzRmYjAzOGRkYTdkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
c2VuZChjb25zdCBBcnJheUJ1ZmZlciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzZW5k
KGNvbnN0IEJsb2ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCmluZGV4IGQ4NTA5MmFh
ODdiYTYyZDc0MmUzOWUyODE2YzIwODIyY2M0NDgwMTAuLmMxMzU2NDg4ZDE4YzMwMTlmMThkYjA2
NjM4YWJjNGNiZGIyOGY4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApAQCAtMTg2LDYgKzE4Niw3
IEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6cHJvY2Vzc0hlYWRlclZhbHVl
KGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUpCiAKICAgICBjb25zdCBDU3RyaW5nIGhlYWRlclZh
bHVlRGF0YSA9IGhlYWRlclZhbHVlLnV0ZjgoKTsKICAgICBFeHRlbnNpb25QYXJzZXIgcGFyc2Vy
KGhlYWRlclZhbHVlRGF0YS5kYXRhKCksIGhlYWRlclZhbHVlRGF0YS5kYXRhKCkgKyBoZWFkZXJW
YWx1ZURhdGEubGVuZ3RoKCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGFjY2VwdGVkRXh0ZW5zaW9u
czsKIAogICAgIHdoaWxlICghcGFyc2VyLmZpbmlzaGVkKCkpIHsKICAgICAgICAgLy8gUGFyc2Ug
ZXh0ZW5zaW9uLXRva2VuLgpAQCAtMjIzLDggKzIyNCwxMSBAQCBib29sIFdlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRlclZh
bHVlKQogICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX3Byb2Nlc3NvcnMuc2l6ZSgp
OyArK2luZGV4KSB7CiAgICAgICAgICAgICBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IqIHBy
b2Nlc3NvciA9IG1fcHJvY2Vzc29yc1tpbmRleF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoZXh0
ZW5zaW9uVG9rZW4gPT0gcHJvY2Vzc29yLT5leHRlbnNpb25Ub2tlbigpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHByb2Nlc3Nvci0+cHJvY2Vzc1Jlc3BvbnNlKGV4dGVuc2lvblBhcmFtZXRlcnMp
KQorICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzb3ItPnByb2Nlc3NSZXNwb25zZShleHRlbnNp
b25QYXJhbWV0ZXJzKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWFjY2VwdGVkRXh0ZW5z
aW9ucy5jb250YWlucyhleHRlbnNpb25Ub2tlbikpCisgICAgICAgICAgICAgICAgICAgICAgICBh
Y2NlcHRlZEV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvblRva2VuKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9IHByb2Nlc3Nvci0+ZmFpbHVyZVJlYXNvbigpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTIzNSw3ICsyMzksMjMgQEAgYm9vbCBXZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5n
JiBoZWFkZXJWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlZFN1Y2Nlc3NmdWxseSgpOworICAgIGlmICghcGFy
c2VyLnBhcnNlZFN1Y2Nlc3NmdWxseSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBB
U1NFUlQoYWNjZXB0ZWRFeHRlbnNpb25zLnNpemUoKSk7CisgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGFjY2VwdGVkRXh0ZW5zaW9uc1swXSk7CisgICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPCBhY2NlcHRlZEV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoIiwiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYWNjZXB0
ZWRFeHRlbnNpb25zW2ldKTsKKyAgICB9CisgICAgbV9hY2NlcHRlZEV4dGVuc2lvbnMgPSBidWls
ZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBXZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyOjphY2NlcHRlZEV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2FjY2VwdGVkRXh0ZW5zaW9uczsKIH0KIAogU3RyaW5nIFdlYlNvY2tldEV4dGVuc2lv
bkRpc3BhdGNoZXI6OmZhaWx1cmVSZWFzb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaAppbmRleCBm
ODgyYmI5ZDA4MmE0NmM3ZWVmNjI3ODhhZmU2ZDI0NTQyZTA2YjYyLi4yM2IxOTQ0YTVhOGUyYzA1
ZTNlOWE3OWMxNjRiNzRmNGQ4NWZmOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaApAQCAtNTAsMTAgKzUw
LDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcgY3JlYXRlSGVhZGVyVmFsdWUoKSBjb25z
dDsKIAogICAgIGJvb2wgcHJvY2Vzc0hlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIFN0
cmluZyBhY2NlcHRlZEV4dGVuc2lvbnMoKSBjb25zdDsKICAgICBTdHJpbmcgZmFpbHVyZVJlYXNv
bigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFZlY3RvcjxPd25QdHI8V2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yPiA+IG1fcHJvY2Vzc29yczsKKyAgICBTdHJpbmcgbV9hY2NlcHRlZEV4dGVu
c2lvbnM7CiAgICAgU3RyaW5nIG1fZmFpbHVyZVJlYXNvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCBiMjYxNTU3Mzg0
ZmM1OGNlY2IzZDRjYzc4ZGY2NmNiNWJmOGYyYmZmLi44Y2M1MDllNTk2OTk0OTBiNWIwZTQ1OWQx
ZGQxOGY3OGYzN2Q2YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwCkBAIC00NzYsNiArNDc2LDExIEBAIFN0cmluZyBXZWJTb2NrZXRI
YW5kc2hha2U6OnNlcnZlcldlYlNvY2tldEFjY2VwdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVz
cG9uc2UuaGVhZGVyRmllbGRzKCkuZ2V0KCJzZWMtd2Vic29ja2V0LWFjY2VwdCIpOwogfQogCitT
dHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjphY2NlcHRlZEV4dGVuc2lvbnMoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuYWNjZXB0ZWRFeHRlbnNpb25zKCk7Cit9
CisKIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiBXZWJTb2NrZXRIYW5kc2hha2U6
OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZXNwb25z
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmlu
ZGV4IDk3NzdmYjk0ZGFlNWJiZjcyY2Y1ZDY5NWU4Y2ZhMGUwOWE5MTU4NGEuLmIwMjVmMGMyN2Q3
ZWI0ZDJhZDUyY2Q3YTMwMDFlMTVlYjlhMTI3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIHNlcnZlclVwZ3JhZGUoKSBjb25zdDsKICAgICBTdHJpbmcgc2VydmVyQ29ubmVj
dGlvbigpIGNvbnN0OwogICAgIFN0cmluZyBzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQoKSBjb25zdDsg
Ly8gT25seSBmb3IgaHliaS0xMCBoYW5kc2hha2UuCisgICAgU3RyaW5nIGFjY2VwdGVkRXh0ZW5z
aW9ucygpIGNvbnN0OwogCiAgICAgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHNl
cnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggZjBlNjNlMTI1MjU0OTk0YjVjNWI2MjYwYjUxMDVhM2Y3ZWE4MjI2NS4uYWYwM2E0
ZTY3Y2FiMzE5ZjAwYzhmMzhjZWMyZDIyYTlhZThmMGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAKQEAgLTgyLDYgKzgyLDEyIEBAIFN0cmluZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6c3VicHJvdG9jb2woKQogICAgIHJldHVybiBtX3dvcmtlckNsaWVudFdyYXBw
ZXItPnN1YnByb3RvY29sKCk7CiB9CiAKK1N0cmluZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCit7CisgICAgQVNTRVJUKG1fd29ya2VyQ2xpZW50V3JhcHBl
cik7CisgICAgcmV0dXJuIG1fd29ya2VyQ2xpZW50V3JhcHBlci0+ZXh0ZW5zaW9ucygpOworfQor
CiBib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fYnJpZGdlKQpAQCAtMjYyLDE3ICsyNjgsMTggQEAg
dm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6cmVzdW1lKCkKICAg
ICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5yZXN1bWUoKTsKIH0KIAotc3RhdGljIHZvaWQgd29y
a2VyQ29udGV4dERpZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNs
aWVudFdyYXBwZXIsIGNvbnN0IFN0cmluZyYgc3VicHJvdG9jb2wpCitzdGF0aWMgdm9pZCB3b3Jr
ZXJDb250ZXh0RGlkQ29ubmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xp
ZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiBzdWJwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb25zKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJD
b250ZXh0KCkpOwogICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldFN1YnByb3RvY29sKHN1YnBy
b3RvY29sKTsKKyAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRFeHRlbnNpb25zKGV4dGVuc2lv
bnMpOwogICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZENvbm5lY3QoKTsKIH0KIAogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCgpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRD
b25uZWN0LCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnN1
YnByb3RvY29sKCkpLCBtX3Rhc2tNb2RlKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRD
b25uZWN0LCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnN1
YnByb3RvY29sKCksIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmV4dGVuc2lvbnMoKSksIG1fdGFz
a01vZGUpOwogfQogCiBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZU1lc3NhZ2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCAyYjFmYTM4ZGZhNGM1
YzVkZThhZGFlOTRhNTRkNDFhYjYyOGYwODRjLi4zMTdmY2U5M2NlZmExM2UxMzMwNGE2NzFlYTlm
YmY3MTkxMzBkZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02NCw2ICs2NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBib29sIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgc2VuZChjb25zdCBCbG9iJikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRl
c3QuY3BwCmluZGV4IGZhMGI3ZDdkZGE4YTZkZmY2OTU4Y2UyZTg0MTU0YmEzMjcwNjUxNGQuLmU2
ZTk5ZGVkYzMwNjI3OGJkMWNhMjNmMGVmNTlkNjhhNWJjMWYxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlclRlc3QuY3BwCkBAIC05MCw2ICs5MCw3IEBAIFRFU1RfRihXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyVGVzdCwgVGVzdFNpbmdsZSkKICAgICBFWFBFQ1RfVFJVRShtX2V4dGVu
c2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKCJkZWZsYXRlLWZyYW1lIikpOwogICAgIEVYUEVDVF9F
USgxVUwsIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKCJk
ZWZsYXRlLWZyYW1lIiwgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnNbMF0pOworICAgIEVYUEVDVF9F
USgiZGVmbGF0ZS1mcmFtZSIsIG1fZXh0ZW5zaW9ucy5hY2NlcHRlZEV4dGVuc2lvbnMoKSk7CiAg
ICAgRVhQRUNUX0VRKDAsIG1fcGFyc2VkUGFyYW1ldGVyc1swXS5zaXplKCkpOwogfQogCkBAIC0x
MjIsNiArMTIzLDcgQEAgVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBU
ZXN0TXVsdGlwbGUpCiAgICAgYWRkTW9ja1Byb2Nlc3NvcigibXV4Iik7CiAgICAgYWRkTW9ja1By
b2Nlc3NvcigiZGVmbGF0ZS1mcmFtZSIpOwogICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5w
cm9jZXNzSGVhZGVyVmFsdWUoIm11eCA7ICBtYXgtY2hhbm5lbHMgPTQ7Zmxvdy1jb250cm9sLCBk
ZWZsYXRlLWZyYW1lICAiKSk7CisgICAgRVhQRUNUX0VRKCJtdXgsZGVmbGF0ZS1mcmFtZSIsIG1f
ZXh0ZW5zaW9ucy5hY2NlcHRlZEV4dGVuc2lvbnMoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplb2YoZXhwZWN0ZWQpIC8gc2l6ZW9mKGV4cGVjdGVkWzBdKTsgKytpKSB7CiAgICAg
ICAgIEVYUEVDVF9FUShleHBlY3RlZFtpXS50b2tlbiwgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnNb
aV0pOwogICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXhwZWN0ZWRQYXJh
bWV0ZXJzID0gZXhwZWN0ZWRbaV0ucGFyYW1ldGVyczsKQEAgLTE2OSw2ICsxNzEsNyBAQCBURVNU
X0YoV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QsIFRlc3RJbnZhbGlkKQogICAgICAg
ICBhZGRNb2NrUHJvY2Vzc29yKCJ4LWZvbyIpOwogICAgICAgICBhZGRNb2NrUHJvY2Vzc29yKCJ4
LWJhciIpOwogICAgICAgICBFWFBFQ1RfRkFMU0UobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJW
YWx1ZShpbnB1dHNbaV0pKTsKKyAgICAgICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLmFjY2Vw
dGVkRXh0ZW5zaW9ucygpLmlzTnVsbCgpKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126937</attachid>
            <date>2012-02-14 01:47:22 -0800</date>
            <delta_ts>2012-02-14 02:49:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78557-20120214184720.patch</filename>
            <type>text/plain</type>
            <size>18365</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjkxMTZhOGQ0ZjI3MWYz
MTYxOGIxNWZlYTNmZTVlMTIwNWMyMmRlZC4uMDU1MWFlZDQ5MTJlZTcyMjA1MzMzYzdmZDk5MGVi
ZTZjODZkN2U1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAyLTEzICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZXh0ZW5zaW9uIGF0dHJpYnV0ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU1NworCisgICAgICAgIEltcGxlbWVudCBXZWJT
b2NrZXQgImV4dGVuc2lvbnMiIGF0dHJpYnV0ZSB0aGF0IGhvbGRzIGEgbGlzdCBvZgorICAgICAg
ICBleHRlbnNpb24gdGhlIHNlcnZlciBhY2NlcHRlZC4gTm8gY2hhbmdlIGluIGJlaGF2aW9yIGF0
IHRoaXMgdGltZQorICAgICAgICBiZWNhdXNlIHdlIGRvbid0IHNlbmQgYW55IGV4dGVuc2lvbiBv
biBoYW5kc2hha2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2V4dGVu
c2lvbnMuaHRtbCBjaGVja3MgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLgorCisgICAgICAg
ICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOiBBZGQgZXh0ZW5zaW9u
cygpLgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZXh0ZW5zaW9ucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMp
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6IEFkZGVkIG1f
ZXh0ZW5zaW9ucyBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmV4dGVuc2lvbnMpOiBS
ZXR1cm5zIG1fZXh0ZW5zaW9ucy4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAg
KFdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUpOiBTdG9yZXMgYWNjZXB0ZWQgZXh0ZW5zaW9u
VG9rZW4gaW50byBtX2FjY2VwdGVkRXh0ZW5zaW9ucworICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjphY2NlcHRlZEV4dGVu
c2lvbnMpOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaDoKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6YWNjZXB0ZWRFeHRlbnNpb25zKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
OgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OmV4dGVuc2lvbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6d29ya2VyQ29udGV4dERpZENvbm5lY3QpOiBDYWxscyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDb25uZWN0KTogUGFzc2Vz
IGV4dGVuc2lvbnMgYXMgYW4gYXJndW1lbnQuCisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwpOgorCiAyMDEyLTAyLTEzICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5cGUgcmV0dXJuIERPQ1VN
RU5UX0ZSQUdNRU5UX05PREUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDgzYjZhM2Rk
NjcwNzJlZTJkMjYxOTE2NGQxYzZhNzVlZTNkOGFkZjcuLmZjYzkyZWUzNDVhOTJiZjcxOTQ4Mjkx
ZWViNTMxNjY3MmRmMTYzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDItMTMgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtXZWJTb2NrZXRdIEFkZCBleHRlbnNpb24gYXR0cmlidXRlIHN1cHBvcnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NTU3CisK
KyAgICAgICAgQWRkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmFjY2VwdGVkRXh0ZW5z
aW9ucygpIGNoZWNrcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHRlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1RfRik6CisKIDIwMTItMDItMTMgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSByZXR1
cm4gRE9DVU1FTlRfRlJBR01FTlRfTk9ERS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBlOTNjZjg2ODQ2MmNj
ZWU2ZmFhNGViNjNjOWE0M2RjYzQ2YzMzYzAzLi5hMTQ1ODJhOGZkOGJjM2JlZGQ3NjkyOTczZDEw
MDJhNjEzMTIyMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSA9IDA7CiAgICAg
dmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFm
dGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgorICAgIHZpcnR1YWwgU3RyaW5n
IGV4dGVuc2lvbnMoKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3Qo
KSBjYWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEFycmF5QnVmZmVy
JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggM2JlMDRhOThmY2QzZWQ2NDBj
ZjcyODRjYzlhYzdhOTFlNjA4MWU4OS4uMGRiNzA4ZjE3ZTEyZGU0M2M4MzM4NjE5MzNlYzI1ZDIw
YWM3ZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAt
OTUsNiArOTUsMjEgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OnNldFN1YnByb3RvY29sKGNvbnN0IFN0cmluZyYgc3VicHIKICAgICAgICAgbWVtY3B5KG1f
c3VicHJvdG9jb2wuZGF0YSgpLCBzdWJwcm90b2NvbC5jaGFyYWN0ZXJzKCksIHNpemVvZihVQ2hh
cikgKiBsZW5ndGgpOwogfQogCitTdHJpbmcgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpleHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICBpZiAobV9leHRlbnNpb25zLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAgcmV0dXJuIFN0cmluZyht
X2V4dGVuc2lvbnMpOworfQorCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6c2V0RXh0ZW5zaW9ucyhjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnMpCit7CisgICAg
dW5zaWduZWQgbGVuZ3RoID0gZXh0ZW5zaW9ucy5sZW5ndGgoKTsKKyAgICBtX2V4dGVuc2lvbnMu
cmVzaXplKGxlbmd0aCk7CisgICAgaWYgKGxlbmd0aCkKKyAgICAgICAgbWVtY3B5KG1fZXh0ZW5z
aW9ucy5kYXRhKCksIGV4dGVuc2lvbnMuY2hhcmFjdGVycygpLCBzaXplb2YoVUNoYXIpICogbGVu
Z3RoKTsKK30KKwogYm9vbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OnNlbmRSZXF1ZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZW5kUmVxdWVzdFJl
c3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGVjOTM5N2Nk
YjQyNWE3YjE1YzZlZWZhNWYxYTZiYjY3ODQyMmFhNzIuLmU4M2E4MGE0YmM5OTdhYTcwOWU3YTBm
MjY1MjAxYWFkMmM0ZWJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
aApAQCAtNTksOSArNTksMTEgQEAgcHVibGljOgogICAgIGJvb2wgdXNlSGl4aWU3NlByb3RvY29s
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRVc2VIaXhpZTc2UHJvdG9jb2woYm9vbCk7CiAKLSAgICAv
LyBTdWJwcm90b2NvbCBpcyBjYWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENv
bm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgorICAgIC8vIFN1YnByb3RvY29sIGFuZCBleHRl
bnNpb25zIGFyZSBjYWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENvbm5lY3Qo
KSBjYWxsYmFjayBpcyBpbnZva2VkLgogICAgIFN0cmluZyBzdWJwcm90b2NvbCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0U3VicHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGV4dGVu
c2lvbnMoKSBjb25zdDsKKyAgICB2b2lkIHNldEV4dGVuc2lvbnMoY29uc3QgU3RyaW5nJik7CiAK
ICAgICBib29sIHNlbmRSZXF1ZXN0UmVzdWx0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZW5kUmVx
dWVzdFJlc3VsdChib29sKTsKQEAgLTk1LDcgKzk3LDkgQEAgcHJvdGVjdGVkOgogICAgIFdlYlNv
Y2tldENoYW5uZWxDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9zeW5jTWV0aG9kRG9uZTsK
ICAgICBib29sIG1fdXNlSGl4aWU3NlByb3RvY29sOwotICAgIFZlY3RvcjxVQ2hhcj4gbV9zdWJw
cm90b2NvbDsgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBhIFN0cmluZyBt
ZW1iZXIgdmFyaWFibGUuCisgICAgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2
ZSBTdHJpbmcgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICBWZWN0b3I8VUNoYXI+IG1fc3VicHJvdG9j
b2w7CisgICAgVmVjdG9yPFVDaGFyPiBtX2V4dGVuc2lvbnM7CiAgICAgYm9vbCBtX3NlbmRSZXF1
ZXN0UmVzdWx0OwogICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICBib29s
IG1fc3VzcGVuZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4
IDMwMTBlYTMwZTViN2JlYWY4MTFjMmY1ZjE3ZWU3ODJjODgyMTc1MTAuLjM2ZGJiNmYzMmMyNDk4
M2MyMGY4NThlMGRhYzc3NjFmYjY5YjEyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKQEAgLTE1NSw2ICsxNTUsNyBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICwgbV9iaW5hcnlUeXBlKEJpbmFyeVR5
cGVCbG9iKQogICAgICwgbV91c2VIaXhpZTc2UHJvdG9jb2wodHJ1ZSkKICAgICAsIG1fc3VicHJv
dG9jb2woIiIpCisgICAgLCBtX2V4dGVuc2lvbnMoIiIpCiB7CiB9CiAKQEAgLTM4Nyw4ICszODgs
NyBAQCBTdHJpbmcgV2ViU29ja2V0OjpleHRlbnNpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV91
c2VIaXhpZTc2UHJvdG9jb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAvLyBXZWJT
b2NrZXQgcHJvdG9jb2wgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgIHJldHVy
biAiIjsKKyAgICByZXR1cm4gbV9leHRlbnNpb25zOwogfQogCiBTdHJpbmcgV2ViU29ja2V0Ojpi
aW5hcnlUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4
IGNhZTU3ZDJhNzYzZTYxNzE0ZDY5MjExN2RmODZmMjA0NGI1NWI2NWQuLjFlNDQyNDVlOGExYzlm
YWFiNzk4MWFlZmU1NzBkNWY1MTY2ZTUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgQmluYXJ5VHlwZSBtX2Jp
bmFyeVR5cGU7CiAgICAgYm9vbCBtX3VzZUhpeGllNzZQcm90b2NvbDsKICAgICBTdHJpbmcgbV9z
dWJwcm90b2NvbDsKKyAgICBTdHJpbmcgbV9leHRlbnNpb25zOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggNTM0MzZlMzlhZWI2NzZhMzU5MTg4Y2MxMGJmM2M2NDYzZmE3ZjBiZi4uMThm
NDM1MWRjZTNmM2EyOGU2YjZhOTU2M2JmMjIwYjk1ZGRkYWZhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNTMsNiArMTUzLDE3IEBA
IFN0cmluZyBXZWJTb2NrZXRDaGFubmVsOjpzdWJwcm90b2NvbCgpCiAgICAgcmV0dXJuIHNlcnZl
clByb3RvY29sOwogfQogCitTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCit7
CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lvbnMiLCB0aGlz
KTsKKyAgICBpZiAoIW1faGFuZHNoYWtlIHx8IG1faGFuZHNoYWtlLT5tb2RlKCkgIT0gV2ViU29j
a2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpCisgICAgICAgIHJldHVybiAiIjsKKyAgICBTdHJpbmcg
ZXh0ZW5zaW9ucyA9IG1faGFuZHNoYWtlLT5hY2NlcHRlZEV4dGVuc2lvbnMoKTsKKyAgICBpZiAo
ZXh0ZW5zaW9ucy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuICIiOworICAgIHJldHVybiBleHRl
bnNpb25zOworfQorCiBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVz
IiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOWY5YmFiOGIxYzMwZmFiYmIzZTYwZDc1ZmZm
N2E0ZTM5NTlmN2ZlMC4uOGJkYjQ3ZmEyZmU3OTNlMTBiMTJjNGNhOTdjNzRmYjAzOGRkYTdkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY4
LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2wo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9j
b2woKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwCmluZGV4IGQ4NTA5MmFhODdiYTYyZDc0MmUzOWUyODE2YzIwODIyY2M0NDgwMTAuLmMzOTM5
MWNkYWMyNWIwYmNhNjRjNGNjYzEwOWUyZDg5YzU4MTZjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNw
cApAQCAtMTg2LDcgKzE4Niw4IEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6
cHJvY2Vzc0hlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgaGVhZGVyVmFsdWUpCiAKICAgICBjb25z
dCBDU3RyaW5nIGhlYWRlclZhbHVlRGF0YSA9IGhlYWRlclZhbHVlLnV0ZjgoKTsKICAgICBFeHRl
bnNpb25QYXJzZXIgcGFyc2VyKGhlYWRlclZhbHVlRGF0YS5kYXRhKCksIGhlYWRlclZhbHVlRGF0
YS5kYXRhKCkgKyBoZWFkZXJWYWx1ZURhdGEubGVuZ3RoKCkpOwotCisgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIFZlY3Rvcjxib29sPiBzaG91bGRBcHBlbmRFeHRlbnNpb25Ub2tlbiht
X3Byb2Nlc3NvcnMuc2l6ZSgpLCB0cnVlKTsKICAgICB3aGlsZSAoIXBhcnNlci5maW5pc2hlZCgp
KSB7CiAgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi10b2tlbi4KICAgICAgICAgaWYgKCFwYXJz
ZXIuY29uc3VtZVRva2VuKCkpIHsKQEAgLTIyMyw4ICsyMjQsMTUgQEAgYm9vbCBXZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiBoZWFk
ZXJWYWx1ZSkKICAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wcm9jZXNzb3JzLnNp
emUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29y
KiBwcm9jZXNzb3IgPSBtX3Byb2Nlc3NvcnNbaW5kZXhdLmdldCgpOwogICAgICAgICAgICAgaWYg
KGV4dGVuc2lvblRva2VuID09IHByb2Nlc3Nvci0+ZXh0ZW5zaW9uVG9rZW4oKSkgewotICAgICAg
ICAgICAgICAgIGlmIChwcm9jZXNzb3ItPnByb2Nlc3NSZXNwb25zZShleHRlbnNpb25QYXJhbWV0
ZXJzKSkKKyAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc29yLT5wcm9jZXNzUmVzcG9uc2UoZXh0
ZW5zaW9uUGFyYW1ldGVycykpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEFwcGVu
ZEV4dGVuc2lvblRva2VuW2luZGV4XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFi
dWlsZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiLCIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZXh0ZW5z
aW9uVG9rZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQXBwZW5kRXh0ZW5zaW9u
VG9rZW5baW5kZXhdID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9IHByb2Nlc3Nvci0+ZmFpbHVyZVJlYXNvbigpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTIzNSw3ICsyNDMsMTYgQEAgYm9vbCBX
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3Ry
aW5nJiBoZWFkZXJWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgIH0KLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlZFN1Y2Nlc3NmdWxseSgpOworICAgIGlmICgh
cGFyc2VyLnBhcnNlZFN1Y2Nlc3NmdWxseSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBtX2FjY2VwdGVkRXh0ZW5zaW9ucyA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworU3RyaW5nIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmFjY2VwdGVk
RXh0ZW5zaW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWNjZXB0ZWRFeHRlbnNpb25zOwog
fQogCiBTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6ZmFpbHVyZVJlYXNvbigp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5oCmluZGV4IGY4ODJiYjlkMDgyYTQ2YzdlZWY2Mjc4OGFmZTZk
MjQ1NDJlMDZiNjIuLjIzYjE5NDRhNWE4ZTJjMDVlM2U5YTc5YzE2NGI3NGY0ZDg1ZmY5NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlz
cGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5oCkBAIC01MCwxMCArNTAsMTIgQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyBjcmVhdGVIZWFkZXJWYWx1ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBwcm9jZXNzSGVhZGVy
VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGFjY2VwdGVkRXh0ZW5zaW9ucygpIGNv
bnN0OwogICAgIFN0cmluZyBmYWlsdXJlUmVhc29uKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
VmVjdG9yPE93blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+ID4gbV9wcm9jZXNzb3Jz
OworICAgIFN0cmluZyBtX2FjY2VwdGVkRXh0ZW5zaW9uczsKICAgICBTdHJpbmcgbV9mYWlsdXJl
UmVhc29uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwCmluZGV4IGIyNjE1NTczODRmYzU4Y2VjYjNkNGNjNzhkZjY2Y2I1YmY4ZjJi
ZmYuLjhjYzUwOWU1OTY5OTQ5MGI1YjBlNDU5ZDFkZDE4Zjc4ZjM3ZDZiMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTQ3Niw2
ICs0NzYsMTEgQEAgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0QWNj
ZXB0KCkgY29uc3QKICAgICByZXR1cm4gbV9yZXNwb25zZS5oZWFkZXJGaWVsZHMoKS5nZXQoInNl
Yy13ZWJzb2NrZXQtYWNjZXB0Iik7CiB9CiAKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmFj
Y2VwdGVkRXh0ZW5zaW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXh0ZW5zaW9uRGlzcGF0
Y2hlci5hY2NlcHRlZEV4dGVuc2lvbnMoKTsKK30KKwogY29uc3QgV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBj
b25zdAogewogICAgIHJldHVybiBtX3Jlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggOTc3N2ZiOTRkYWU1YmJmNzJjZjVkNjk1
ZThjZmEwZTA5YTkxNTg0YS4uYjAyNWYwYzI3ZDdlYjRkMmFkNTJjZDdhMzAwMWUxNWViOWExMjcw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
CkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc2VydmVyVXBncmFkZSgpIGNv
bnN0OwogICAgIFN0cmluZyBzZXJ2ZXJDb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNl
cnZlcldlYlNvY2tldEFjY2VwdCgpIGNvbnN0OyAvLyBPbmx5IGZvciBoeWJpLTEwIGhhbmRzaGFr
ZS4KKyAgICBTdHJpbmcgYWNjZXB0ZWRFeHRlbnNpb25zKCkgY29uc3Q7CiAKICAgICBjb25zdCBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBmMGU2M2UxMjUyNTQ5OTRiNWM1
YjYyNjBiNTEwNWEzZjdlYTgyMjY1Li5hZjAzYTRlNjdjYWIzMTlmMDBjOGYzOGNlYzJkMjJhOWFl
OGYwZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtODIsNiArODIsMTIgQEAg
U3RyaW5nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzdWJwcm90b2NvbCgpCiAg
ICAgcmV0dXJuIG1fd29ya2VyQ2xpZW50V3JhcHBlci0+c3VicHJvdG9jb2woKTsKIH0KIAorU3Ry
aW5nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKCkKK3sKKyAg
ICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyKTsKKyAgICByZXR1cm4gbV93b3JrZXJDbGll
bnRXcmFwcGVyLT5leHRlbnNpb25zKCk7Cit9CisKIGJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghbV9i
cmlkZ2UpCkBAIC0yNjIsMTcgKzI2OCwxOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpQZWVyOjpyZXN1bWUoKQogICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnJl
c3VtZSgpOwogfQogCi1zdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkQ29ubmVjdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiBz
dWJwcm90b2NvbCkKK3N0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRDb25uZWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHN1
YnByb3RvY29sLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnMpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+c2V0U3VicHJvdG9jb2woc3VicHJvdG9jb2wpOworICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPnNldEV4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7CiAgICAgd29ya2VyQ2xpZW50V3JhcHBl
ci0+ZGlkQ29ubmVjdCgpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpQZWVyOjpkaWRDb25uZWN0KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZENvbm5lY3QsIG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c3VicHJvdG9jb2woKSksIG1fdGFza01vZGUpOwor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZENvbm5lY3QsIG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c3VicHJvdG9jb2woKSwgbV9tYWluV2ViU29ja2V0
Q2hhbm5lbC0+ZXh0ZW5zaW9ucygpKSwgbV90YXNrTW9kZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdv
cmtlckNvbnRleHREaWRSZWNlaXZlTWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
d29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oCmluZGV4IDJiMWZhMzhkZmE0YzVjNWRlOGFkYWU5NGE1NGQ0MWFiNjI4ZjA4NGMu
LjMxN2ZjZTkzY2VmYTEzZTEzMzA0YTY3MWVhOWZiZjcxOTEzMGRkYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1
c2VIaXhpZTc2UHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRl
bnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZl
ciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKaW5kZXggZmEwYjdkN2RkYThhNmRm
ZjY5NThjZTJlODQxNTRiYTMyNzA2NTE0ZC4uZTZlOTlkZWRjMzA2Mjc4YmQxY2EyM2YwZWY1OWQ2
OGE1YmMxZjE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKQEAgLTkwLDYg
KzkwLDcgQEAgVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0U2lu
Z2xlKQogICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoImRl
ZmxhdGUtZnJhbWUiKSk7CiAgICAgRVhQRUNUX0VRKDFVTCwgbV9wYXJzZWRFeHRlbnNpb25Ub2tl
bnMuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoImRlZmxhdGUtZnJhbWUiLCBtX3BhcnNlZEV4dGVu
c2lvblRva2Vuc1swXSk7CisgICAgRVhQRUNUX0VRKCJkZWZsYXRlLWZyYW1lIiwgbV9leHRlbnNp
b25zLmFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9wYXJzZWRQYXJh
bWV0ZXJzWzBdLnNpemUoKSk7CiB9CiAKQEAgLTEyMiw2ICsxMjMsNyBAQCBURVNUX0YoV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QsIFRlc3RNdWx0aXBsZSkKICAgICBhZGRNb2NrUHJv
Y2Vzc29yKCJtdXgiKTsKICAgICBhZGRNb2NrUHJvY2Vzc29yKCJkZWZsYXRlLWZyYW1lIik7CiAg
ICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZSgibXV4IDsgIG1h
eC1jaGFubmVscyA9NDtmbG93LWNvbnRyb2wsIGRlZmxhdGUtZnJhbWUgICIpKTsKKyAgICBFWFBF
Q1RfRVEoIm11eCxkZWZsYXRlLWZyYW1lIiwgbV9leHRlbnNpb25zLmFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihleHBlY3RlZCkgLyBzaXpl
b2YoZXhwZWN0ZWRbMF0pOyArK2kpIHsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkW2ldLnRv
a2VuLCBtX3BhcnNlZEV4dGVuc2lvblRva2Vuc1tpXSk7CiAgICAgICAgIGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+JiBleHBlY3RlZFBhcmFtZXRlcnMgPSBleHBlY3RlZFtpXS5wYXJhbWV0
ZXJzOwpAQCAtMTY5LDYgKzE3MSw3IEBAIFRFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyVGVzdCwgVGVzdEludmFsaWQpCiAgICAgICAgIGFkZE1vY2tQcm9jZXNzb3IoIngtZm9vIik7
CiAgICAgICAgIGFkZE1vY2tQcm9jZXNzb3IoIngtYmFyIik7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKGlucHV0c1tpXSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMuYWNjZXB0ZWRFeHRlbnNpb25zKCkuaXNOdWxsKCkpOwog
ICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126946</attachid>
            <date>2012-02-14 02:49:33 -0800</date>
            <delta_ts>2012-02-14 04:10:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78557-20120214194931.patch</filename>
            <type>text/plain</type>
            <size>22030</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjkxMTZhOGQ0ZjI3MWYz
MTYxOGIxNWZlYTNmZTVlMTIwNWMyMmRlZC4uMmM1ZjNjZmZkNWViMGZkNGMyZjk4OTJjMjMzZWQ0
MmFmNzU2ZDY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAyLTE0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZXh0ZW5zaW9uIGF0dHJpYnV0ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU1NworCisgICAgICAgIEltcGxlbWVudCBXZWJT
b2NrZXQgImV4dGVuc2lvbnMiIGF0dHJpYnV0ZSB0aGF0IGhvbGRzIGEgbGlzdCBvZgorICAgICAg
ICBleHRlbnNpb24gdGhlIHNlcnZlciBhY2NlcHRlZC4gTm8gY2hhbmdlIGluIGJlaGF2aW9yIGF0
IHRoaXMgdGltZQorICAgICAgICBiZWNhdXNlIHdlIGRvbid0IHNlbmQgYW55IGV4dGVuc2lvbiBv
biBoYW5kc2hha2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2V4dGVu
c2lvbnMuaHRtbCBjaGVja3MgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLgorCisgICAgICAg
ICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOiBBZGQgZXh0ZW5zaW9u
cygpLgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZXh0ZW5zaW9ucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMp
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6IEFkZGVkIG1f
ZXh0ZW5zaW9ucyBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmV4dGVuc2lvbnMpOiBS
ZXR1cm5zIG1fZXh0ZW5zaW9ucy4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAg
KFdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjpmYWlsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUpOiBTdG9yZXMgYWNjZXB0ZWQgZXh0
ZW5zaW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6
OmFjY2VwdGVkRXh0ZW5zaW9ucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjphY2NlcHRlZEV4dGVuc2lv
bnMpOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaDoKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZTo6YWNjZXB0ZWRFeHRlbnNpb25zKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmV4
dGVuc2lvbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
d29ya2VyQ29udGV4dERpZENvbm5lY3QpOiBDYWxscyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDb25uZWN0KTogUGFzc2VzIGV4
dGVuc2lvbnMgYXMgYW4gYXJndW1lbnQuCisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwpOgorCiAyMDEyLTAyLTEzICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDgzYjZhM2RkNjcw
NzJlZTJkMjYxOTE2NGQxYzZhNzVlZTNkOGFkZjcuLmIwMWQwNzQxZTVmY2UzZDA1NjkxNjQ2Mjdj
MjFhYjNjNDM5OTdiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDItMTQgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtXZWJTb2NrZXRdIEFkZCBleHRlbnNpb24gYXR0cmlidXRlIHN1cHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NTU3CisKKyAg
ICAgICAgQWRkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmFjY2VwdGVkRXh0ZW5zaW9u
cygpIGNoZWNrcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRFU1RfRik6CisKIDIwMTItMDItMTMgIEhheWF0byBJdG8gIDxoYXlhdG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSByZXR1cm4g
RE9DVU1FTlRfRlJBR01FTlRfTk9ERS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBlOTNjZjg2ODQ2MmNjZWU2
ZmFhNGViNjNjOWE0M2RjYzQ2YzMzYzAzLi5hMTQ1ODJhOGZkOGJjM2JlZGQ3NjkyOTczZDEwMDJh
NjEzMTIyMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
b25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVy
IGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgorICAgIHZpcnR1YWwgU3RyaW5nIGV4
dGVuc2lvbnMoKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBj
YWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggM2JlMDRhOThmY2QzZWQ2NDBjZjcy
ODRjYzlhYzdhOTFlNjA4MWU4OS4uMGRiNzA4ZjE3ZTEyZGU0M2M4MzM4NjE5MzNlYzI1ZDIwYWM3
ZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtOTUs
NiArOTUsMjEgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OnNldFN1YnByb3RvY29sKGNvbnN0IFN0cmluZyYgc3VicHIKICAgICAgICAgbWVtY3B5KG1fc3Vi
cHJvdG9jb2wuZGF0YSgpLCBzdWJwcm90b2NvbC5jaGFyYWN0ZXJzKCksIHNpemVvZihVQ2hhcikg
KiBsZW5ndGgpOwogfQogCitTdHJpbmcgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpleHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICBpZiAobV9leHRlbnNpb25zLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAgcmV0dXJuIFN0cmluZyhtX2V4
dGVuc2lvbnMpOworfQorCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6c2V0RXh0ZW5zaW9ucyhjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnMpCit7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gZXh0ZW5zaW9ucy5sZW5ndGgoKTsKKyAgICBtX2V4dGVuc2lvbnMucmVz
aXplKGxlbmd0aCk7CisgICAgaWYgKGxlbmd0aCkKKyAgICAgICAgbWVtY3B5KG1fZXh0ZW5zaW9u
cy5kYXRhKCksIGV4dGVuc2lvbnMuY2hhcmFjdGVycygpLCBzaXplb2YoVUNoYXIpICogbGVuZ3Ro
KTsKK30KKwogYm9vbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNl
bmRSZXF1ZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZW5kUmVxdWVzdFJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGVjOTM5N2NkYjQy
NWE3YjE1YzZlZWZhNWYxYTZiYjY3ODQyMmFhNzIuLmU4M2E4MGE0YmM5OTdhYTcwOWU3YTBmMjY1
MjAxYWFkMmM0ZWJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaApA
QCAtNTksOSArNTksMTEgQEAgcHVibGljOgogICAgIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRVc2VIaXhpZTc2UHJvdG9jb2woYm9vbCk7CiAKLSAgICAvLyBT
dWJwcm90b2NvbCBpcyBjYWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENvbm5l
Y3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgorICAgIC8vIFN1YnByb3RvY29sIGFuZCBleHRlbnNp
b25zIGFyZSBjYWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENvbm5lY3QoKSBj
YWxsYmFjayBpcyBpbnZva2VkLgogICAgIFN0cmluZyBzdWJwcm90b2NvbCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0U3VicHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGV4dGVuc2lv
bnMoKSBjb25zdDsKKyAgICB2b2lkIHNldEV4dGVuc2lvbnMoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBib29sIHNlbmRSZXF1ZXN0UmVzdWx0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZW5kUmVxdWVz
dFJlc3VsdChib29sKTsKQEAgLTk1LDcgKzk3LDkgQEAgcHJvdGVjdGVkOgogICAgIFdlYlNvY2tl
dENoYW5uZWxDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9zeW5jTWV0aG9kRG9uZTsKICAg
ICBib29sIG1fdXNlSGl4aWU3NlByb3RvY29sOwotICAgIFZlY3RvcjxVQ2hhcj4gbV9zdWJwcm90
b2NvbDsgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBhIFN0cmluZyBtZW1i
ZXIgdmFyaWFibGUuCisgICAgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBT
dHJpbmcgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICBWZWN0b3I8VUNoYXI+IG1fc3VicHJvdG9jb2w7
CisgICAgVmVjdG9yPFVDaGFyPiBtX2V4dGVuc2lvbnM7CiAgICAgYm9vbCBtX3NlbmRSZXF1ZXN0
UmVzdWx0OwogICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICBib29sIG1f
c3VzcGVuZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDMw
MTBlYTMwZTViN2JlYWY4MTFjMmY1ZjE3ZWU3ODJjODgyMTc1MTAuLjM2ZGJiNmYzMmMyNDk4M2My
MGY4NThlMGRhYzc3NjFmYjY5YjEyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKQEAgLTE1NSw2ICsxNTUsNyBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICwgbV9iaW5hcnlUeXBlKEJpbmFyeVR5cGVC
bG9iKQogICAgICwgbV91c2VIaXhpZTc2UHJvdG9jb2wodHJ1ZSkKICAgICAsIG1fc3VicHJvdG9j
b2woIiIpCisgICAgLCBtX2V4dGVuc2lvbnMoIiIpCiB7CiB9CiAKQEAgLTM4Nyw4ICszODgsNyBA
QCBTdHJpbmcgV2ViU29ja2V0OjpleHRlbnNpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV91c2VI
aXhpZTc2UHJvdG9jb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAvLyBXZWJTb2Nr
ZXQgcHJvdG9jb2wgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgIHJldHVybiAi
IjsKKyAgICByZXR1cm4gbV9leHRlbnNpb25zOwogfQogCiBTdHJpbmcgV2ViU29ja2V0OjpiaW5h
cnlUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGNh
ZTU3ZDJhNzYzZTYxNzE0ZDY5MjExN2RmODZmMjA0NGI1NWI2NWQuLjFlNDQyNDVlOGExYzlmYWFi
Nzk4MWFlZmU1NzBkNWY1MTY2ZTUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgQmluYXJ5VHlwZSBtX2JpbmFy
eVR5cGU7CiAgICAgYm9vbCBtX3VzZUhpeGllNzZQcm90b2NvbDsKICAgICBTdHJpbmcgbV9zdWJw
cm90b2NvbDsKKyAgICBTdHJpbmcgbV9leHRlbnNpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggNTM0MzZlMzlhZWI2NzZhMzU5MTg4Y2MxMGJmM2M2NDYzZmE3ZjBiZi4uMThmNDM1
MWRjZTNmM2EyOGU2YjZhOTU2M2JmMjIwYjk1ZGRkYWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNTMsNiArMTUzLDE3IEBAIFN0
cmluZyBXZWJTb2NrZXRDaGFubmVsOjpzdWJwcm90b2NvbCgpCiAgICAgcmV0dXJuIHNlcnZlclBy
b3RvY29sOwogfQogCitTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCit7Cisg
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lvbnMiLCB0aGlzKTsK
KyAgICBpZiAoIW1faGFuZHNoYWtlIHx8IG1faGFuZHNoYWtlLT5tb2RlKCkgIT0gV2ViU29ja2V0
SGFuZHNoYWtlOjpDb25uZWN0ZWQpCisgICAgICAgIHJldHVybiAiIjsKKyAgICBTdHJpbmcgZXh0
ZW5zaW9ucyA9IG1faGFuZHNoYWtlLT5hY2NlcHRlZEV4dGVuc2lvbnMoKTsKKyAgICBpZiAoZXh0
ZW5zaW9ucy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuICIiOworICAgIHJldHVybiBleHRlbnNp
b25zOworfQorCiBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwg
dGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOWY5YmFiOGIxYzMwZmFiYmIzZTYwZDc1ZmZmN2E0
ZTM5NTlmN2ZlMC4uOGJkYjQ3ZmEyZmU3OTNlMTBiMTJjNGNhOTdjNzRmYjAzOGRkYTdkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY4LDYg
KzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2woKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2wo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3Bw
CmluZGV4IGQ4NTA5MmFhODdiYTYyZDc0MmUzOWUyODE2YzIwODIyY2M0NDgwMTAuLjM3YmFlMTIy
ZjBmN2U5MzJiNGU3ZDQ5ZjU3MmVmNjhjZDY5ODc1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApA
QCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
aCIKIAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTczLDYgKzE3MywyNyBAQCBjb25zdCBTdHJpbmcgV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6Y3JlYXRlSGVhZGVyVmFsdWUoKSBjb25zdAogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlcjo6YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25Ub2tl
biwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dGVuc2lvblBhcmFtZXRlcnMpCit7CisgICAg
aWYgKCFtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICBtX2Fj
Y2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKCIsICIpOworICAgIG1fYWNjZXB0ZWRFeHRl
bnNpb25zQnVpbGRlci5hcHBlbmQoZXh0ZW5zaW9uVG9rZW4pOworICAgIGZvciAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yID0gZXh0ZW5zaW9uUGFyYW1l
dGVycy5iZWdpbigpOyBpdGVyYXRvciAhPSBleHRlbnNpb25QYXJhbWV0ZXJzLmVuZCgpOyArK2l0
ZXJhdG9yKSB7CisgICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5hcHBlbmQoIjsg
Iik7CisgICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5hcHBlbmQoaXRlcmF0b3It
PmZpcnN0KTsKKyAgICAgICAgaWYgKCFpdGVyYXRvci0+c2Vjb25kLmlzTnVsbCgpKSB7CisgICAg
ICAgICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKCI9Iik7CisgICAgICAg
ICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKGl0ZXJhdG9yLT5zZWNvbmQp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXI6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCit7CisgICAgbV9mYWlsdXJlUmVhc29uID0g
cmVhc29uOworICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5jbGVhcigpOworfQorCiBi
b29sIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25z
dCBTdHJpbmcmIGhlYWRlclZhbHVlKQogewogICAgIGlmICghaGVhZGVyVmFsdWUubGVuZ3RoKCkp
CkBAIC0xODAsMTcgKzIwMSwxNiBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6
OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlKQogCiAgICAgLy8g
SWYgd2UgZG9uJ3Qgc2VuZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyLCB0aGUgc2Vy
dmVyIHNob3VsZCBub3QgcmV0dXJuIHRoZSBoZWFkZXIuCiAgICAgaWYgKCFtX3Byb2Nlc3NvcnMu
c2l6ZSgpKSB7Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJSZWNlaXZlZCB1bmV4cGVjdGVk
IFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIiOworICAgICAgICBmYWlsKCJSZWNlaXZl
ZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGNvbnN0IENTdHJpbmcgaGVhZGVyVmFsdWVEYXRh
ID0gaGVhZGVyVmFsdWUudXRmOCgpOwogICAgIEV4dGVuc2lvblBhcnNlciBwYXJzZXIoaGVhZGVy
VmFsdWVEYXRhLmRhdGEoKSwgaGVhZGVyVmFsdWVEYXRhLmRhdGEoKSArIGhlYWRlclZhbHVlRGF0
YS5sZW5ndGgoKSk7Ci0KICAgICB3aGlsZSAoIXBhcnNlci5maW5pc2hlZCgpKSB7CiAgICAgICAg
IC8vIFBhcnNlIGV4dGVuc2lvbi10b2tlbi4KICAgICAgICAgaWYgKCFwYXJzZXIuY29uc3VtZVRv
a2VuKCkpIHsKLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4
dGVuc2lvbnMgaGVhZGVyIGlzIGludmFsaWQiOworICAgICAgICAgICAgZmFpbCgiU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgU3RyaW5nIGV4dGVuc2lvblRva2VuID0gcGFyc2Vy
LmN1cnJlbnRUb2tlbigpOwpAQCAtMTk5LDcgKzIxOSw3IEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlcjo6cHJvY2Vzc0hlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgaGVhZGVyVmFs
dWUpCiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4dGVuc2lvblBhcmFtZXRlcnM7
CiAgICAgICAgIHdoaWxlIChwYXJzZXIuY29uc3VtZUNoYXJhY3RlcignOycpKSB7CiAgICAgICAg
ICAgICBpZiAoIXBhcnNlci5jb25zdW1lVG9rZW4oKSkgewotICAgICAgICAgICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGludmFsaWQi
OworICAgICAgICAgICAgICAgIGZhaWwoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIg
aXMgaW52YWxpZCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KIApAQCAtMjA4LDE0ICsyMjgsMTQgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSkKICAgICAg
ICAgICAgICAgICBpZiAocGFyc2VyLmNvbnN1bWVRdW90ZWRTdHJpbmdPclRva2VuKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGV4dGVuc2lvblBhcmFtZXRlcnMuYWRkKHBhcmFtZXRlclRva2VuLCBw
YXJzZXIuY3VycmVudFRva2VuKCkpOwogICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhl
YWRlciBpcyBpbnZhbGlkIjsKKyAgICAgICAgICAgICAgICAgICAgZmFpbCgiU2VjLVdlYlNvY2tl
dC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIik7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFkZChwYXJhbWV0ZXJUb2tlbiwgU3RyaW5n
KCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICghcGFyc2VyLmZpbmlzaGVkKCkgJiYgIXBhcnNl
ci5jb25zdW1lQ2hhcmFjdGVyKCcsJykpIHsKLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGludmFsaWQiOworICAgICAgICAg
ICAgZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjIzLDIxICsyNDMsMzAg
QEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUo
Y29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSkKICAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4
IDwgbV9wcm9jZXNzb3JzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yKiBwcm9jZXNzb3IgPSBtX3Byb2Nlc3NvcnNbaW5kZXhdLmdldCgp
OwogICAgICAgICAgICAgaWYgKGV4dGVuc2lvblRva2VuID09IHByb2Nlc3Nvci0+ZXh0ZW5zaW9u
VG9rZW4oKSkgewotICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzb3ItPnByb2Nlc3NSZXNwb25z
ZShleHRlbnNpb25QYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc29yLT5w
cm9jZXNzUmVzcG9uc2UoZXh0ZW5zaW9uUGFyYW1ldGVycykpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oZXh0ZW5zaW9uVG9rZW4sIGV4dGVuc2lvblBhcmFt
ZXRlcnMpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBtX2Zh
aWx1cmVSZWFzb24gPSBwcm9jZXNzb3ItPmZhaWx1cmVSZWFzb24oKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZmFpbChwcm9jZXNzb3ItPmZhaWx1cmVSZWFzb24oKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIC8vIFRoZXJlIGlzIG5vIGV4dGVuc2lvbiB3aGljaCBjYW4gcHJvY2VzcyB0aGUgcmVz
cG9uc2UuCiAgICAgICAgIGlmIChpbmRleCA9PSBtX3Byb2Nlc3NvcnMuc2l6ZSgpKSB7Ci0gICAg
ICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5leHBlY3RlZCBleHRlbnNpb246
ICIgKyBleHRlbnNpb25Ub2tlbjsKKyAgICAgICAgICAgIGZhaWwoIlJlY2VpdmVkIHVuZXhwZWN0
ZWQgZXh0ZW5zaW9uOiAiICsgZXh0ZW5zaW9uVG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBwYXJzZXIucGFyc2VkU3VjY2Vzc2Z1
bGx5KCk7CiB9CiAKK1N0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjphY2NlcHRl
ZEV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIGlmIChtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxk
ZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fYWNj
ZXB0ZWRFeHRlbnNpb25zQnVpbGRlci50b0F0b21pY1N0cmluZygpLnN0cmluZygpOworfQorCiBT
dHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6ZmFpbHVyZVJlYXNvbigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgKaW5kZXggZjg4
MmJiOWQwODJhNDZjN2VlZjYyNzg4YWZlNmQyNDU0MmUwNmI2Mi4uMzVjZDc2OWVhYzMyMGFjMTQw
ODRiMTA4MjUyNDZjNDkwNjM5YzVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01MCwxMCArNTEsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyBjcmVhdGVI
ZWFkZXJWYWx1ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBwcm9jZXNzSGVhZGVyVmFsdWUoY29uc3Qg
U3RyaW5nJik7CisgICAgU3RyaW5nIGFjY2VwdGVkRXh0ZW5zaW9ucygpIGNvbnN0OwogICAgIFN0
cmluZyBmYWlsdXJlUmVhc29uKCkgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgdm9pZCBhcHBlbmRB
Y2NlcHRlZEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRva2VuLCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiYgZXh0ZW5zaW9uUGFyYW1ldGVycyk7CisgICAgdm9pZCBmYWlsKGNvbnN0
IFN0cmluZyYgcmVhc29uKTsKKwogICAgIFZlY3RvcjxPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9u
UHJvY2Vzc29yPiA+IG1fcHJvY2Vzc29yczsKKyAgICBTdHJpbmdCdWlsZGVyIG1fYWNjZXB0ZWRF
eHRlbnNpb25zQnVpbGRlcjsKICAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4
IGIyNjE1NTczODRmYzU4Y2VjYjNkNGNjNzhkZjY2Y2I1YmY4ZjJiZmYuLjhjYzUwOWU1OTY5OTQ5
MGI1YjBlNDU5ZDFkZDE4Zjc4ZjM3ZDZiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTQ3Niw2ICs0NzYsMTEgQEAgU3RyaW5n
IFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0QWNjZXB0KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9yZXNwb25zZS5oZWFkZXJGaWVsZHMoKS5nZXQoInNlYy13ZWJzb2NrZXQtYWNjZXB0
Iik7CiB9CiAKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmFjY2VwdGVkRXh0ZW5zaW9ucygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5hY2NlcHRlZEV4dGVu
c2lvbnMoKTsKK30KKwogY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIFdlYlNvY2tl
dEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdAogewogICAgIHJldHVy
biBtX3Jlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmgKaW5kZXggOTc3N2ZiOTRkYWU1YmJmNzJjZjVkNjk1ZThjZmEwZTA5YTkxNTg0YS4u
YjAyNWYwYzI3ZDdlYjRkMmFkNTJjZDdhMzAwMWUxNWViOWExMjcwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC04NCw2ICs4NCw3IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgc2VydmVyVXBncmFkZSgpIGNvbnN0OwogICAgIFN0cmluZyBz
ZXJ2ZXJDb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNlcnZlcldlYlNvY2tldEFjY2Vw
dCgpIGNvbnN0OyAvLyBPbmx5IGZvciBoeWJpLTEwIGhhbmRzaGFrZS4KKyAgICBTdHJpbmcgYWNj
ZXB0ZWRFeHRlbnNpb25zKCkgY29uc3Q7CiAKICAgICBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCBmMGU2M2UxMjUyNTQ5OTRiNWM1YjYyNjBiNTEwNWEzZjdlYTgy
MjY1Li5hZjAzYTRlNjdjYWIzMTlmMDBjOGYzOGNlYzJkMjJhOWFlOGYwZWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtODIsNiArODIsMTIgQEAgU3RyaW5nIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzdWJwcm90b2NvbCgpCiAgICAgcmV0dXJuIG1fd29ya2Vy
Q2xpZW50V3JhcHBlci0+c3VicHJvdG9jb2woKTsKIH0KIAorU3RyaW5nIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKCkKK3sKKyAgICBBU1NFUlQobV93b3JrZXJD
bGllbnRXcmFwcGVyKTsKKyAgICByZXR1cm4gbV93b3JrZXJDbGllbnRXcmFwcGVyLT5leHRlbnNp
b25zKCk7Cit9CisKIGJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghbV9icmlkZ2UpCkBAIC0yNjIsMTcg
KzI2OCwxOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpy
ZXN1bWUoKQogICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnJlc3VtZSgpOwogfQogCi1zdGF0
aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkQ29ubmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4gd29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiBzdWJwcm90b2NvbCkKK3N0YXRp
YyB2b2lkIHdvcmtlckNvbnRleHREaWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
PiB3b3JrZXJDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHN1YnByb3RvY29sLCBjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbnMpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LT5pc1dvcmtlckNvbnRleHQoKSk7CiAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U3VicHJv
dG9jb2woc3VicHJvdG9jb2wpOworICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldEV4dGVuc2lv
bnMoZXh0ZW5zaW9ucyk7CiAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ29ubmVjdCgpOwog
fQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDb25u
ZWN0KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2Vy
Q29udGV4dERpZENvbm5lY3QsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV9tYWluV2ViU29ja2V0
Q2hhbm5lbC0+c3VicHJvdG9jb2woKSksIG1fdGFza01vZGUpOworICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2Vy
Q29udGV4dERpZENvbm5lY3QsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV9tYWluV2ViU29ja2V0
Q2hhbm5lbC0+c3VicHJvdG9jb2woKSwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZXh0ZW5zaW9u
cygpKSwgbV90YXNrTW9kZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRSZWNl
aXZlTWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBl
ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDJi
MWZhMzhkZmE0YzVjNWRlOGFkYWU5NGE1NGQ0MWFiNjI4ZjA4NGMuLjMxN2ZjZTkzY2VmYTEzZTEz
MzA0YTY3MWVhOWZiZjcxOTEzMGRkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY0
LDYgKzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2wo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9j
b2woKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyVGVzdC5jcHAKaW5kZXggZmEwYjdkN2RkYThhNmRmZjY5NThjZTJlODQxNTRiYTMy
NzA2NTE0ZC4uMzU4OTgzYjgzOTkzMTRjZGEwMzdjOGMwMzI0OWVlOWI2NzJlOTY3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgVEVTVF9GKFdl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0U2luZ2xlKQogICAgIEVYUEVDVF9U
UlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoImRlZmxhdGUtZnJhbWUiKSk7CiAg
ICAgRVhQRUNUX0VRKDFVTCwgbV9wYXJzZWRFeHRlbnNpb25Ub2tlbnMuc2l6ZSgpKTsKICAgICBF
WFBFQ1RfRVEoImRlZmxhdGUtZnJhbWUiLCBtX3BhcnNlZEV4dGVuc2lvblRva2Vuc1swXSk7Cisg
ICAgRVhQRUNUX0VRKCJkZWZsYXRlLWZyYW1lIiwgbV9leHRlbnNpb25zLmFjY2VwdGVkRXh0ZW5z
aW9ucygpKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLnNpemUoKSk7
CiB9CiAKQEAgLTEyMiw2ICsxMjMsOCBAQCBURVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlclRlc3QsIFRlc3RNdWx0aXBsZSkKICAgICBhZGRNb2NrUHJvY2Vzc29yKCJtdXgiKTsKICAg
ICBhZGRNb2NrUHJvY2Vzc29yKCJkZWZsYXRlLWZyYW1lIik7CiAgICAgRVhQRUNUX1RSVUUobV9l
eHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZSgibXV4IDsgIG1heC1jaGFubmVscyA9NDtmbG93
LWNvbnRyb2wsIGRlZmxhdGUtZnJhbWUgICIpKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lv
bnMuYWNjZXB0ZWRFeHRlbnNpb25zKCkuZmluZCgibXV4IikgIT0gbm90Rm91bmQpOworICAgIEVY
UEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5hY2NlcHRlZEV4dGVuc2lvbnMoKS5maW5kKCJkZWZsYXRl
LWZyYW1lIikgIT0gbm90Rm91bmQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9m
KGV4cGVjdGVkKSAvIHNpemVvZihleHBlY3RlZFswXSk7ICsraSkgewogICAgICAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRbaV0udG9rZW4sIG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zW2ldKTsKICAgICAg
ICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4cGVjdGVkUGFyYW1ldGVycyA9IGV4
cGVjdGVkW2ldLnBhcmFtZXRlcnM7CkBAIC0xNjksNiArMTcyLDcgQEAgVEVTVF9GKFdlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0SW52YWxpZCkKICAgICAgICAgYWRkTW9ja1By
b2Nlc3NvcigieC1mb28iKTsKICAgICAgICAgYWRkTW9ja1Byb2Nlc3NvcigieC1iYXIiKTsKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoaW5wdXRz
W2ldKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5hY2NlcHRlZEV4dGVuc2lv
bnMoKS5pc051bGwoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126954</attachid>
            <date>2012-02-14 04:10:28 -0800</date>
            <delta_ts>2012-02-14 16:54:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78557-20120214211027.patch</filename>
            <type>text/plain</type>
            <size>22105</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU5MjA4MjRkYTViYzU2
Y2Y1YjYzNzc1ZWIxZGE1ZjFjNmMyNTVjNi4uYTdlMWQ1ZGFkOWU0ODc0YjE2ZjVkNWQ0NGE3OTIy
ZmZlNWZhNjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAyLTE0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZXh0ZW5zaW9uIGF0dHJpYnV0ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU1NworCisgICAgICAgIEltcGxlbWVudCBXZWJT
b2NrZXQgImV4dGVuc2lvbnMiIGF0dHJpYnV0ZSB0aGF0IGhvbGRzIGEgbGlzdCBvZgorICAgICAg
ICBleHRlbnNpb24gdGhlIHNlcnZlciBhY2NlcHRlZC4gTm8gY2hhbmdlIGluIGJlaGF2aW9yIGF0
IHRoaXMgdGltZQorICAgICAgICBiZWNhdXNlIHdlIGRvbid0IHNlbmQgYW55IGV4dGVuc2lvbiBv
biBoYW5kc2hha2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2V4dGVu
c2lvbnMuaHRtbCBjaGVja3MgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLgorCisgICAgICAg
ICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOiBBZGQgZXh0ZW5zaW9u
cygpLgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZXh0ZW5zaW9ucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMp
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6IEFkZGVkIG1f
ZXh0ZW5zaW9ucyBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmV4dGVuc2lvbnMpOiBS
ZXR1cm5zIG1fZXh0ZW5zaW9ucy4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAg
KFdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjpmYWlsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUpOiBTdG9yZXMgYWNjZXB0ZWQgZXh0
ZW5zaW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6
OmFjY2VwdGVkRXh0ZW5zaW9ucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjphY2NlcHRlZEV4dGVuc2lv
bnMpOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaDoKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZTo6YWNjZXB0ZWRFeHRlbnNpb25zKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmV4
dGVuc2lvbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
d29ya2VyQ29udGV4dERpZENvbm5lY3QpOiBDYWxscyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDb25uZWN0KTogUGFzc2VzIGV4
dGVuc2lvbnMgYXMgYW4gYXJndW1lbnQuCisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwpOgorCiAyMDEyLTAyLTE0ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ4YzcyNzM5MDFi
ODFiYmFlNjYyNmMyZjdlNDllMDcyNDc2MjFmYzEuLjJhMjAwM2YzMDYzMTY4MTc3Nzk3OTdkMDQ3
MzgwZmZkZTE5ZWNjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDItMTQgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtXZWJTb2NrZXRdIEFkZCBleHRlbnNpb24gYXR0cmlidXRlIHN1cHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NTU3CisKKyAg
ICAgICAgQWRkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmFjY2VwdGVkRXh0ZW5zaW9u
cygpIGNoZWNrcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRFU1RfRik6CisKIDIwMTItMDItMTQgIEhheWF0byBJdG8gIDxoYXlhdG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSByZXR1cm4g
RE9DVU1FTlRfRlJBR01FTlRfTk9ERS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBlOTNjZjg2ODQ2MmNjZWU2
ZmFhNGViNjNjOWE0M2RjYzQ2YzMzYzAzLi5hMTQ1ODJhOGZkOGJjM2JlZGQ3NjkyOTczZDEwMDJh
NjEzMTIyMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
b25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVy
IGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgorICAgIHZpcnR1YWwgU3RyaW5nIGV4
dGVuc2lvbnMoKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBj
YWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggM2JlMDRhOThmY2QzZWQ2NDBjZjcy
ODRjYzlhYzdhOTFlNjA4MWU4OS4uMGRiNzA4ZjE3ZTEyZGU0M2M4MzM4NjE5MzNlYzI1ZDIwYWM3
ZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtOTUs
NiArOTUsMjEgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OnNldFN1YnByb3RvY29sKGNvbnN0IFN0cmluZyYgc3VicHIKICAgICAgICAgbWVtY3B5KG1fc3Vi
cHJvdG9jb2wuZGF0YSgpLCBzdWJwcm90b2NvbC5jaGFyYWN0ZXJzKCksIHNpemVvZihVQ2hhcikg
KiBsZW5ndGgpOwogfQogCitTdHJpbmcgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpleHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICBpZiAobV9leHRlbnNpb25zLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAgcmV0dXJuIFN0cmluZyhtX2V4
dGVuc2lvbnMpOworfQorCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6c2V0RXh0ZW5zaW9ucyhjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnMpCit7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gZXh0ZW5zaW9ucy5sZW5ndGgoKTsKKyAgICBtX2V4dGVuc2lvbnMucmVz
aXplKGxlbmd0aCk7CisgICAgaWYgKGxlbmd0aCkKKyAgICAgICAgbWVtY3B5KG1fZXh0ZW5zaW9u
cy5kYXRhKCksIGV4dGVuc2lvbnMuY2hhcmFjdGVycygpLCBzaXplb2YoVUNoYXIpICogbGVuZ3Ro
KTsKK30KKwogYm9vbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNl
bmRSZXF1ZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZW5kUmVxdWVzdFJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGVjOTM5N2NkYjQy
NWE3YjE1YzZlZWZhNWYxYTZiYjY3ODQyMmFhNzIuLmU4M2E4MGE0YmM5OTdhYTcwOWU3YTBmMjY1
MjAxYWFkMmM0ZWJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaApA
QCAtNTksOSArNTksMTEgQEAgcHVibGljOgogICAgIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRVc2VIaXhpZTc2UHJvdG9jb2woYm9vbCk7CiAKLSAgICAvLyBT
dWJwcm90b2NvbCBpcyBjYWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENvbm5l
Y3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgorICAgIC8vIFN1YnByb3RvY29sIGFuZCBleHRlbnNp
b25zIGFyZSBjYWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENvbm5lY3QoKSBj
YWxsYmFjayBpcyBpbnZva2VkLgogICAgIFN0cmluZyBzdWJwcm90b2NvbCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0U3VicHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGV4dGVuc2lv
bnMoKSBjb25zdDsKKyAgICB2b2lkIHNldEV4dGVuc2lvbnMoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBib29sIHNlbmRSZXF1ZXN0UmVzdWx0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZW5kUmVxdWVz
dFJlc3VsdChib29sKTsKQEAgLTk1LDcgKzk3LDkgQEAgcHJvdGVjdGVkOgogICAgIFdlYlNvY2tl
dENoYW5uZWxDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9zeW5jTWV0aG9kRG9uZTsKICAg
ICBib29sIG1fdXNlSGl4aWU3NlByb3RvY29sOwotICAgIFZlY3RvcjxVQ2hhcj4gbV9zdWJwcm90
b2NvbDsgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBhIFN0cmluZyBtZW1i
ZXIgdmFyaWFibGUuCisgICAgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBT
dHJpbmcgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICBWZWN0b3I8VUNoYXI+IG1fc3VicHJvdG9jb2w7
CisgICAgVmVjdG9yPFVDaGFyPiBtX2V4dGVuc2lvbnM7CiAgICAgYm9vbCBtX3NlbmRSZXF1ZXN0
UmVzdWx0OwogICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICBib29sIG1f
c3VzcGVuZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDMw
MTBlYTMwZTViN2JlYWY4MTFjMmY1ZjE3ZWU3ODJjODgyMTc1MTAuLjM2ZGJiNmYzMmMyNDk4M2My
MGY4NThlMGRhYzc3NjFmYjY5YjEyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKQEAgLTE1NSw2ICsxNTUsNyBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICwgbV9iaW5hcnlUeXBlKEJpbmFyeVR5cGVC
bG9iKQogICAgICwgbV91c2VIaXhpZTc2UHJvdG9jb2wodHJ1ZSkKICAgICAsIG1fc3VicHJvdG9j
b2woIiIpCisgICAgLCBtX2V4dGVuc2lvbnMoIiIpCiB7CiB9CiAKQEAgLTM4Nyw4ICszODgsNyBA
QCBTdHJpbmcgV2ViU29ja2V0OjpleHRlbnNpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV91c2VI
aXhpZTc2UHJvdG9jb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAvLyBXZWJTb2Nr
ZXQgcHJvdG9jb2wgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgIHJldHVybiAi
IjsKKyAgICByZXR1cm4gbV9leHRlbnNpb25zOwogfQogCiBTdHJpbmcgV2ViU29ja2V0OjpiaW5h
cnlUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGNh
ZTU3ZDJhNzYzZTYxNzE0ZDY5MjExN2RmODZmMjA0NGI1NWI2NWQuLjFlNDQyNDVlOGExYzlmYWFi
Nzk4MWFlZmU1NzBkNWY1MTY2ZTUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgQmluYXJ5VHlwZSBtX2JpbmFy
eVR5cGU7CiAgICAgYm9vbCBtX3VzZUhpeGllNzZQcm90b2NvbDsKICAgICBTdHJpbmcgbV9zdWJw
cm90b2NvbDsKKyAgICBTdHJpbmcgbV9leHRlbnNpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggNTM0MzZlMzlhZWI2NzZhMzU5MTg4Y2MxMGJmM2M2NDYzZmE3ZjBiZi4uMThmNDM1
MWRjZTNmM2EyOGU2YjZhOTU2M2JmMjIwYjk1ZGRkYWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNTMsNiArMTUzLDE3IEBAIFN0
cmluZyBXZWJTb2NrZXRDaGFubmVsOjpzdWJwcm90b2NvbCgpCiAgICAgcmV0dXJuIHNlcnZlclBy
b3RvY29sOwogfQogCitTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCit7Cisg
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lvbnMiLCB0aGlzKTsK
KyAgICBpZiAoIW1faGFuZHNoYWtlIHx8IG1faGFuZHNoYWtlLT5tb2RlKCkgIT0gV2ViU29ja2V0
SGFuZHNoYWtlOjpDb25uZWN0ZWQpCisgICAgICAgIHJldHVybiAiIjsKKyAgICBTdHJpbmcgZXh0
ZW5zaW9ucyA9IG1faGFuZHNoYWtlLT5hY2NlcHRlZEV4dGVuc2lvbnMoKTsKKyAgICBpZiAoZXh0
ZW5zaW9ucy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuICIiOworICAgIHJldHVybiBleHRlbnNp
b25zOworfQorCiBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwg
dGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOWY5YmFiOGIxYzMwZmFiYmIzZTYwZDc1ZmZmN2E0
ZTM5NTlmN2ZlMC4uOGJkYjQ3ZmEyZmU3OTNlMTBiMTJjNGNhOTdjNzRmYjAzOGRkYTdkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY4LDYg
KzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2woKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2wo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3Bw
CmluZGV4IGQ4NTA5MmFhODdiYTYyZDc0MmUzOWUyODE2YzIwODIyY2M0NDgwMTAuLjIwZmMyZjE2
ZWQxZTUyMWI4NjU0NjJmMDE0ZTBiMWFkM2E2YWYyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApA
QCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
aCIKIAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTczLDYgKzE3MywyOCBAQCBjb25zdCBTdHJpbmcgV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6Y3JlYXRlSGVhZGVyVmFsdWUoKSBjb25zdAogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlcjo6YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25Ub2tl
biwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dGVuc2lvblBhcmFtZXRlcnMpCit7CisgICAg
aWYgKCFtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICBtX2Fj
Y2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKCIsICIpOworICAgIG1fYWNjZXB0ZWRFeHRl
bnNpb25zQnVpbGRlci5hcHBlbmQoZXh0ZW5zaW9uVG9rZW4pOworICAgIC8vIEZJWE1FOiBTaG91
bGQgdXNlIExpc3RIYXNoU2V0IHRvIGtlZXAgdGhlIG9yZGVyIG9mIHRoZSBwYXJhbWV0ZXJzLgor
ICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9y
ID0gZXh0ZW5zaW9uUGFyYW1ldGVycy5iZWdpbigpOyBpdGVyYXRvciAhPSBleHRlbnNpb25QYXJh
bWV0ZXJzLmVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25z
QnVpbGRlci5hcHBlbmQoIjsgIik7CisgICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRl
ci5hcHBlbmQoaXRlcmF0b3ItPmZpcnN0KTsKKyAgICAgICAgaWYgKCFpdGVyYXRvci0+c2Vjb25k
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBw
ZW5kKCI9Iik7CisgICAgICAgICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5k
KGl0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFdlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXI6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCit7CisgICAg
bV9mYWlsdXJlUmVhc29uID0gcmVhc29uOworICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRl
ci5jbGVhcigpOworfQorCiBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nl
c3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlKQogewogICAgIGlmICghaGVh
ZGVyVmFsdWUubGVuZ3RoKCkpCkBAIC0xODAsMTcgKzIwMiwxNiBAQCBib29sIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRl
clZhbHVlKQogCiAgICAgLy8gSWYgd2UgZG9uJ3Qgc2VuZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lv
bnMgaGVhZGVyLCB0aGUgc2VydmVyIHNob3VsZCBub3QgcmV0dXJuIHRoZSBoZWFkZXIuCiAgICAg
aWYgKCFtX3Byb2Nlc3NvcnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJS
ZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIiOworICAg
ICAgICBmYWlsKCJSZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBo
ZWFkZXIiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGNvbnN0IENTdHJp
bmcgaGVhZGVyVmFsdWVEYXRhID0gaGVhZGVyVmFsdWUudXRmOCgpOwogICAgIEV4dGVuc2lvblBh
cnNlciBwYXJzZXIoaGVhZGVyVmFsdWVEYXRhLmRhdGEoKSwgaGVhZGVyVmFsdWVEYXRhLmRhdGEo
KSArIGhlYWRlclZhbHVlRGF0YS5sZW5ndGgoKSk7Ci0KICAgICB3aGlsZSAoIXBhcnNlci5maW5p
c2hlZCgpKSB7CiAgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi10b2tlbi4KICAgICAgICAgaWYg
KCFwYXJzZXIuY29uc3VtZVRva2VuKCkpIHsKLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGludmFsaWQiOworICAgICAgICAg
ICAgZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgU3RyaW5nIGV4dGVu
c2lvblRva2VuID0gcGFyc2VyLmN1cnJlbnRUb2tlbigpOwpAQCAtMTk5LDcgKzIyMCw3IEBAIGJv
b2wgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6cHJvY2Vzc0hlYWRlclZhbHVlKGNvbnN0
IFN0cmluZyYgaGVhZGVyVmFsdWUpCiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4
dGVuc2lvblBhcmFtZXRlcnM7CiAgICAgICAgIHdoaWxlIChwYXJzZXIuY29uc3VtZUNoYXJhY3Rl
cignOycpKSB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlci5jb25zdW1lVG9rZW4oKSkgewotICAg
ICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMg
aGVhZGVyIGlzIGludmFsaWQiOworICAgICAgICAgICAgICAgIGZhaWwoIlNlYy1XZWJTb2NrZXQt
RXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KIApAQCAtMjA4LDE0ICsyMjksMTQgQEAgYm9vbCBXZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiBo
ZWFkZXJWYWx1ZSkKICAgICAgICAgICAgICAgICBpZiAocGFyc2VyLmNvbnN1bWVRdW90ZWRTdHJp
bmdPclRva2VuKCkpCiAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvblBhcmFtZXRlcnMuYWRk
KHBhcmFtZXRlclRva2VuLCBwYXJzZXIuY3VycmVudFRva2VuKCkpOwogICAgICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIjsKKyAgICAgICAgICAgICAgICAgICAg
ZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIik7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFkZChwYXJh
bWV0ZXJUb2tlbiwgU3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICghcGFyc2VyLmZp
bmlzaGVkKCkgJiYgIXBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCcsJykpIHsKLSAgICAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGlu
dmFsaWQiOworICAgICAgICAgICAgZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRl
ciBpcyBpbnZhbGlkIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtMjIzLDIxICsyNDQsMzAgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpw
cm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSkKICAgICAgICAgZm9y
IChpbmRleCA9IDA7IGluZGV4IDwgbV9wcm9jZXNzb3JzLnNpemUoKTsgKytpbmRleCkgewogICAg
ICAgICAgICAgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKiBwcm9jZXNzb3IgPSBtX3Byb2Nl
c3NvcnNbaW5kZXhdLmdldCgpOwogICAgICAgICAgICAgaWYgKGV4dGVuc2lvblRva2VuID09IHBy
b2Nlc3Nvci0+ZXh0ZW5zaW9uVG9rZW4oKSkgewotICAgICAgICAgICAgICAgIGlmIChwcm9jZXNz
b3ItPnByb2Nlc3NSZXNwb25zZShleHRlbnNpb25QYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgICAg
ICBpZiAocHJvY2Vzc29yLT5wcm9jZXNzUmVzcG9uc2UoZXh0ZW5zaW9uUGFyYW1ldGVycykpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oZXh0ZW5zaW9uVG9r
ZW4sIGV4dGVuc2lvblBhcmFtZXRlcnMpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBwcm9jZXNzb3ItPmZhaWx1cmVSZWFzb24o
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmFpbChwcm9jZXNzb3ItPmZh
aWx1cmVSZWFzb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIGV4dGVuc2lvbiB3aGljaCBj
YW4gcHJvY2VzcyB0aGUgcmVzcG9uc2UuCiAgICAgICAgIGlmIChpbmRleCA9PSBtX3Byb2Nlc3Nv
cnMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5l
eHBlY3RlZCBleHRlbnNpb246ICIgKyBleHRlbnNpb25Ub2tlbjsKKyAgICAgICAgICAgIGZhaWwo
IlJlY2VpdmVkIHVuZXhwZWN0ZWQgZXh0ZW5zaW9uOiAiICsgZXh0ZW5zaW9uVG9rZW4pOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBwYXJz
ZXIucGFyc2VkU3VjY2Vzc2Z1bGx5KCk7CiB9CiAKK1N0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjphY2NlcHRlZEV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIGlmIChtX2FjY2Vw
dGVkRXh0ZW5zaW9uc0J1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci50b0F0b21pY1N0cmluZygp
LnN0cmluZygpOworfQorCiBTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6ZmFp
bHVyZVJlYXNvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZmFpbHVyZVJlYXNvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmgKaW5kZXggZjg4MmJiOWQwODJhNDZjN2VlZjYyNzg4YWZlNmQyNDU0MmUwNmI2Mi4u
MzVjZDc2OWVhYzMyMGFjMTQwODRiMTA4MjUyNDZjNDkwNjM5YzVkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCwxMCArNTEsMTUgQEAgcHVibGljOgogICAgIGNv
bnN0IFN0cmluZyBjcmVhdGVIZWFkZXJWYWx1ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBwcm9jZXNz
SGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGFjY2VwdGVkRXh0ZW5zaW9u
cygpIGNvbnN0OwogICAgIFN0cmluZyBmYWlsdXJlUmVhc29uKCkgY29uc3Q7CiAKIHByaXZhdGU6
CisgICAgdm9pZCBhcHBlbmRBY2NlcHRlZEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lv
blRva2VuLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0ZW5zaW9uUGFyYW1ldGVycyk7Cisg
ICAgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKKwogICAgIFZlY3RvcjxPd25QdHI8
V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPiA+IG1fcHJvY2Vzc29yczsKKyAgICBTdHJpbmdC
dWlsZGVyIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlcjsKICAgICBTdHJpbmcgbV9mYWlsdXJl
UmVhc29uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwCmluZGV4IGIyNjE1NTczODRmYzU4Y2VjYjNkNGNjNzhkZjY2Y2I1YmY4ZjJi
ZmYuLjhjYzUwOWU1OTY5OTQ5MGI1YjBlNDU5ZDFkZDE4Zjc4ZjM3ZDZiMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTQ3Niw2
ICs0NzYsMTEgQEAgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0QWNj
ZXB0KCkgY29uc3QKICAgICByZXR1cm4gbV9yZXNwb25zZS5oZWFkZXJGaWVsZHMoKS5nZXQoInNl
Yy13ZWJzb2NrZXQtYWNjZXB0Iik7CiB9CiAKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmFj
Y2VwdGVkRXh0ZW5zaW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXh0ZW5zaW9uRGlzcGF0
Y2hlci5hY2NlcHRlZEV4dGVuc2lvbnMoKTsKK30KKwogY29uc3QgV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UmIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBj
b25zdAogewogICAgIHJldHVybiBtX3Jlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggOTc3N2ZiOTRkYWU1YmJmNzJjZjVkNjk1
ZThjZmEwZTA5YTkxNTg0YS4uYjAyNWYwYzI3ZDdlYjRkMmFkNTJjZDdhMzAwMWUxNWViOWExMjcw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
CkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc2VydmVyVXBncmFkZSgpIGNv
bnN0OwogICAgIFN0cmluZyBzZXJ2ZXJDb25uZWN0aW9uKCkgY29uc3Q7CiAgICAgU3RyaW5nIHNl
cnZlcldlYlNvY2tldEFjY2VwdCgpIGNvbnN0OyAvLyBPbmx5IGZvciBoeWJpLTEwIGhhbmRzaGFr
ZS4KKyAgICBTdHJpbmcgYWNjZXB0ZWRFeHRlbnNpb25zKCkgY29uc3Q7CiAKICAgICBjb25zdCBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBmMGU2M2UxMjUyNTQ5OTRiNWM1
YjYyNjBiNTEwNWEzZjdlYTgyMjY1Li5hZjAzYTRlNjdjYWIzMTlmMDBjOGYzOGNlYzJkMjJhOWFl
OGYwZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtODIsNiArODIsMTIgQEAg
U3RyaW5nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzdWJwcm90b2NvbCgpCiAg
ICAgcmV0dXJuIG1fd29ya2VyQ2xpZW50V3JhcHBlci0+c3VicHJvdG9jb2woKTsKIH0KIAorU3Ry
aW5nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKCkKK3sKKyAg
ICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyKTsKKyAgICByZXR1cm4gbV93b3JrZXJDbGll
bnRXcmFwcGVyLT5leHRlbnNpb25zKCk7Cit9CisKIGJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmICghbV9i
cmlkZ2UpCkBAIC0yNjIsMTcgKzI2OCwxOCBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpQZWVyOjpyZXN1bWUoKQogICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnJl
c3VtZSgpOwogfQogCi1zdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkQ29ubmVjdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiBz
dWJwcm90b2NvbCkKK3N0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRDb25uZWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHN1
YnByb3RvY29sLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnMpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CiAgICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+c2V0U3VicHJvdG9jb2woc3VicHJvdG9jb2wpOworICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPnNldEV4dGVuc2lvbnMoZXh0ZW5zaW9ucyk7CiAgICAgd29ya2VyQ2xpZW50V3JhcHBl
ci0+ZGlkQ29ubmVjdCgpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpQZWVyOjpkaWRDb25uZWN0KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZENvbm5lY3QsIG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c3VicHJvdG9jb2woKSksIG1fdGFza01vZGUpOwor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZENvbm5lY3QsIG1fd29ya2VyQ2xpZW50V3JhcHBl
ciwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c3VicHJvdG9jb2woKSwgbV9tYWluV2ViU29ja2V0
Q2hhbm5lbC0+ZXh0ZW5zaW9ucygpKSwgbV90YXNrTW9kZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdv
cmtlckNvbnRleHREaWRSZWNlaXZlTWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4g
d29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oCmluZGV4IDJiMWZhMzhkZmE0YzVjNWRlOGFkYWU5NGE1NGQ0MWFiNjI4ZjA4NGMu
LjMxN2ZjZTkzY2VmYTEzZTEzMzA0YTY3MWVhOWZiZjcxOTEzMGRkYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1
c2VIaXhpZTc2UHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRl
bnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZl
ciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKaW5kZXggZmEwYjdkN2RkYThhNmRm
ZjY5NThjZTJlODQxNTRiYTMyNzA2NTE0ZC4uMzU4OTgzYjgzOTkzMTRjZGEwMzdjOGMwMzI0OWVl
OWI2NzJlOTY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHAKQEAgLTkwLDYg
KzkwLDcgQEAgVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0U2lu
Z2xlKQogICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoImRl
ZmxhdGUtZnJhbWUiKSk7CiAgICAgRVhQRUNUX0VRKDFVTCwgbV9wYXJzZWRFeHRlbnNpb25Ub2tl
bnMuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoImRlZmxhdGUtZnJhbWUiLCBtX3BhcnNlZEV4dGVu
c2lvblRva2Vuc1swXSk7CisgICAgRVhQRUNUX0VRKCJkZWZsYXRlLWZyYW1lIiwgbV9leHRlbnNp
b25zLmFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKICAgICBFWFBFQ1RfRVEoMCwgbV9wYXJzZWRQYXJh
bWV0ZXJzWzBdLnNpemUoKSk7CiB9CiAKQEAgLTEyMiw2ICsxMjMsOCBAQCBURVNUX0YoV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QsIFRlc3RNdWx0aXBsZSkKICAgICBhZGRNb2NrUHJv
Y2Vzc29yKCJtdXgiKTsKICAgICBhZGRNb2NrUHJvY2Vzc29yKCJkZWZsYXRlLWZyYW1lIik7CiAg
ICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NIZWFkZXJWYWx1ZSgibXV4IDsgIG1h
eC1jaGFubmVscyA9NDtmbG93LWNvbnRyb2wsIGRlZmxhdGUtZnJhbWUgICIpKTsKKyAgICBFWFBF
Q1RfVFJVRShtX2V4dGVuc2lvbnMuYWNjZXB0ZWRFeHRlbnNpb25zKCkuZmluZCgibXV4IikgIT0g
bm90Rm91bmQpOworICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5hY2NlcHRlZEV4dGVuc2lv
bnMoKS5maW5kKCJkZWZsYXRlLWZyYW1lIikgIT0gbm90Rm91bmQpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZW9mKGV4cGVjdGVkKSAvIHNpemVvZihleHBlY3RlZFswXSk7ICsraSkg
ewogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRbaV0udG9rZW4sIG1fcGFyc2VkRXh0ZW5zaW9u
VG9rZW5zW2ldKTsKICAgICAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4cGVj
dGVkUGFyYW1ldGVycyA9IGV4cGVjdGVkW2ldLnBhcmFtZXRlcnM7CkBAIC0xNjksNiArMTcyLDcg
QEAgVEVTVF9GKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0SW52YWxpZCkK
ICAgICAgICAgYWRkTW9ja1Byb2Nlc3NvcigieC1mb28iKTsKICAgICAgICAgYWRkTW9ja1Byb2Nl
c3NvcigieC1iYXIiKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKG1fZXh0ZW5zaW9ucy5wcm9jZXNz
SGVhZGVyVmFsdWUoaW5wdXRzW2ldKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9u
cy5hY2NlcHRlZEV4dGVuc2lvbnMoKS5pc051bGwoKSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127081</attachid>
            <date>2012-02-14 16:53:39 -0800</date>
            <delta_ts>2012-02-14 18:12:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78557-20120215095338.patch</filename>
            <type>text/plain</type>
            <size>22106</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU5MjA4MjRkYTViYzU2
Y2Y1YjYzNzc1ZWIxZGE1ZjFjNmMyNTVjNi4uYTdlMWQ1ZGFkOWU0ODc0YjE2ZjVkNWQ0NGE3OTIy
ZmZlNWZhNjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAyLTE0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBBZGQgZXh0ZW5zaW9uIGF0dHJpYnV0ZSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU1NworCisgICAgICAgIEltcGxlbWVudCBXZWJT
b2NrZXQgImV4dGVuc2lvbnMiIGF0dHJpYnV0ZSB0aGF0IGhvbGRzIGEgbGlzdCBvZgorICAgICAg
ICBleHRlbnNpb24gdGhlIHNlcnZlciBhY2NlcHRlZC4gTm8gY2hhbmdlIGluIGJlaGF2aW9yIGF0
IHRoaXMgdGltZQorICAgICAgICBiZWNhdXNlIHdlIGRvbid0IHNlbmQgYW55IGV4dGVuc2lvbiBv
biBoYW5kc2hha2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2V4dGVu
c2lvbnMuaHRtbCBjaGVja3MgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLgorCisgICAgICAg
ICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOiBBZGQgZXh0ZW5zaW9u
cygpLgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6
ZXh0ZW5zaW9ucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMp
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5oOgorICAgICAgICAoVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6IEFkZGVkIG1f
ZXh0ZW5zaW9ucyBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmV4dGVuc2lvbnMpOiBS
ZXR1cm5zIG1fZXh0ZW5zaW9ucy4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAg
KFdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjpmYWlsKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUpOiBTdG9yZXMgYWNjZXB0ZWQgZXh0
ZW5zaW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6
OmFjY2VwdGVkRXh0ZW5zaW9ucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjphY2NlcHRlZEV4dGVuc2lv
bnMpOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaDoKKyAgICAgICAgKFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIpOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZTo6YWNjZXB0ZWRFeHRlbnNpb25zKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmV4
dGVuc2lvbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
d29ya2VyQ29udGV4dERpZENvbm5lY3QpOiBDYWxscyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI6OnNldEV4dGVuc2lvbnMoKS4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDb25uZWN0KTogUGFzc2VzIGV4
dGVuc2lvbnMgYXMgYW4gYXJndW1lbnQuCisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAoV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwpOgorCiAyMDEyLTAyLTE0ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qubm9kZVR5cGUgcmV0dXJuIERPQ1VNRU5U
X0ZSQUdNRU5UX05PREUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ4YzcyNzM5MDFi
ODFiYmFlNjYyNmMyZjdlNDllMDcyNDc2MjFmYzEuLjJhMjAwM2YzMDYzMTY4MTc3Nzk3OTdkMDQ3
MzgwZmZkZTE5ZWNjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDItMTQgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtXZWJTb2NrZXRdIEFkZCBleHRlbnNpb24gYXR0cmlidXRlIHN1cHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NTU3CisKKyAg
ICAgICAgQWRkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmFjY2VwdGVkRXh0ZW5zaW9u
cygpIGNoZWNrcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRFU1RfRik6CisKIDIwMTItMDItMTQgIEhheWF0byBJdG8gIDxoYXlhdG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1ha2UgU2hhZG93Um9vdC5ub2RlVHlwZSByZXR1cm4g
RE9DVU1FTlRfRlJBR01FTlRfTk9ERS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBlOTNjZjg2ODQ2MmNjZWU2
ZmFhNGViNjNjOWE0M2RjYzQ2YzMzYzAzLi5hMTQ1ODJhOGZkOGJjM2JlZGQ3NjkyOTczZDEwMDJh
NjEzMTIyMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
b25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVy
IGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgorICAgIHZpcnR1YWwgU3RyaW5nIGV4
dGVuc2lvbnMoKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBj
YWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEFycmF5QnVmZmVyJikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggM2JlMDRhOThmY2QzZWQ2NDBjZjcy
ODRjYzlhYzdhOTFlNjA4MWU4OS4uMGRiNzA4ZjE3ZTEyZGU0M2M4MzM4NjE5MzNlYzI1ZDIwYWM3
ZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtOTUs
NiArOTUsMjEgQEAgdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OnNldFN1YnByb3RvY29sKGNvbnN0IFN0cmluZyYgc3VicHIKICAgICAgICAgbWVtY3B5KG1fc3Vi
cHJvdG9jb2wuZGF0YSgpLCBzdWJwcm90b2NvbC5jaGFyYWN0ZXJzKCksIHNpemVvZihVQ2hhcikg
KiBsZW5ndGgpOwogfQogCitTdHJpbmcgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyOjpleHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICBpZiAobV9leHRlbnNpb25zLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygiIik7CisgICAgcmV0dXJuIFN0cmluZyhtX2V4
dGVuc2lvbnMpOworfQorCit2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcjo6c2V0RXh0ZW5zaW9ucyhjb25zdCBTdHJpbmcmIGV4dGVuc2lvbnMpCit7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gZXh0ZW5zaW9ucy5sZW5ndGgoKTsKKyAgICBtX2V4dGVuc2lvbnMucmVz
aXplKGxlbmd0aCk7CisgICAgaWYgKGxlbmd0aCkKKyAgICAgICAgbWVtY3B5KG1fZXh0ZW5zaW9u
cy5kYXRhKCksIGV4dGVuc2lvbnMuY2hhcmFjdGVycygpLCBzaXplb2YoVUNoYXIpICogbGVuZ3Ro
KTsKK30KKwogYm9vbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNl
bmRSZXF1ZXN0UmVzdWx0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZW5kUmVxdWVzdFJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGVjOTM5N2NkYjQy
NWE3YjE1YzZlZWZhNWYxYTZiYjY3ODQyMmFhNzIuLmU4M2E4MGE0YmM5OTdhYTcwOWU3YTBmMjY1
MjAxYWFkMmM0ZWJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaApA
QCAtNTksOSArNTksMTEgQEAgcHVibGljOgogICAgIGJvb2wgdXNlSGl4aWU3NlByb3RvY29sKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRVc2VIaXhpZTc2UHJvdG9jb2woYm9vbCk7CiAKLSAgICAvLyBT
dWJwcm90b2NvbCBpcyBjYWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENvbm5l
Y3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgorICAgIC8vIFN1YnByb3RvY29sIGFuZCBleHRlbnNp
b25zIGFyZSBjYWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRpZENvbm5lY3QoKSBj
YWxsYmFjayBpcyBpbnZva2VkLgogICAgIFN0cmluZyBzdWJwcm90b2NvbCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0U3VicHJvdG9jb2woY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGV4dGVuc2lv
bnMoKSBjb25zdDsKKyAgICB2b2lkIHNldEV4dGVuc2lvbnMoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBib29sIHNlbmRSZXF1ZXN0UmVzdWx0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZW5kUmVxdWVz
dFJlc3VsdChib29sKTsKQEAgLTk1LDcgKzk3LDkgQEAgcHJvdGVjdGVkOgogICAgIFdlYlNvY2tl
dENoYW5uZWxDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9zeW5jTWV0aG9kRG9uZTsKICAg
ICBib29sIG1fdXNlSGl4aWU3NlByb3RvY29sOwotICAgIFZlY3RvcjxVQ2hhcj4gbV9zdWJwcm90
b2NvbDsgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBhIFN0cmluZyBtZW1i
ZXIgdmFyaWFibGUuCisgICAgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBT
dHJpbmcgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICBWZWN0b3I8VUNoYXI+IG1fc3VicHJvdG9jb2w7
CisgICAgVmVjdG9yPFVDaGFyPiBtX2V4dGVuc2lvbnM7CiAgICAgYm9vbCBtX3NlbmRSZXF1ZXN0
UmVzdWx0OwogICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICBib29sIG1f
c3VzcGVuZGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDMw
MTBlYTMwZTViN2JlYWY4MTFjMmY1ZjE3ZWU3ODJjODgyMTc1MTAuLjM2ZGJiNmYzMmMyNDk4M2My
MGY4NThlMGRhYzc3NjFmYjY5YjEyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKQEAgLTE1NSw2ICsxNTUsNyBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICwgbV9iaW5hcnlUeXBlKEJpbmFyeVR5cGVC
bG9iKQogICAgICwgbV91c2VIaXhpZTc2UHJvdG9jb2wodHJ1ZSkKICAgICAsIG1fc3VicHJvdG9j
b2woIiIpCisgICAgLCBtX2V4dGVuc2lvbnMoIiIpCiB7CiB9CiAKQEAgLTM4Nyw4ICszODgsNyBA
QCBTdHJpbmcgV2ViU29ja2V0OjpleHRlbnNpb25zKCkgY29uc3QKIHsKICAgICBpZiAobV91c2VI
aXhpZTc2UHJvdG9jb2wpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAvLyBXZWJTb2Nr
ZXQgcHJvdG9jb2wgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LgotICAgIHJldHVybiAi
IjsKKyAgICByZXR1cm4gbV9leHRlbnNpb25zOwogfQogCiBTdHJpbmcgV2ViU29ja2V0OjpiaW5h
cnlUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGNh
ZTU3ZDJhNzYzZTYxNzE0ZDY5MjExN2RmODZmMjA0NGI1NWI2NWQuLjFlNDQyNDVlOGExYzlmYWFi
Nzk4MWFlZmU1NzBkNWY1MTY2ZTUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgQmluYXJ5VHlwZSBtX2JpbmFy
eVR5cGU7CiAgICAgYm9vbCBtX3VzZUhpeGllNzZQcm90b2NvbDsKICAgICBTdHJpbmcgbV9zdWJw
cm90b2NvbDsKKyAgICBTdHJpbmcgbV9leHRlbnNpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggNTM0MzZlMzlhZWI2NzZhMzU5MTg4Y2MxMGJmM2M2NDYzZmE3ZjBiZi4uMThmNDM1
MWRjZTNmM2EyOGU2YjZhOTU2M2JmMjIwYjk1ZGRkYWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNTMsNiArMTUzLDE3IEBAIFN0
cmluZyBXZWJTb2NrZXRDaGFubmVsOjpzdWJwcm90b2NvbCgpCiAgICAgcmV0dXJuIHNlcnZlclBy
b3RvY29sOwogfQogCitTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCit7Cisg
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lvbnMiLCB0aGlzKTsK
KyAgICBpZiAoIW1faGFuZHNoYWtlIHx8IG1faGFuZHNoYWtlLT5tb2RlKCkgIT0gV2ViU29ja2V0
SGFuZHNoYWtlOjpDb25uZWN0ZWQpCisgICAgICAgIHJldHVybiAiIjsKKyAgICBTdHJpbmcgZXh0
ZW5zaW9ucyA9IG1faGFuZHNoYWtlLT5hY2NlcHRlZEV4dGVuc2lvbnMoKTsKKyAgICBpZiAoZXh0
ZW5zaW9ucy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuICIiOworICAgIHJldHVybiBleHRlbnNp
b25zOworfQorCiBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwg
dGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOWY5YmFiOGIxYzMwZmFiYmIzZTYwZDc1ZmZmN2E0
ZTM5NTlmN2ZlMC4uOGJkYjQ3ZmEyZmU3OTNlMTBiMTJjNGNhOTdjNzRmYjAzOGRkYTdkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY4LDYg
KzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2woKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2wo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBBcnJheUJ1ZmZlciYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBzZW5kKGNvbnN0IEJsb2ImKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3Bw
CmluZGV4IGQ4NTA5MmFhODdiYTYyZDc0MmUzOWUyODE2YzIwODIyY2M0NDgwMTAuLjdjNTkyYWQx
YmYyODA2OGM4MzAzMzY5YjYwNjU2NzNiNmJhN2U5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcApA
QCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
aCIKIAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTczLDYgKzE3MywyOCBAQCBjb25zdCBTdHJpbmcgV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6Y3JlYXRlSGVhZGVyVmFsdWUoKSBjb25zdAogICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlcjo6YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25Ub2tl
biwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dGVuc2lvblBhcmFtZXRlcnMpCit7CisgICAg
aWYgKCFtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICBtX2Fj
Y2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKCIsICIpOworICAgIG1fYWNjZXB0ZWRFeHRl
bnNpb25zQnVpbGRlci5hcHBlbmQoZXh0ZW5zaW9uVG9rZW4pOworICAgIC8vIEZJWE1FOiBTaG91
bGQgdXNlIExpc3RIYXNoU2V0IHRvIGtlZXAgdGhlIG9yZGVyIG9mIHRoZSBwYXJhbWV0ZXJzLgor
ICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9y
ID0gZXh0ZW5zaW9uUGFyYW1ldGVycy5iZWdpbigpOyBpdGVyYXRvciAhPSBleHRlbnNpb25QYXJh
bWV0ZXJzLmVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25z
QnVpbGRlci5hcHBlbmQoIjsgIik7CisgICAgICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRl
ci5hcHBlbmQoaXRlcmF0b3ItPmZpcnN0KTsKKyAgICAgICAgaWYgKCFpdGVyYXRvci0+c2Vjb25k
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBw
ZW5kKCI9Iik7CisgICAgICAgICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5k
KGl0ZXJhdG9yLT5zZWNvbmQpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFdlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXI6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCit7CisgICAg
bV9mYWlsdXJlUmVhc29uID0gcmVhc29uOworICAgIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRl
ci5jbGVhcigpOworfQorCiBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nl
c3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlKQogewogICAgIGlmICghaGVh
ZGVyVmFsdWUubGVuZ3RoKCkpCkBAIC0xODAsMTcgKzIwMiwxNiBAQCBib29sIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRl
clZhbHVlKQogCiAgICAgLy8gSWYgd2UgZG9uJ3Qgc2VuZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lv
bnMgaGVhZGVyLCB0aGUgc2VydmVyIHNob3VsZCBub3QgcmV0dXJuIHRoZSBoZWFkZXIuCiAgICAg
aWYgKCFtX3Byb2Nlc3NvcnMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJS
ZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIiOworICAg
ICAgICBmYWlsKCJSZWNlaXZlZCB1bmV4cGVjdGVkIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBo
ZWFkZXIiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGNvbnN0IENTdHJp
bmcgaGVhZGVyVmFsdWVEYXRhID0gaGVhZGVyVmFsdWUudXRmOCgpOwogICAgIEV4dGVuc2lvblBh
cnNlciBwYXJzZXIoaGVhZGVyVmFsdWVEYXRhLmRhdGEoKSwgaGVhZGVyVmFsdWVEYXRhLmRhdGEo
KSArIGhlYWRlclZhbHVlRGF0YS5sZW5ndGgoKSk7Ci0KICAgICB3aGlsZSAoIXBhcnNlci5maW5p
c2hlZCgpKSB7CiAgICAgICAgIC8vIFBhcnNlIGV4dGVuc2lvbi10b2tlbi4KICAgICAgICAgaWYg
KCFwYXJzZXIuY29uc3VtZVRva2VuKCkpIHsKLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9
ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGludmFsaWQiOworICAgICAgICAg
ICAgZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIik7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgU3RyaW5nIGV4dGVu
c2lvblRva2VuID0gcGFyc2VyLmN1cnJlbnRUb2tlbigpOwpAQCAtMTk5LDcgKzIyMCw3IEBAIGJv
b2wgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6cHJvY2Vzc0hlYWRlclZhbHVlKGNvbnN0
IFN0cmluZyYgaGVhZGVyVmFsdWUpCiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4
dGVuc2lvblBhcmFtZXRlcnM7CiAgICAgICAgIHdoaWxlIChwYXJzZXIuY29uc3VtZUNoYXJhY3Rl
cignOycpKSB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlci5jb25zdW1lVG9rZW4oKSkgewotICAg
ICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMg
aGVhZGVyIGlzIGludmFsaWQiOworICAgICAgICAgICAgICAgIGZhaWwoIlNlYy1XZWJTb2NrZXQt
RXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KIApAQCAtMjA4LDE0ICsyMjksMTQgQEAgYm9vbCBXZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiBo
ZWFkZXJWYWx1ZSkKICAgICAgICAgICAgICAgICBpZiAocGFyc2VyLmNvbnN1bWVRdW90ZWRTdHJp
bmdPclRva2VuKCkpCiAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvblBhcmFtZXRlcnMuYWRk
KHBhcmFtZXRlclRva2VuLCBwYXJzZXIuY3VycmVudFRva2VuKCkpOwogICAgICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIjsKKyAgICAgICAgICAgICAgICAgICAg
ZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIik7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFkZChwYXJh
bWV0ZXJUb2tlbiwgU3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICghcGFyc2VyLmZp
bmlzaGVkKCkgJiYgIXBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCcsJykpIHsKLSAgICAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9ICJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGlu
dmFsaWQiOworICAgICAgICAgICAgZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRl
ciBpcyBpbnZhbGlkIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtMjIzLDIxICsyNDQsMzAgQEAgYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpw
cm9jZXNzSGVhZGVyVmFsdWUoY29uc3QgU3RyaW5nJiBoZWFkZXJWYWx1ZSkKICAgICAgICAgZm9y
IChpbmRleCA9IDA7IGluZGV4IDwgbV9wcm9jZXNzb3JzLnNpemUoKTsgKytpbmRleCkgewogICAg
ICAgICAgICAgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yKiBwcm9jZXNzb3IgPSBtX3Byb2Nl
c3NvcnNbaW5kZXhdLmdldCgpOwogICAgICAgICAgICAgaWYgKGV4dGVuc2lvblRva2VuID09IHBy
b2Nlc3Nvci0+ZXh0ZW5zaW9uVG9rZW4oKSkgewotICAgICAgICAgICAgICAgIGlmIChwcm9jZXNz
b3ItPnByb2Nlc3NSZXNwb25zZShleHRlbnNpb25QYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgICAg
ICBpZiAocHJvY2Vzc29yLT5wcm9jZXNzUmVzcG9uc2UoZXh0ZW5zaW9uUGFyYW1ldGVycykpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oZXh0ZW5zaW9uVG9r
ZW4sIGV4dGVuc2lvblBhcmFtZXRlcnMpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBwcm9jZXNzb3ItPmZhaWx1cmVSZWFzb24o
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmFpbChwcm9jZXNzb3ItPmZh
aWx1cmVSZWFzb24oKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIGV4dGVuc2lvbiB3aGljaCBj
YW4gcHJvY2VzcyB0aGUgcmVzcG9uc2UuCiAgICAgICAgIGlmIChpbmRleCA9PSBtX3Byb2Nlc3Nv
cnMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgdW5l
eHBlY3RlZCBleHRlbnNpb246ICIgKyBleHRlbnNpb25Ub2tlbjsKKyAgICAgICAgICAgIGZhaWwo
IlJlY2VpdmVkIHVuZXhwZWN0ZWQgZXh0ZW5zaW9uOiAiICsgZXh0ZW5zaW9uVG9rZW4pOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBwYXJz
ZXIucGFyc2VkU3VjY2Vzc2Z1bGx5KCk7CiB9CiAKK1N0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjphY2NlcHRlZEV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIGlmIChtX2FjY2Vw
dGVkRXh0ZW5zaW9uc0J1aWxkZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci50b1N0cmluZ1ByZXNlcnZl
Q2FwYWNpdHkoKTsKK30KKwogU3RyaW5nIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmZh
aWx1cmVSZWFzb24oKSBjb25zdAogewogICAgIHJldHVybiBtX2ZhaWx1cmVSZWFzb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlz
cGF0Y2hlci5oCmluZGV4IGY4ODJiYjlkMDgyYTQ2YzdlZWY2Mjc4OGFmZTZkMjQ1NDJlMDZiNjIu
LjM1Y2Q3NjllYWMzMjBhYzE0MDg0YjEwODI1MjQ2YzQ5MDYzOWM1ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hl
ci5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMTAgKzUxLDE1IEBAIHB1YmxpYzoKICAgICBj
b25zdCBTdHJpbmcgY3JlYXRlSGVhZGVyVmFsdWUoKSBjb25zdDsKIAogICAgIGJvb2wgcHJvY2Vz
c0hlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBhY2NlcHRlZEV4dGVuc2lv
bnMoKSBjb25zdDsKICAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNvbnN0OwogCiBwcml2YXRl
OgorICAgIHZvaWQgYXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNp
b25Ub2tlbiwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dGVuc2lvblBhcmFtZXRlcnMpOwor
ICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CisKICAgICBWZWN0b3I8T3duUHRy
PFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gPiBtX3Byb2Nlc3NvcnM7CisgICAgU3RyaW5n
QnVpbGRlciBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXI7CiAgICAgU3RyaW5nIG1fZmFpbHVy
ZVJlYXNvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAppbmRleCBiMjYxNTU3Mzg0ZmM1OGNlY2IzZDRjYzc4ZGY2NmNiNWJmOGYy
YmZmLi44Y2M1MDllNTk2OTk0OTBiNWIwZTQ1OWQxZGQxOGY3OGYzN2Q2YjA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC00NzYs
NiArNDc2LDExIEBAIFN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlcldlYlNvY2tldEFj
Y2VwdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVzcG9uc2UuaGVhZGVyRmllbGRzKCkuZ2V0KCJz
ZWMtd2Vic29ja2V0LWFjY2VwdCIpOwogfQogCitTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjph
Y2NlcHRlZEV4dGVuc2lvbnMoKSBjb25zdAoreworICAgIHJldHVybiBtX2V4dGVuc2lvbkRpc3Bh
dGNoZXIuYWNjZXB0ZWRFeHRlbnNpb25zKCk7Cit9CisKIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlJiBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9yZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmluZGV4IDk3NzdmYjk0ZGFlNWJiZjcyY2Y1ZDY5
NWU4Y2ZhMGUwOWE5MTU4NGEuLmIwMjVmMGMyN2Q3ZWI0ZDJhZDUyY2Q3YTMwMDFlMTVlYjlhMTI3
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNlcnZlclVwZ3JhZGUoKSBj
b25zdDsKICAgICBTdHJpbmcgc2VydmVyQ29ubmVjdGlvbigpIGNvbnN0OwogICAgIFN0cmluZyBz
ZXJ2ZXJXZWJTb2NrZXRBY2NlcHQoKSBjb25zdDsgLy8gT25seSBmb3IgaHliaS0xMCBoYW5kc2hh
a2UuCisgICAgU3RyaW5nIGFjY2VwdGVkRXh0ZW5zaW9ucygpIGNvbnN0OwogCiAgICAgY29uc3Qg
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZjBlNjNlMTI1MjU0OTk0YjVj
NWI2MjYwYjUxMDVhM2Y3ZWE4MjI2NS4uYWYwM2E0ZTY3Y2FiMzE5ZjAwYzhmMzhjZWMyZDIyYTlh
ZThmMGVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTgyLDYgKzgyLDEyIEBA
IFN0cmluZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c3VicHJvdG9jb2woKQog
ICAgIHJldHVybiBtX3dvcmtlckNsaWVudFdyYXBwZXItPnN1YnByb3RvY29sKCk7CiB9CiAKK1N0
cmluZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygpCit7Cisg
ICAgQVNTRVJUKG1fd29ya2VyQ2xpZW50V3JhcHBlcik7CisgICAgcmV0dXJuIG1fd29ya2VyQ2xp
ZW50V3JhcHBlci0+ZXh0ZW5zaW9ucygpOworfQorCiBib29sIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1f
YnJpZGdlKQpAQCAtMjYyLDE3ICsyNjgsMTggQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6cmVzdW1lKCkKICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5y
ZXN1bWUoKTsKIH0KIAotc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZENvbm5lY3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIGNvbnN0IFN0cmluZyYg
c3VicHJvdG9jb2wpCitzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkQ29ubmVjdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgY29uc3QgU3RyaW5nJiBz
dWJwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25zKQogewogICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogICAgIHdvcmtlckNsaWVu
dFdyYXBwZXItPnNldFN1YnByb3RvY29sKHN1YnByb3RvY29sKTsKKyAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5zZXRFeHRlbnNpb25zKGV4dGVuc2lvbnMpOwogICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPmRpZENvbm5lY3QoKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6ZGlkQ29ubmVjdCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVD
YWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRDb25uZWN0LCBtX3dvcmtlckNsaWVudFdyYXBw
ZXIsIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnN1YnByb3RvY29sKCkpLCBtX3Rhc2tNb2RlKTsK
KyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVD
YWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRDb25uZWN0LCBtX3dvcmtlckNsaWVudFdyYXBw
ZXIsIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnN1YnByb3RvY29sKCksIG1fbWFpbldlYlNvY2tl
dENoYW5uZWwtPmV4dGVuc2lvbnMoKSksIG1fdGFza01vZGUpOwogfQogCiBzdGF0aWMgdm9pZCB3
b3JrZXJDb250ZXh0RGlkUmVjZWl2ZU1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
IHdvcmtlckNsaWVudFdyYXBwZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaAppbmRleCAyYjFmYTM4ZGZhNGM1YzVkZThhZGFlOTRhNTRkNDFhYjYyOGYwODRj
Li4zMTdmY2U5M2NlZmExM2UxMzMwNGE2NzFlYTlmYmY3MTkxMzBkZGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
dXNlSGl4aWU3NlByb3RvY29sKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Qo
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZXh0
ZW5zaW9ucygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgQXJyYXlCdWZm
ZXImKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBCbG9iJikgT1ZFUlJJ
REU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwCmluZGV4IGZhMGI3ZDdkZGE4YTZk
ZmY2OTU4Y2UyZTg0MTU0YmEzMjcwNjUxNGQuLjM1ODk4M2I4Mzk5MzE0Y2RhMDM3YzhjMDMyNDll
ZTliNjcyZTk2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwCkBAIC05MCw2
ICs5MCw3IEBAIFRFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdCwgVGVzdFNp
bmdsZSkKICAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMucHJvY2Vzc0hlYWRlclZhbHVlKCJk
ZWZsYXRlLWZyYW1lIikpOwogICAgIEVYUEVDVF9FUSgxVUwsIG1fcGFyc2VkRXh0ZW5zaW9uVG9r
ZW5zLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKCJkZWZsYXRlLWZyYW1lIiwgbV9wYXJzZWRFeHRl
bnNpb25Ub2tlbnNbMF0pOworICAgIEVYUEVDVF9FUSgiZGVmbGF0ZS1mcmFtZSIsIG1fZXh0ZW5z
aW9ucy5hY2NlcHRlZEV4dGVuc2lvbnMoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1fcGFyc2VkUGFy
YW1ldGVyc1swXS5zaXplKCkpOwogfQogCkBAIC0xMjIsNiArMTIzLDggQEAgVEVTVF9GKFdlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0TXVsdGlwbGUpCiAgICAgYWRkTW9ja1By
b2Nlc3NvcigibXV4Iik7CiAgICAgYWRkTW9ja1Byb2Nlc3NvcigiZGVmbGF0ZS1mcmFtZSIpOwog
ICAgIEVYUEVDVF9UUlVFKG1fZXh0ZW5zaW9ucy5wcm9jZXNzSGVhZGVyVmFsdWUoIm11eCA7ICBt
YXgtY2hhbm5lbHMgPTQ7Zmxvdy1jb250cm9sLCBkZWZsYXRlLWZyYW1lICAiKSk7CisgICAgRVhQ
RUNUX1RSVUUobV9leHRlbnNpb25zLmFjY2VwdGVkRXh0ZW5zaW9ucygpLmZpbmQoIm11eCIpICE9
IG5vdEZvdW5kKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMuYWNjZXB0ZWRFeHRlbnNp
b25zKCkuZmluZCgiZGVmbGF0ZS1mcmFtZSIpICE9IG5vdEZvdW5kKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemVvZihleHBlY3RlZCkgLyBzaXplb2YoZXhwZWN0ZWRbMF0pOyArK2kp
IHsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkW2ldLnRva2VuLCBtX3BhcnNlZEV4dGVuc2lv
blRva2Vuc1tpXSk7CiAgICAgICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHBl
Y3RlZFBhcmFtZXRlcnMgPSBleHBlY3RlZFtpXS5wYXJhbWV0ZXJzOwpAQCAtMTY5LDYgKzE3Miw3
IEBAIFRFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdCwgVGVzdEludmFsaWQp
CiAgICAgICAgIGFkZE1vY2tQcm9jZXNzb3IoIngtZm9vIik7CiAgICAgICAgIGFkZE1vY2tQcm9j
ZXNzb3IoIngtYmFyIik7CiAgICAgICAgIEVYUEVDVF9GQUxTRShtX2V4dGVuc2lvbnMucHJvY2Vz
c0hlYWRlclZhbHVlKGlucHV0c1tpXSkpOworICAgICAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lv
bnMuYWNjZXB0ZWRFeHRlbnNpb25zKCkuaXNOdWxsKCkpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>