<?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>73852</bug_id>
          
          <creation_ts>2011-12-05 12:22:30 -0800</creation_ts>
          <short_desc>Expose reusable WebSocket code for WebSocketServer.</short_desc>
          <delta_ts>2012-04-03 06:34:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>73094</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515282</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-05 12:22:30 -0800</bug_when>
    <thetext>Expose reusable WebSocket code for WebSocketServer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515284</commentid>
    <comment_count>1</comment_count>
      <attachid>117914</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-05 12:24:09 -0800</bug_when>
    <thetext>Created attachment 117914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518989</commentid>
    <comment_count>2</comment_count>
      <attachid>117914</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-11 20:44:03 -0800</bug_when>
    <thetext>Comment on attachment 117914
Patch

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

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:959
&gt; +void WebSocketChannel::buildFrame(OpCode opCode, bool maskPayload, const char* data, size_t dataLength, Vector&lt;char&gt;&amp; frame)

Could you elaborate this change?
I couldn&apos;t see any reason to have an option to allow non-masked frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518990</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-11 20:44:59 -0800</bug_when>
    <thetext>Hi yutak@, toyoshim@, do you have any opinion about this?
Because this change is superficial and I&apos;m OK to rubber-stamping this
Once you guys agree this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519004</commentid>
    <comment_count>4</comment_count>
      <attachid>117914</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-12-11 21:29:27 -0800</bug_when>
    <thetext>Comment on attachment 117914
Patch

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

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:959
&gt;&gt; +void WebSocketChannel::buildFrame(OpCode opCode, bool maskPayload, const char* data, size_t dataLength, Vector&lt;char&gt;&amp; frame)
&gt; 
&gt; Could you elaborate this change?
&gt; I couldn&apos;t see any reason to have an option to allow non-masked frames.

WebSocket&apos;s spec say only upstream frames must be masked.
I guess that&apos;s why he added this option and agree with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519006</commentid>
    <comment_count>5</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-12-11 21:30:17 -0800</bug_when>
    <thetext>I have no objection to this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519013</commentid>
    <comment_count>6</comment_count>
      <attachid>117914</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-12-11 21:45:27 -0800</bug_when>
    <thetext>Comment on attachment 117914
Patch

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

&gt;&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:959
&gt;&gt;&gt; -bool WebSocketChannel::sendFrame(OpCode opCode, const char* data, size_t dataLength)
&gt;&gt;&gt; +void WebSocketChannel::buildFrame(OpCode opCode, bool maskPayload, const char* data, size_t dataLength, Vector&lt;char&gt;&amp; frame)

Adding a bool argument is not good.
We had better update the following functions:

* Adding buildFrameHeader()
* Adding buildUnmaskedFrame()
  calling buildFrameHeader() and frame.append(data, dataLength)
* Updating sendFrame()
  calling buildFrameHeader(), masking the payload, and sending it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519446</commentid>
    <comment_count>7</comment_count>
      <attachid>118841</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-12 14:07:08 -0800</bug_when>
    <thetext>Created attachment 118841
Patch

Thanks for having a look. I checked and I would still need a boolean flag in buildFrameHeader to set the mask bit and append the making key. Here is a patch that replaces the boolean flag by an option enum that contains all the flag bit for the frame and use it in FrameData as well instead of individual booleans.

Another option would be to keep it that way and add an enum flag just for the masking, or tell me if you have another idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519453</commentid>
    <comment_count>8</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-12 14:15:06 -0800</bug_when>
    <thetext>By the way, there is a patch in bug #73092 that goes along the same line as this one. If one of you guys could have a look that would probably be the best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519531</commentid>
    <comment_count>9</comment_count>
      <attachid>118841</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-12 14:57:44 -0800</bug_when>
    <thetext>Comment on attachment 118841
Patch

Attachment 118841 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10848074

New failing tests:
http/tests/websocket/tests/hybi/reserved-bits.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519809</commentid>
    <comment_count>10</comment_count>
      <attachid>118841</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-12-12 19:41:27 -0800</bug_when>
    <thetext>Comment on attachment 118841
Patch

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

The patch generally looks fine to me. If the failure from EWS is real, you need to investigate and fix it. [Note: I&apos;m not a WebKit reviewer.]

&gt; Source/WebCore/websockets/WebSocketChannel.h:145
&gt; +    static ParseFrameResult parseFrame(const char* data, size_t dataLength, FrameData&amp;, String&amp; errorString); // May modify part of &quot;data&quot; to unmask the frame.

The type of |data| should be char* (non-const) to indicate the content of |data| may be modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519837</commentid>
    <comment_count>11</comment_count>
      <attachid>118841</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-12-12 20:30:01 -0800</bug_when>
    <thetext>Comment on attachment 118841
Patch

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

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:634
&gt; +    if (isControlOpCode(frame.opCode) &amp;&amp; !frame.options &amp; FrameOptionFinal) {

Do you mean !(frame.options &amp; FrameOptionFinal) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519858</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-12-12 21:46:19 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Thanks for having a look. I checked and I would still need a boolean flag in buildFrameHeader to set the mask bit and append the making key. Here is a patch that replaces the boolean flag by an option enum that contains all the flag bit for the frame and use it in FrameData as well instead of individual booleans.
&gt; 
&gt; Another option would be to keep it that way and add an enum flag just for the masking, or tell me if you have another idea.

ok, I see.  The FrameOptions idea looks nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520273</commentid>
    <comment_count>13</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-13 12:14:15 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; The patch generally looks fine to me. If the failure from EWS is real, you need to investigate and fix it. [Note: I&apos;m not a WebKit reviewer.]

This test was passing on other platform since WTF String would convert the bit-ANDed value automatically to bool for some reason. On chromium the error message was something like &quot;One or more reserved bits are on: reserved1 = 2, reserved2 = 4, reserved3 = 8&quot; instead of &quot;...= 1, ...= 1, ...= 1&quot;. It should work now.

&gt; The type of |data| should be char* (non-const) to indicate the content of |data| may be modified.

Good idea.

(In reply to comment #11)
&gt; Do you mean !(frame.options &amp; FrameOptionFinal) ?

This is embarrassing, nice catch.
A new patch is following.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520275</commentid>
    <comment_count>14</comment_count>
      <attachid>119061</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-13 12:15:44 -0800</bug_when>
    <thetext>Created attachment 119061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520560</commentid>
    <comment_count>15</comment_count>
      <attachid>119061</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-12-13 18:12:43 -0800</bug_when>
    <thetext>Comment on attachment 119061
Patch

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

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:629
&gt; -        fail(&quot;One or more reserved bits are on: reserved1 = &quot; + String::number(frame.reserved1) + &quot;, reserved2 = &quot; + String::number(frame.reserved2) + &quot;, reserved3 = &quot; + String::number(frame.reserved3));
&gt; +    if (frame.options &amp; (FrameOptionReserved1 | FrameOptionReserved2 | FrameOptionReserved3)) {
&gt; +        fail(&quot;One or more reserved bits are on: reserved1 = &quot; + String::number(!!(frame.options &amp; FrameOptionReserved1)) + &quot;, reserved2 = &quot; + String::number(!!(frame.options &amp; FrameOptionReserved2)) + &quot;, reserved3 = &quot; + String::number(!!(frame.options &amp; FrameOptionReserved3)));

nit: We have String::format().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520840</commentid>
    <comment_count>16</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-12-14 04:14:25 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; nit: We have String::format().

Thanks! Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591294</commentid>
    <comment_count>17</comment_count>
      <attachid>134613</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-03-29 10:38:47 -0700</bug_when>
    <thetext>Created attachment 134613
Patch

Taking some time to iterate over the inspector server patches again.
I had to rebase this patch. The code has now been moved to the new WebSocketFrame instead of exposing straight static methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591776</commentid>
    <comment_count>18</comment_count>
      <attachid>134613</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-29 18:09:54 -0700</bug_when>
    <thetext>Comment on attachment 134613
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocketFrame.cpp:2
&gt; + * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)

Please respect the copyright of the original code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591965</commentid>
    <comment_count>19</comment_count>
      <attachid>134749</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-03-30 02:05:45 -0700</bug_when>
    <thetext>Created attachment 134749
Patch

Preserve the copyrights for WebSocketFrame.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592011</commentid>
    <comment_count>20</comment_count>
      <attachid>134749</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-30 03:34:29 -0700</bug_when>
    <thetext>Comment on attachment 134749
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:589
&gt; -    if (WebSocketFrame::isControlOpCode(frame.opCode) &amp;&amp; frame.payloadLength &gt; maxPayloadLengthWithoutExtendedLengthField) {
&gt; +    if (WebSocketFrame::isControlOpCode(frame.opCode) &amp;&amp; frame.payloadLength &gt; WebSocketFrame::maxPayloadLengthWithoutExtendedLengthField) {

I recommend adding WebSocketFrame::isControlFrameWithTooLongPayload(), and hide maxPayloadLengthWithoutExtendedLengthField.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593067</commentid>
    <comment_count>21</comment_count>
      <attachid>135010</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-04-01 12:22:57 -0700</bug_when>
    <thetext>Created attachment 135010
Patch

Expose maxPayloadLengthWithoutExtendedLengthField as WebSocketFrame::needsExtendedLengthField to make it consistent with the other struct helpers. Tell me if that&apos;s alright.
WebSocketFrame might also look better as a proper class instead of those helpers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593151</commentid>
    <comment_count>22</comment_count>
      <attachid>135010</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-01 20:31:25 -0700</bug_when>
    <thetext>Comment on attachment 135010
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594431</commentid>
    <comment_count>23</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-04-03 06:34:35 -0700</bug_when>
    <thetext>Committed r113025: &lt;http://trac.webkit.org/changeset/113025&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117914</attachid>
            <date>2011-12-05 12:24:09 -0800</date>
            <delta_ts>2011-12-12 14:07:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73852-20111205212407.patch</filename>
            <type>text/plain</type>
            <size>10991</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI5ZWRhZWE2ZWRmOGU3
NWYxNjgxZmQ4NGViMjNkN2VlODAxOWFkMi4uZGIzZTEyNzlmMjE0NzI3YjU1YTkyOGI5NDQ4OTUw
Y2E4MWM4MjRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTEyLTA1ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRXhw
b3NlIHJldXNhYmxlIFdlYlNvY2tldCBjb2RlIGZvciBXZWJTb2NrZXRTZXJ2ZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdGhlIG1ham9yaXR5
IHRoZSB3ZWIgc29ja2V0IGhhbmRzaGFrZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGxvZ2lj
CisgICAgICAgIGluc2lkZSBXZWJTb2NrZXRIYW5kc2hha2UgYW5kIGV4cG9zZSBpdCBzdGF0aWNh
bGx5IHRvIG1ha2UgaXQgYXZhaWxhYmxlCisgICAgICAgIGZvciB0aGUgc2VydmVyIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUpOiBtYWRlIHN0YXRp
Yy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6IGZl
ZWQgbWVtYmVyIGRhdGEgdG8gcGFyc2VGcmFtZSBhcyBwYXJhbWV0ZXJzLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6YnVpbGRGcmFtZSk6IGZyYW1lIGJ1aWxkaW5nIGxvZ2lj
IGV4dHJhY3RlZCBmcm9tIHNlbmRGcmFtZSBhbmQgbWFkZSBzdGF0aWMuCisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUpOiBub3cganVzdCBjYWxscyBidWlsZEZy
YW1lIGFuZCBzZW5kcyB0aGUgZGF0YS4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaDogbWFkZSBPcENvZGUsIFBhcnNlRnJhbWVSZXN1bHQgYW5kIHBhcnNlRnJhbWUgcHVi
bGljLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2Nl
cHQpOiBleHBvc2UgdGhpcyBvYmplY3Qtc3RhdGljIGZ1bmN0aW9uLgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6CisKIDIwMTEtMTEtMjQgIEpvc2VwaCBQZWNvcmFy
byAgPGpvZXBlY2tAd2Via2l0Lm9yZz4gYW5kIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1
cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBBZGQgR2VuZXJpYyBIVFRQIFJlcXVlc3QgQ2xh
c3MuIEdlbmVyYWxpemVkIEhUVFAgUGFyc2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU1M2E5OWY4MzI2N2Q0YTU0Zjg1Y2JhNzUy
YzI4N2M1OWIyZTZkYjcuLjUyODA3N2U0NjVkYWU1YjM0NjcxOWQwZDY4Zjc1YzA2YWI0ZDFmMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApA
QCAtNTMwLDEyICs1MzAsMTIgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJG
aXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCiAgICAgICAgIG1faGFuZGxlLT5k
aXNjb25uZWN0KCk7CiB9CiAKLVdlYlNvY2tldENoYW5uZWw6OlBhcnNlRnJhbWVSZXN1bHQgV2Vi
U29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZShGcmFtZURhdGEmIGZyYW1lKQorV2ViU29ja2V0Q2hh
bm5lbDo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRDaGFubmVsOjpwYXJzZUZyYW1lKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBGcmFtZURhdGEmIGZyYW1lLCBTdHJpbmcm
IGVycm9yU3RyaW5nKQogewotICAgIGNvbnN0IGNoYXIqIHAgPSBtX2J1ZmZlcjsKLSAgICBjb25z
dCBjaGFyKiBidWZmZXJFbmQgPSBtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZTsKKyAgICBjb25zdCBj
aGFyKiBwID0gZGF0YTsKKyAgICBjb25zdCBjaGFyKiBidWZmZXJFbmQgPSBkYXRhICsgZGF0YUxl
bmd0aDsKIAotICAgIGlmIChtX2J1ZmZlclNpemUgPCAyKQorICAgIGlmIChkYXRhTGVuZ3RoIDwg
MikKICAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKIAogICAgIHVuc2lnbmVkIGNoYXIg
Zmlyc3RCeXRlID0gKnArKzsKQEAgLTU3NCw3ICs1NzQsNyBAQCBXZWJTb2NrZXRDaGFubmVsOjpQ
YXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUoRnJhbWVEYXRhJiBm
cmFtZQogI2VuZGlmCiAgICAgc2l6ZV90IG1hc2tpbmdLZXlMZW5ndGggPSBtYXNrZWQgPyBtYXNr
aW5nS2V5V2lkdGhJbkJ5dGVzIDogMDsKICAgICBpZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5
bG9hZExlbmd0aCB8fCBwYXlsb2FkTGVuZ3RoNjQgKyBtYXNraW5nS2V5TGVuZ3RoID4gbnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsKLSAgICAgICAgZmFpbCgiV2ViU29ja2V0IGZyYW1l
IGxlbmd0aCB0b28gbGFyZ2U6ICIgKyBTdHJpbmc6Om51bWJlcihwYXlsb2FkTGVuZ3RoNjQpICsg
IiBieXRlcyIpOworICAgICAgICBlcnJvclN0cmluZyA9ICJXZWJTb2NrZXQgZnJhbWUgbGVuZ3Ro
IHRvbyBsYXJnZTogIiArIFN0cmluZzo6bnVtYmVyKHBheWxvYWRMZW5ndGg2NCkgKyAiIGJ5dGVz
IjsKICAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7CiAgICAgfQogICAgIHNpemVfdCBwYXlsb2Fk
TGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXlsb2FkTGVuZ3RoNjQpOwpAQCAtNjA2LDgg
KzYwNiwxNCBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgQVNT
RVJUKG1fYnVmZmVyKTsKIAogICAgIEZyYW1lRGF0YSBmcmFtZTsKLSAgICBpZiAocGFyc2VGcmFt
ZShmcmFtZSkgIT0gRnJhbWVPSykKKyAgICBTdHJpbmcgZXJyb3JTdHJpbmc7CisgICAgUGFyc2VG
cmFtZVJlc3VsdCByZXN1bHQgPSBwYXJzZUZyYW1lKG1fYnVmZmVyLCBtX2J1ZmZlclNpemUsIGZy
YW1lLCBlcnJvclN0cmluZyk7CisgICAgaWYgKHJlc3VsdCA9PSBGcmFtZUluY29tcGxldGUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmVzdWx0ID09IEZyYW1lRXJyb3IpIHsKKyAg
ICAgICAgZmFpbChlcnJvclN0cmluZyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAK
ICAgICAvLyBWYWxpZGF0ZSB0aGUgZnJhbWUgZGF0YS4KICAgICBpZiAoaXNSZXNlcnZlZE9wQ29k
ZShmcmFtZS5vcENvZGUpKSB7CkBAIC05NTAsMjIgKzk1NiwxOSBAQCB2b2lkIFdlYlNvY2tldENo
YW5uZWw6OmFib3J0T3V0Z29pbmdGcmFtZVF1ZXVlKCkKICNlbmRpZgogfQogCi1ib29sIFdlYlNv
Y2tldENoYW5uZWw6OnNlbmRGcmFtZShPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6YnVpbGRGcmFtZShPcENv
ZGUgb3BDb2RlLCBib29sIG1hc2tQYXlsb2FkLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCwgVmVjdG9yPGNoYXI+JiBmcmFtZSkKIHsKLSAgICBBU1NFUlQobV9oYW5kbGUpOwot
ICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwotCi0gICAgVmVjdG9yPGNoYXI+IGZyYW1lOwogICAg
IEFTU0VSVCghKG9wQ29kZSAmIH5vcENvZGVNYXNrKSk7IC8vIENoZWNrcyB3aGV0aGVyICJvcENv
ZGUiIGZpdHMgaW4gdGhlIHJhbmdlIG9mIG9wQ29kZXMuCisgICAgdW5zaWduZWQgY2hhciBtYXNr
RmxhZyA9IG1hc2tQYXlsb2FkID8gbWFza0JpdCA6IDA7CiAgICAgZnJhbWUuYXBwZW5kKGZpbmFs
Qml0IHwgb3BDb2RlKTsKICAgICBpZiAoZGF0YUxlbmd0aCA8PSBtYXhQYXlsb2FkTGVuZ3RoV2l0
aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpCi0gICAgICAgIGZyYW1lLmFwcGVuZChtYXNrQml0IHwg
ZGF0YUxlbmd0aCk7CisgICAgICAgIGZyYW1lLmFwcGVuZChtYXNrRmxhZyB8IGRhdGFMZW5ndGgp
OwogICAgIGVsc2UgaWYgKGRhdGFMZW5ndGggPD0gMHhGRkZGKSB7Ci0gICAgICAgIGZyYW1lLmFw
cGVuZChtYXNrQml0IHwgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVs
ZCk7CisgICAgICAgIGZyYW1lLmFwcGVuZChtYXNrRmxhZyB8IHBheWxvYWRMZW5ndGhXaXRoVHdv
Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQpOwogICAgICAgICBmcmFtZS5hcHBlbmQoKGRhdGFMZW5n
dGggJiAweEZGMDApID4+IDgpOwogICAgICAgICBmcmFtZS5hcHBlbmQoZGF0YUxlbmd0aCAmIDB4
RkYpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGZyYW1lLmFwcGVuZChtYXNrQml0IHwgcGF5bG9h
ZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkKTsKKyAgICAgICAgZnJhbWUu
YXBwZW5kKG1hc2tGbGFnIHwgcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0
aEZpZWxkKTsKICAgICAgICAgY2hhciBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07CiAgICAgICAg
IHNpemVfdCByZW1haW5pbmcgPSBkYXRhTGVuZ3RoOwogICAgICAgICAvLyBGaWxsIHRoZSBsZW5n
dGggaW50byBleHRlbmRlZFBheWxvYWRMZW5ndGggaW4gdGhlIG5ldHdvcmsgYnl0ZSBvcmRlci4K
QEAgLTk3NywxNSArOTgwLDI2IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKE9w
Q29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuCiAgICAgICAgIGZy
YW1lLmFwcGVuZChleHRlbmRlZFBheWxvYWRMZW5ndGgsIDgpOwogICAgIH0KIAotICAgIC8vIE1h
c2sgdGhlIGZyYW1lLgotICAgIHNpemVfdCBtYXNraW5nS2V5U3RhcnQgPSBmcmFtZS5zaXplKCk7
Ci0gICAgZnJhbWUuZ3JvdyhmcmFtZS5zaXplKCkgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsg
Ly8gQWRkIHBsYWNlaG9sZGVyIGZvciBtYXNraW5nIGtleS4gV2lsbCBiZSBvdmVyd3JpdHRlbi4K
LSAgICBzaXplX3QgcGF5bG9hZFN0YXJ0ID0gZnJhbWUuc2l6ZSgpOwotICAgIGZyYW1lLmFwcGVu
ZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBpZiAobWFza1BheWxvYWQpIHsKKyAgICAgICAgc2l6
ZV90IG1hc2tpbmdLZXlTdGFydCA9IGZyYW1lLnNpemUoKTsKKyAgICAgICAgZnJhbWUuZ3Jvdyhm
cmFtZS5zaXplKCkgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsgLy8gQWRkIHBsYWNlaG9sZGVy
IGZvciBtYXNraW5nIGtleS4gV2lsbCBiZSBvdmVyd3JpdHRlbi4KKyAgICAgICAgc2l6ZV90IHBh
eWxvYWRTdGFydCA9IGZyYW1lLnNpemUoKTsKKyAgICAgICAgZnJhbWUuYXBwZW5kKGRhdGEsIGRh
dGFMZW5ndGgpOwogCi0gICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMoZnJhbWUuZGF0
YSgpICsgbWFza2luZ0tleVN0YXJ0LCBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7ICsraSkKLSAgICAgICAgZnJhbWVbcGF5bG9h
ZFN0YXJ0ICsgaV0gXj0gZnJhbWVbbWFza2luZ0tleVN0YXJ0ICsgaSAlIG1hc2tpbmdLZXlXaWR0
aEluQnl0ZXNdOworICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhmcmFtZS5k
YXRhKCkgKyBtYXNraW5nS2V5U3RhcnQsIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGZy
YW1lW3BheWxvYWRTdGFydCArIGldIF49IGZyYW1lW21hc2tpbmdLZXlTdGFydCArIGkgJSBtYXNr
aW5nS2V5V2lkdGhJbkJ5dGVzXTsKKyAgICB9IGVsc2UKKyAgICAgICAgZnJhbWUuYXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOworfQorCitib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShP
cENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3sKKyAg
ICBBU1NFUlQobV9oYW5kbGUpOworICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOworCisgICAgVmVj
dG9yPGNoYXI+IGZyYW1lOworICAgIGJ1aWxkRnJhbWUob3BDb2RlLCB0cnVlLCBkYXRhLCBkYXRh
TGVuZ3RoLCBmcmFtZSk7CiAKICAgICByZXR1cm4gbV9oYW5kbGUtPnNlbmQoZnJhbWUuZGF0YSgp
LCBmcmFtZS5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaAppbmRleCBlMzFiYmUzMTc3ZGFmNjZiY2U2OGRhN2IwOWQ1NmZmMTljZmU3NGQw
Li40NTRlZTRiN2UxZTMyZDNjMjAzZWJiYzExNGUyOGI5YmUzMTAwMTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMTA3LDIzICsxMDcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGVycm9yQ29kZSk7CiAjZW5k
aWYKIAotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpkZXJlZjsKLQotcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgdm9pZCByZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgcmVmKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsg
ZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAgIFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsKLQotICAgIGJvb2wgYXBwZW5k
VG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbik7Ci0gICAgdm9pZCBza2lwQnVm
ZmVyKHNpemVfdCBsZW4pOwotICAgIGJvb2wgcHJvY2Vzc0J1ZmZlcigpOwotICAgIHZvaWQgcmVz
dW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOwotICAgIHZvaWQgc3RhcnRD
bG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7Ci0gICAgdm9p
ZCBjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOwotCiAgICAgLy8g
SHliaS0xMCBvcGNvZGVzLgogICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IE9wQ29kZTsKICAgICBz
dGF0aWMgY29uc3QgT3BDb2RlIE9wQ29kZUNvbnRpbnVhdGlvbjsKQEAgLTEzMywxMCArMTE2LDYg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgT3BDb2RlIE9wQ29kZVBpbmc7CiAgICAgc3Rh
dGljIGNvbnN0IE9wQ29kZSBPcENvZGVQb25nOwogCi0gICAgc3RhdGljIGJvb2wgaXNOb25Db250
cm9sT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuIG9wQ29kZSA9PSBPcENvZGVDb250aW51
YXRpb24gfHwgb3BDb2RlID09IE9wQ29kZVRleHQgfHwgb3BDb2RlID09IE9wQ29kZUJpbmFyeTsg
fQotICAgIHN0YXRpYyBib29sIGlzQ29udHJvbE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVy
biBvcENvZGUgPT0gT3BDb2RlQ2xvc2UgfHwgb3BDb2RlID09IE9wQ29kZVBpbmcgfHwgb3BDb2Rl
ID09IE9wQ29kZVBvbmc7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1Jlc2VydmVkT3BDb2RlKE9wQ29k
ZSBvcENvZGUpIHsgcmV0dXJuICFpc05vbkNvbnRyb2xPcENvZGUob3BDb2RlKSAmJiAhaXNDb250
cm9sT3BDb2RlKG9wQ29kZSk7IH0KLQogICAgIGVudW0gUGFyc2VGcmFtZVJlc3VsdCB7CiAgICAg
ICAgIEZyYW1lT0ssCiAgICAgICAgIEZyYW1lSW5jb21wbGV0ZSwKQEAgLTE1NSw3ICsxMzQsMjkg
QEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgY2hhciogZnJhbWVFbmQ7CiAgICAgfTsKIAotICAg
IFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZShGcmFtZURhdGEmKTsgLy8gTWF5IG1vZGlmeSBw
YXJ0IG9mIG1fYnVmZmVyIHRvIHVubWFzayB0aGUgZnJhbWUuCisgICAgc3RhdGljIFBhcnNlRnJh
bWVSZXN1bHQgcGFyc2VGcmFtZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
RnJhbWVEYXRhJiwgU3RyaW5nJiBlcnJvclN0cmluZyk7IC8vIE1heSBtb2RpZnkgcGFydCBvZiAi
ZGF0YSIgdG8gdW5tYXNrIHRoZSBmcmFtZS4KKyAgICBzdGF0aWMgdm9pZCBidWlsZEZyYW1lKE9w
Q29kZSwgYm9vbCBtYXNrUGF5bG9hZCwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIFZlY3RvcjxjaGFyPiYgZnJhbWUpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2Nr
ZXRDaGFubmVsPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD46
OmRlcmVmOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIHJlZlRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsKCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZlRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsKCkgeyBkZXJlZigpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViU29j
a2V0Q2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCopOworCisgICAgYm9vbCBhcHBlbmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuKTsKKyAgICB2b2lkIHNraXBCdWZmZXIoc2l6ZV90IGxlbik7CisgICAgYm9vbCBwcm9jZXNz
QnVmZmVyKCk7CisgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5u
ZWw+Kik7CisgICAgdm9pZCBzdGFydENsb3NpbmdIYW5kc2hha2UoaW50IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uKTsKKyAgICB2b2lkIGNsb3NpbmdUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tl
dENoYW5uZWw+Kik7CisKKyAgICBzdGF0aWMgYm9vbCBpc05vbkNvbnRyb2xPcENvZGUoT3BDb2Rl
IG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNvbnRpbnVhdGlvbiB8fCBvcENvZGUg
PT0gT3BDb2RlVGV4dCB8fCBvcENvZGUgPT0gT3BDb2RlQmluYXJ5OyB9CisgICAgc3RhdGljIGJv
b2wgaXNDb250cm9sT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuIG9wQ29kZSA9PSBPcENv
ZGVDbG9zZSB8fCBvcENvZGUgPT0gT3BDb2RlUGluZyB8fCBvcENvZGUgPT0gT3BDb2RlUG9uZzsg
fQorICAgIHN0YXRpYyBib29sIGlzUmVzZXJ2ZWRPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1
cm4gIWlzTm9uQ29udHJvbE9wQ29kZShvcENvZGUpICYmICFpc0NvbnRyb2xPcENvZGUob3BDb2Rl
KTsgfQogCiAgICAgYm9vbCBwcm9jZXNzRnJhbWUoKTsKICAgICBib29sIHByb2Nlc3NGcmFtZUhp
eGllNzYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcAppbmRleCA4YjFhOGY2OTFhMmI1MzI4OWQ3YzgxOGNmYTVmMTE4Y2M2NTEwZTJiLi4x
MWUwZDdmNDA3NmU2MmMyOWMzMGFmYjhkZjE4YzQ5Y2YxNmVkNmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC0xNzAsNyArMTcw
LDcgQEAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVNlY1dlYlNvY2tldEtleSgpCiAgICAgcmV0dXJu
IGJhc2U2NEVuY29kZShyZWludGVycHJldF9jYXN0PGNoYXIqPihrZXkpLCBub25jZVNpemUpOwog
fQogCi1zdGF0aWMgU3RyaW5nIGdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KGNvbnN0IFN0cmlu
ZyYgc2VjV2ViU29ja2V0S2V5KQorU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Z2V0RXhwZWN0
ZWRXZWJTb2NrZXRBY2NlcHQoY29uc3QgU3RyaW5nJiBzZWNXZWJTb2NrZXRLZXkpCiB7CiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHdlYlNvY2tldEtleUdVSUQgPSAiMjU4RUFGQTUtRTkx
NC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExIjsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNoYTFI
YXNoU2l6ZSA9IDIwOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVmaW5lZCBpbiBTSEExLmgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAppbmRl
eCA4OWNlMjk5MDkwNGI2MTE5MTViZGVmZDA3NmI0NDAwZGY0ZWNkYjc3Li4wMmM5YWFiYWYwMjdi
MGE4ZmI4YTM3YjA5Y2UxYTA0OTVjNWEwYmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTg1LDYgKzg1LDggQEAgcHVibGljOgogCiAg
ICAgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3Bv
bnNlKCkgY29uc3Q7CiAKKyAgICBzdGF0aWMgU3RyaW5nIGdldEV4cGVjdGVkV2ViU29ja2V0QWNj
ZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0S2V5KTsKKwogcHJpdmF0ZToKICAgICBLVVJM
IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118841</attachid>
            <date>2011-12-12 14:07:08 -0800</date>
            <delta_ts>2011-12-13 12:15:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73852-20111212230635.patch</filename>
            <type>text/plain</type>
            <size>15537</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmZhN2JjNDM5Nzc0OGY2
ODg5N2Q2ODViYTdmYjRkYmJjZGM3MDM4ZS4uNjExMmZkODRhNWE1ZDI5ZmVlODJmZmRkYTljYjMy
NjM5MTgzOGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTA1ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRXhw
b3NlIHJldXNhYmxlIFdlYlNvY2tldCBjb2RlIGZvciBXZWJTb2NrZXRTZXJ2ZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdGhlIG1ham9yaXR5
IHRoZSB3ZWIgc29ja2V0IGhhbmRzaGFrZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGxvZ2lj
CisgICAgICAgIGluc2lkZSBXZWJTb2NrZXRIYW5kc2hha2UgYW5kIGV4cG9zZSBpdCBzdGF0aWNh
bGx5IHRvIG1ha2UgaXQgYXZhaWxhYmxlCisgICAgICAgIGZvciB0aGUgc2VydmVyIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICBJbmRpdmlkdWFsIG9wdGlvbnMgZm9yIHRoZSBmcmFtZSBoYXZlIGJl
ZW4gcmVwbGFjZWQgYnkgRnJhbWVPcHRpb24gdG8gYWxsb3cKKyAgICAgICAgcGFzc2luZyB0aGUg
Im1hc2tlZCIgb3B0aW9uIHRvIGJ1aWxkRnJhbWUuCisKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
cGFyc2VGcmFtZSk6IG1hZGUgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc0ZyYW1lKTogZmVlZCBtZW1iZXIgZGF0YSB0byBwYXJzZUZyYW1lIGFzIHBh
cmFtZXRlcnMuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpidWlsZEZyYW1l
KTogZnJhbWUgYnVpbGRpbmcgbG9naWMgZXh0cmFjdGVkIGZyb20gc2VuZEZyYW1lIGFuZCBtYWRl
IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZSk6
IG5vdyBqdXN0IGNhbGxzIGJ1aWxkRnJhbWUgYW5kIHNlbmRzIHRoZSBkYXRhLgorICAgICAgICAq
IHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOiBtYWRlIE9wQ29kZSwgUGFyc2VGcmFtZVJl
c3VsdCBhbmQgcGFyc2VGcmFtZSBwdWJsaWMuIEFkZCBGcmFtZU9wdGlvbihzKS4KKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KTogZXhwb3NlIHRo
aXMgb2JqZWN0LXN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oOgorCiAyMDExLTExLTI0ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdl
YmtpdC5vcmc+IGFuZCBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5j
b20+CiAKICAgICAgICAgQWRkIEdlbmVyaWMgSFRUUCBSZXF1ZXN0IENsYXNzLiBHZW5lcmFsaXpl
ZCBIVFRQIFBhcnNpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCBlNjQ5NDU0ZWVjMTE1NzA4OTc1OTc1NzUxOWNiMWMxNjhhMDJlYjUz
Li41NjQxZDQ1NmQ1NGFiMWY4MTQyNzc1NmNjNjhiNTMyYTY2ZjJjZTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTUzNiwyNCArNTM2
LDI2IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2Vi
U29ja2V0Q2hhbm5lbD4qIHRpbWVyKQogICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgpOwog
fQogCi1XZWJTb2NrZXRDaGFubmVsOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6
OnBhcnNlRnJhbWUoRnJhbWVEYXRhJiBmcmFtZSkKK1dlYlNvY2tldENoYW5uZWw6OlBhcnNlRnJh
bWVSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCwgRnJhbWVEYXRhJiBmcmFtZSwgU3RyaW5nJiBlcnJvclN0cmluZykK
IHsKLSAgICBjb25zdCBjaGFyKiBwID0gbV9idWZmZXI7Ci0gICAgY29uc3QgY2hhciogYnVmZmVy
RW5kID0gbV9idWZmZXIgKyBtX2J1ZmZlclNpemU7CisgICAgY29uc3QgY2hhciogcCA9IGRhdGE7
CisgICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0gZGF0YSArIGRhdGFMZW5ndGg7CiAKLSAgICBp
ZiAobV9idWZmZXJTaXplIDwgMikKKyAgICBpZiAoZGF0YUxlbmd0aCA8IDIpCiAgICAgICAgIHJl
dHVybiBGcmFtZUluY29tcGxldGU7CiAKICAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9ICpw
Kys7CiAgICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnArKzsKIAotICAgIGJvb2wgZmlu
YWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKLSAgICBib29sIHJlc2VydmVkMSA9IGZpcnN0Qnl0
ZSAmIHJlc2VydmVkMUJpdDsKLSAgICBib29sIHJlc2VydmVkMiA9IGZpcnN0Qnl0ZSAmIHJlc2Vy
dmVkMkJpdDsKLSAgICBib29sIHJlc2VydmVkMyA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkM0JpdDsK
KyAgICBGcmFtZU9wdGlvbnMgb3B0aW9ucyA9IDA7CisgICAgb3B0aW9ucyB8PSAoZmlyc3RCeXRl
ICYgZmluYWxCaXQpID8gRnJhbWVPcHRpb25GaW5hbCA6IDA7CisgICAgb3B0aW9ucyB8PSAoZmly
c3RCeXRlICYgcmVzZXJ2ZWQxQml0KSA/IEZyYW1lT3B0aW9uUmVzZXJ2ZWQxIDogMDsKKyAgICBv
cHRpb25zIHw9IChmaXJzdEJ5dGUgJiByZXNlcnZlZDJCaXQpID8gRnJhbWVPcHRpb25SZXNlcnZl
ZDIgOiAwOworICAgIG9wdGlvbnMgfD0gKGZpcnN0Qnl0ZSAmIHJlc2VydmVkM0JpdCkgPyBGcmFt
ZU9wdGlvblJlc2VydmVkMyA6IDA7CiAgICAgT3BDb2RlIG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9w
Q29kZU1hc2s7CiAKICAgICBib29sIG1hc2tlZCA9IHNlY29uZEJ5dGUgJiBtYXNrQml0OworICAg
IG9wdGlvbnMgfD0gbWFza2VkID8gRnJhbWVPcHRpb25NYXNrZWQgOiAwOwogICAgIHVpbnQ2NF90
IHBheWxvYWRMZW5ndGg2NCA9IHNlY29uZEJ5dGUgJiBwYXlsb2FkTGVuZ3RoTWFzazsKICAgICBp
ZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0
aEZpZWxkKSB7CiAgICAgICAgIGludCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplOwpAQCAtNTgw
LDcgKzU4Miw3IEBAIFdlYlNvY2tldENoYW5uZWw6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0
Q2hhbm5lbDo6cGFyc2VGcmFtZShGcmFtZURhdGEmIGZyYW1lCiAjZW5kaWYKICAgICBzaXplX3Qg
bWFza2luZ0tleUxlbmd0aCA9IG1hc2tlZCA/IG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMgOiAwOwog
ICAgIGlmIChwYXlsb2FkTGVuZ3RoNjQgPiBtYXhQYXlsb2FkTGVuZ3RoIHx8IHBheWxvYWRMZW5n
dGg2NCArIG1hc2tpbmdLZXlMZW5ndGggPiBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkg
ewotICAgICAgICBmYWlsKCJXZWJTb2NrZXQgZnJhbWUgbGVuZ3RoIHRvbyBsYXJnZTogIiArIFN0
cmluZzo6bnVtYmVyKHBheWxvYWRMZW5ndGg2NCkgKyAiIGJ5dGVzIik7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIldlYlNvY2tldCBmcmFtZSBsZW5ndGggdG9vIGxhcmdlOiAiICsgU3RyaW5nOjpu
dW1iZXIocGF5bG9hZExlbmd0aDY0KSArICIgYnl0ZXMiOwogICAgICAgICByZXR1cm4gRnJhbWVF
cnJvcjsKICAgICB9CiAgICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHBheWxvYWRMZW5ndGg2NCk7CkBAIC01OTYsMTEgKzU5OCw3IEBAIFdlYlNvY2tldENoYW5u
ZWw6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZShGcmFtZURh
dGEmIGZyYW1lCiAgICAgfQogCiAgICAgZnJhbWUub3BDb2RlID0gb3BDb2RlOwotICAgIGZyYW1l
LmZpbmFsID0gZmluYWw7Ci0gICAgZnJhbWUucmVzZXJ2ZWQxID0gcmVzZXJ2ZWQxOwotICAgIGZy
YW1lLnJlc2VydmVkMiA9IHJlc2VydmVkMjsKLSAgICBmcmFtZS5yZXNlcnZlZDMgPSByZXNlcnZl
ZDM7Ci0gICAgZnJhbWUubWFza2VkID0gbWFza2VkOworICAgIGZyYW1lLm9wdGlvbnMgPSBvcHRp
b25zOwogICAgIGZyYW1lLnBheWxvYWQgPSBwICsgbWFza2luZ0tleUxlbmd0aDsKICAgICBmcmFt
ZS5wYXlsb2FkTGVuZ3RoID0gcGF5bG9hZExlbmd0aDsKICAgICBmcmFtZS5mcmFtZUVuZCA9IHAg
KyBtYXNraW5nS2V5TGVuZ3RoICsgcGF5bG9hZExlbmd0aDsKQEAgLTYxMiw4ICs2MTAsMTQgQEAg
Ym9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgIEFTU0VSVChtX2J1ZmZl
cik7CiAKICAgICBGcmFtZURhdGEgZnJhbWU7Ci0gICAgaWYgKHBhcnNlRnJhbWUoZnJhbWUpICE9
IEZyYW1lT0spCisgICAgU3RyaW5nIGVycm9yU3RyaW5nOworICAgIFBhcnNlRnJhbWVSZXN1bHQg
cmVzdWx0ID0gcGFyc2VGcmFtZShtX2J1ZmZlciwgbV9idWZmZXJTaXplLCBmcmFtZSwgZXJyb3JT
dHJpbmcpOworICAgIGlmIChyZXN1bHQgPT0gRnJhbWVJbmNvbXBsZXRlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKHJlc3VsdCA9PSBGcmFtZUVycm9yKSB7CisgICAgICAgIGZhaWwo
ZXJyb3JTdHJpbmcpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgLy8gVmFs
aWRhdGUgdGhlIGZyYW1lIGRhdGEuCiAgICAgaWYgKGlzUmVzZXJ2ZWRPcENvZGUoZnJhbWUub3BD
b2RlKSkgewpAQCAtNjIxLDEzICs2MjUsMTMgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9j
ZXNzRnJhbWUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGZyYW1l
LnJlc2VydmVkMSB8fCBmcmFtZS5yZXNlcnZlZDIgfHwgZnJhbWUucmVzZXJ2ZWQzKSB7Ci0gICAg
ICAgIGZhaWwoIk9uZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZlZDEgPSAi
ICsgU3RyaW5nOjpudW1iZXIoZnJhbWUucmVzZXJ2ZWQxKSArICIsIHJlc2VydmVkMiA9ICIgKyBT
dHJpbmc6Om51bWJlcihmcmFtZS5yZXNlcnZlZDIpICsgIiwgcmVzZXJ2ZWQzID0gIiArIFN0cmlu
Zzo6bnVtYmVyKGZyYW1lLnJlc2VydmVkMykpOworICAgIGlmIChmcmFtZS5vcHRpb25zICYgKEZy
YW1lT3B0aW9uUmVzZXJ2ZWQxIHwgRnJhbWVPcHRpb25SZXNlcnZlZDIgfCBGcmFtZU9wdGlvblJl
c2VydmVkMykpIHsKKyAgICAgICAgZmFpbCgiT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUg
b246IHJlc2VydmVkMSA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5vcHRpb25zICYgRnJhbWVP
cHRpb25SZXNlcnZlZDEpICsgIiwgcmVzZXJ2ZWQyID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1l
Lm9wdGlvbnMgJiBGcmFtZU9wdGlvblJlc2VydmVkMikgKyAiLCByZXNlcnZlZDMgPSAiICsgU3Ry
aW5nOjpudW1iZXIoZnJhbWUub3B0aW9ucyAmIEZyYW1lT3B0aW9uUmVzZXJ2ZWQzKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBBbGwgY29udHJvbCBmcmFtZXMgbXVz
dCBub3QgYmUgZnJhZ21lbnRlZC4KLSAgICBpZiAoaXNDb250cm9sT3BDb2RlKGZyYW1lLm9wQ29k
ZSkgJiYgIWZyYW1lLmZpbmFsKSB7CisgICAgaWYgKGlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENv
ZGUpICYmICFmcmFtZS5vcHRpb25zICYgRnJhbWVPcHRpb25GaW5hbCkgewogICAgICAgICBmYWls
KCJSZWNlaXZlZCBmcmFnbWVudGVkIGNvbnRyb2wgZnJhbWU6IG9wY29kZSA9ICIgKyBTdHJpbmc6
Om51bWJlcihmcmFtZS5vcENvZGUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAg
LTY1NSw3ICs2NTksNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAg
ICAgICAgIH0KICAgICAgICAgbV9jb250aW51b3VzRnJhbWVEYXRhLmFwcGVuZChmcmFtZS5wYXls
b2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFt
ZUVuZCAtIG1fYnVmZmVyKTsKLSAgICAgICAgaWYgKGZyYW1lLmZpbmFsKSB7CisgICAgICAgIGlm
IChmcmFtZS5vcHRpb25zICYgRnJhbWVPcHRpb25GaW5hbCkgewogICAgICAgICAgICAgLy8gb25t
ZXNzYWdlIGhhbmRsZXIgbWF5IGV2ZW50dWFsbHkgY2FsbCB0aGUgb3RoZXIgbWV0aG9kcyBvZiB0
aGlzIGNoYW5uZWwsCiAgICAgICAgICAgICAvLyBzbyB3ZSBzaG91bGQgcHJldGVuZCB0aGF0IHdl
IGhhdmUgZmluaXNoZWQgdG8gcmVhZCB0aGlzIGZyYW1lIGFuZAogICAgICAgICAgICAgLy8gbWFr
ZSBzdXJlIHRoYXQgdGhlIG1lbWJlciB2YXJpYWJsZXMgYXJlIGluIGEgY29uc2lzdGVudCBzdGF0
ZSBiZWZvcmUKQEAgLTY4MCw3ICs2ODQsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NGcmFtZSgpCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBPcENvZGVUZXh0OgotICAgICAg
ICBpZiAoZnJhbWUuZmluYWwpIHsKKyAgICAgICAgaWYgKGZyYW1lLm9wdGlvbnMgJiBGcmFtZU9w
dGlvbkZpbmFsKSB7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICAgICAgICAgIGlm
IChmcmFtZS5wYXlsb2FkTGVuZ3RoKQogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBTdHJpbmc6
OmZyb21VVEY4KGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOwpAQCAtNzAxLDcg
KzcwNSw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIE9wQ29kZUJpbmFyeToKLSAgICAgICAgaWYgKGZyYW1lLmZpbmFs
KSB7CisgICAgICAgIGlmIChmcmFtZS5vcHRpb25zICYgRnJhbWVPcHRpb25GaW5hbCkgewogICAg
ICAgICAgICAgT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPGNoYXI+KGZyYW1lLnBheWxvYWRMZW5ndGgpKTsKICAgICAgICAgICAgIG1lbWNweShi
aW5hcnlEYXRhLT5kYXRhKCksIGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOwog
ICAgICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKQEAgLTk2
MSwyMiArOTY1LDIxIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6YWJvcnRPdXRnb2luZ0ZyYW1l
UXVldWUoKQogI2VuZGlmCiB9CiAKLWJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKE9w
Q29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQordm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpidWlsZEZyYW1lKE9wQ29kZSBvcENvZGUsIEZyYW1lT3B0aW9ucyBv
cHRpb25zLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgVmVjdG9yPGNoYXI+
JiBmcmFtZSkKIHsKLSAgICBBU1NFUlQobV9oYW5kbGUpOwotICAgIEFTU0VSVCghbV9zdXNwZW5k
ZWQpOwotCi0gICAgVmVjdG9yPGNoYXI+IGZyYW1lOwogICAgIEFTU0VSVCghKG9wQ29kZSAmIH5v
cENvZGVNYXNrKSk7IC8vIENoZWNrcyB3aGV0aGVyICJvcENvZGUiIGZpdHMgaW4gdGhlIHJhbmdl
IG9mIG9wQ29kZXMuCi0gICAgZnJhbWUuYXBwZW5kKGZpbmFsQml0IHwgb3BDb2RlKTsKKyAgICB1
bnNpZ25lZCBjaGFyIG1hc2tGbGFnID0gb3B0aW9ucyAmIEZyYW1lT3B0aW9uTWFza2VkID8gbWFz
a0JpdCA6IDA7CisgICAgdW5zaWduZWQgY2hhciBmaXJzdEJ5dGUgPSBvcENvZGU7CisgICAgZmly
c3RCeXRlIHw9IG9wdGlvbnMgJiBGcmFtZU9wdGlvbkZpbmFsID8gZmluYWxCaXQgOiAwOworICAg
IGZyYW1lLmFwcGVuZChmaXJzdEJ5dGUpOwogICAgIGlmIChkYXRhTGVuZ3RoIDw9IG1heFBheWxv
YWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCkKLSAgICAgICAgZnJhbWUuYXBwZW5k
KG1hc2tCaXQgfCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgZnJhbWUuYXBwZW5kKG1hc2tGbGFnIHwg
ZGF0YUxlbmd0aCk7CiAgICAgZWxzZSBpZiAoZGF0YUxlbmd0aCA8PSAweEZGRkYpIHsKLSAgICAg
ICAgZnJhbWUuYXBwZW5kKG1hc2tCaXQgfCBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRlbmRl
ZExlbmd0aEZpZWxkKTsKKyAgICAgICAgZnJhbWUuYXBwZW5kKG1hc2tGbGFnIHwgcGF5bG9hZExl
bmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7CiAgICAgICAgIGZyYW1lLmFwcGVu
ZCgoZGF0YUxlbmd0aCAmIDB4RkYwMCkgPj4gOCk7CiAgICAgICAgIGZyYW1lLmFwcGVuZChkYXRh
TGVuZ3RoICYgMHhGRik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZnJhbWUuYXBwZW5kKG1hc2tC
aXQgfCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQpOworICAg
ICAgICBmcmFtZS5hcHBlbmQobWFza0ZsYWcgfCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4
dGVuZGVkTGVuZ3RoRmllbGQpOwogICAgICAgICBjaGFyIGV4dGVuZGVkUGF5bG9hZExlbmd0aFs4
XTsKICAgICAgICAgc2l6ZV90IHJlbWFpbmluZyA9IGRhdGFMZW5ndGg7CiAgICAgICAgIC8vIEZp
bGwgdGhlIGxlbmd0aCBpbnRvIGV4dGVuZGVkUGF5bG9hZExlbmd0aCBpbiB0aGUgbmV0d29yayBi
eXRlIG9yZGVyLgpAQCAtOTg4LDE1ICs5OTEsMjcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpz
ZW5kRnJhbWUoT3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW4K
ICAgICAgICAgZnJhbWUuYXBwZW5kKGV4dGVuZGVkUGF5bG9hZExlbmd0aCwgOCk7CiAgICAgfQog
Ci0gICAgLy8gTWFzayB0aGUgZnJhbWUuCi0gICAgc2l6ZV90IG1hc2tpbmdLZXlTdGFydCA9IGZy
YW1lLnNpemUoKTsKLSAgICBmcmFtZS5ncm93KGZyYW1lLnNpemUoKSArIG1hc2tpbmdLZXlXaWR0
aEluQnl0ZXMpOyAvLyBBZGQgcGxhY2Vob2xkZXIgZm9yIG1hc2tpbmcga2V5LiBXaWxsIGJlIG92
ZXJ3cml0dGVuLgotICAgIHNpemVfdCBwYXlsb2FkU3RhcnQgPSBmcmFtZS5zaXplKCk7Ci0gICAg
ZnJhbWUuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGlmIChvcHRpb25zICYgRnJhbWVP
cHRpb25NYXNrZWQpIHsKKyAgICAgICAgc2l6ZV90IG1hc2tpbmdLZXlTdGFydCA9IGZyYW1lLnNp
emUoKTsKKyAgICAgICAgZnJhbWUuZ3JvdyhmcmFtZS5zaXplKCkgKyBtYXNraW5nS2V5V2lkdGhJ
bkJ5dGVzKTsgLy8gQWRkIHBsYWNlaG9sZGVyIGZvciBtYXNraW5nIGtleS4gV2lsbCBiZSBvdmVy
d3JpdHRlbi4KKyAgICAgICAgc2l6ZV90IHBheWxvYWRTdGFydCA9IGZyYW1lLnNpemUoKTsKKyAg
ICAgICAgZnJhbWUuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworCisgICAgICAgIGNyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tVmFsdWVzKGZyYW1lLmRhdGEoKSArIG1hc2tpbmdLZXlTdGFydCwgbWFz
a2luZ0tleVdpZHRoSW5CeXRlcyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0
YUxlbmd0aDsgKytpKQorICAgICAgICAgICAgZnJhbWVbcGF5bG9hZFN0YXJ0ICsgaV0gXj0gZnJh
bWVbbWFza2luZ0tleVN0YXJ0ICsgaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNdOworICAgIH0g
ZWxzZQorICAgICAgICBmcmFtZS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7Cit9CisKK2Jvb2wg
V2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKE9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKQoreworICAgIEFTU0VSVChtX2hhbmRsZSk7CisgICAgQVNT
RVJUKCFtX3N1c3BlbmRlZCk7CiAKLSAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhm
cmFtZS5kYXRhKCkgKyBtYXNraW5nS2V5U3RhcnQsIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgKytpKQotICAgICAgICBmcmFt
ZVtwYXlsb2FkU3RhcnQgKyBpXSBePSBmcmFtZVttYXNraW5nS2V5U3RhcnQgKyBpICUgbWFza2lu
Z0tleVdpZHRoSW5CeXRlc107CisgICAgRnJhbWVPcHRpb25zIG9wdGlvbnMgPSBGcmFtZU9wdGlv
bkZpbmFsIHwgRnJhbWVPcHRpb25NYXNrZWQ7CisgICAgVmVjdG9yPGNoYXI+IGZyYW1lOworICAg
IGJ1aWxkRnJhbWUob3BDb2RlLCBvcHRpb25zLCBkYXRhLCBkYXRhTGVuZ3RoLCBmcmFtZSk7CiAK
ICAgICByZXR1cm4gbV9oYW5kbGUtPnNlbmQoZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXplKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCA5
ZjliYWI4YjFjMzBmYWJiYjNlNjBkNzVmZmY3YTRlMzk1OWY3ZmUwLi5hMWM0YjIwZmIzM2NiMmU5
YTU0ZGNkOWMxNDRjMTdjYTA2MzZhNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaApAQCAtMTEwLDIzICsxMTAsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoaW50IGVycm9yQ29kZSk7CiAjZW5kaWYKIAotICAgIHVzaW5nIFJl
ZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdl
YlNvY2tldENoYW5uZWw+OjpkZXJlZjsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBy
ZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgZGVyZWYoKTsgfQotCi1wcml2
YXRlOgotICAgIFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNv
Y2tldENoYW5uZWxDbGllbnQqKTsKLQotICAgIGJvb2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbik7Ci0gICAgdm9pZCBza2lwQnVmZmVyKHNpemVfdCBsZW4pOwot
ICAgIGJvb2wgcHJvY2Vzc0J1ZmZlcigpOwotICAgIHZvaWQgcmVzdW1lVGltZXJGaXJlZChUaW1l
cjxXZWJTb2NrZXRDaGFubmVsPiopOwotICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7Ci0gICAgdm9pZCBjbG9zaW5nVGltZXJGaXJl
ZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOwotCiAgICAgLy8gSHliaS0xMCBvcGNvZGVzLgog
ICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IE9wQ29kZTsKICAgICBzdGF0aWMgY29uc3QgT3BDb2Rl
IE9wQ29kZUNvbnRpbnVhdGlvbjsKQEAgLTEzNiwyOSArMTE5LDUyIEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IE9wQ29kZSBPcENvZGVQaW5nOwogICAgIHN0YXRpYyBjb25zdCBPcENvZGUg
T3BDb2RlUG9uZzsKIAotICAgIHN0YXRpYyBib29sIGlzTm9uQ29udHJvbE9wQ29kZShPcENvZGUg
b3BDb2RlKSB7IHJldHVybiBvcENvZGUgPT0gT3BDb2RlQ29udGludWF0aW9uIHx8IG9wQ29kZSA9
PSBPcENvZGVUZXh0IHx8IG9wQ29kZSA9PSBPcENvZGVCaW5hcnk7IH0KLSAgICBzdGF0aWMgYm9v
bCBpc0NvbnRyb2xPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29k
ZUNsb3NlIHx8IG9wQ29kZSA9PSBPcENvZGVQaW5nIHx8IG9wQ29kZSA9PSBPcENvZGVQb25nOyB9
Ci0gICAgc3RhdGljIGJvb2wgaXNSZXNlcnZlZE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVy
biAhaXNOb25Db250cm9sT3BDb2RlKG9wQ29kZSkgJiYgIWlzQ29udHJvbE9wQ29kZShvcENvZGUp
OyB9Ci0KICAgICBlbnVtIFBhcnNlRnJhbWVSZXN1bHQgewogICAgICAgICBGcmFtZU9LLAogICAg
ICAgICBGcmFtZUluY29tcGxldGUsCiAgICAgICAgIEZyYW1lRXJyb3IKICAgICB9OwogCisgICAg
ZW51bSBGcmFtZU9wdGlvbiB7CisgICAgICAgIEZyYW1lT3B0aW9uRmluYWwgPSAxIDw8IDAsCisg
ICAgICAgIEZyYW1lT3B0aW9uUmVzZXJ2ZWQxID0gMSA8PCAxLAorICAgICAgICBGcmFtZU9wdGlv
blJlc2VydmVkMiA9IDEgPDwgMiwKKyAgICAgICAgRnJhbWVPcHRpb25SZXNlcnZlZDMgPSAxIDw8
IDMsCisgICAgICAgIEZyYW1lT3B0aW9uTWFza2VkID0gMSA8PCA0CisgICAgfTsKKyAgICB0eXBl
ZGVmIHVuc2lnbmVkIEZyYW1lT3B0aW9uczsKKwogICAgIHN0cnVjdCBGcmFtZURhdGEgewogICAg
ICAgICBPcENvZGUgb3BDb2RlOwotICAgICAgICBib29sIGZpbmFsOwotICAgICAgICBib29sIHJl
c2VydmVkMTsKLSAgICAgICAgYm9vbCByZXNlcnZlZDI7Ci0gICAgICAgIGJvb2wgcmVzZXJ2ZWQz
OwotICAgICAgICBib29sIG1hc2tlZDsKKyAgICAgICAgRnJhbWVPcHRpb25zIG9wdGlvbnM7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIHBheWxvYWQ7CiAgICAgICAgIHNpemVfdCBwYXlsb2FkTGVuZ3Ro
OwogICAgICAgICBjb25zdCBjaGFyKiBmcmFtZUVuZDsKICAgICB9OwogCi0gICAgUGFyc2VGcmFt
ZVJlc3VsdCBwYXJzZUZyYW1lKEZyYW1lRGF0YSYpOyAvLyBNYXkgbW9kaWZ5IHBhcnQgb2YgbV9i
dWZmZXIgdG8gdW5tYXNrIHRoZSBmcmFtZS4KKyAgICBzdGF0aWMgUGFyc2VGcmFtZVJlc3VsdCBw
YXJzZUZyYW1lKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBGcmFtZURhdGEm
LCBTdHJpbmcmIGVycm9yU3RyaW5nKTsgLy8gTWF5IG1vZGlmeSBwYXJ0IG9mICJkYXRhIiB0byB1
bm1hc2sgdGhlIGZyYW1lLgorICAgIHN0YXRpYyB2b2lkIGJ1aWxkRnJhbWUoT3BDb2RlLCBGcmFt
ZU9wdGlvbnMsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBWZWN0b3I8Y2hh
cj4mIGZyYW1lKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD46OnJl
ZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpkZXJlZjsKKworcHJv
dGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCByZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgp
IHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbCgpIHsgZGVyZWYoKTsgfQorCitwcml2YXRlOgorICAgIFdlYlNvY2tldENoYW5uZWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsKKworICAgIGJv
b2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbik7CisgICAgdm9p
ZCBza2lwQnVmZmVyKHNpemVfdCBsZW4pOworICAgIGJvb2wgcHJvY2Vzc0J1ZmZlcigpOworICAg
IHZvaWQgcmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOworICAgIHZv
aWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7
CisgICAgdm9pZCBjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOwor
CisgICAgc3RhdGljIGJvb2wgaXNOb25Db250cm9sT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0
dXJuIG9wQ29kZSA9PSBPcENvZGVDb250aW51YXRpb24gfHwgb3BDb2RlID09IE9wQ29kZVRleHQg
fHwgb3BDb2RlID09IE9wQ29kZUJpbmFyeTsgfQorICAgIHN0YXRpYyBib29sIGlzQ29udHJvbE9w
Q29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiBvcENvZGUgPT0gT3BDb2RlQ2xvc2UgfHwgb3BD
b2RlID09IE9wQ29kZVBpbmcgfHwgb3BDb2RlID09IE9wQ29kZVBvbmc7IH0KKyAgICBzdGF0aWMg
Ym9vbCBpc1Jlc2VydmVkT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuICFpc05vbkNvbnRy
b2xPcENvZGUob3BDb2RlKSAmJiAhaXNDb250cm9sT3BDb2RlKG9wQ29kZSk7IH0KIAogICAgIGJv
b2wgcHJvY2Vzc0ZyYW1lKCk7CiAgICAgYm9vbCBwcm9jZXNzRnJhbWVIaXhpZTc2KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXgg
OGIxYThmNjkxYTJiNTMyODlkN2M4MThjZmE1ZjExOGNjNjUxMGUyYi4uMTFlMGQ3ZjQwNzZlNjJj
MjljMzBhZmI4ZGYxOGM0OWNmMTZlZDZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHN0YXRpYyBT
dHJpbmcgZ2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQogICAgIHJldHVybiBiYXNlNjRFbmNvZGUo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oa2V5KSwgbm9uY2VTaXplKTsKIH0KIAotc3RhdGljIFN0
cmluZyBnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25zdCBTdHJpbmcmIHNlY1dlYlNvY2tl
dEtleSkKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNj
ZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0S2V5KQogewogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCB3ZWJTb2NrZXRLZXlHVUlEID0gIjI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1
QUIwREM4NUIxMSI7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaGExSGFzaFNpemUgPSAyMDsg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgaW4gU0hBMS5oLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggODljZTI5OTA5MDRi
NjExOTE1YmRlZmQwNzZiNDQwMGRmNGVjZGI3Ny4uMDJjOWFhYmFmMDI3YjBhOGZiOGEzN2IwOWNl
MWEwNDk1YzVhMGJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oCkBAIC04NSw2ICs4NSw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0Owog
CisgICAgc3RhdGljIFN0cmluZyBnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25zdCBTdHJp
bmcmIHNlY1dlYlNvY2tldEtleSk7CisKIHByaXZhdGU6CiAgICAgS1VSTCBodHRwVVJMRm9yQXV0
aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119061</attachid>
            <date>2011-12-13 12:15:44 -0800</date>
            <delta_ts>2012-03-29 10:38:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73852-20111213211507.patch</filename>
            <type>text/plain</type>
            <size>15859</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIwNWQ0NTY2NzI4MDhi
NmMzZWE5NDlhNGRlMGZkYjIwOTFiZTAxMy4uZGEzMDkzM2ExMmNmNDdhMWUwNDgzYzIyZWNjYTc0
OTJjMjhhM2E2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTA1ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRXhw
b3NlIHJldXNhYmxlIFdlYlNvY2tldCBjb2RlIGZvciBXZWJTb2NrZXRTZXJ2ZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdGhlIG1ham9yaXR5
IHRoZSB3ZWIgc29ja2V0IGhhbmRzaGFrZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGxvZ2lj
CisgICAgICAgIGluc2lkZSBXZWJTb2NrZXRIYW5kc2hha2UgYW5kIGV4cG9zZSBpdCBzdGF0aWNh
bGx5IHRvIG1ha2UgaXQgYXZhaWxhYmxlCisgICAgICAgIGZvciB0aGUgc2VydmVyIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICBJbmRpdmlkdWFsIG9wdGlvbnMgZm9yIHRoZSBmcmFtZSBoYXZlIGJl
ZW4gcmVwbGFjZWQgYnkgRnJhbWVPcHRpb24gdG8gYWxsb3cKKyAgICAgICAgcGFzc2luZyB0aGUg
Im1hc2tlZCIgb3B0aW9uIHRvIGJ1aWxkRnJhbWUuCisKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
cGFyc2VGcmFtZSk6IG1hZGUgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc0ZyYW1lKTogZmVlZCBtZW1iZXIgZGF0YSB0byBwYXJzZUZyYW1lIGFzIHBh
cmFtZXRlcnMuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpidWlsZEZyYW1l
KTogZnJhbWUgYnVpbGRpbmcgbG9naWMgZXh0cmFjdGVkIGZyb20gc2VuZEZyYW1lIGFuZCBtYWRl
IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZSk6
IG5vdyBqdXN0IGNhbGxzIGJ1aWxkRnJhbWUgYW5kIHNlbmRzIHRoZSBkYXRhLgorICAgICAgICAq
IHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOiBtYWRlIE9wQ29kZSwgUGFyc2VGcmFtZVJl
c3VsdCBhbmQgcGFyc2VGcmFtZSBwdWJsaWMuIEFkZCBGcmFtZU9wdGlvbihzKS4KKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KTogZXhwb3NlIHRo
aXMgb2JqZWN0LXN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oOgorCiAyMDExLTExLTI0ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdl
YmtpdC5vcmc+IGFuZCBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5j
b20+CiAKICAgICAgICAgQWRkIEdlbmVyaWMgSFRUUCBSZXF1ZXN0IENsYXNzLiBHZW5lcmFsaXpl
ZCBIVFRQIFBhcnNpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCBlNjQ5NDU0ZWVjMTE1NzA4OTc1OTc1NzUxOWNiMWMxNjhhMDJlYjUz
Li43NWJhNWZiNTgxY2E0ZjcwYzY1YjhlZTljNDMyODAzZjQxYTllMTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTUzNiwyNCArNTM2
LDI2IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2Vi
U29ja2V0Q2hhbm5lbD4qIHRpbWVyKQogICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgpOwog
fQogCi1XZWJTb2NrZXRDaGFubmVsOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6
OnBhcnNlRnJhbWUoRnJhbWVEYXRhJiBmcmFtZSkKK1dlYlNvY2tldENoYW5uZWw6OlBhcnNlRnJh
bWVSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCwgRnJhbWVEYXRhJiBmcmFtZSwgU3RyaW5nJiBlcnJvclN0cmluZykKIHsKLSAg
ICBjb25zdCBjaGFyKiBwID0gbV9idWZmZXI7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0g
bV9idWZmZXIgKyBtX2J1ZmZlclNpemU7CisgICAgY2hhciogcCA9IGRhdGE7CisgICAgY29uc3Qg
Y2hhciogYnVmZmVyRW5kID0gZGF0YSArIGRhdGFMZW5ndGg7CiAKLSAgICBpZiAobV9idWZmZXJT
aXplIDwgMikKKyAgICBpZiAoZGF0YUxlbmd0aCA8IDIpCiAgICAgICAgIHJldHVybiBGcmFtZUlu
Y29tcGxldGU7CiAKICAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9ICpwKys7CiAgICAgdW5z
aWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnArKzsKIAotICAgIGJvb2wgZmluYWwgPSBmaXJzdEJ5
dGUgJiBmaW5hbEJpdDsKLSAgICBib29sIHJlc2VydmVkMSA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVk
MUJpdDsKLSAgICBib29sIHJlc2VydmVkMiA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkMkJpdDsKLSAg
ICBib29sIHJlc2VydmVkMyA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkM0JpdDsKKyAgICBGcmFtZU9w
dGlvbnMgb3B0aW9ucyA9IDA7CisgICAgb3B0aW9ucyB8PSAoZmlyc3RCeXRlICYgZmluYWxCaXQp
ID8gRnJhbWVPcHRpb25GaW5hbCA6IDA7CisgICAgb3B0aW9ucyB8PSAoZmlyc3RCeXRlICYgcmVz
ZXJ2ZWQxQml0KSA/IEZyYW1lT3B0aW9uUmVzZXJ2ZWQxIDogMDsKKyAgICBvcHRpb25zIHw9IChm
aXJzdEJ5dGUgJiByZXNlcnZlZDJCaXQpID8gRnJhbWVPcHRpb25SZXNlcnZlZDIgOiAwOworICAg
IG9wdGlvbnMgfD0gKGZpcnN0Qnl0ZSAmIHJlc2VydmVkM0JpdCkgPyBGcmFtZU9wdGlvblJlc2Vy
dmVkMyA6IDA7CiAgICAgT3BDb2RlIG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9wQ29kZU1hc2s7CiAK
ICAgICBib29sIG1hc2tlZCA9IHNlY29uZEJ5dGUgJiBtYXNrQml0OworICAgIG9wdGlvbnMgfD0g
bWFza2VkID8gRnJhbWVPcHRpb25NYXNrZWQgOiAwOwogICAgIHVpbnQ2NF90IHBheWxvYWRMZW5n
dGg2NCA9IHNlY29uZEJ5dGUgJiBwYXlsb2FkTGVuZ3RoTWFzazsKICAgICBpZiAocGF5bG9hZExl
bmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkKSB7CiAg
ICAgICAgIGludCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplOwpAQCAtNTgwLDcgKzU4Miw3IEBA
IFdlYlNvY2tldENoYW5uZWw6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6cGFy
c2VGcmFtZShGcmFtZURhdGEmIGZyYW1lCiAjZW5kaWYKICAgICBzaXplX3QgbWFza2luZ0tleUxl
bmd0aCA9IG1hc2tlZCA/IG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMgOiAwOwogICAgIGlmIChwYXls
b2FkTGVuZ3RoNjQgPiBtYXhQYXlsb2FkTGVuZ3RoIHx8IHBheWxvYWRMZW5ndGg2NCArIG1hc2tp
bmdLZXlMZW5ndGggPiBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgewotICAgICAgICBm
YWlsKCJXZWJTb2NrZXQgZnJhbWUgbGVuZ3RoIHRvbyBsYXJnZTogIiArIFN0cmluZzo6bnVtYmVy
KHBheWxvYWRMZW5ndGg2NCkgKyAiIGJ5dGVzIik7CisgICAgICAgIGVycm9yU3RyaW5nID0gIldl
YlNvY2tldCBmcmFtZSBsZW5ndGggdG9vIGxhcmdlOiAiICsgU3RyaW5nOjpudW1iZXIocGF5bG9h
ZExlbmd0aDY0KSArICIgYnl0ZXMiOwogICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsKICAgICB9
CiAgICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBheWxvYWRM
ZW5ndGg2NCk7CkBAIC01OTAsMTcgKzU5MiwxMyBAQCBXZWJTb2NrZXRDaGFubmVsOjpQYXJzZUZy
YW1lUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUoRnJhbWVEYXRhJiBmcmFtZQog
CiAgICAgaWYgKG1hc2tlZCkgewogICAgICAgICBjb25zdCBjaGFyKiBtYXNraW5nS2V5ID0gcDsK
LSAgICAgICAgY2hhciogcGF5bG9hZCA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHAgKyBtYXNraW5nS2V5
V2lkdGhJbkJ5dGVzKTsKKyAgICAgICAgY2hhciogcGF5bG9hZCA9IHAgKyBtYXNraW5nS2V5V2lk
dGhJbkJ5dGVzOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBheWxvYWRMZW5ndGg7
ICsraSkKICAgICAgICAgICAgIHBheWxvYWRbaV0gXj0gbWFza2luZ0tleVtpICUgbWFza2luZ0tl
eVdpZHRoSW5CeXRlc107IC8vIFVubWFzayB0aGUgcGF5bG9hZC4KICAgICB9CiAKICAgICBmcmFt
ZS5vcENvZGUgPSBvcENvZGU7Ci0gICAgZnJhbWUuZmluYWwgPSBmaW5hbDsKLSAgICBmcmFtZS5y
ZXNlcnZlZDEgPSByZXNlcnZlZDE7Ci0gICAgZnJhbWUucmVzZXJ2ZWQyID0gcmVzZXJ2ZWQyOwot
ICAgIGZyYW1lLnJlc2VydmVkMyA9IHJlc2VydmVkMzsKLSAgICBmcmFtZS5tYXNrZWQgPSBtYXNr
ZWQ7CisgICAgZnJhbWUub3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgZnJhbWUucGF5bG9hZCA9IHAg
KyBtYXNraW5nS2V5TGVuZ3RoOwogICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBwYXlsb2FkTGVu
Z3RoOwogICAgIGZyYW1lLmZyYW1lRW5kID0gcCArIG1hc2tpbmdLZXlMZW5ndGggKyBwYXlsb2Fk
TGVuZ3RoOwpAQCAtNjEyLDggKzYxMCwxNCBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NGcmFtZSgpCiAgICAgQVNTRVJUKG1fYnVmZmVyKTsKIAogICAgIEZyYW1lRGF0YSBmcmFtZTsK
LSAgICBpZiAocGFyc2VGcmFtZShmcmFtZSkgIT0gRnJhbWVPSykKKyAgICBTdHJpbmcgZXJyb3JT
dHJpbmc7CisgICAgUGFyc2VGcmFtZVJlc3VsdCByZXN1bHQgPSBwYXJzZUZyYW1lKG1fYnVmZmVy
LCBtX2J1ZmZlclNpemUsIGZyYW1lLCBlcnJvclN0cmluZyk7CisgICAgaWYgKHJlc3VsdCA9PSBG
cmFtZUluY29tcGxldGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmVzdWx0ID09
IEZyYW1lRXJyb3IpIHsKKyAgICAgICAgZmFpbChlcnJvclN0cmluZyk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBWYWxpZGF0ZSB0aGUgZnJhbWUgZGF0YS4KICAgICBp
ZiAoaXNSZXNlcnZlZE9wQ29kZShmcmFtZS5vcENvZGUpKSB7CkBAIC02MjEsMTMgKzYyNSwxMyBA
QCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAoZnJhbWUucmVzZXJ2ZWQxIHx8IGZyYW1lLnJlc2VydmVk
MiB8fCBmcmFtZS5yZXNlcnZlZDMpIHsKLSAgICAgICAgZmFpbCgiT25lIG9yIG1vcmUgcmVzZXJ2
ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMSA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5yZXNl
cnZlZDEpICsgIiwgcmVzZXJ2ZWQyID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLnJlc2VydmVk
MikgKyAiLCByZXNlcnZlZDMgPSAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUucmVzZXJ2ZWQzKSk7
CisgICAgaWYgKGZyYW1lLm9wdGlvbnMgJiAoRnJhbWVPcHRpb25SZXNlcnZlZDEgfCBGcmFtZU9w
dGlvblJlc2VydmVkMiB8IEZyYW1lT3B0aW9uUmVzZXJ2ZWQzKSkgeworICAgICAgICBmYWlsKCJP
bmUgb3IgbW9yZSByZXNlcnZlZCBiaXRzIGFyZSBvbjogcmVzZXJ2ZWQxID0gIiArIFN0cmluZzo6
bnVtYmVyKCEhKGZyYW1lLm9wdGlvbnMgJiBGcmFtZU9wdGlvblJlc2VydmVkMSkpICsgIiwgcmVz
ZXJ2ZWQyID0gIiArIFN0cmluZzo6bnVtYmVyKCEhKGZyYW1lLm9wdGlvbnMgJiBGcmFtZU9wdGlv
blJlc2VydmVkMikpICsgIiwgcmVzZXJ2ZWQzID0gIiArIFN0cmluZzo6bnVtYmVyKCEhKGZyYW1l
Lm9wdGlvbnMgJiBGcmFtZU9wdGlvblJlc2VydmVkMykpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIC8vIEFsbCBjb250cm9sIGZyYW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVu
dGVkLgotICAgIGlmIChpc0NvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSAmJiAhZnJhbWUuZmlu
YWwpIHsKKyAgICBpZiAoaXNDb250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgJiYgIShmcmFtZS5v
cHRpb25zICYgRnJhbWVPcHRpb25GaW5hbCkpIHsKICAgICAgICAgZmFpbCgiUmVjZWl2ZWQgZnJh
Z21lbnRlZCBjb250cm9sIGZyYW1lOiBvcGNvZGUgPSAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUu
b3BDb2RlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC02NTUsNyArNjU5LDcg
QEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAgICB9CiAgICAg
ICAgIG1fY29udGludW91c0ZyYW1lRGF0YS5hcHBlbmQoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5
bG9hZExlbmd0aCk7CiAgICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZl
cik7Ci0gICAgICAgIGlmIChmcmFtZS5maW5hbCkgeworICAgICAgICBpZiAoZnJhbWUub3B0aW9u
cyAmIEZyYW1lT3B0aW9uRmluYWwpIHsKICAgICAgICAgICAgIC8vIG9ubWVzc2FnZSBoYW5kbGVy
IG1heSBldmVudHVhbGx5IGNhbGwgdGhlIG90aGVyIG1ldGhvZHMgb2YgdGhpcyBjaGFubmVsLAog
ICAgICAgICAgICAgLy8gc28gd2Ugc2hvdWxkIHByZXRlbmQgdGhhdCB3ZSBoYXZlIGZpbmlzaGVk
IHRvIHJlYWQgdGhpcyBmcmFtZSBhbmQKICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRo
ZSBtZW1iZXIgdmFyaWFibGVzIGFyZSBpbiBhIGNvbnNpc3RlbnQgc3RhdGUgYmVmb3JlCkBAIC02
ODAsNyArNjg0LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgT3BDb2RlVGV4dDoKLSAgICAgICAgaWYgKGZyYW1lLmZp
bmFsKSB7CisgICAgICAgIGlmIChmcmFtZS5vcHRpb25zICYgRnJhbWVPcHRpb25GaW5hbCkgewog
ICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgICAgICAgICBpZiAoZnJhbWUucGF5bG9h
ZExlbmd0aCkKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChmcmFt
ZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKQEAgLTcwMSw3ICs3MDUsNyBAQCBib29s
IFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBPcENvZGVCaW5hcnk6Ci0gICAgICAgIGlmIChmcmFtZS5maW5hbCkgeworICAgICAgICBp
ZiAoZnJhbWUub3B0aW9ucyAmIEZyYW1lT3B0aW9uRmluYWwpIHsKICAgICAgICAgICAgIE93blB0
cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhID0gYWRvcHRQdHIobmV3IFZlY3RvcjxjaGFyPihm
cmFtZS5wYXlsb2FkTGVuZ3RoKSk7CiAgICAgICAgICAgICBtZW1jcHkoYmluYXJ5RGF0YS0+ZGF0
YSgpLCBmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKICAgICAgICAgICAgIHNr
aXBCdWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7CkBAIC05NjEsMjIgKzk2NSwyMSBA
QCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmFib3J0T3V0Z29pbmdGcmFtZVF1ZXVlKCkKICNlbmRp
ZgogfQogCi1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShPcENvZGUgb3BDb2RlLCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6YnVpbGRGcmFtZShPcENvZGUgb3BDb2RlLCBGcmFtZU9wdGlvbnMgb3B0aW9ucywgY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFZlY3RvcjxjaGFyPiYgZnJhbWUpCiB7Ci0g
ICAgQVNTRVJUKG1faGFuZGxlKTsKLSAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKLQotICAgIFZl
Y3RvcjxjaGFyPiBmcmFtZTsKICAgICBBU1NFUlQoIShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAv
LyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRzIGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgot
ICAgIGZyYW1lLmFwcGVuZChmaW5hbEJpdCB8IG9wQ29kZSk7CisgICAgdW5zaWduZWQgY2hhciBt
YXNrRmxhZyA9IG9wdGlvbnMgJiBGcmFtZU9wdGlvbk1hc2tlZCA/IG1hc2tCaXQgOiAwOworICAg
IHVuc2lnbmVkIGNoYXIgZmlyc3RCeXRlID0gb3BDb2RlOworICAgIGZpcnN0Qnl0ZSB8PSBvcHRp
b25zICYgRnJhbWVPcHRpb25GaW5hbCA/IGZpbmFsQml0IDogMDsKKyAgICBmcmFtZS5hcHBlbmQo
Zmlyc3RCeXRlKTsKICAgICBpZiAoZGF0YUxlbmd0aCA8PSBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91
dEV4dGVuZGVkTGVuZ3RoRmllbGQpCi0gICAgICAgIGZyYW1lLmFwcGVuZChtYXNrQml0IHwgZGF0
YUxlbmd0aCk7CisgICAgICAgIGZyYW1lLmFwcGVuZChtYXNrRmxhZyB8IGRhdGFMZW5ndGgpOwog
ICAgIGVsc2UgaWYgKGRhdGFMZW5ndGggPD0gMHhGRkZGKSB7Ci0gICAgICAgIGZyYW1lLmFwcGVu
ZChtYXNrQml0IHwgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7
CisgICAgICAgIGZyYW1lLmFwcGVuZChtYXNrRmxhZyB8IHBheWxvYWRMZW5ndGhXaXRoVHdvQnl0
ZUV4dGVuZGVkTGVuZ3RoRmllbGQpOwogICAgICAgICBmcmFtZS5hcHBlbmQoKGRhdGFMZW5ndGgg
JiAweEZGMDApID4+IDgpOwogICAgICAgICBmcmFtZS5hcHBlbmQoZGF0YUxlbmd0aCAmIDB4RkYp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGZyYW1lLmFwcGVuZChtYXNrQml0IHwgcGF5bG9hZExl
bmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkKTsKKyAgICAgICAgZnJhbWUuYXBw
ZW5kKG1hc2tGbGFnIHwgcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZp
ZWxkKTsKICAgICAgICAgY2hhciBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07CiAgICAgICAgIHNp
emVfdCByZW1haW5pbmcgPSBkYXRhTGVuZ3RoOwogICAgICAgICAvLyBGaWxsIHRoZSBsZW5ndGgg
aW50byBleHRlbmRlZFBheWxvYWRMZW5ndGggaW4gdGhlIG5ldHdvcmsgYnl0ZSBvcmRlci4KQEAg
LTk4OCwxNSArOTkxLDI3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKE9wQ29k
ZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuCiAgICAgICAgIGZyYW1l
LmFwcGVuZChleHRlbmRlZFBheWxvYWRMZW5ndGgsIDgpOwogICAgIH0KIAotICAgIC8vIE1hc2sg
dGhlIGZyYW1lLgotICAgIHNpemVfdCBtYXNraW5nS2V5U3RhcnQgPSBmcmFtZS5zaXplKCk7Ci0g
ICAgZnJhbWUuZ3JvdyhmcmFtZS5zaXplKCkgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsgLy8g
QWRkIHBsYWNlaG9sZGVyIGZvciBtYXNraW5nIGtleS4gV2lsbCBiZSBvdmVyd3JpdHRlbi4KLSAg
ICBzaXplX3QgcGF5bG9hZFN0YXJ0ID0gZnJhbWUuc2l6ZSgpOwotICAgIGZyYW1lLmFwcGVuZChk
YXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBpZiAob3B0aW9ucyAmIEZyYW1lT3B0aW9uTWFza2VkKSB7
CisgICAgICAgIHNpemVfdCBtYXNraW5nS2V5U3RhcnQgPSBmcmFtZS5zaXplKCk7CisgICAgICAg
IGZyYW1lLmdyb3coZnJhbWUuc2l6ZSgpICsgbWFza2luZ0tleVdpZHRoSW5CeXRlcyk7IC8vIEFk
ZCBwbGFjZWhvbGRlciBmb3IgbWFza2luZyBrZXkuIFdpbGwgYmUgb3ZlcndyaXR0ZW4uCisgICAg
ICAgIHNpemVfdCBwYXlsb2FkU3RhcnQgPSBmcmFtZS5zaXplKCk7CisgICAgICAgIGZyYW1lLmFw
cGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKworICAgICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRv
bVZhbHVlcyhmcmFtZS5kYXRhKCkgKyBtYXNraW5nS2V5U3RhcnQsIG1hc2tpbmdLZXlXaWR0aElu
Qnl0ZXMpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIGZyYW1lW3BheWxvYWRTdGFydCArIGldIF49IGZyYW1lW21hc2tpbmdLZXlT
dGFydCArIGkgJSBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzXTsKKyAgICB9IGVsc2UKKyAgICAgICAg
ZnJhbWUuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworfQorCitib29sIFdlYlNvY2tldENoYW5u
ZWw6OnNlbmRGcmFtZShPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCkKK3sKKyAgICBBU1NFUlQobV9oYW5kbGUpOworICAgIEFTU0VSVCghbV9zdXNwZW5k
ZWQpOwogCi0gICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMoZnJhbWUuZGF0YSgpICsg
bWFza2luZ0tleVN0YXJ0LCBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7ICsraSkKLSAgICAgICAgZnJhbWVbcGF5bG9hZFN0YXJ0
ICsgaV0gXj0gZnJhbWVbbWFza2luZ0tleVN0YXJ0ICsgaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0
ZXNdOworICAgIEZyYW1lT3B0aW9ucyBvcHRpb25zID0gRnJhbWVPcHRpb25GaW5hbCB8IEZyYW1l
T3B0aW9uTWFza2VkOworICAgIFZlY3RvcjxjaGFyPiBmcmFtZTsKKyAgICBidWlsZEZyYW1lKG9w
Q29kZSwgb3B0aW9ucywgZGF0YSwgZGF0YUxlbmd0aCwgZnJhbWUpOwogCiAgICAgcmV0dXJuIG1f
aGFuZGxlLT5zZW5kKGZyYW1lLmRhdGEoKSwgZnJhbWUuc2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOWY5YmFiOGIxYzMwZmFi
YmIzZTYwZDc1ZmZmN2E0ZTM5NTlmN2ZlMC4uZWFlM2E1YTZiNTQzNjBiYTBhZjEwYTUyNWEwODc3
YjkyYzZiNWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmgKQEAgLTExMCwyMyArMTEwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGludCBlcnJvckNvZGUpOwogI2VuZGlmCiAKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNv
Y2tldENoYW5uZWw+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVs
Pjo6ZGVyZWY7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgcmVmVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwoKSB7IGRlcmVmKCk7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJT
b2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50Kik7Ci0KLSAgICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW4pOwotICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsKLSAgICBib29sIHByb2Nl
c3NCdWZmZXIoKTsKLSAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hh
bm5lbD4qKTsKLSAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pOwotICAgIHZvaWQgY2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2ViU29j
a2V0Q2hhbm5lbD4qKTsKLQogICAgIC8vIEh5YmktMTAgb3Bjb2Rlcy4KICAgICB0eXBlZGVmIHVu
c2lnbmVkIGludCBPcENvZGU7CiAgICAgc3RhdGljIGNvbnN0IE9wQ29kZSBPcENvZGVDb250aW51
YXRpb247CkBAIC0xMzYsMjkgKzExOSw1MiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBP
cENvZGUgT3BDb2RlUGluZzsKICAgICBzdGF0aWMgY29uc3QgT3BDb2RlIE9wQ29kZVBvbmc7CiAK
LSAgICBzdGF0aWMgYm9vbCBpc05vbkNvbnRyb2xPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1
cm4gb3BDb2RlID09IE9wQ29kZUNvbnRpbnVhdGlvbiB8fCBvcENvZGUgPT0gT3BDb2RlVGV4dCB8
fCBvcENvZGUgPT0gT3BDb2RlQmluYXJ5OyB9Ci0gICAgc3RhdGljIGJvb2wgaXNDb250cm9sT3BD
b2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuIG9wQ29kZSA9PSBPcENvZGVDbG9zZSB8fCBvcENv
ZGUgPT0gT3BDb2RlUGluZyB8fCBvcENvZGUgPT0gT3BDb2RlUG9uZzsgfQotICAgIHN0YXRpYyBi
b29sIGlzUmVzZXJ2ZWRPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gIWlzTm9uQ29udHJv
bE9wQ29kZShvcENvZGUpICYmICFpc0NvbnRyb2xPcENvZGUob3BDb2RlKTsgfQotCiAgICAgZW51
bSBQYXJzZUZyYW1lUmVzdWx0IHsKICAgICAgICAgRnJhbWVPSywKICAgICAgICAgRnJhbWVJbmNv
bXBsZXRlLAogICAgICAgICBGcmFtZUVycm9yCiAgICAgfTsKIAorICAgIGVudW0gRnJhbWVPcHRp
b24geworICAgICAgICBGcmFtZU9wdGlvbkZpbmFsID0gMSA8PCAwLAorICAgICAgICBGcmFtZU9w
dGlvblJlc2VydmVkMSA9IDEgPDwgMSwKKyAgICAgICAgRnJhbWVPcHRpb25SZXNlcnZlZDIgPSAx
IDw8IDIsCisgICAgICAgIEZyYW1lT3B0aW9uUmVzZXJ2ZWQzID0gMSA8PCAzLAorICAgICAgICBG
cmFtZU9wdGlvbk1hc2tlZCA9IDEgPDwgNAorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBG
cmFtZU9wdGlvbnM7CisKICAgICBzdHJ1Y3QgRnJhbWVEYXRhIHsKICAgICAgICAgT3BDb2RlIG9w
Q29kZTsKLSAgICAgICAgYm9vbCBmaW5hbDsKLSAgICAgICAgYm9vbCByZXNlcnZlZDE7Ci0gICAg
ICAgIGJvb2wgcmVzZXJ2ZWQyOwotICAgICAgICBib29sIHJlc2VydmVkMzsKLSAgICAgICAgYm9v
bCBtYXNrZWQ7CisgICAgICAgIEZyYW1lT3B0aW9ucyBvcHRpb25zOwogICAgICAgICBjb25zdCBj
aGFyKiBwYXlsb2FkOwogICAgICAgICBzaXplX3QgcGF5bG9hZExlbmd0aDsKICAgICAgICAgY29u
c3QgY2hhciogZnJhbWVFbmQ7CiAgICAgfTsKIAotICAgIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VG
cmFtZShGcmFtZURhdGEmKTsgLy8gTWF5IG1vZGlmeSBwYXJ0IG9mIG1fYnVmZmVyIHRvIHVubWFz
ayB0aGUgZnJhbWUuCisgICAgc3RhdGljIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VGcmFtZShjaGFy
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgRnJhbWVEYXRhJiwgU3RyaW5nJiBlcnJvclN0cmlu
Zyk7IC8vIE1heSBtb2RpZnkgcGFydCBvZiAiZGF0YSIgdG8gdW5tYXNrIHRoZSBmcmFtZS4KKyAg
ICBzdGF0aWMgdm9pZCBidWlsZEZyYW1lKE9wQ29kZSwgRnJhbWVPcHRpb25zLCBjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgVmVjdG9yPGNoYXI+JiBmcmFtZSk7CisKKyAgICB1
c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291
bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6ZGVyZWY7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IHZvaWQgcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSB7IHJlZigpOyB9CisgICAgdmly
dHVhbCB2b2lkIGRlcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSB7IGRlcmVmKCk7IH0K
KworcHJpdmF0ZToKKyAgICBXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Kik7CisKKyAgICBib29sIGFwcGVuZFRvQnVmZmVyKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pOworICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3Qg
bGVuKTsKKyAgICBib29sIHByb2Nlc3NCdWZmZXIoKTsKKyAgICB2b2lkIHJlc3VtZVRpbWVyRmly
ZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKKyAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRz
aGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOworICAgIHZvaWQgY2xvc2luZ1Rp
bWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKKworICAgIHN0YXRpYyBib29sIGlz
Tm9uQ29udHJvbE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiBvcENvZGUgPT0gT3BDb2Rl
Q29udGludWF0aW9uIHx8IG9wQ29kZSA9PSBPcENvZGVUZXh0IHx8IG9wQ29kZSA9PSBPcENvZGVC
aW5hcnk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0NvbnRyb2xPcENvZGUoT3BDb2RlIG9wQ29kZSkg
eyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNsb3NlIHx8IG9wQ29kZSA9PSBPcENvZGVQaW5nIHx8
IG9wQ29kZSA9PSBPcENvZGVQb25nOyB9CisgICAgc3RhdGljIGJvb2wgaXNSZXNlcnZlZE9wQ29k
ZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiAhaXNOb25Db250cm9sT3BDb2RlKG9wQ29kZSkgJiYg
IWlzQ29udHJvbE9wQ29kZShvcENvZGUpOyB9CiAKICAgICBib29sIHByb2Nlc3NGcmFtZSgpOwog
ICAgIGJvb2wgcHJvY2Vzc0ZyYW1lSGl4aWU3NigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDhiMWE4ZjY5MWEyYjUzMjg5ZDdj
ODE4Y2ZhNWYxMThjYzY1MTBlMmIuLjExZTBkN2Y0MDc2ZTYyYzI5YzMwYWZiOGRmMThjNDljZjE2
ZWQ2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlU2VjV2Vi
U29ja2V0S2V5KCkKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGtleSksIG5vbmNlU2l6ZSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZ2V0RXhwZWN0ZWRXZWJT
b2NrZXRBY2NlcHQoY29uc3QgU3RyaW5nJiBzZWNXZWJTb2NrZXRLZXkpCitTdHJpbmcgV2ViU29j
a2V0SGFuZHNoYWtlOjpnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25zdCBTdHJpbmcmIHNl
Y1dlYlNvY2tldEtleSkKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2ViU29ja2V0
S2V5R1VJRCA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiOwogICAgIHN0
YXRpYyBjb25zdCBzaXplX3Qgc2hhMUhhc2hTaXplID0gMjA7IC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBkZWZpbmVkIGluIFNIQTEuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5oCmluZGV4IDg5Y2UyOTkwOTA0YjYxMTkxNWJkZWZkMDc2YjQ0MDBk
ZjRlY2RiNzcuLjAyYzlhYWJhZjAyN2IwYThmYjhhMzdiMDljZTFhMDQ5NWM1YTBiZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtODUs
NiArODUsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdDsKIAorICAgIHN0YXRpYyBTdHJpbmcg
Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQoY29uc3QgU3RyaW5nJiBzZWNXZWJTb2NrZXRLZXkp
OworCiBwcml2YXRlOgogICAgIEtVUkwgaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2ll
cygpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134613</attachid>
            <date>2012-03-29 10:38:47 -0700</date>
            <delta_ts>2012-03-30 02:05:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73852-20120329193639.patch</filename>
            <type>text/plain</type>
            <size>29875</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwZjk2YzJhMjYwNDNi
NWM5ZWEyNGNmMWFjNTU5MDQ5OGM3YzM1Yy4uMTY5OTljZmUxNTRmN2JkOTcxZGY3ZGQ5NzVhYmY5
N2VhZjk3ZGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAzLTI5ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRXhw
b3NlIHJldXNhYmxlIFdlYlNvY2tldCBjb2RlIGZvciBXZWJTb2NrZXRTZXJ2ZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdGhlIG1ham9yaXR5
IHRoZSB3ZWIgc29ja2V0IGhhbmRzaGFrZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGxvZ2lj
CisgICAgICAgIGluc2lkZSBXZWJTb2NrZXRIYW5kc2hha2UgYW5kIGV4cG9zZSBpdCB0aHJvdWdo
IFdlYlNvY2tldEZyYW1lIHRvIG1ha2UgaXQKKyAgICAgICAgYXZhaWxhYmxlIGZvciB0aGUgd2Vi
IHNvY2tldCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgVGhpcyBhbHNvIHJlLWFk
ZCB0aGUgbWFza2luZyBjb2RlIHRoYXQgd2FzIHJlbW92ZWQgaW4gcjExMTgyOSBzaW5jZSBpdCBp
cworICAgICAgICBuZWVkZWQgZm9yIHRoZSBzZXJ2ZXIgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0Zy
YW1lKTogbm93IHVzaW5nIFdlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUuIEV4dHJhY3RlZCB0
aGUgIWZyYW1lLm1hc2tlZCBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OnNlbmRGcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaDoKKyAgICAgICAgKFdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZSk6IG1vdmVkIGZy
b20gV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVu
ZE1hc2tlZEZyYW1lUGF5bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6
bWFrZUZyYW1lRGF0YSk6IG1vdmVkIGZyb20gbWFrZUZyYW1lRGF0YSBpbiBXZWJTb2NrZXRDaGFu
bmVsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpXZWJTb2NrZXRGcmFt
ZSk6IG1vdmVkIGZyb20gdGhlIGhlYWRlci4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKFdlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQpOiBleHBv
c2UgdGhpcyBvYmplY3Qtc3RhdGljIGZ1bmN0aW9uLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTIt
MDMtMjkgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4gYW5kIEpvY2VseW4g
VHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBBZGQgR2Vu
ZXJpYyBIVFRQIFJlcXVlc3QgQ2xhc3MuIEdlbmVyYWxpemVkIEhUVFAgUGFyc2luZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggYzQxMjJkZjM2YTg2YmY3MzEzNGQwODZkZWExNDlhZTE2MGUwY2Mx
Yy4uODkxOTg4YjhiYTZmZjRjNTZlOThhY2JiNThkN2JkZTMzZmQyYzE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTIxMTAsNiArMjExMCw3IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAg
ICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKICAgICAgICAg
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCiAgICAgICAgIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAorICAgICAg
ICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCiAgICAgICAgIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCiAgICAgICAgIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcAogICAgICAgICBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCA2ZTA1OTFlYmZlNmRkNTI3MGZmMDVmYzBkMjc0MzNkNTI5NTc4Y2I4Li5k
YmQ1YzA3ODNiZGQ5ZDFkMmE5MjgxNjU2OGM0Mjk0ZmEyY2YyMzM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTEyMDYsNiArMTIwNiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRl
eCA3MTU2OTUzZTViMTE4MDI4M2I5Mzg4ZGQxYTAxODQ2YWZmN2NjNGZkLi5jMmQ4ZTQ3OTJjOTJi
MWQ1ZGM2Zjk5NTUyNTZlYThiNGI4NjU4OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01NSw3ICs1NSw2
IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKICNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03MSwxOSArNzAsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNvbnN0IGRvdWJsZSBUQ1BNYXhpbXVtU2VnbWVudExpZmV0aW1lID0gMiAqIDYw
LjA7CiAKLS8vIENvbnN0YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3JtYXQuCi1jb25zdCB1bnNp
Z25lZCBjaGFyIGZpbmFsQml0ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgY29tcHJlc3NC
aXQgPSAweDQwOwotY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDJCaXQgPSAweDIwOwotY29u
c3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDNCaXQgPSAweDEwOwotY29uc3QgdW5zaWduZWQgY2hh
ciBvcENvZGVNYXNrID0gMHhGOwotY29uc3QgdW5zaWduZWQgY2hhciBtYXNrQml0ID0gMHg4MDsK
LWNvbnN0IHVuc2lnbmVkIGNoYXIgcGF5bG9hZExlbmd0aE1hc2sgPSAweDdGOwotY29uc3Qgc2l6
ZV90IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCA9IDEyNTsKLWNv
bnN0IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRlbmRlZExlbmd0aEZpZWxkID0g
MTI2OwotY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5n
dGhGaWVsZCA9IDEyNzsKLWNvbnN0IHNpemVfdCBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzID0gNDsK
LQogV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChEb2N1bWVudCogZG9jdW1lbnQs
IFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1l
bnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC01NTEsODAgKzUzNyw2IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4q
IHRpbWVyKQogICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgpOwogfQogCi1XZWJTb2NrZXRD
aGFubmVsOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUoV2Vi
U29ja2V0RnJhbWUmIGZyYW1lLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQpCi17Ci0gICAgY29uc3Qg
Y2hhciogcCA9IG1fYnVmZmVyOwotICAgIGNvbnN0IGNoYXIqIGJ1ZmZlckVuZCA9IG1fYnVmZmVy
ICsgbV9idWZmZXJTaXplOwotCi0gICAgaWYgKG1fYnVmZmVyU2l6ZSA8IDIpCi0gICAgICAgIHJl
dHVybiBGcmFtZUluY29tcGxldGU7Ci0KLSAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9ICpw
Kys7Ci0gICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnArKzsKLQotICAgIGJvb2wgZmlu
YWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKLSAgICBib29sIGNvbXByZXNzID0gZmlyc3RCeXRl
ICYgY29tcHJlc3NCaXQ7Ci0gICAgYm9vbCByZXNlcnZlZDIgPSBmaXJzdEJ5dGUgJiByZXNlcnZl
ZDJCaXQ7Ci0gICAgYm9vbCByZXNlcnZlZDMgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDNCaXQ7Ci0g
ICAgdW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5dGUgJiBvcENvZGVNYXNrOwotCi0gICAg
Ym9vbCBtYXNrZWQgPSBzZWNvbmRCeXRlICYgbWFza0JpdDsKLSAgICBpZiAobWFza2VkKSB7Ci0g
ICAgICAgIGZhaWwoIkEgc2VydmVyIG11c3Qgbm90IG1hc2sgYW55IGZyYW1lcyB0aGF0IGl0IHNl
bmRzIHRvIHRoZSBjbGllbnQuIik7Ci0gICAgICAgIHJldHVybiBGcmFtZUVycm9yOwotICAgIH0K
LSAgICB1aW50NjRfdCBwYXlsb2FkTGVuZ3RoNjQgPSBzZWNvbmRCeXRlICYgcGF5bG9hZExlbmd0
aE1hc2s7Ci0gICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGhXaXRob3V0
RXh0ZW5kZWRMZW5ndGhGaWVsZCkgewotICAgICAgICBpbnQgZXh0ZW5kZWRQYXlsb2FkTGVuZ3Ro
U2l6ZTsKLSAgICAgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA9PSBwYXlsb2FkTGVuZ3RoV2l0aFR3
b0J5dGVFeHRlbmRlZExlbmd0aEZpZWxkKQotICAgICAgICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVu
Z3RoU2l6ZSA9IDI7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKHBheWxvYWRM
ZW5ndGg2NCA9PSBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQp
OwotICAgICAgICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9IDg7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGJ1ZmZlckVuZCAtIHAgPCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplKQot
ICAgICAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKLSAgICAgICAgcGF5bG9hZExlbmd0
aDY0ID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHRlbmRlZFBheWxvYWRMZW5n
dGhTaXplOyArK2kpIHsKLSAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCA8PD0gODsKLSAgICAg
ICAgICAgIHBheWxvYWRMZW5ndGg2NCB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsr
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9PSAy
ICYmIHBheWxvYWRMZW5ndGg2NCA8PSBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVu
Z3RoRmllbGQpIHsKLSAgICAgICAgICAgIGZhaWwoIlRoZSBtaW5pbWFsIG51bWJlciBvZiBieXRl
cyBNVVNUIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSBsZW5ndGgiKTsKLSAgICAgICAgICAgIHJldHVy
biBGcmFtZUVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5n
dGhTaXplID09IDggJiYgcGF5bG9hZExlbmd0aDY0IDw9IDB4RkZGRikgewotICAgICAgICAgICAg
ZmFpbCgiVGhlIG1pbmltYWwgbnVtYmVyIG9mIGJ5dGVzIE1VU1QgYmUgdXNlZCB0byBlbmNvZGUg
dGhlIGxlbmd0aCIpOwotICAgICAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVUlOVDY0X0MoMHg3RkZGRkZGRkZGRkZGRkZGKSBzaG91
bGQgYmUgdXNlZCBidXQgaXQgZGlkIG5vdCBjb21waWxlIG9uIFF0IGJvdHMuCi0jaWYgQ09NUElM
RVIoTVNWQykKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9IDB4
N0ZGRkZGRkZGRkZGRkZGRnVpNjQ7Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBt
YXhQYXlsb2FkTGVuZ3RoID0gMHg3RkZGRkZGRkZGRkZGRkZGdWxsOwotI2VuZGlmCi0gICAgaWYg
KHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZExlbmd0aDY0ID4g
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsKLSAgICAgICAgZmFpbCgiV2ViU29ja2V0
IGZyYW1lIGxlbmd0aCB0b28gbGFyZ2U6ICIgKyBTdHJpbmc6Om51bWJlcihwYXlsb2FkTGVuZ3Ro
NjQpICsgIiBieXRlcyIpOwotICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsKLSAgICB9Ci0gICAg
c2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBheWxvYWRMZW5ndGg2
NCk7Ci0KLSAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJFbmQgLSBwKSA8IHBheWxv
YWRMZW5ndGgpCi0gICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7Ci0KLSAgICBmcmFtZS5v
cENvZGUgPSBzdGF0aWNfY2FzdDxXZWJTb2NrZXRGcmFtZTo6T3BDb2RlPihvcENvZGUpOwotICAg
IGZyYW1lLmZpbmFsID0gZmluYWw7Ci0gICAgZnJhbWUuY29tcHJlc3MgPSBjb21wcmVzczsKLSAg
ICBmcmFtZS5yZXNlcnZlZDIgPSByZXNlcnZlZDI7Ci0gICAgZnJhbWUucmVzZXJ2ZWQzID0gcmVz
ZXJ2ZWQzOwotICAgIGZyYW1lLm1hc2tlZCA9IG1hc2tlZDsKLSAgICBmcmFtZS5wYXlsb2FkID0g
cDsKLSAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gcGF5bG9hZExlbmd0aDsKLSAgICBmcmFtZUVu
ZCA9IHAgKyBwYXlsb2FkTGVuZ3RoOwotICAgIHJldHVybiBGcmFtZU9LOwotfQogCiBib29sIFdl
YlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiB7CkBAIC02MzIsOCArNTQ0LDE0IEBAIGJv
b2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIAogICAgIFdlYlNvY2tldEZyYW1l
IGZyYW1lOwogICAgIGNvbnN0IGNoYXIqIGZyYW1lRW5kOwotICAgIGlmIChwYXJzZUZyYW1lKGZy
YW1lLCBmcmFtZUVuZCkgIT0gRnJhbWVPSykKKyAgICBTdHJpbmcgZXJyb3JTdHJpbmc7CisgICAg
V2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgcmVzdWx0ID0gV2ViU29ja2V0RnJhbWU6
OnBhcnNlRnJhbWUobV9idWZmZXIsIG1fYnVmZmVyU2l6ZSwgZnJhbWUsIGZyYW1lRW5kLCBlcnJv
clN0cmluZyk7CisgICAgaWYgKHJlc3VsdCA9PSBXZWJTb2NrZXRGcmFtZTo6RnJhbWVJbmNvbXBs
ZXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlc3VsdCA9PSBXZWJTb2NrZXRG
cmFtZTo6RnJhbWVFcnJvcikgeworICAgICAgICBmYWlsKGVycm9yU3RyaW5nKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIEFTU0VSVChtX2J1ZmZlciA8IGZyYW1lRW5kKTsK
ICAgICBBU1NFUlQoZnJhbWVFbmQgPD0gbV9idWZmZXIgKyBtX2J1ZmZlclNpemUpOwpAQCAtNjU1
LDYgKzU3MywxMSBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoZnJhbWUubWFza2VkKSB7CisgICAg
ICAgIGZhaWwoIkEgc2VydmVyIG11c3Qgbm90IG1hc2sgYW55IGZyYW1lcyB0aGF0IGl0IHNlbmRz
IHRvIHRoZSBjbGllbnQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAv
LyBBbGwgY29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgZnJhZ21lbnRlZC4KICAgICBpZiAoV2Vi
U29ja2V0RnJhbWU6OmlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpICYmICFmcmFtZS5maW5h
bCkgewogICAgICAgICBmYWlsKCJSZWNlaXZlZCBmcmFnbWVudGVkIGNvbnRyb2wgZnJhbWU6IG9w
Y29kZSA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5vcENvZGUpKTsKQEAgLTY2Myw3ICs1ODYs
NyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAKICAgICAvLyBBbGwg
Y29udHJvbCBmcmFtZXMgbXVzdCBoYXZlIGEgcGF5bG9hZCBvZiAxMjUgYnl0ZXMgb3IgbGVzcywg
d2hpY2ggbWVhbnMgdGhlIGZyYW1lIG11c3Qgbm90IGNvbnRhaW4KICAgICAvLyB0aGUgImV4dGVu
ZGVkIHBheWxvYWQgbGVuZ3RoIiBmaWVsZC4KLSAgICBpZiAoV2ViU29ja2V0RnJhbWU6OmlzQ29u
dHJvbE9wQ29kZShmcmFtZS5vcENvZGUpICYmIGZyYW1lLnBheWxvYWRMZW5ndGggPiBtYXhQYXls
b2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpIHsKKyAgICBpZiAoV2ViU29ja2V0
RnJhbWU6OmlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpICYmIGZyYW1lLnBheWxvYWRMZW5n
dGggPiBXZWJTb2NrZXRGcmFtZTo6bWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0
aEZpZWxkKSB7CiAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGNvbnRyb2wgZnJhbWUgaGF2aW5nIHRv
byBsb25nIHBheWxvYWQ6ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5wYXlsb2FkTGVuZ3RoKSAr
ICIgYnl0ZXMiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTk4OSw1MiArOTEy
LDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6YWJvcnRPdXRnb2luZ0ZyYW1lUXVldWUoKQog
I2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZE1hc2tlZEZyYW1lUGF5bG9hZChjb25zdCBX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQotewotICAgIHNp
emVfdCBtYXNraW5nS2V5U3RhcnQgPSBmcmFtZURhdGEuc2l6ZSgpOwotICAgIGZyYW1lRGF0YS5n
cm93KGZyYW1lRGF0YS5zaXplKCkgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsgLy8gQWRkIHBs
YWNlaG9sZGVyIGZvciBtYXNraW5nIGtleS4gV2lsbCBiZSBvdmVyd3JpdHRlbi4KLSAgICBzaXpl
X3QgcGF5bG9hZFN0YXJ0ID0gZnJhbWVEYXRhLnNpemUoKTsKLSAgICBmcmFtZURhdGEuYXBwZW5k
KGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOwotCi0gICAgY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21WYWx1ZXMoZnJhbWVEYXRhLmRhdGEoKSArIG1hc2tpbmdLZXlTdGFydCwgbWFz
a2luZ0tleVdpZHRoSW5CeXRlcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5w
YXlsb2FkTGVuZ3RoOyArK2kpCi0gICAgICAgIGZyYW1lRGF0YVtwYXlsb2FkU3RhcnQgKyBpXSBe
PSBmcmFtZURhdGFbbWFza2luZ0tleVN0YXJ0ICsgaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNd
OwotfQotCi1zdGF0aWMgdm9pZCBtYWtlRnJhbWVEYXRhKGNvbnN0IFdlYlNvY2tldEZyYW1lJiBm
cmFtZSwgVmVjdG9yPGNoYXI+JiBmcmFtZURhdGEpCi17Ci0gICAgdW5zaWduZWQgY2hhciBmaXJz
dEJ5dGUgPSAoZnJhbWUuZmluYWwgPyBmaW5hbEJpdCA6IDApIHwgZnJhbWUub3BDb2RlOwotICAg
IGlmIChmcmFtZS5jb21wcmVzcykKLSAgICAgICAgZmlyc3RCeXRlIHw9IGNvbXByZXNzQml0Owot
ICAgIGZyYW1lRGF0YS5hcHBlbmQoZmlyc3RCeXRlKTsKLSAgICBpZiAoZnJhbWUucGF5bG9hZExl
bmd0aCA8PSBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpCi0gICAg
ICAgIGZyYW1lRGF0YS5hcHBlbmQobWFza0JpdCB8IGZyYW1lLnBheWxvYWRMZW5ndGgpOwotICAg
IGVsc2UgaWYgKGZyYW1lLnBheWxvYWRMZW5ndGggPD0gMHhGRkZGKSB7Ci0gICAgICAgIGZyYW1l
RGF0YS5hcHBlbmQobWFza0JpdCB8IHBheWxvYWRMZW5ndGhXaXRoVHdvQnl0ZUV4dGVuZGVkTGVu
Z3RoRmllbGQpOwotICAgICAgICBmcmFtZURhdGEuYXBwZW5kKChmcmFtZS5wYXlsb2FkTGVuZ3Ro
ICYgMHhGRjAwKSA+PiA4KTsKLSAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChmcmFtZS5wYXlsb2Fk
TGVuZ3RoICYgMHhGRik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZnJhbWVEYXRhLmFwcGVuZCht
YXNrQml0IHwgcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkKTsK
LSAgICAgICAgY2hhciBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07Ci0gICAgICAgIHNpemVfdCBy
ZW1haW5pbmcgPSBmcmFtZS5wYXlsb2FkTGVuZ3RoOwotICAgICAgICAvLyBGaWxsIHRoZSBsZW5n
dGggaW50byBleHRlbmRlZFBheWxvYWRMZW5ndGggaW4gdGhlIG5ldHdvcmsgYnl0ZSBvcmRlci4K
LSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsKLSAgICAgICAgICAgIGV4dGVu
ZGVkUGF5bG9hZExlbmd0aFs3IC0gaV0gPSByZW1haW5pbmcgJiAweEZGOwotICAgICAgICAgICAg
cmVtYWluaW5nID4+PSA4OwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVCghcmVtYWluaW5nKTsK
LSAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChleHRlbmRlZFBheWxvYWRMZW5ndGgsIDgpOwotICAg
IH0KLQotICAgIGFwcGVuZE1hc2tlZEZyYW1lUGF5bG9hZChmcmFtZSwgZnJhbWVEYXRhKTsKLX0K
LQogYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVChtX2hhbmRsZSk7CiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAKLSAgICBBU1NFUlQo
IShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRz
IGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogICAgIFdlYlNvY2tldEZyYW1lIGZyYW1lKG9wQ29k
ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGRhdGEsIGRhdGFMZW5ndGgpOwogCiAgICAgT3duUHRyPERl
ZmxhdGVSZXN1bHRIb2xkZXI+IGRlZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVGcmFtZXIuZGVmbGF0
ZShmcmFtZSk7CkBAIC0xMDQ0LDcgKzkyNiw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAg
ICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IGZyYW1lRGF0YTsKLSAgICBtYWtlRnJhbWVEYXRhKGZy
YW1lLCBmcmFtZURhdGEpOworICAgIGZyYW1lLm1ha2VGcmFtZURhdGEoZnJhbWVEYXRhKTsKIAog
ICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChmcmFtZURhdGEuZGF0YSgpLCBmcmFtZURhdGEuc2l6
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCmluZGV4IDU0Mjg3MWU0M2EwOWNmODMxNzZmMTgwZTQwNDc3NzlkZTEz
NTM1MDEuLjBiNzYwN2ZmYmI2Zjg1MTdmYjhhMjMzMDgyOThjYWZjNTJkYTAyY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aApAQCAtMTMyLDE0ICsxMzIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdm9pZCBjbG9zaW5n
VGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOwogCi0gICAgZW51bSBQYXJzZUZy
YW1lUmVzdWx0IHsKLSAgICAgICAgRnJhbWVPSywKLSAgICAgICAgRnJhbWVJbmNvbXBsZXRlLAot
ICAgICAgICBGcmFtZUVycm9yCi0gICAgfTsKLQotICAgIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VG
cmFtZShXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCk7Ci0KICAgICBib29s
IHByb2Nlc3NGcmFtZSgpOwogICAgIGJvb2wgcHJvY2Vzc0ZyYW1lSGl4aWU3NigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iNWZkODQ5YTY2OTE2ZGQ1NjhlNjY4ZmZjY2VkZGJhMjNmNjExOTFkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEZyYW1lLmNwcApAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9n
cmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldl
YlNvY2tldEZyYW1lLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisvLyBDb25zdGFudHMgZm9yIGh5YmktMTAgZnJhbWUgZm9ybWF0LgorY29uc3QgdW5zaWduZWQg
Y2hhciBmaW5hbEJpdCA9IDB4ODA7Citjb25zdCB1bnNpZ25lZCBjaGFyIGNvbXByZXNzQml0ID0g
MHg0MDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQyQml0ID0gMHgyMDsKK2NvbnN0IHVu
c2lnbmVkIGNoYXIgcmVzZXJ2ZWQzQml0ID0gMHgxMDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgb3BD
b2RlTWFzayA9IDB4RjsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgbWFza0JpdCA9IDB4ODA7Citjb25z
dCB1bnNpZ25lZCBjaGFyIHBheWxvYWRMZW5ndGhNYXNrID0gMHg3RjsKK2NvbnN0IHNpemVfdCBX
ZWJTb2NrZXRGcmFtZTo6bWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxk
ID0gMTI1OworY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoVHdvQnl0ZUV4dGVuZGVkTGVu
Z3RoRmllbGQgPSAxMjY7Citjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVF
eHRlbmRlZExlbmd0aEZpZWxkID0gMTI3OworY29uc3Qgc2l6ZV90IG1hc2tpbmdLZXlXaWR0aElu
Qnl0ZXMgPSA0OworCitXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCBXZWJTb2NrZXRG
cmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgV2ViU29ja2V0
RnJhbWUmIGZyYW1lLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQsIFN0cmluZyYgZXJyb3JTdHJpbmcp
Cit7CisgICAgY2hhciogcCA9IGRhdGE7CisgICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0gZGF0
YSArIGRhdGFMZW5ndGg7CisKKyAgICBpZiAoZGF0YUxlbmd0aCA8IDIpCisgICAgICAgIHJldHVy
biBGcmFtZUluY29tcGxldGU7CisKKyAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9ICpwKys7
CisgICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnArKzsKKworICAgIGJvb2wgZmluYWwg
PSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKKyAgICBib29sIGNvbXByZXNzID0gZmlyc3RCeXRlICYg
Y29tcHJlc3NCaXQ7CisgICAgYm9vbCByZXNlcnZlZDIgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDJC
aXQ7CisgICAgYm9vbCByZXNlcnZlZDMgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDNCaXQ7CisgICAg
dW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5dGUgJiBvcENvZGVNYXNrOworCisgICAgYm9v
bCBtYXNrZWQgPSBzZWNvbmRCeXRlICYgbWFza0JpdDsKKyAgICB1aW50NjRfdCBwYXlsb2FkTGVu
Z3RoNjQgPSBzZWNvbmRCeXRlICYgcGF5bG9hZExlbmd0aE1hc2s7CisgICAgaWYgKHBheWxvYWRM
ZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCkgewor
ICAgICAgICBpbnQgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZTsKKyAgICAgICAgaWYgKHBheWxv
YWRMZW5ndGg2NCA9PSBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRlbmRlZExlbmd0aEZpZWxk
KQorICAgICAgICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9IDI7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgQVNTRVJUKHBheWxvYWRMZW5ndGg2NCA9PSBwYXlsb2FkTGVuZ3Ro
V2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQpOworICAgICAgICAgICAgZXh0ZW5kZWRQ
YXlsb2FkTGVuZ3RoU2l6ZSA9IDg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJ1ZmZlckVuZCAt
IHAgPCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplKQorICAgICAgICAgICAgcmV0dXJuIEZyYW1l
SW5jb21wbGV0ZTsKKyAgICAgICAgcGF5bG9hZExlbmd0aDY0ID0gMDsKKyAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplOyArK2kpIHsKKyAgICAgICAg
ICAgIHBheWxvYWRMZW5ndGg2NCA8PD0gODsKKyAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCB8
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsrKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9PSAyICYmIHBheWxvYWRMZW5ndGg2NCA8PSBt
YXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpIHsKKyAgICAgICAgICAg
IGVycm9yU3RyaW5nID0gIlRoZSBtaW5pbWFsIG51bWJlciBvZiBieXRlcyBNVVNUIGJlIHVzZWQg
dG8gZW5jb2RlIHRoZSBsZW5ndGgiOworICAgICAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUgPT0gOCAmJiBw
YXlsb2FkTGVuZ3RoNjQgPD0gMHhGRkZGKSB7CisgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJU
aGUgbWluaW1hbCBudW1iZXIgb2YgYnl0ZXMgTVVTVCBiZSB1c2VkIHRvIGVuY29kZSB0aGUgbGVu
Z3RoIjsKKyAgICAgICAgICAgIHJldHVybiBGcmFtZUVycm9yOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gRklYTUU6IFVJTlQ2NF9DKDB4N0ZGRkZGRkZGRkZGRkZGRikgc2hvdWxkIGJlIHVz
ZWQgYnV0IGl0IGRpZCBub3QgY29tcGlsZSBvbiBRdCBib3RzLgorI2lmIENPTVBJTEVSKE1TVkMp
CisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG1heFBheWxvYWRMZW5ndGggPSAweDdGRkZGRkZG
RkZGRkZGRkZ1aTY0OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgbWF4UGF5bG9h
ZExlbmd0aCA9IDB4N0ZGRkZGRkZGRkZGRkZGRnVsbDsKKyNlbmRpZgorICAgIHNpemVfdCBtYXNr
aW5nS2V5TGVuZ3RoID0gbWFza2VkID8gbWFza2luZ0tleVdpZHRoSW5CeXRlcyA6IDA7CisgICAg
aWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZExlbmd0aDY0
ICsgbWFza2luZ0tleUxlbmd0aCA+IG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSB7Cisg
ICAgICAgIGVycm9yU3RyaW5nID0gIldlYlNvY2tldCBmcmFtZSBsZW5ndGggdG9vIGxhcmdlOiAi
ICsgU3RyaW5nOjpudW1iZXIocGF5bG9hZExlbmd0aDY0KSArICIgYnl0ZXMiOworICAgICAgICBy
ZXR1cm4gRnJhbWVFcnJvcjsKKyAgICB9CisgICAgc2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHBheWxvYWRMZW5ndGg2NCk7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8
c2l6ZV90PihidWZmZXJFbmQgLSBwKSA8IG1hc2tpbmdLZXlMZW5ndGggKyBwYXlsb2FkTGVuZ3Ro
KQorICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOworCisgICAgaWYgKG1hc2tlZCkgewor
ICAgICAgICBjb25zdCBjaGFyKiBtYXNraW5nS2V5ID0gcDsKKyAgICAgICAgY2hhciogcGF5bG9h
ZCA9IHAgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBheWxvYWRMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHBheWxvYWRbaV0gXj0gbWFz
a2luZ0tleVtpICUgbWFza2luZ0tleVdpZHRoSW5CeXRlc107IC8vIFVubWFzayB0aGUgcGF5bG9h
ZC4KKyAgICB9CisKKyAgICBmcmFtZS5vcENvZGUgPSBzdGF0aWNfY2FzdDxXZWJTb2NrZXRGcmFt
ZTo6T3BDb2RlPihvcENvZGUpOworICAgIGZyYW1lLmZpbmFsID0gZmluYWw7CisgICAgZnJhbWUu
Y29tcHJlc3MgPSBjb21wcmVzczsKKyAgICBmcmFtZS5yZXNlcnZlZDIgPSByZXNlcnZlZDI7Cisg
ICAgZnJhbWUucmVzZXJ2ZWQzID0gcmVzZXJ2ZWQzOworICAgIGZyYW1lLm1hc2tlZCA9IG1hc2tl
ZDsKKyAgICBmcmFtZS5wYXlsb2FkID0gcCArIG1hc2tpbmdLZXlMZW5ndGg7CisgICAgZnJhbWUu
cGF5bG9hZExlbmd0aCA9IHBheWxvYWRMZW5ndGg7CisgICAgZnJhbWVFbmQgPSBwICsgbWFza2lu
Z0tleUxlbmd0aCArIHBheWxvYWRMZW5ndGg7CisgICAgcmV0dXJuIEZyYW1lT0s7Cit9CisKK3N0
YXRpYyB2b2lkIGFwcGVuZE1hc2tlZEZyYW1lUGF5bG9hZChjb25zdCBXZWJTb2NrZXRGcmFtZSYg
ZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQoreworICAgIHNpemVfdCBtYXNraW5nS2V5
U3RhcnQgPSBmcmFtZURhdGEuc2l6ZSgpOworICAgIGZyYW1lRGF0YS5ncm93KGZyYW1lRGF0YS5z
aXplKCkgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsgLy8gQWRkIHBsYWNlaG9sZGVyIGZvciBt
YXNraW5nIGtleS4gV2lsbCBiZSBvdmVyd3JpdHRlbi4KKyAgICBzaXplX3QgcGF5bG9hZFN0YXJ0
ID0gZnJhbWVEYXRhLnNpemUoKTsKKyAgICBmcmFtZURhdGEuYXBwZW5kKGZyYW1lLnBheWxvYWQs
IGZyYW1lLnBheWxvYWRMZW5ndGgpOworCisgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1
ZXMoZnJhbWVEYXRhLmRhdGEoKSArIG1hc2tpbmdLZXlTdGFydCwgbWFza2luZ0tleVdpZHRoSW5C
eXRlcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5wYXlsb2FkTGVuZ3RoOyAr
K2kpCisgICAgICAgIGZyYW1lRGF0YVtwYXlsb2FkU3RhcnQgKyBpXSBePSBmcmFtZURhdGFbbWFz
a2luZ0tleVN0YXJ0ICsgaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNdOworfQorCit2b2lkIFdl
YlNvY2tldEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQorewor
ICAgIEFTU0VSVCghKG9wQ29kZSAmIH5vcENvZGVNYXNrKSk7IC8vIENoZWNrcyB3aGV0aGVyICJv
cENvZGUiIGZpdHMgaW4gdGhlIHJhbmdlIG9mIG9wQ29kZXMuCisKKyAgICB1bnNpZ25lZCBjaGFy
IGZpcnN0Qnl0ZSA9IChmaW5hbCA/IGZpbmFsQml0IDogMCkgfCBvcENvZGU7CisgICAgaWYgKGNv
bXByZXNzKQorICAgICAgICBmaXJzdEJ5dGUgfD0gY29tcHJlc3NCaXQ7CisgICAgZnJhbWVEYXRh
LmFwcGVuZChmaXJzdEJ5dGUpOworICAgIGlmIChwYXlsb2FkTGVuZ3RoIDw9IG1heFBheWxvYWRM
ZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCkKKyAgICAgICAgZnJhbWVEYXRhLmFwcGVu
ZChtYXNrQml0IHwgcGF5bG9hZExlbmd0aCk7CisgICAgZWxzZSBpZiAocGF5bG9hZExlbmd0aCA8
PSAweEZGRkYpIHsKKyAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChtYXNrQml0IHwgcGF5bG9hZExl
bmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7CisgICAgICAgIGZyYW1lRGF0YS5h
cHBlbmQoKHBheWxvYWRMZW5ndGggJiAweEZGMDApID4+IDgpOworICAgICAgICBmcmFtZURhdGEu
YXBwZW5kKHBheWxvYWRMZW5ndGggJiAweEZGKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmcmFt
ZURhdGEuYXBwZW5kKG1hc2tCaXQgfCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVk
TGVuZ3RoRmllbGQpOworICAgICAgICBjaGFyIGV4dGVuZGVkUGF5bG9hZExlbmd0aFs4XTsKKyAg
ICAgICAgc2l6ZV90IHJlbWFpbmluZyA9IHBheWxvYWRMZW5ndGg7CisgICAgICAgIC8vIEZpbGwg
dGhlIGxlbmd0aCBpbnRvIGV4dGVuZGVkUGF5bG9hZExlbmd0aCBpbiB0aGUgbmV0d29yayBieXRl
IG9yZGVyLgorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICAg
ICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzcgLSBpXSA9IHJlbWFpbmluZyAmIDB4RkY7CisgICAg
ICAgICAgICByZW1haW5pbmcgPj49IDg7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFyZW1h
aW5pbmcpOworICAgICAgICBmcmFtZURhdGEuYXBwZW5kKGV4dGVuZGVkUGF5bG9hZExlbmd0aCwg
OCk7CisgICAgfQorCisgICAgYXBwZW5kTWFza2VkRnJhbWVQYXlsb2FkKCp0aGlzLCBmcmFtZURh
dGEpOworfQorCitXZWJTb2NrZXRGcmFtZTo6V2ViU29ja2V0RnJhbWUoT3BDb2RlIG9wQ29kZSwg
Ym9vbCBmaW5hbCwgYm9vbCBjb21wcmVzcywgYm9vbCBtYXNrZWQsIGNvbnN0IGNoYXIqIHBheWxv
YWQsIHNpemVfdCBwYXlsb2FkTGVuZ3RoKQorICAgIDogb3BDb2RlKG9wQ29kZSkKKyAgICAsIGZp
bmFsKGZpbmFsKQorICAgICwgY29tcHJlc3MoY29tcHJlc3MpCisgICAgLCByZXNlcnZlZDIoZmFs
c2UpCisgICAgLCByZXNlcnZlZDMoZmFsc2UpCisgICAgLCBtYXNrZWQobWFza2VkKQorICAgICwg
cGF5bG9hZChwYXlsb2FkKQorICAgICwgcGF5bG9hZExlbmd0aChwYXlsb2FkTGVuZ3RoKQorewor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tF
VFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRG
cmFtZS5oCmluZGV4IDdlZmVhNzhkYjFkM2E0NDYyMzVhYzk4MDFiZDVmYjZkZDNmYTRlNGYuLmM0
NDVmOTRlYTdjNzBmNGU4Yzc0MmU3OGY5MTE4NWE4MTMzNWZlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCkBAIC0zMyw2ICsz
Myw4IEBACiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgV2ViU29ja2V0RnJh
bWUgewpAQCAtNDcsMjEgKzQ5LDE5IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFtZSB7CiAgICAgICAg
IE9wQ29kZUludmFsaWQgPSAweDEwCiAgICAgfTsKIAorICAgIGVudW0gUGFyc2VGcmFtZVJlc3Vs
dCB7CisgICAgICAgIEZyYW1lT0ssCisgICAgICAgIEZyYW1lSW5jb21wbGV0ZSwKKyAgICAgICAg
RnJhbWVFcnJvcgorICAgIH07CisKICAgICBzdGF0aWMgYm9vbCBpc05vbkNvbnRyb2xPcENvZGUo
T3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNvbnRpbnVhdGlvbiB8fCBv
cENvZGUgPT0gT3BDb2RlVGV4dCB8fCBvcENvZGUgPT0gT3BDb2RlQmluYXJ5OyB9CiAgICAgc3Rh
dGljIGJvb2wgaXNDb250cm9sT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuIG9wQ29kZSA9
PSBPcENvZGVDbG9zZSB8fCBvcENvZGUgPT0gT3BDb2RlUGluZyB8fCBvcENvZGUgPT0gT3BDb2Rl
UG9uZzsgfQogICAgIHN0YXRpYyBib29sIGlzUmVzZXJ2ZWRPcENvZGUoT3BDb2RlIG9wQ29kZSkg
eyByZXR1cm4gIWlzTm9uQ29udHJvbE9wQ29kZShvcENvZGUpICYmICFpc0NvbnRyb2xPcENvZGUo
b3BDb2RlKTsgfQorICAgIHN0YXRpYyBQYXJzZUZyYW1lUmVzdWx0IHBhcnNlRnJhbWUoY2hhciog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdlYlNvY2tldEZyYW1lJiwgY29uc3QgY2hhciomIGZy
YW1lRW5kLCBTdHJpbmcmIGVycm9yU3RyaW5nKTsgLy8gTWF5IG1vZGlmeSBwYXJ0IG9mIGRhdGEg
dG8gdW5tYXNrIHRoZSBmcmFtZS4KIAotICAgIFdlYlNvY2tldEZyYW1lKE9wQ29kZSBvcENvZGUg
PSBPcENvZGVJbnZhbGlkLCBib29sIGZpbmFsID0gZmFsc2UsIGJvb2wgY29tcHJlc3MgPSBmYWxz
ZSwgYm9vbCBtYXNrZWQgPSBmYWxzZSwgY29uc3QgY2hhciogcGF5bG9hZCA9IDAsIHNpemVfdCBw
YXlsb2FkTGVuZ3RoID0gMCkKLSAgICAgICAgOiBvcENvZGUob3BDb2RlKQotICAgICAgICAsIGZp
bmFsKGZpbmFsKQotICAgICAgICAsIGNvbXByZXNzKGNvbXByZXNzKQotICAgICAgICAsIHJlc2Vy
dmVkMihmYWxzZSkKLSAgICAgICAgLCByZXNlcnZlZDMoZmFsc2UpCi0gICAgICAgICwgbWFza2Vk
KG1hc2tlZCkKLSAgICAgICAgLCBwYXlsb2FkKHBheWxvYWQpCi0gICAgICAgICwgcGF5bG9hZExl
bmd0aChwYXlsb2FkTGVuZ3RoKQotICAgIHsKLSAgICB9CisgICAgV2ViU29ja2V0RnJhbWUoT3BD
b2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBib29sIGNvbXByZXNzID0g
ZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IGNoYXIqIHBheWxvYWQgPSAwLCBzaXpl
X3QgcGF5bG9hZExlbmd0aCA9IDApOworICAgIHZvaWQgbWFrZUZyYW1lRGF0YShWZWN0b3I8Y2hh
cj4mIGZyYW1lRGF0YSk7CiAKICAgICBPcENvZGUgb3BDb2RlOwogICAgIGJvb2wgZmluYWw7CkBA
IC03MSw2ICs3MSw4IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFtZSB7CiAgICAgYm9vbCBtYXNrZWQ7
CiAgICAgY29uc3QgY2hhciogcGF5bG9hZDsKICAgICBzaXplX3QgcGF5bG9hZExlbmd0aDsKKwor
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExl
bmd0aEZpZWxkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApp
bmRleCA4MzNhNWFmMzQ4MDUxZTVlODFiOWEwZTJkYTQzYzUwZTE3NGQzZjYxLi40NmE1NGEwMTE0
NDgwZmUwNDNjNmQ2OTI0NmJhMDhmOGU5ZjA2NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtMTcx
LDcgKzE3MSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQogICAg
IHJldHVybiBiYXNlNjRFbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oa2V5KSwgbm9uY2VT
aXplKTsKIH0KIAotc3RhdGljIFN0cmluZyBnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25z
dCBTdHJpbmcmIHNlY1dlYlNvY2tldEtleSkKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6Omdl
dEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0S2V5KQog
ewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3ZWJTb2NrZXRLZXlHVUlEID0gIjI1OEVB
RkE1LUU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMSI7CiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBzaGExSGFzaFNpemUgPSAyMDsgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgaW4g
U0hBMS5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5oCmluZGV4IGI5MmNlYTAxNGJiNzAyN2FjZTU5OGMyYjRkMThkNjAw
OTY2OTdlNzYuLjIxZDFmM2ZjOTQ4MmIyYjRkNzdiZmQ2ZmJiMzlmZmU1MjdjODk4YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmgKQEAgLTkwLDYgKzkwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRFeHRlbnNp
b25Qcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+KTsKIAor
ICAgIHN0YXRpYyBTdHJpbmcgZ2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQoY29uc3QgU3RyaW5n
JiBzZWNXZWJTb2NrZXRLZXkpOworCiBwcml2YXRlOgogICAgIEtVUkwgaHR0cFVSTEZvckF1dGhl
bnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBkNGJjNjFlMmU1
MDRiOWE1YTY0ZmVlZGNlODJkYWE1OTU1ZDM1YTQ3Li5jZWUzZTU0MDdkMTgwMTRhYThkMWZjYTU5
MzVmMDZmOTBmODVjMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM3MTgsNiArMzcxOCw3IEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXAorICAgICAgICBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkMTk1
ZjZhY2Y4MjU1YjA3NTBkMDZhZTRhMDNmMTJiMGNlNzFkYWJhLi4zNDBmMmRlOGU1ZTE4YWQ1YTBh
NGQwNTRjNjZkYmEzNGIwZTg1NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNjUwLDYgKzE2NTAs
NyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RnJhbWUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCmluZGV4IDhhMTliZjJmNDZkOWRlMWUzMzk3NTFlNWFjYTMwYzRmYWRj
NWFmYjEuLjJlMDJjOWU4ZWFmZGU1ZmE0ZmU3MjkxZGVlN2I0YzUyMzhiZWE0MTcgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDc2MSw2ICsy
NDc2MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNvY2tldEZyYW1lLmNwcCIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vi
c29ja2V0c1xXZWJTb2NrZXRGcmFtZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZmYzMx
YTkzNjBhNjJlMWVmYzNmYjI3OTE2MWZkNWQzMzY2MTMwNTEuLjhlYzEzNmYyZDZmOWJiZTBkY2U2
YTEyZDBlYTEwYzYwODkxNWQ3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0MDcsNiArNDQwNyw3IEBACiAJCUFBMjFFQ0NE
MEFCRjBGQzYwMDJCODM0QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAg
LyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUFBNEMzQTc2MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0
QzNBNzQwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgKi87IH07CiAJCUFBNEMz
QTc3MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNEMzQTc1MEIyQjE2NzkwMDIzMzRBMiAvKiBT
dHlsZUVsZW1lbnQuaCAqLzsgfTsKKwkJQUFGNUI3QjcxNTI0QjZDNTAwMDRDQjQ5IC8qIFdlYlNv
Y2tldEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFBRjVCN0IxMTUyNEI0QkQwMDA0Q0I0OSAvKiBXZWJTb2NrZXRGcmFtZS5jcHAgKi87IH07
CiAJCUFCMjNBMzI3MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQjIzQTMy
NTA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwICovOyB9Owog
CQlBQjIzQTMyODA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMjNBMzI2MDlC
QkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oICovOyB9OwogCQlBQjI0
N0E2QzBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVyU2xpZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMjQ3QTZBMEFGRDYzODMwMDNGQTVGRCAv
KiBSZW5kZXJTbGlkZXIuY3BwICovOyB9OwpAQCAtMTEyOTUsNiArMTEyOTYsNyBAQAogCQlBQTA5
NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQTRDM0E3NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUVsZW1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTRDM0E3NTBCMkIxNjc5MDAy
MzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHlsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFGNUI3QjEx
NTI0QjRCRDAwMDRDQjQ5IC8qIFdlYlNvY2tldEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNvY2tldEZyYW1lLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFCMjNBMzI1MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmVmb3JlVGV4dEluc2VydGVk
RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQjIzQTMyNjA5QkJBN0Qw
MDA2N0NDNTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUFCMjQ3QTZBMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNsaWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM5Miw2ICsxNzM5NCw3IEBACiAJ
CQkJOTdBQUJEMDcxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuY3BwICovLAogCQkJCTk3QUFCRDA4MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRl
bnNpb25EaXNwYXRjaGVyLmggKi8sCiAJCQkJOTdBQUJEMDkxNEZBMDlENTAwNzQ1N0FFIC8qIFdl
YlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovLAorCQkJCUFBRjVCN0IxMTUyNEI0QkQwMDA0
Q0I0OSAvKiBXZWJTb2NrZXRGcmFtZS5jcHAgKi8sCiAJCQkJOTdBQUJEMEExNEZBMDlENTAwNzQ1
N0FFIC8qIFdlYlNvY2tldEZyYW1lLmggKi8sCiAJCQkJOTdBQUJEMEIxNEZBMDlENTAwNzQ1N0FF
IC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8sCiAJCQkJOTdBQUJEMEMxNEZBMDlENTAwNzQ1
N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovLApAQCAtMjc1NjYsNiArMjc1NjksNyBAQAog
CQkJCTRBMzhCRjUwMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDIwMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyMjE0RkEwOUQ1MDA3NDU3
QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlBQUY1QjdCNzE1MjRCNkM1MDAwNENCNDkgLyogV2ViU29ja2V0RnJhbWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTdBQUJEMjYxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyODE0RkEwOUQ1MDA3NDU3QUUgLyogV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyQTE0
RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134749</attachid>
            <date>2012-03-30 02:05:45 -0700</date>
            <delta_ts>2012-04-01 12:22:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73852-20120330110334.patch</filename>
            <type>text/plain</type>
            <size>30004</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwZjk2YzJhMjYwNDNi
NWM5ZWEyNGNmMWFjNTU5MDQ5OGM3YzM1Yy4uMTY5OTljZmUxNTRmN2JkOTcxZGY3ZGQ5NzVhYmY5
N2VhZjk3ZGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAzLTI5ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRXhw
b3NlIHJldXNhYmxlIFdlYlNvY2tldCBjb2RlIGZvciBXZWJTb2NrZXRTZXJ2ZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdGhlIG1ham9yaXR5
IHRoZSB3ZWIgc29ja2V0IGhhbmRzaGFrZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGxvZ2lj
CisgICAgICAgIGluc2lkZSBXZWJTb2NrZXRIYW5kc2hha2UgYW5kIGV4cG9zZSBpdCB0aHJvdWdo
IFdlYlNvY2tldEZyYW1lIHRvIG1ha2UgaXQKKyAgICAgICAgYXZhaWxhYmxlIGZvciB0aGUgd2Vi
IHNvY2tldCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgVGhpcyBhbHNvIHJlLWFk
ZCB0aGUgbWFza2luZyBjb2RlIHRoYXQgd2FzIHJlbW92ZWQgaW4gcjExMTgyOSBzaW5jZSBpdCBp
cworICAgICAgICBuZWVkZWQgZm9yIHRoZSBzZXJ2ZXIgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0Zy
YW1lKTogbm93IHVzaW5nIFdlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUuIEV4dHJhY3RlZCB0
aGUgIWZyYW1lLm1hc2tlZCBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OnNlbmRGcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaDoKKyAgICAgICAgKFdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZSk6IG1vdmVkIGZy
b20gV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OmFwcGVu
ZE1hc2tlZEZyYW1lUGF5bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6
bWFrZUZyYW1lRGF0YSk6IG1vdmVkIGZyb20gbWFrZUZyYW1lRGF0YSBpbiBXZWJTb2NrZXRDaGFu
bmVsLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpXZWJTb2NrZXRGcmFt
ZSk6IG1vdmVkIGZyb20gdGhlIGhlYWRlci4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0RnJhbWUuaDoKKyAgICAgICAgKFdlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQpOiBleHBv
c2UgdGhpcyBvYmplY3Qtc3RhdGljIGZ1bmN0aW9uLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTIt
MDMtMjkgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4gYW5kIEpvY2VseW4g
VHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBBZGQgR2Vu
ZXJpYyBIVFRQIFJlcXVlc3QgQ2xhc3MuIEdlbmVyYWxpemVkIEhUVFAgUGFyc2luZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggYzQxMjJkZjM2YTg2YmY3MzEzNGQwODZkZWExNDlhZTE2MGUwY2Mx
Yy4uODkxOTg4YjhiYTZmZjRjNTZlOThhY2JiNThkN2JkZTMzZmQyYzE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTIxMTAsNiArMjExMCw3IEBAIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAg
ICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKICAgICAgICAg
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCiAgICAgICAgIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAorICAgICAg
ICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCiAgICAgICAgIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCiAgICAgICAgIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcAogICAgICAgICBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCA2ZTA1OTFlYmZlNmRkNTI3MGZmMDVmYzBkMjc0MzNkNTI5NTc4Y2I4Li5k
YmQ1YzA3ODNiZGQ5ZDFkMmE5MjgxNjU2OGM0Mjk0ZmEyY2YyMzM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTEyMDYsNiArMTIwNiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRl
eCA3MTU2OTUzZTViMTE4MDI4M2I5Mzg4ZGQxYTAxODQ2YWZmN2NjNGZkLi5jMmQ4ZTQ3OTJjOTJi
MWQ1ZGM2Zjk5NTUyNTZlYThiNGI4NjU4OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01NSw3ICs1NSw2
IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAKICNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
aD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03MSwxOSArNzAsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNvbnN0IGRvdWJsZSBUQ1BNYXhpbXVtU2VnbWVudExpZmV0aW1lID0gMiAqIDYw
LjA7CiAKLS8vIENvbnN0YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3JtYXQuCi1jb25zdCB1bnNp
Z25lZCBjaGFyIGZpbmFsQml0ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgY29tcHJlc3NC
aXQgPSAweDQwOwotY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDJCaXQgPSAweDIwOwotY29u
c3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDNCaXQgPSAweDEwOwotY29uc3QgdW5zaWduZWQgY2hh
ciBvcENvZGVNYXNrID0gMHhGOwotY29uc3QgdW5zaWduZWQgY2hhciBtYXNrQml0ID0gMHg4MDsK
LWNvbnN0IHVuc2lnbmVkIGNoYXIgcGF5bG9hZExlbmd0aE1hc2sgPSAweDdGOwotY29uc3Qgc2l6
ZV90IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCA9IDEyNTsKLWNv
bnN0IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRlbmRlZExlbmd0aEZpZWxkID0g
MTI2OwotY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5n
dGhGaWVsZCA9IDEyNzsKLWNvbnN0IHNpemVfdCBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzID0gNDsK
LQogV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChEb2N1bWVudCogZG9jdW1lbnQs
IFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1l
bnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCkBAIC01NTEsODAgKzUzNyw2IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4q
IHRpbWVyKQogICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgpOwogfQogCi1XZWJTb2NrZXRD
aGFubmVsOjpQYXJzZUZyYW1lUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUoV2Vi
U29ja2V0RnJhbWUmIGZyYW1lLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQpCi17Ci0gICAgY29uc3Qg
Y2hhciogcCA9IG1fYnVmZmVyOwotICAgIGNvbnN0IGNoYXIqIGJ1ZmZlckVuZCA9IG1fYnVmZmVy
ICsgbV9idWZmZXJTaXplOwotCi0gICAgaWYgKG1fYnVmZmVyU2l6ZSA8IDIpCi0gICAgICAgIHJl
dHVybiBGcmFtZUluY29tcGxldGU7Ci0KLSAgICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9ICpw
Kys7Ci0gICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnArKzsKLQotICAgIGJvb2wgZmlu
YWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKLSAgICBib29sIGNvbXByZXNzID0gZmlyc3RCeXRl
ICYgY29tcHJlc3NCaXQ7Ci0gICAgYm9vbCByZXNlcnZlZDIgPSBmaXJzdEJ5dGUgJiByZXNlcnZl
ZDJCaXQ7Ci0gICAgYm9vbCByZXNlcnZlZDMgPSBmaXJzdEJ5dGUgJiByZXNlcnZlZDNCaXQ7Ci0g
ICAgdW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5dGUgJiBvcENvZGVNYXNrOwotCi0gICAg
Ym9vbCBtYXNrZWQgPSBzZWNvbmRCeXRlICYgbWFza0JpdDsKLSAgICBpZiAobWFza2VkKSB7Ci0g
ICAgICAgIGZhaWwoIkEgc2VydmVyIG11c3Qgbm90IG1hc2sgYW55IGZyYW1lcyB0aGF0IGl0IHNl
bmRzIHRvIHRoZSBjbGllbnQuIik7Ci0gICAgICAgIHJldHVybiBGcmFtZUVycm9yOwotICAgIH0K
LSAgICB1aW50NjRfdCBwYXlsb2FkTGVuZ3RoNjQgPSBzZWNvbmRCeXRlICYgcGF5bG9hZExlbmd0
aE1hc2s7Ci0gICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGhXaXRob3V0
RXh0ZW5kZWRMZW5ndGhGaWVsZCkgewotICAgICAgICBpbnQgZXh0ZW5kZWRQYXlsb2FkTGVuZ3Ro
U2l6ZTsKLSAgICAgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA9PSBwYXlsb2FkTGVuZ3RoV2l0aFR3
b0J5dGVFeHRlbmRlZExlbmd0aEZpZWxkKQotICAgICAgICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVu
Z3RoU2l6ZSA9IDI7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKHBheWxvYWRM
ZW5ndGg2NCA9PSBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQp
OwotICAgICAgICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9IDg7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGJ1ZmZlckVuZCAtIHAgPCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplKQot
ICAgICAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKLSAgICAgICAgcGF5bG9hZExlbmd0
aDY0ID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHRlbmRlZFBheWxvYWRMZW5n
dGhTaXplOyArK2kpIHsKLSAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCA8PD0gODsKLSAgICAg
ICAgICAgIHBheWxvYWRMZW5ndGg2NCB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsr
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9PSAy
ICYmIHBheWxvYWRMZW5ndGg2NCA8PSBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVu
Z3RoRmllbGQpIHsKLSAgICAgICAgICAgIGZhaWwoIlRoZSBtaW5pbWFsIG51bWJlciBvZiBieXRl
cyBNVVNUIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSBsZW5ndGgiKTsKLSAgICAgICAgICAgIHJldHVy
biBGcmFtZUVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5n
dGhTaXplID09IDggJiYgcGF5bG9hZExlbmd0aDY0IDw9IDB4RkZGRikgewotICAgICAgICAgICAg
ZmFpbCgiVGhlIG1pbmltYWwgbnVtYmVyIG9mIGJ5dGVzIE1VU1QgYmUgdXNlZCB0byBlbmNvZGUg
dGhlIGxlbmd0aCIpOwotICAgICAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBGSVhNRTogVUlOVDY0X0MoMHg3RkZGRkZGRkZGRkZGRkZGKSBzaG91
bGQgYmUgdXNlZCBidXQgaXQgZGlkIG5vdCBjb21waWxlIG9uIFF0IGJvdHMuCi0jaWYgQ09NUElM
RVIoTVNWQykKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9IDB4
N0ZGRkZGRkZGRkZGRkZGRnVpNjQ7Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBt
YXhQYXlsb2FkTGVuZ3RoID0gMHg3RkZGRkZGRkZGRkZGRkZGdWxsOwotI2VuZGlmCi0gICAgaWYg
KHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZExlbmd0aDY0ID4g
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsKLSAgICAgICAgZmFpbCgiV2ViU29ja2V0
IGZyYW1lIGxlbmd0aCB0b28gbGFyZ2U6ICIgKyBTdHJpbmc6Om51bWJlcihwYXlsb2FkTGVuZ3Ro
NjQpICsgIiBieXRlcyIpOwotICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsKLSAgICB9Ci0gICAg
c2l6ZV90IHBheWxvYWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBheWxvYWRMZW5ndGg2
NCk7Ci0KLSAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJFbmQgLSBwKSA8IHBheWxv
YWRMZW5ndGgpCi0gICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7Ci0KLSAgICBmcmFtZS5v
cENvZGUgPSBzdGF0aWNfY2FzdDxXZWJTb2NrZXRGcmFtZTo6T3BDb2RlPihvcENvZGUpOwotICAg
IGZyYW1lLmZpbmFsID0gZmluYWw7Ci0gICAgZnJhbWUuY29tcHJlc3MgPSBjb21wcmVzczsKLSAg
ICBmcmFtZS5yZXNlcnZlZDIgPSByZXNlcnZlZDI7Ci0gICAgZnJhbWUucmVzZXJ2ZWQzID0gcmVz
ZXJ2ZWQzOwotICAgIGZyYW1lLm1hc2tlZCA9IG1hc2tlZDsKLSAgICBmcmFtZS5wYXlsb2FkID0g
cDsKLSAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gcGF5bG9hZExlbmd0aDsKLSAgICBmcmFtZUVu
ZCA9IHAgKyBwYXlsb2FkTGVuZ3RoOwotICAgIHJldHVybiBGcmFtZU9LOwotfQogCiBib29sIFdl
YlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiB7CkBAIC02MzIsOCArNTQ0LDE0IEBAIGJv
b2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIAogICAgIFdlYlNvY2tldEZyYW1l
IGZyYW1lOwogICAgIGNvbnN0IGNoYXIqIGZyYW1lRW5kOwotICAgIGlmIChwYXJzZUZyYW1lKGZy
YW1lLCBmcmFtZUVuZCkgIT0gRnJhbWVPSykKKyAgICBTdHJpbmcgZXJyb3JTdHJpbmc7CisgICAg
V2ViU29ja2V0RnJhbWU6OlBhcnNlRnJhbWVSZXN1bHQgcmVzdWx0ID0gV2ViU29ja2V0RnJhbWU6
OnBhcnNlRnJhbWUobV9idWZmZXIsIG1fYnVmZmVyU2l6ZSwgZnJhbWUsIGZyYW1lRW5kLCBlcnJv
clN0cmluZyk7CisgICAgaWYgKHJlc3VsdCA9PSBXZWJTb2NrZXRGcmFtZTo6RnJhbWVJbmNvbXBs
ZXRlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHJlc3VsdCA9PSBXZWJTb2NrZXRG
cmFtZTo6RnJhbWVFcnJvcikgeworICAgICAgICBmYWlsKGVycm9yU3RyaW5nKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIEFTU0VSVChtX2J1ZmZlciA8IGZyYW1lRW5kKTsK
ICAgICBBU1NFUlQoZnJhbWVFbmQgPD0gbV9idWZmZXIgKyBtX2J1ZmZlclNpemUpOwpAQCAtNjU1
LDYgKzU3MywxMSBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoZnJhbWUubWFza2VkKSB7CisgICAg
ICAgIGZhaWwoIkEgc2VydmVyIG11c3Qgbm90IG1hc2sgYW55IGZyYW1lcyB0aGF0IGl0IHNlbmRz
IHRvIHRoZSBjbGllbnQuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAv
LyBBbGwgY29udHJvbCBmcmFtZXMgbXVzdCBub3QgYmUgZnJhZ21lbnRlZC4KICAgICBpZiAoV2Vi
U29ja2V0RnJhbWU6OmlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpICYmICFmcmFtZS5maW5h
bCkgewogICAgICAgICBmYWlsKCJSZWNlaXZlZCBmcmFnbWVudGVkIGNvbnRyb2wgZnJhbWU6IG9w
Y29kZSA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5vcENvZGUpKTsKQEAgLTY2Myw3ICs1ODYs
NyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAKICAgICAvLyBBbGwg
Y29udHJvbCBmcmFtZXMgbXVzdCBoYXZlIGEgcGF5bG9hZCBvZiAxMjUgYnl0ZXMgb3IgbGVzcywg
d2hpY2ggbWVhbnMgdGhlIGZyYW1lIG11c3Qgbm90IGNvbnRhaW4KICAgICAvLyB0aGUgImV4dGVu
ZGVkIHBheWxvYWQgbGVuZ3RoIiBmaWVsZC4KLSAgICBpZiAoV2ViU29ja2V0RnJhbWU6OmlzQ29u
dHJvbE9wQ29kZShmcmFtZS5vcENvZGUpICYmIGZyYW1lLnBheWxvYWRMZW5ndGggPiBtYXhQYXls
b2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpIHsKKyAgICBpZiAoV2ViU29ja2V0
RnJhbWU6OmlzQ29udHJvbE9wQ29kZShmcmFtZS5vcENvZGUpICYmIGZyYW1lLnBheWxvYWRMZW5n
dGggPiBXZWJTb2NrZXRGcmFtZTo6bWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0
aEZpZWxkKSB7CiAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGNvbnRyb2wgZnJhbWUgaGF2aW5nIHRv
byBsb25nIHBheWxvYWQ6ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5wYXlsb2FkTGVuZ3RoKSAr
ICIgYnl0ZXMiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTk4OSw1MiArOTEy
LDExIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6YWJvcnRPdXRnb2luZ0ZyYW1lUXVldWUoKQog
I2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIGFwcGVuZE1hc2tlZEZyYW1lUGF5bG9hZChjb25zdCBX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQotewotICAgIHNp
emVfdCBtYXNraW5nS2V5U3RhcnQgPSBmcmFtZURhdGEuc2l6ZSgpOwotICAgIGZyYW1lRGF0YS5n
cm93KGZyYW1lRGF0YS5zaXplKCkgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsgLy8gQWRkIHBs
YWNlaG9sZGVyIGZvciBtYXNraW5nIGtleS4gV2lsbCBiZSBvdmVyd3JpdHRlbi4KLSAgICBzaXpl
X3QgcGF5bG9hZFN0YXJ0ID0gZnJhbWVEYXRhLnNpemUoKTsKLSAgICBmcmFtZURhdGEuYXBwZW5k
KGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOwotCi0gICAgY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21WYWx1ZXMoZnJhbWVEYXRhLmRhdGEoKSArIG1hc2tpbmdLZXlTdGFydCwgbWFz
a2luZ0tleVdpZHRoSW5CeXRlcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5w
YXlsb2FkTGVuZ3RoOyArK2kpCi0gICAgICAgIGZyYW1lRGF0YVtwYXlsb2FkU3RhcnQgKyBpXSBe
PSBmcmFtZURhdGFbbWFza2luZ0tleVN0YXJ0ICsgaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNd
OwotfQotCi1zdGF0aWMgdm9pZCBtYWtlRnJhbWVEYXRhKGNvbnN0IFdlYlNvY2tldEZyYW1lJiBm
cmFtZSwgVmVjdG9yPGNoYXI+JiBmcmFtZURhdGEpCi17Ci0gICAgdW5zaWduZWQgY2hhciBmaXJz
dEJ5dGUgPSAoZnJhbWUuZmluYWwgPyBmaW5hbEJpdCA6IDApIHwgZnJhbWUub3BDb2RlOwotICAg
IGlmIChmcmFtZS5jb21wcmVzcykKLSAgICAgICAgZmlyc3RCeXRlIHw9IGNvbXByZXNzQml0Owot
ICAgIGZyYW1lRGF0YS5hcHBlbmQoZmlyc3RCeXRlKTsKLSAgICBpZiAoZnJhbWUucGF5bG9hZExl
bmd0aCA8PSBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpCi0gICAg
ICAgIGZyYW1lRGF0YS5hcHBlbmQobWFza0JpdCB8IGZyYW1lLnBheWxvYWRMZW5ndGgpOwotICAg
IGVsc2UgaWYgKGZyYW1lLnBheWxvYWRMZW5ndGggPD0gMHhGRkZGKSB7Ci0gICAgICAgIGZyYW1l
RGF0YS5hcHBlbmQobWFza0JpdCB8IHBheWxvYWRMZW5ndGhXaXRoVHdvQnl0ZUV4dGVuZGVkTGVu
Z3RoRmllbGQpOwotICAgICAgICBmcmFtZURhdGEuYXBwZW5kKChmcmFtZS5wYXlsb2FkTGVuZ3Ro
ICYgMHhGRjAwKSA+PiA4KTsKLSAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChmcmFtZS5wYXlsb2Fk
TGVuZ3RoICYgMHhGRik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZnJhbWVEYXRhLmFwcGVuZCht
YXNrQml0IHwgcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkKTsK
LSAgICAgICAgY2hhciBleHRlbmRlZFBheWxvYWRMZW5ndGhbOF07Ci0gICAgICAgIHNpemVfdCBy
ZW1haW5pbmcgPSBmcmFtZS5wYXlsb2FkTGVuZ3RoOwotICAgICAgICAvLyBGaWxsIHRoZSBsZW5n
dGggaW50byBleHRlbmRlZFBheWxvYWRMZW5ndGggaW4gdGhlIG5ldHdvcmsgYnl0ZSBvcmRlci4K
LSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsKLSAgICAgICAgICAgIGV4dGVu
ZGVkUGF5bG9hZExlbmd0aFs3IC0gaV0gPSByZW1haW5pbmcgJiAweEZGOwotICAgICAgICAgICAg
cmVtYWluaW5nID4+PSA4OwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVCghcmVtYWluaW5nKTsK
LSAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChleHRlbmRlZFBheWxvYWRMZW5ndGgsIDgpOwotICAg
IH0KLQotICAgIGFwcGVuZE1hc2tlZEZyYW1lUGF5bG9hZChmcmFtZSwgZnJhbWVEYXRhKTsKLX0K
LQogYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29k
ZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVChtX2hhbmRsZSk7CiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAKLSAgICBBU1NFUlQo
IShvcENvZGUgJiB+b3BDb2RlTWFzaykpOyAvLyBDaGVja3Mgd2hldGhlciAib3BDb2RlIiBmaXRz
IGluIHRoZSByYW5nZSBvZiBvcENvZGVzLgogICAgIFdlYlNvY2tldEZyYW1lIGZyYW1lKG9wQ29k
ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGRhdGEsIGRhdGFMZW5ndGgpOwogCiAgICAgT3duUHRyPERl
ZmxhdGVSZXN1bHRIb2xkZXI+IGRlZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVGcmFtZXIuZGVmbGF0
ZShmcmFtZSk7CkBAIC0xMDQ0LDcgKzkyNiw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAg
ICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IGZyYW1lRGF0YTsKLSAgICBtYWtlRnJhbWVEYXRhKGZy
YW1lLCBmcmFtZURhdGEpOworICAgIGZyYW1lLm1ha2VGcmFtZURhdGEoZnJhbWVEYXRhKTsKIAog
ICAgIHJldHVybiBtX2hhbmRsZS0+c2VuZChmcmFtZURhdGEuZGF0YSgpLCBmcmFtZURhdGEuc2l6
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oCmluZGV4IDU0Mjg3MWU0M2EwOWNmODMxNzZmMTgwZTQwNDc3NzlkZTEz
NTM1MDEuLjBiNzYwN2ZmYmI2Zjg1MTdmYjhhMjMzMDgyOThjYWZjNTJkYTAyY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aApAQCAtMTMyLDE0ICsxMzIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdm9pZCBjbG9zaW5n
VGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOwogCi0gICAgZW51bSBQYXJzZUZy
YW1lUmVzdWx0IHsKLSAgICAgICAgRnJhbWVPSywKLSAgICAgICAgRnJhbWVJbmNvbXBsZXRlLAot
ICAgICAgICBGcmFtZUVycm9yCi0gICAgfTsKLQotICAgIFBhcnNlRnJhbWVSZXN1bHQgcGFyc2VG
cmFtZShXZWJTb2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCk7Ci0KICAgICBib29s
IHByb2Nlc3NGcmFtZSgpOwogICAgIGJvb2wgcHJvY2Vzc0ZyYW1lSGl4aWU3NigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hN2RiNzVlNzkxNTJkOTY1YWJmMGY1MTdiYmE2ZjI2YzMzNGYzMWI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEZyYW1lLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
KgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
KworI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBDb25zdGFudHMgZm9yIGh5YmktMTAgZnJhbWUgZm9ybWF0Lgor
Y29uc3QgdW5zaWduZWQgY2hhciBmaW5hbEJpdCA9IDB4ODA7Citjb25zdCB1bnNpZ25lZCBjaGFy
IGNvbXByZXNzQml0ID0gMHg0MDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQyQml0ID0g
MHgyMDsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQzQml0ID0gMHgxMDsKK2NvbnN0IHVu
c2lnbmVkIGNoYXIgb3BDb2RlTWFzayA9IDB4RjsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgbWFza0Jp
dCA9IDB4ODA7Citjb25zdCB1bnNpZ25lZCBjaGFyIHBheWxvYWRMZW5ndGhNYXNrID0gMHg3RjsK
K2NvbnN0IHNpemVfdCBXZWJTb2NrZXRGcmFtZTo6bWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkID0gMTI1OworY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoVHdv
Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjY7Citjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0
aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZpZWxkID0gMTI3OworY29uc3Qgc2l6ZV90IG1h
c2tpbmdLZXlXaWR0aEluQnl0ZXMgPSA0OworCitXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJl
c3VsdCBXZWJTb2NrZXRGcmFtZTo6cGFyc2VGcmFtZShjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCwgV2ViU29ja2V0RnJhbWUmIGZyYW1lLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQsIFN0cmlu
ZyYgZXJyb3JTdHJpbmcpCit7CisgICAgY2hhciogcCA9IGRhdGE7CisgICAgY29uc3QgY2hhciog
YnVmZmVyRW5kID0gZGF0YSArIGRhdGFMZW5ndGg7CisKKyAgICBpZiAoZGF0YUxlbmd0aCA8IDIp
CisgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CisKKyAgICB1bnNpZ25lZCBjaGFyIGZp
cnN0Qnl0ZSA9ICpwKys7CisgICAgdW5zaWduZWQgY2hhciBzZWNvbmRCeXRlID0gKnArKzsKKwor
ICAgIGJvb2wgZmluYWwgPSBmaXJzdEJ5dGUgJiBmaW5hbEJpdDsKKyAgICBib29sIGNvbXByZXNz
ID0gZmlyc3RCeXRlICYgY29tcHJlc3NCaXQ7CisgICAgYm9vbCByZXNlcnZlZDIgPSBmaXJzdEJ5
dGUgJiByZXNlcnZlZDJCaXQ7CisgICAgYm9vbCByZXNlcnZlZDMgPSBmaXJzdEJ5dGUgJiByZXNl
cnZlZDNCaXQ7CisgICAgdW5zaWduZWQgY2hhciBvcENvZGUgPSBmaXJzdEJ5dGUgJiBvcENvZGVN
YXNrOworCisgICAgYm9vbCBtYXNrZWQgPSBzZWNvbmRCeXRlICYgbWFza0JpdDsKKyAgICB1aW50
NjRfdCBwYXlsb2FkTGVuZ3RoNjQgPSBzZWNvbmRCeXRlICYgcGF5bG9hZExlbmd0aE1hc2s7Cisg
ICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRM
ZW5ndGhGaWVsZCkgeworICAgICAgICBpbnQgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZTsKKyAg
ICAgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA9PSBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRl
bmRlZExlbmd0aEZpZWxkKQorICAgICAgICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9
IDI7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKHBheWxvYWRMZW5ndGg2NCA9
PSBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQpOworICAgICAg
ICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9IDg7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGJ1ZmZlckVuZCAtIHAgPCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplKQorICAgICAgICAg
ICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKKyAgICAgICAgcGF5bG9hZExlbmd0aDY0ID0gMDsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplOyAr
K2kpIHsKKyAgICAgICAgICAgIHBheWxvYWRMZW5ndGg2NCA8PD0gODsKKyAgICAgICAgICAgIHBh
eWxvYWRMZW5ndGg2NCB8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqcCsrKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoU2l6ZSA9PSAyICYmIHBheWxv
YWRMZW5ndGg2NCA8PSBtYXhQYXlsb2FkTGVuZ3RoV2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQp
IHsKKyAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlRoZSBtaW5pbWFsIG51bWJlciBvZiBieXRl
cyBNVVNUIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSBsZW5ndGgiOworICAgICAgICAgICAgcmV0dXJu
IEZyYW1lRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4dGVuZGVkUGF5bG9hZExlbmd0
aFNpemUgPT0gOCAmJiBwYXlsb2FkTGVuZ3RoNjQgPD0gMHhGRkZGKSB7CisgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJUaGUgbWluaW1hbCBudW1iZXIgb2YgYnl0ZXMgTVVTVCBiZSB1c2VkIHRv
IGVuY29kZSB0aGUgbGVuZ3RoIjsKKyAgICAgICAgICAgIHJldHVybiBGcmFtZUVycm9yOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IFVJTlQ2NF9DKDB4N0ZGRkZGRkZGRkZGRkZG
Rikgc2hvdWxkIGJlIHVzZWQgYnV0IGl0IGRpZCBub3QgY29tcGlsZSBvbiBRdCBib3RzLgorI2lm
IENPTVBJTEVSKE1TVkMpCisgICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IG1heFBheWxvYWRMZW5n
dGggPSAweDdGRkZGRkZGRkZGRkZGRkZ1aTY0OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgdWlu
dDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9IDB4N0ZGRkZGRkZGRkZGRkZGRnVsbDsKKyNlbmRpZgor
ICAgIHNpemVfdCBtYXNraW5nS2V5TGVuZ3RoID0gbWFza2VkID8gbWFza2luZ0tleVdpZHRoSW5C
eXRlcyA6IDA7CisgICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1heFBheWxvYWRMZW5ndGggfHwg
cGF5bG9hZExlbmd0aDY0ICsgbWFza2luZ0tleUxlbmd0aCA+IG51bWVyaWNfbGltaXRzPHNpemVf
dD46Om1heCgpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIldlYlNvY2tldCBmcmFtZSBsZW5n
dGggdG9vIGxhcmdlOiAiICsgU3RyaW5nOjpudW1iZXIocGF5bG9hZExlbmd0aDY0KSArICIgYnl0
ZXMiOworICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsKKyAgICB9CisgICAgc2l6ZV90IHBheWxv
YWRMZW5ndGggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBheWxvYWRMZW5ndGg2NCk7CisKKyAgICBp
ZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJFbmQgLSBwKSA8IG1hc2tpbmdLZXlMZW5ndGgg
KyBwYXlsb2FkTGVuZ3RoKQorICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOworCisgICAg
aWYgKG1hc2tlZCkgeworICAgICAgICBjb25zdCBjaGFyKiBtYXNraW5nS2V5ID0gcDsKKyAgICAg
ICAgY2hhciogcGF5bG9hZCA9IHAgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHBheWxvYWRMZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHBh
eWxvYWRbaV0gXj0gbWFza2luZ0tleVtpICUgbWFza2luZ0tleVdpZHRoSW5CeXRlc107IC8vIFVu
bWFzayB0aGUgcGF5bG9hZC4KKyAgICB9CisKKyAgICBmcmFtZS5vcENvZGUgPSBzdGF0aWNfY2Fz
dDxXZWJTb2NrZXRGcmFtZTo6T3BDb2RlPihvcENvZGUpOworICAgIGZyYW1lLmZpbmFsID0gZmlu
YWw7CisgICAgZnJhbWUuY29tcHJlc3MgPSBjb21wcmVzczsKKyAgICBmcmFtZS5yZXNlcnZlZDIg
PSByZXNlcnZlZDI7CisgICAgZnJhbWUucmVzZXJ2ZWQzID0gcmVzZXJ2ZWQzOworICAgIGZyYW1l
Lm1hc2tlZCA9IG1hc2tlZDsKKyAgICBmcmFtZS5wYXlsb2FkID0gcCArIG1hc2tpbmdLZXlMZW5n
dGg7CisgICAgZnJhbWUucGF5bG9hZExlbmd0aCA9IHBheWxvYWRMZW5ndGg7CisgICAgZnJhbWVF
bmQgPSBwICsgbWFza2luZ0tleUxlbmd0aCArIHBheWxvYWRMZW5ndGg7CisgICAgcmV0dXJuIEZy
YW1lT0s7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZE1hc2tlZEZyYW1lUGF5bG9hZChjb25zdCBX
ZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3RvcjxjaGFyPiYgZnJhbWVEYXRhKQoreworICAgIHNp
emVfdCBtYXNraW5nS2V5U3RhcnQgPSBmcmFtZURhdGEuc2l6ZSgpOworICAgIGZyYW1lRGF0YS5n
cm93KGZyYW1lRGF0YS5zaXplKCkgKyBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsgLy8gQWRkIHBs
YWNlaG9sZGVyIGZvciBtYXNraW5nIGtleS4gV2lsbCBiZSBvdmVyd3JpdHRlbi4KKyAgICBzaXpl
X3QgcGF5bG9hZFN0YXJ0ID0gZnJhbWVEYXRhLnNpemUoKTsKKyAgICBmcmFtZURhdGEuYXBwZW5k
KGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOworCisgICAgY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21WYWx1ZXMoZnJhbWVEYXRhLmRhdGEoKSArIG1hc2tpbmdLZXlTdGFydCwgbWFz
a2luZ0tleVdpZHRoSW5CeXRlcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5w
YXlsb2FkTGVuZ3RoOyArK2kpCisgICAgICAgIGZyYW1lRGF0YVtwYXlsb2FkU3RhcnQgKyBpXSBe
PSBmcmFtZURhdGFbbWFza2luZ0tleVN0YXJ0ICsgaSAlIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXNd
OworfQorCit2b2lkIFdlYlNvY2tldEZyYW1lOjptYWtlRnJhbWVEYXRhKFZlY3RvcjxjaGFyPiYg
ZnJhbWVEYXRhKQoreworICAgIEFTU0VSVCghKG9wQ29kZSAmIH5vcENvZGVNYXNrKSk7IC8vIENo
ZWNrcyB3aGV0aGVyICJvcENvZGUiIGZpdHMgaW4gdGhlIHJhbmdlIG9mIG9wQ29kZXMuCisKKyAg
ICB1bnNpZ25lZCBjaGFyIGZpcnN0Qnl0ZSA9IChmaW5hbCA/IGZpbmFsQml0IDogMCkgfCBvcENv
ZGU7CisgICAgaWYgKGNvbXByZXNzKQorICAgICAgICBmaXJzdEJ5dGUgfD0gY29tcHJlc3NCaXQ7
CisgICAgZnJhbWVEYXRhLmFwcGVuZChmaXJzdEJ5dGUpOworICAgIGlmIChwYXlsb2FkTGVuZ3Ro
IDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCkKKyAgICAgICAg
ZnJhbWVEYXRhLmFwcGVuZChtYXNrQml0IHwgcGF5bG9hZExlbmd0aCk7CisgICAgZWxzZSBpZiAo
cGF5bG9hZExlbmd0aCA8PSAweEZGRkYpIHsKKyAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChtYXNr
Qml0IHwgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7CisgICAg
ICAgIGZyYW1lRGF0YS5hcHBlbmQoKHBheWxvYWRMZW5ndGggJiAweEZGMDApID4+IDgpOworICAg
ICAgICBmcmFtZURhdGEuYXBwZW5kKHBheWxvYWRMZW5ndGggJiAweEZGKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBmcmFtZURhdGEuYXBwZW5kKG1hc2tCaXQgfCBwYXlsb2FkTGVuZ3RoV2l0aEVp
Z2h0Qnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQpOworICAgICAgICBjaGFyIGV4dGVuZGVkUGF5bG9h
ZExlbmd0aFs4XTsKKyAgICAgICAgc2l6ZV90IHJlbWFpbmluZyA9IHBheWxvYWRMZW5ndGg7Cisg
ICAgICAgIC8vIEZpbGwgdGhlIGxlbmd0aCBpbnRvIGV4dGVuZGVkUGF5bG9hZExlbmd0aCBpbiB0
aGUgbmV0d29yayBieXRlIG9yZGVyLgorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsr
aSkgeworICAgICAgICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzcgLSBpXSA9IHJlbWFpbmlu
ZyAmIDB4RkY7CisgICAgICAgICAgICByZW1haW5pbmcgPj49IDg7CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKCFyZW1haW5pbmcpOworICAgICAgICBmcmFtZURhdGEuYXBwZW5kKGV4dGVuZGVk
UGF5bG9hZExlbmd0aCwgOCk7CisgICAgfQorCisgICAgYXBwZW5kTWFza2VkRnJhbWVQYXlsb2Fk
KCp0aGlzLCBmcmFtZURhdGEpOworfQorCitXZWJTb2NrZXRGcmFtZTo6V2ViU29ja2V0RnJhbWUo
T3BDb2RlIG9wQ29kZSwgYm9vbCBmaW5hbCwgYm9vbCBjb21wcmVzcywgYm9vbCBtYXNrZWQsIGNv
bnN0IGNoYXIqIHBheWxvYWQsIHNpemVfdCBwYXlsb2FkTGVuZ3RoKQorICAgIDogb3BDb2RlKG9w
Q29kZSkKKyAgICAsIGZpbmFsKGZpbmFsKQorICAgICwgY29tcHJlc3MoY29tcHJlc3MpCisgICAg
LCByZXNlcnZlZDIoZmFsc2UpCisgICAgLCByZXNlcnZlZDMoZmFsc2UpCisgICAgLCBtYXNrZWQo
bWFza2VkKQorICAgICwgcGF5bG9hZChwYXlsb2FkKQorICAgICwgcGF5bG9hZExlbmd0aChwYXls
b2FkTGVuZ3RoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRGcmFtZS5oCmluZGV4IDdlZmVhNzhkYjFkM2E0NDYyMzVhYzk4MDFiZDVm
YjZkZDNmYTRlNGYuLmM0NDVmOTRlYTdjNzBmNGU4Yzc0MmU3OGY5MTE4NWE4MTMzNWZlMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFt
ZS5oCkBAIC0zMyw2ICszMyw4IEBACiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgV2ViU29ja2V0RnJhbWUgewpAQCAtNDcsMjEgKzQ5LDE5IEBAIHN0cnVjdCBXZWJTb2NrZXRG
cmFtZSB7CiAgICAgICAgIE9wQ29kZUludmFsaWQgPSAweDEwCiAgICAgfTsKIAorICAgIGVudW0g
UGFyc2VGcmFtZVJlc3VsdCB7CisgICAgICAgIEZyYW1lT0ssCisgICAgICAgIEZyYW1lSW5jb21w
bGV0ZSwKKyAgICAgICAgRnJhbWVFcnJvcgorICAgIH07CisKICAgICBzdGF0aWMgYm9vbCBpc05v
bkNvbnRyb2xPcENvZGUoT3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNv
bnRpbnVhdGlvbiB8fCBvcENvZGUgPT0gT3BDb2RlVGV4dCB8fCBvcENvZGUgPT0gT3BDb2RlQmlu
YXJ5OyB9CiAgICAgc3RhdGljIGJvb2wgaXNDb250cm9sT3BDb2RlKE9wQ29kZSBvcENvZGUpIHsg
cmV0dXJuIG9wQ29kZSA9PSBPcENvZGVDbG9zZSB8fCBvcENvZGUgPT0gT3BDb2RlUGluZyB8fCBv
cENvZGUgPT0gT3BDb2RlUG9uZzsgfQogICAgIHN0YXRpYyBib29sIGlzUmVzZXJ2ZWRPcENvZGUo
T3BDb2RlIG9wQ29kZSkgeyByZXR1cm4gIWlzTm9uQ29udHJvbE9wQ29kZShvcENvZGUpICYmICFp
c0NvbnRyb2xPcENvZGUob3BDb2RlKTsgfQorICAgIHN0YXRpYyBQYXJzZUZyYW1lUmVzdWx0IHBh
cnNlRnJhbWUoY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIFdlYlNvY2tldEZyYW1lJiwg
Y29uc3QgY2hhciomIGZyYW1lRW5kLCBTdHJpbmcmIGVycm9yU3RyaW5nKTsgLy8gTWF5IG1vZGlm
eSBwYXJ0IG9mIGRhdGEgdG8gdW5tYXNrIHRoZSBmcmFtZS4KIAotICAgIFdlYlNvY2tldEZyYW1l
KE9wQ29kZSBvcENvZGUgPSBPcENvZGVJbnZhbGlkLCBib29sIGZpbmFsID0gZmFsc2UsIGJvb2wg
Y29tcHJlc3MgPSBmYWxzZSwgYm9vbCBtYXNrZWQgPSBmYWxzZSwgY29uc3QgY2hhciogcGF5bG9h
ZCA9IDAsIHNpemVfdCBwYXlsb2FkTGVuZ3RoID0gMCkKLSAgICAgICAgOiBvcENvZGUob3BDb2Rl
KQotICAgICAgICAsIGZpbmFsKGZpbmFsKQotICAgICAgICAsIGNvbXByZXNzKGNvbXByZXNzKQot
ICAgICAgICAsIHJlc2VydmVkMihmYWxzZSkKLSAgICAgICAgLCByZXNlcnZlZDMoZmFsc2UpCi0g
ICAgICAgICwgbWFza2VkKG1hc2tlZCkKLSAgICAgICAgLCBwYXlsb2FkKHBheWxvYWQpCi0gICAg
ICAgICwgcGF5bG9hZExlbmd0aChwYXlsb2FkTGVuZ3RoKQotICAgIHsKLSAgICB9CisgICAgV2Vi
U29ja2V0RnJhbWUoT3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9IGZhbHNlLCBi
b29sIGNvbXByZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0IGNoYXIqIHBh
eWxvYWQgPSAwLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApOworICAgIHZvaWQgbWFrZUZyYW1l
RGF0YShWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSk7CiAKICAgICBPcENvZGUgb3BDb2RlOwogICAg
IGJvb2wgZmluYWw7CkBAIC03MSw2ICs3MSw4IEBAIHN0cnVjdCBXZWJTb2NrZXRGcmFtZSB7CiAg
ICAgYm9vbCBtYXNrZWQ7CiAgICAgY29uc3QgY2hhciogcGF5bG9hZDsKICAgICBzaXplX3QgcGF5
bG9hZExlbmd0aDsKKworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4UGF5bG9hZExlbmd0aFdp
dGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAppbmRleCA4MzNhNWFmMzQ4MDUxZTVlODFiOWEwZTJkYTQzYzUwZTE3NGQz
ZjYxLi40NmE1NGEwMTE0NDgwZmUwNDNjNmQ2OTI0NmJhMDhmOGU5ZjA2NWI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZWNXZWJT
b2NrZXRLZXkoKQogICAgIHJldHVybiBiYXNlNjRFbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oa2V5KSwgbm9uY2VTaXplKTsKIH0KIAotc3RhdGljIFN0cmluZyBnZXRFeHBlY3RlZFdlYlNv
Y2tldEFjY2VwdChjb25zdCBTdHJpbmcmIHNlY1dlYlNvY2tldEtleSkKK1N0cmluZyBXZWJTb2Nr
ZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KGNvbnN0IFN0cmluZyYgc2Vj
V2ViU29ja2V0S2V5KQogewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB3ZWJTb2NrZXRL
ZXlHVUlEID0gIjI1OEVBRkE1LUU5MTQtNDdEQS05NUNBLUM1QUIwREM4NUIxMSI7CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBzaGExSGFzaFNpemUgPSAyMDsgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIGRlZmluZWQgaW4gU0hBMS5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmluZGV4IGI5MmNlYTAxNGJiNzAyN2Fj
ZTU5OGMyYjRkMThkNjAwOTY2OTdlNzYuLjIxZDFmM2ZjOTQ4MmIyYjRkNzdiZmQ2ZmJiMzlmZmU1
MjdjODk4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTkwLDYgKzkwLDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBhZGRFeHRlbnNpb25Qcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Q
cm9jZXNzb3I+KTsKIAorICAgIHN0YXRpYyBTdHJpbmcgZ2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2Nl
cHQoY29uc3QgU3RyaW5nJiBzZWNXZWJTb2NrZXRLZXkpOworCiBwcml2YXRlOgogICAgIEtVUkwg
aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCBkNGJjNjFlMmU1MDRiOWE1YTY0ZmVlZGNlODJkYWE1OTU1ZDM1YTQ3Li5jZWUzZTU0MDdk
MTgwMTRhYThkMWZjYTU5MzVmMDZmOTBmODVjMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM3MTgsNiAr
MzcxOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAg
ICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBcCiAgICAg
ICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAgXAogICAgICAgICBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXAorICAg
ICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwIFwKICAgICAgICAgTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAogICAgICAgICBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXAogICAgICAgICBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBkMTk1ZjZhY2Y4MjU1YjA3NTBkMDZhZTRhMDNmMTJiMGNlNzFkYWJhLi4zNDBm
MmRlOGU1ZTE4YWQ1YTBhNGQwNTRjNjZkYmEzNGIwZTg1NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0xNjUwLDYgKzE2NTAsNyBAQAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oJywKKyAgICAgICAg
ICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwJywKICAgICAgICAgICAg
ICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDhhMTliZjJmNDZkOWRlMWUzMzk3
NTFlNWFjYTMwYzRmYWRjNWFmYjEuLjJlMDJjOWU4ZWFmZGU1ZmE0ZmU3MjkxZGVlN2I0YzUyMzhi
ZWE0MTcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC0yNDc2MSw2ICsyNDc2MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNvY2tldEZyYW1l
LmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXZWJTb2NrZXRGcmFtZS5oIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDZmYzMxYTkzNjBhNjJlMWVmYzNmYjI3OTE2MWZkNWQzMzY2MTMwNTEuLjhlYzEz
NmYyZDZmOWJiZTBkY2U2YTEyZDBlYTEwYzYwODkxNWQ3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0MDcsNiArNDQwNyw3
IEBACiAJCUFBMjFFQ0NEMEFCRjBGQzYwMDJCODM0QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTA5NzhFRTBB
QkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUFBNEMzQTc2MEIyQjE2NzkwMDIzMzRB
MiAvKiBTdHlsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUE0QzNBNzQwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAg
Ki87IH07CiAJCUFBNEMzQTc3MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNEMzQTc1MEIyQjE2
NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCAqLzsgfTsKKwkJQUFGNUI3QjcxNTI0QjZDNTAw
MDRDQjQ5IC8qIFdlYlNvY2tldEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBRjVCN0IxMTUyNEI0QkQwMDA0Q0I0OSAvKiBXZWJTb2NrZXRG
cmFtZS5jcHAgKi87IH07CiAJCUFCMjNBMzI3MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0
SW5zZXJ0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBQjIzQTMyNTA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZl
bnQuY3BwICovOyB9OwogCQlBQjIzQTMyODA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEFCMjNBMzI2MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5o
ICovOyB9OwogCQlBQjI0N0E2QzBBRkQ2MzgzMDAzRkE1RkQgLyogUmVuZGVyU2xpZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMjQ3QTZBMEFG
RDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuY3BwICovOyB9OwpAQCAtMTEyOTUsNiArMTEy
OTYsNyBAQAogCQlBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTRDM0E3NDBCMkIxNjc5MDAyMzM0
QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHlsZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTRD
M0E3NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHlsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQUFGNUI3QjExNTI0QjRCRDAwMDRDQjQ5IC8qIFdlYlNvY2tldEZyYW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNvY2tldEZyYW1lLmNwcDsgcGF0
aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUFCMjNBMzI1MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5z
ZXJ0ZWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmVm
b3JlVGV4dEluc2VydGVkRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
QjIzQTMyNjA5QkJBN0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCMjQ3QTZBMEFGRDYzODMwMDNGQTVGRCAv
KiBSZW5kZXJTbGlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclNsaWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzM5Miw2
ICsxNzM5NCw3IEBACiAJCQkJOTdBQUJEMDcxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovLAogCQkJCTk3QUFCRDA4MTRGQTA5RDUwMDc0NTdBRSAv
KiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggKi8sCiAJCQkJOTdBQUJEMDkxNEZBMDlE
NTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovLAorCQkJCUFBRjVC
N0IxMTUyNEI0QkQwMDA0Q0I0OSAvKiBXZWJTb2NrZXRGcmFtZS5jcHAgKi8sCiAJCQkJOTdBQUJE
MEExNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEZyYW1lLmggKi8sCiAJCQkJOTdBQUJEMEIx
NEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8sCiAJCQkJOTdBQUJE
MEMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovLApAQCAtMjc1NjYs
NiArMjc1NjksNyBAQAogCQkJCTRBMzhCRjUwMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXRE
ZWZsYXRlRnJhbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QUFCRDIwMTRGQTA5RDUwMDc0
NTdBRSAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQy
MjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlBQUY1QjdCNzE1MjRCNkM1MDAwNENCNDkgLyogV2ViU29ja2V0RnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMjYxNEZBMDlENTAwNzQ1N0FFIC8qIFdl
YlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyODE0RkEwOUQ1
MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5N0FBQkQyQTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135010</attachid>
            <date>2012-04-01 12:22:57 -0700</date>
            <delta_ts>2012-04-01 20:31:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73852-20120401212036.patch</filename>
            <type>text/plain</type>
            <size>30031</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUwZjk2YzJhMjYwNDNi
NWM5ZWEyNGNmMWFjNTU5MDQ5OGM3YzM1Yy4uNDNhOTBlNmM2MWZlNjNjNjRlNDBiNDJlYTI3MWZj
MDRkZGEwN2M1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA0LTAxICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgRXhw
b3NlIHJldXNhYmxlIFdlYlNvY2tldCBjb2RlIGZvciBXZWJTb2NrZXRTZXJ2ZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdGhlIG1ham9yaXR5
IHRoZSB3ZWIgc29ja2V0IGhhbmRzaGFrZSBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGxvZ2lj
CisgICAgICAgIGluc2lkZSBXZWJTb2NrZXRIYW5kc2hha2UgYW5kIGV4cG9zZSBpdCB0aHJvdWdo
IFdlYlNvY2tldEZyYW1lIHRvIG1ha2UgaXQKKyAgICAgICAgYXZhaWxhYmxlIGZvciB0aGUgd2Vi
IHNvY2tldCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgVGhpcyBhbHNvIHJlLWFk
ZCB0aGUgbWFza2luZyBjb2RlIHRoYXQgd2FzIHJlbW92ZWQgaW4gcjExMTgyOSBzaW5jZSBpdCBp
cworICAgICAgICBuZWVkZWQgZm9yIHRoZSBzZXJ2ZXIgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0Zy
YW1lKTogbm93IHVzaW5nIFdlYlNvY2tldENoYW5uZWw6OnBhcnNlRnJhbWUuIEV4dHJhY3RlZCB0
aGUgIWZyYW1lLm1hc2tlZCBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OnNlbmRGcmFtZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaDoKKyAgICAgICAgKFdlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRGcmFtZTo6bmVlZHNFeHRlbmRlZExlbmd0aEZp
ZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKTogbW92
ZWQgZnJvbSBXZWJTb2NrZXRDaGFubmVsOjpwYXJzZUZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6
YXBwZW5kTWFza2VkRnJhbWVQYXlsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEZy
YW1lOjptYWtlRnJhbWVEYXRhKTogbW92ZWQgZnJvbSBtYWtlRnJhbWVEYXRhIGluIFdlYlNvY2tl
dENoYW5uZWwuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RnJhbWU6OldlYlNvY2tl
dEZyYW1lKTogbW92ZWQgZnJvbSB0aGUgaGVhZGVyLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRGcmFtZS5oOgorICAgICAgICAoV2ViU29ja2V0RnJhbWUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdCk6
IGV4cG9zZSB0aGlzIG9iamVjdC1zdGF0aWMgZnVuY3Rpb24uCisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oOgorICAgICAgICAqIFRhcmdldC5wcmk6Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwog
MjAxMi0wMy0yOSAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPiBhbmQgSm9j
ZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIEFk
ZCBHZW5lcmljIEhUVFAgUmVxdWVzdCBDbGFzcy4gR2VuZXJhbGl6ZWQgSFRUUCBQYXJzaW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjNDEyMmRmMzZhODZiZjczMTM0ZDA4NmRlYTE0OWFlMTYw
ZTBjYzFjLi44OTE5ODhiOGJhNmZmNGM1NmU5OGFjYmI1OGQ3YmRlMzNmZDJjMTcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjExMCw2ICsyMTEwLDcgQEAgSUYgKEVOQUJMRV9XRUJfU09DS0VU
UykKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAogICAg
ICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKICAgICAg
ICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCisg
ICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAKICAgICAgICAgTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKICAgICAgICAgTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCiAgICAgICAgIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDZlMDU5MWViZmU2ZGQ1MjcwZmYwNWZjMGQyNzQzM2Q1Mjk1Nzhj
YjguLmRiZDVjMDc4M2JkZDlkMWQyYTkyODE2NTY4YzQyOTRmYTJjZjIzMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTIwNiw2ICsxMjA2LDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBcCisJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3Bw
CmluZGV4IDcxNTY5NTNlNWIxMTgwMjgzYjkzODhkZDFhMDE4NDZhZmY3Y2M0ZmQuLjhmOWI2NzU2
M2ExNWE5OWQ5NGQzN2FjNWM3NWUzYjEzMWRlZDQ2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU1LDcg
KzU1LDYgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKIAogI2luY2x1ZGUgPHd0
Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTcxLDE5ICs3MCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY29uc3QgZG91YmxlIFRDUE1heGltdW1TZWdtZW50TGlmZXRpbWUgPSAy
ICogNjAuMDsKIAotLy8gQ29uc3RhbnRzIGZvciBoeWJpLTEwIGZyYW1lIGZvcm1hdC4KLWNvbnN0
IHVuc2lnbmVkIGNoYXIgZmluYWxCaXQgPSAweDgwOwotY29uc3QgdW5zaWduZWQgY2hhciBjb21w
cmVzc0JpdCA9IDB4NDA7Ci1jb25zdCB1bnNpZ25lZCBjaGFyIHJlc2VydmVkMkJpdCA9IDB4MjA7
Ci1jb25zdCB1bnNpZ25lZCBjaGFyIHJlc2VydmVkM0JpdCA9IDB4MTA7Ci1jb25zdCB1bnNpZ25l
ZCBjaGFyIG9wQ29kZU1hc2sgPSAweEY7Ci1jb25zdCB1bnNpZ25lZCBjaGFyIG1hc2tCaXQgPSAw
eDgwOwotY29uc3QgdW5zaWduZWQgY2hhciBwYXlsb2FkTGVuZ3RoTWFzayA9IDB4N0Y7Ci1jb25z
dCBzaXplX3QgbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkID0gMTI1
OwotY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoVHdvQnl0ZUV4dGVuZGVkTGVuZ3RoRmll
bGQgPSAxMjY7Ci1jb25zdCBzaXplX3QgcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRl
ZExlbmd0aEZpZWxkID0gMTI3OwotY29uc3Qgc2l6ZV90IG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMg
PSA0OwotCiBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKERvY3VtZW50KiBkb2N1
bWVudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50KQogICAgIDogbV9kb2N1bWVudChk
b2N1bWVudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKQEAgLTU1MSw4MCArNTM3LDYgQEAgdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFu
bmVsPiogdGltZXIpCiAgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CiB9CiAKLVdlYlNv
Y2tldENoYW5uZWw6OlBhcnNlRnJhbWVSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFt
ZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCkKLXsKLSAgICBj
b25zdCBjaGFyKiBwID0gbV9idWZmZXI7Ci0gICAgY29uc3QgY2hhciogYnVmZmVyRW5kID0gbV9i
dWZmZXIgKyBtX2J1ZmZlclNpemU7Ci0KLSAgICBpZiAobV9idWZmZXJTaXplIDwgMikKLSAgICAg
ICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKLQotICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RCeXRl
ID0gKnArKzsKLSAgICB1bnNpZ25lZCBjaGFyIHNlY29uZEJ5dGUgPSAqcCsrOwotCi0gICAgYm9v
bCBmaW5hbCA9IGZpcnN0Qnl0ZSAmIGZpbmFsQml0OwotICAgIGJvb2wgY29tcHJlc3MgPSBmaXJz
dEJ5dGUgJiBjb21wcmVzc0JpdDsKLSAgICBib29sIHJlc2VydmVkMiA9IGZpcnN0Qnl0ZSAmIHJl
c2VydmVkMkJpdDsKLSAgICBib29sIHJlc2VydmVkMyA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkM0Jp
dDsKLSAgICB1bnNpZ25lZCBjaGFyIG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9wQ29kZU1hc2s7Ci0K
LSAgICBib29sIG1hc2tlZCA9IHNlY29uZEJ5dGUgJiBtYXNrQml0OwotICAgIGlmIChtYXNrZWQp
IHsKLSAgICAgICAgZmFpbCgiQSBzZXJ2ZXIgbXVzdCBub3QgbWFzayBhbnkgZnJhbWVzIHRoYXQg
aXQgc2VuZHMgdG8gdGhlIGNsaWVudC4iKTsKLSAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7Ci0g
ICAgfQotICAgIHVpbnQ2NF90IHBheWxvYWRMZW5ndGg2NCA9IHNlY29uZEJ5dGUgJiBwYXlsb2Fk
TGVuZ3RoTWFzazsKLSAgICBpZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0aFdp
dGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkKSB7Ci0gICAgICAgIGludCBleHRlbmRlZFBheWxvYWRM
ZW5ndGhTaXplOwotICAgICAgICBpZiAocGF5bG9hZExlbmd0aDY0ID09IHBheWxvYWRMZW5ndGhX
aXRoVHdvQnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQpCi0gICAgICAgICAgICBleHRlbmRlZFBheWxv
YWRMZW5ndGhTaXplID0gMjsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQocGF5
bG9hZExlbmd0aDY0ID09IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhG
aWVsZCk7Ci0gICAgICAgICAgICBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplID0gODsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoYnVmZmVyRW5kIC0gcCA8IGV4dGVuZGVkUGF5bG9hZExlbmd0aFNp
emUpCi0gICAgICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOwotICAgICAgICBwYXlsb2Fk
TGVuZ3RoNjQgPSAwOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuZGVkUGF5bG9h
ZExlbmd0aFNpemU7ICsraSkgewotICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IDw8PSA4Owot
ICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KCpwKyspOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5ndGhTaXpl
ID09IDIgJiYgcGF5bG9hZExlbmd0aDY0IDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5k
ZWRMZW5ndGhGaWVsZCkgewotICAgICAgICAgICAgZmFpbCgiVGhlIG1pbmltYWwgbnVtYmVyIG9m
IGJ5dGVzIE1VU1QgYmUgdXNlZCB0byBlbmNvZGUgdGhlIGxlbmd0aCIpOwotICAgICAgICAgICAg
cmV0dXJuIEZyYW1lRXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV4dGVuZGVkUGF5bG9h
ZExlbmd0aFNpemUgPT0gOCAmJiBwYXlsb2FkTGVuZ3RoNjQgPD0gMHhGRkZGKSB7Ci0gICAgICAg
ICAgICBmYWlsKCJUaGUgbWluaW1hbCBudW1iZXIgb2YgYnl0ZXMgTVVTVCBiZSB1c2VkIHRvIGVu
Y29kZSB0aGUgbGVuZ3RoIik7Ci0gICAgICAgICAgICByZXR1cm4gRnJhbWVFcnJvcjsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIC8vIEZJWE1FOiBVSU5UNjRfQygweDdGRkZGRkZGRkZGRkZGRkYp
IHNob3VsZCBiZSB1c2VkIGJ1dCBpdCBkaWQgbm90IGNvbXBpbGUgb24gUXQgYm90cy4KLSNpZiBD
T01QSUxFUihNU1ZDKQotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBtYXhQYXlsb2FkTGVuZ3Ro
ID0gMHg3RkZGRkZGRkZGRkZGRkZGdWk2NDsKLSNlbHNlCi0gICAgc3RhdGljIGNvbnN0IHVpbnQ2
NF90IG1heFBheWxvYWRMZW5ndGggPSAweDdGRkZGRkZGRkZGRkZGRkZ1bGw7Ci0jZW5kaWYKLSAg
ICBpZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0aCB8fCBwYXlsb2FkTGVuZ3Ro
NjQgPiBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgewotICAgICAgICBmYWlsKCJXZWJT
b2NrZXQgZnJhbWUgbGVuZ3RoIHRvbyBsYXJnZTogIiArIFN0cmluZzo6bnVtYmVyKHBheWxvYWRM
ZW5ndGg2NCkgKyAiIGJ5dGVzIik7Ci0gICAgICAgIHJldHVybiBGcmFtZUVycm9yOwotICAgIH0K
LSAgICBzaXplX3QgcGF5bG9hZExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ocGF5bG9hZExl
bmd0aDY0KTsKLQotICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckVuZCAtIHApIDwg
cGF5bG9hZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKLQotICAgIGZy
YW1lLm9wQ29kZSA9IHN0YXRpY19jYXN0PFdlYlNvY2tldEZyYW1lOjpPcENvZGU+KG9wQ29kZSk7
Ci0gICAgZnJhbWUuZmluYWwgPSBmaW5hbDsKLSAgICBmcmFtZS5jb21wcmVzcyA9IGNvbXByZXNz
OwotICAgIGZyYW1lLnJlc2VydmVkMiA9IHJlc2VydmVkMjsKLSAgICBmcmFtZS5yZXNlcnZlZDMg
PSByZXNlcnZlZDM7Ci0gICAgZnJhbWUubWFza2VkID0gbWFza2VkOwotICAgIGZyYW1lLnBheWxv
YWQgPSBwOwotICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBwYXlsb2FkTGVuZ3RoOwotICAgIGZy
YW1lRW5kID0gcCArIHBheWxvYWRMZW5ndGg7Ci0gICAgcmV0dXJuIEZyYW1lT0s7Ci19CiAKIGJv
b2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIHsKQEAgLTYzMiw4ICs1NDQsMTQg
QEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogCiAgICAgV2ViU29ja2V0
RnJhbWUgZnJhbWU7CiAgICAgY29uc3QgY2hhciogZnJhbWVFbmQ7Ci0gICAgaWYgKHBhcnNlRnJh
bWUoZnJhbWUsIGZyYW1lRW5kKSAhPSBGcmFtZU9LKQorICAgIFN0cmluZyBlcnJvclN0cmluZzsK
KyAgICBXZWJTb2NrZXRGcmFtZTo6UGFyc2VGcmFtZVJlc3VsdCByZXN1bHQgPSBXZWJTb2NrZXRG
cmFtZTo6cGFyc2VGcmFtZShtX2J1ZmZlciwgbV9idWZmZXJTaXplLCBmcmFtZSwgZnJhbWVFbmQs
IGVycm9yU3RyaW5nKTsKKyAgICBpZiAocmVzdWx0ID09IFdlYlNvY2tldEZyYW1lOjpGcmFtZUlu
Y29tcGxldGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAocmVzdWx0ID09IFdlYlNv
Y2tldEZyYW1lOjpGcmFtZUVycm9yKSB7CisgICAgICAgIGZhaWwoZXJyb3JTdHJpbmcpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgQVNTRVJUKG1fYnVmZmVyIDwgZnJhbWVF
bmQpOwogICAgIEFTU0VSVChmcmFtZUVuZCA8PSBtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZSk7CkBA
IC02NTUsNiArNTczLDExIEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChmcmFtZS5tYXNrZWQpIHsK
KyAgICAgICAgZmFpbCgiQSBzZXJ2ZXIgbXVzdCBub3QgbWFzayBhbnkgZnJhbWVzIHRoYXQgaXQg
c2VuZHMgdG8gdGhlIGNsaWVudC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwog
ICAgIC8vIEFsbCBjb250cm9sIGZyYW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVudGVkLgogICAgIGlm
IChXZWJTb2NrZXRGcmFtZTo6aXNDb250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgJiYgIWZyYW1l
LmZpbmFsKSB7CiAgICAgICAgIGZhaWwoIlJlY2VpdmVkIGZyYWdtZW50ZWQgY29udHJvbCBmcmFt
ZTogb3Bjb2RlID0gIiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOwpAQCAtNjYzLDcg
KzU4Niw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKIAogICAgIC8v
IEFsbCBjb250cm9sIGZyYW1lcyBtdXN0IGhhdmUgYSBwYXlsb2FkIG9mIDEyNSBieXRlcyBvciBs
ZXNzLCB3aGljaCBtZWFucyB0aGUgZnJhbWUgbXVzdCBub3QgY29udGFpbgogICAgIC8vIHRoZSAi
ZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgiIGZpZWxkLgotICAgIGlmIChXZWJTb2NrZXRGcmFtZTo6
aXNDb250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgJiYgZnJhbWUucGF5bG9hZExlbmd0aCA+IG1h
eFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCkgeworICAgIGlmIChXZWJT
b2NrZXRGcmFtZTo6aXNDb250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkgJiYgV2ViU29ja2V0RnJh
bWU6Om5lZWRzRXh0ZW5kZWRMZW5ndGhGaWVsZChmcmFtZS5wYXlsb2FkTGVuZ3RoKSkgewogICAg
ICAgICBmYWlsKCJSZWNlaXZlZCBjb250cm9sIGZyYW1lIGhhdmluZyB0b28gbG9uZyBwYXlsb2Fk
OiAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUucGF5bG9hZExlbmd0aCkgKyAiIGJ5dGVzIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05ODksNTIgKzkxMiwxMSBAQCB2b2lkIFdl
YlNvY2tldENoYW5uZWw6OmFib3J0T3V0Z29pbmdGcmFtZVF1ZXVlKCkKICNlbmRpZgogfQogCi1z
dGF0aWMgdm9pZCBhcHBlbmRNYXNrZWRGcmFtZVBheWxvYWQoY29uc3QgV2ViU29ja2V0RnJhbWUm
IGZyYW1lLCBWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSkKLXsKLSAgICBzaXplX3QgbWFza2luZ0tl
eVN0YXJ0ID0gZnJhbWVEYXRhLnNpemUoKTsKLSAgICBmcmFtZURhdGEuZ3JvdyhmcmFtZURhdGEu
c2l6ZSgpICsgbWFza2luZ0tleVdpZHRoSW5CeXRlcyk7IC8vIEFkZCBwbGFjZWhvbGRlciBmb3Ig
bWFza2luZyBrZXkuIFdpbGwgYmUgb3ZlcndyaXR0ZW4uCi0gICAgc2l6ZV90IHBheWxvYWRTdGFy
dCA9IGZyYW1lRGF0YS5zaXplKCk7Ci0gICAgZnJhbWVEYXRhLmFwcGVuZChmcmFtZS5wYXlsb2Fk
LCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKLQotICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFs
dWVzKGZyYW1lRGF0YS5kYXRhKCkgKyBtYXNraW5nS2V5U3RhcnQsIG1hc2tpbmdLZXlXaWR0aElu
Qnl0ZXMpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUucGF5bG9hZExlbmd0aDsg
KytpKQotICAgICAgICBmcmFtZURhdGFbcGF5bG9hZFN0YXJ0ICsgaV0gXj0gZnJhbWVEYXRhW21h
c2tpbmdLZXlTdGFydCArIGkgJSBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzXTsKLX0KLQotc3RhdGlj
IHZvaWQgbWFrZUZyYW1lRGF0YShjb25zdCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIFZlY3Rvcjxj
aGFyPiYgZnJhbWVEYXRhKQotewotICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RCeXRlID0gKGZyYW1l
LmZpbmFsID8gZmluYWxCaXQgOiAwKSB8IGZyYW1lLm9wQ29kZTsKLSAgICBpZiAoZnJhbWUuY29t
cHJlc3MpCi0gICAgICAgIGZpcnN0Qnl0ZSB8PSBjb21wcmVzc0JpdDsKLSAgICBmcmFtZURhdGEu
YXBwZW5kKGZpcnN0Qnl0ZSk7Ci0gICAgaWYgKGZyYW1lLnBheWxvYWRMZW5ndGggPD0gbWF4UGF5
bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkKQotICAgICAgICBmcmFtZURhdGEu
YXBwZW5kKG1hc2tCaXQgfCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKLSAgICBlbHNlIGlmIChmcmFt
ZS5wYXlsb2FkTGVuZ3RoIDw9IDB4RkZGRikgewotICAgICAgICBmcmFtZURhdGEuYXBwZW5kKG1h
c2tCaXQgfCBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRlbmRlZExlbmd0aEZpZWxkKTsKLSAg
ICAgICAgZnJhbWVEYXRhLmFwcGVuZCgoZnJhbWUucGF5bG9hZExlbmd0aCAmIDB4RkYwMCkgPj4g
OCk7Ci0gICAgICAgIGZyYW1lRGF0YS5hcHBlbmQoZnJhbWUucGF5bG9hZExlbmd0aCAmIDB4RkYp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZyYW1lRGF0YS5hcHBlbmQobWFza0JpdCB8IHBheWxv
YWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7Ci0gICAgICAgIGNoYXIg
ZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzhdOwotICAgICAgICBzaXplX3QgcmVtYWluaW5nID0gZnJh
bWUucGF5bG9hZExlbmd0aDsKLSAgICAgICAgLy8gRmlsbCB0aGUgbGVuZ3RoIGludG8gZXh0ZW5k
ZWRQYXlsb2FkTGVuZ3RoIGluIHRoZSBuZXR3b3JrIGJ5dGUgb3JkZXIuCi0gICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgODsgKytpKSB7Ci0gICAgICAgICAgICBleHRlbmRlZFBheWxvYWRMZW5n
dGhbNyAtIGldID0gcmVtYWluaW5nICYgMHhGRjsKLSAgICAgICAgICAgIHJlbWFpbmluZyA+Pj0g
ODsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoIXJlbWFpbmluZyk7Ci0gICAgICAgIGZyYW1l
RGF0YS5hcHBlbmQoZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoLCA4KTsKLSAgICB9Ci0KLSAgICBhcHBl
bmRNYXNrZWRGcmFtZVBheWxvYWQoZnJhbWUsIGZyYW1lRGF0YSk7Ci19Ci0KIGJvb2wgV2ViU29j
a2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9oYW5kbGUp
OwogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogCi0gICAgQVNTRVJUKCEob3BDb2RlICYgfm9w
Q29kZU1hc2spKTsgLy8gQ2hlY2tzIHdoZXRoZXIgIm9wQ29kZSIgZml0cyBpbiB0aGUgcmFuZ2Ug
b2Ygb3BDb2Rlcy4KICAgICBXZWJTb2NrZXRGcmFtZSBmcmFtZShvcENvZGUsIHRydWUsIGZhbHNl
LCB0cnVlLCBkYXRhLCBkYXRhTGVuZ3RoKTsKIAogICAgIE93blB0cjxEZWZsYXRlUmVzdWx0SG9s
ZGVyPiBkZWZsYXRlUmVzdWx0ID0gbV9kZWZsYXRlRnJhbWVyLmRlZmxhdGUoZnJhbWUpOwpAQCAt
MTA0NCw3ICs5MjYsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2Nr
ZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YQogICAgIH0KIAogICAgIFZl
Y3RvcjxjaGFyPiBmcmFtZURhdGE7Ci0gICAgbWFrZUZyYW1lRGF0YShmcmFtZSwgZnJhbWVEYXRh
KTsKKyAgICBmcmFtZS5tYWtlRnJhbWVEYXRhKGZyYW1lRGF0YSk7CiAKICAgICByZXR1cm4gbV9o
YW5kbGUtPnNlbmQoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aAppbmRleCA1NDI4NzFlNDNhMDljZjgzMTc2ZjE4MGU0MDQ3Nzc5ZGUxMzUzNTAxLi4wYjc2MDdm
ZmJiNmY4NTE3ZmI4YTIzMzA4Mjk4Y2FmYzUyZGEwMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTEzMiwxNCAr
MTMyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHZvaWQgY2xvc2luZ1RpbWVyRmlyZWQoVGlt
ZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKIAotICAgIGVudW0gUGFyc2VGcmFtZVJlc3VsdCB7Ci0g
ICAgICAgIEZyYW1lT0ssCi0gICAgICAgIEZyYW1lSW5jb21wbGV0ZSwKLSAgICAgICAgRnJhbWVF
cnJvcgotICAgIH07Ci0KLSAgICBQYXJzZUZyYW1lUmVzdWx0IHBhcnNlRnJhbWUoV2ViU29ja2V0
RnJhbWUmLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQpOwotCiAgICAgYm9vbCBwcm9jZXNzRnJhbWUo
KTsKICAgICBib29sIHByb2Nlc3NGcmFtZUhpeGllNzYoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTIxMWNiOTRkMTMyNTUwYTU0MDBhOTZiMTI0NTJiMzBkNGFhNDM3MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAK
QEAgLTAsMCArMSwxODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJv
Z3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJX
ZWJTb2NrZXRGcmFtZS5oIgorCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
TnVtYmVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gQ29uc3RhbnRzIGZvciBoeWJpLTEwIGZyYW1lIGZvcm1hdC4KK2NvbnN0IHVuc2lnbmVk
IGNoYXIgZmluYWxCaXQgPSAweDgwOworY29uc3QgdW5zaWduZWQgY2hhciBjb21wcmVzc0JpdCA9
IDB4NDA7Citjb25zdCB1bnNpZ25lZCBjaGFyIHJlc2VydmVkMkJpdCA9IDB4MjA7Citjb25zdCB1
bnNpZ25lZCBjaGFyIHJlc2VydmVkM0JpdCA9IDB4MTA7Citjb25zdCB1bnNpZ25lZCBjaGFyIG9w
Q29kZU1hc2sgPSAweEY7Citjb25zdCB1bnNpZ25lZCBjaGFyIG1hc2tCaXQgPSAweDgwOworY29u
c3QgdW5zaWduZWQgY2hhciBwYXlsb2FkTGVuZ3RoTWFzayA9IDB4N0Y7Citjb25zdCBzaXplX3Qg
bWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkID0gMTI1OworY29uc3Qg
c2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoVHdvQnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQgPSAxMjY7
Citjb25zdCBzaXplX3QgcGF5bG9hZExlbmd0aFdpdGhFaWdodEJ5dGVFeHRlbmRlZExlbmd0aEZp
ZWxkID0gMTI3OworY29uc3Qgc2l6ZV90IG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMgPSA0OworCiti
b29sIFdlYlNvY2tldEZyYW1lOjpuZWVkc0V4dGVuZGVkTGVuZ3RoRmllbGQoc2l6ZV90IHBheWxv
YWRMZW5ndGgpCit7CisgICAgcmV0dXJuIHBheWxvYWRMZW5ndGggPiBtYXhQYXlsb2FkTGVuZ3Ro
V2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQ7Cit9CisKK1dlYlNvY2tldEZyYW1lOjpQYXJzZUZy
YW1lUmVzdWx0IFdlYlNvY2tldEZyYW1lOjpwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCBXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCwg
U3RyaW5nJiBlcnJvclN0cmluZykKK3sKKyAgICBjaGFyKiBwID0gZGF0YTsKKyAgICBjb25zdCBj
aGFyKiBidWZmZXJFbmQgPSBkYXRhICsgZGF0YUxlbmd0aDsKKworICAgIGlmIChkYXRhTGVuZ3Ro
IDwgMikKKyAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKKworICAgIHVuc2lnbmVkIGNo
YXIgZmlyc3RCeXRlID0gKnArKzsKKyAgICB1bnNpZ25lZCBjaGFyIHNlY29uZEJ5dGUgPSAqcCsr
OworCisgICAgYm9vbCBmaW5hbCA9IGZpcnN0Qnl0ZSAmIGZpbmFsQml0OworICAgIGJvb2wgY29t
cHJlc3MgPSBmaXJzdEJ5dGUgJiBjb21wcmVzc0JpdDsKKyAgICBib29sIHJlc2VydmVkMiA9IGZp
cnN0Qnl0ZSAmIHJlc2VydmVkMkJpdDsKKyAgICBib29sIHJlc2VydmVkMyA9IGZpcnN0Qnl0ZSAm
IHJlc2VydmVkM0JpdDsKKyAgICB1bnNpZ25lZCBjaGFyIG9wQ29kZSA9IGZpcnN0Qnl0ZSAmIG9w
Q29kZU1hc2s7CisKKyAgICBib29sIG1hc2tlZCA9IHNlY29uZEJ5dGUgJiBtYXNrQml0OworICAg
IHVpbnQ2NF90IHBheWxvYWRMZW5ndGg2NCA9IHNlY29uZEJ5dGUgJiBwYXlsb2FkTGVuZ3RoTWFz
azsKKyAgICBpZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRl
bmRlZExlbmd0aEZpZWxkKSB7CisgICAgICAgIGludCBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXpl
OworICAgICAgICBpZiAocGF5bG9hZExlbmd0aDY0ID09IHBheWxvYWRMZW5ndGhXaXRoVHdvQnl0
ZUV4dGVuZGVkTGVuZ3RoRmllbGQpCisgICAgICAgICAgICBleHRlbmRlZFBheWxvYWRMZW5ndGhT
aXplID0gMjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQocGF5bG9hZExlbmd0
aDY0ID09IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7Cisg
ICAgICAgICAgICBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplID0gODsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoYnVmZmVyRW5kIC0gcCA8IGV4dGVuZGVkUGF5bG9hZExlbmd0aFNpemUpCisgICAg
ICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOworICAgICAgICBwYXlsb2FkTGVuZ3RoNjQg
PSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuZGVkUGF5bG9hZExlbmd0aFNp
emU7ICsraSkgeworICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IDw8PSA4OworICAgICAgICAg
ICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpwKyspOwor
ICAgICAgICB9CisgICAgICAgIGlmIChleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplID09IDIgJiYg
cGF5bG9hZExlbmd0aDY0IDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhG
aWVsZCkgeworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVGhlIG1pbmltYWwgbnVtYmVyIG9m
IGJ5dGVzIE1VU1QgYmUgdXNlZCB0byBlbmNvZGUgdGhlIGxlbmd0aCI7CisgICAgICAgICAgICBy
ZXR1cm4gRnJhbWVFcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXh0ZW5kZWRQYXlsb2Fk
TGVuZ3RoU2l6ZSA9PSA4ICYmIHBheWxvYWRMZW5ndGg2NCA8PSAweEZGRkYpIHsKKyAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gIlRoZSBtaW5pbWFsIG51bWJlciBvZiBieXRlcyBNVVNUIGJlIHVz
ZWQgdG8gZW5jb2RlIHRoZSBsZW5ndGgiOworICAgICAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogVUlOVDY0X0MoMHg3RkZGRkZGRkZG
RkZGRkZGKSBzaG91bGQgYmUgdXNlZCBidXQgaXQgZGlkIG5vdCBjb21waWxlIG9uIFF0IGJvdHMu
CisjaWYgQ09NUElMRVIoTVNWQykKKyAgICBzdGF0aWMgY29uc3QgdWludDY0X3QgbWF4UGF5bG9h
ZExlbmd0aCA9IDB4N0ZGRkZGRkZGRkZGRkZGRnVpNjQ7CisjZWxzZQorICAgIHN0YXRpYyBjb25z
dCB1aW50NjRfdCBtYXhQYXlsb2FkTGVuZ3RoID0gMHg3RkZGRkZGRkZGRkZGRkZGdWxsOworI2Vu
ZGlmCisgICAgc2l6ZV90IG1hc2tpbmdLZXlMZW5ndGggPSBtYXNrZWQgPyBtYXNraW5nS2V5V2lk
dGhJbkJ5dGVzIDogMDsKKyAgICBpZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5bG9hZExlbmd0
aCB8fCBwYXlsb2FkTGVuZ3RoNjQgKyBtYXNraW5nS2V5TGVuZ3RoID4gbnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiV2ViU29ja2V0IGZyYW1l
IGxlbmd0aCB0b28gbGFyZ2U6ICIgKyBTdHJpbmc6Om51bWJlcihwYXlsb2FkTGVuZ3RoNjQpICsg
IiBieXRlcyI7CisgICAgICAgIHJldHVybiBGcmFtZUVycm9yOworICAgIH0KKyAgICBzaXplX3Qg
cGF5bG9hZExlbmd0aCA9IHN0YXRpY19jYXN0PHNpemVfdD4ocGF5bG9hZExlbmd0aDY0KTsKKwor
ICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckVuZCAtIHApIDwgbWFza2luZ0tleUxl
bmd0aCArIHBheWxvYWRMZW5ndGgpCisgICAgICAgIHJldHVybiBGcmFtZUluY29tcGxldGU7CisK
KyAgICBpZiAobWFza2VkKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIG1hc2tpbmdLZXkgPSBwOwor
ICAgICAgICBjaGFyKiBwYXlsb2FkID0gcCArIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXM7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9hZExlbmd0aDsgKytpKQorICAgICAgICAg
ICAgcGF5bG9hZFtpXSBePSBtYXNraW5nS2V5W2kgJSBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzXTsg
Ly8gVW5tYXNrIHRoZSBwYXlsb2FkLgorICAgIH0KKworICAgIGZyYW1lLm9wQ29kZSA9IHN0YXRp
Y19jYXN0PFdlYlNvY2tldEZyYW1lOjpPcENvZGU+KG9wQ29kZSk7CisgICAgZnJhbWUuZmluYWwg
PSBmaW5hbDsKKyAgICBmcmFtZS5jb21wcmVzcyA9IGNvbXByZXNzOworICAgIGZyYW1lLnJlc2Vy
dmVkMiA9IHJlc2VydmVkMjsKKyAgICBmcmFtZS5yZXNlcnZlZDMgPSByZXNlcnZlZDM7CisgICAg
ZnJhbWUubWFza2VkID0gbWFza2VkOworICAgIGZyYW1lLnBheWxvYWQgPSBwICsgbWFza2luZ0tl
eUxlbmd0aDsKKyAgICBmcmFtZS5wYXlsb2FkTGVuZ3RoID0gcGF5bG9hZExlbmd0aDsKKyAgICBm
cmFtZUVuZCA9IHAgKyBtYXNraW5nS2V5TGVuZ3RoICsgcGF5bG9hZExlbmd0aDsKKyAgICByZXR1
cm4gRnJhbWVPSzsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kTWFza2VkRnJhbWVQYXlsb2FkKGNv
bnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSwgVmVjdG9yPGNoYXI+JiBmcmFtZURhdGEpCit7Cisg
ICAgc2l6ZV90IG1hc2tpbmdLZXlTdGFydCA9IGZyYW1lRGF0YS5zaXplKCk7CisgICAgZnJhbWVE
YXRhLmdyb3coZnJhbWVEYXRhLnNpemUoKSArIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMpOyAvLyBB
ZGQgcGxhY2Vob2xkZXIgZm9yIG1hc2tpbmcga2V5LiBXaWxsIGJlIG92ZXJ3cml0dGVuLgorICAg
IHNpemVfdCBwYXlsb2FkU3RhcnQgPSBmcmFtZURhdGEuc2l6ZSgpOworICAgIGZyYW1lRGF0YS5h
cHBlbmQoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7CisKKyAgICBjcnlwdG9n
cmFwaGljYWxseVJhbmRvbVZhbHVlcyhmcmFtZURhdGEuZGF0YSgpICsgbWFza2luZ0tleVN0YXJ0
LCBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZy
YW1lLnBheWxvYWRMZW5ndGg7ICsraSkKKyAgICAgICAgZnJhbWVEYXRhW3BheWxvYWRTdGFydCAr
IGldIF49IGZyYW1lRGF0YVttYXNraW5nS2V5U3RhcnQgKyBpICUgbWFza2luZ0tleVdpZHRoSW5C
eXRlc107Cit9CisKK3ZvaWQgV2ViU29ja2V0RnJhbWU6Om1ha2VGcmFtZURhdGEoVmVjdG9yPGNo
YXI+JiBmcmFtZURhdGEpCit7CisgICAgQVNTRVJUKCEob3BDb2RlICYgfm9wQ29kZU1hc2spKTsg
Ly8gQ2hlY2tzIHdoZXRoZXIgIm9wQ29kZSIgZml0cyBpbiB0aGUgcmFuZ2Ugb2Ygb3BDb2Rlcy4K
KworICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RCeXRlID0gKGZpbmFsID8gZmluYWxCaXQgOiAwKSB8
IG9wQ29kZTsKKyAgICBpZiAoY29tcHJlc3MpCisgICAgICAgIGZpcnN0Qnl0ZSB8PSBjb21wcmVz
c0JpdDsKKyAgICBmcmFtZURhdGEuYXBwZW5kKGZpcnN0Qnl0ZSk7CisgICAgaWYgKHBheWxvYWRM
ZW5ndGggPD0gbWF4UGF5bG9hZExlbmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkKQorICAg
ICAgICBmcmFtZURhdGEuYXBwZW5kKG1hc2tCaXQgfCBwYXlsb2FkTGVuZ3RoKTsKKyAgICBlbHNl
IGlmIChwYXlsb2FkTGVuZ3RoIDw9IDB4RkZGRikgeworICAgICAgICBmcmFtZURhdGEuYXBwZW5k
KG1hc2tCaXQgfCBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRlbmRlZExlbmd0aEZpZWxkKTsK
KyAgICAgICAgZnJhbWVEYXRhLmFwcGVuZCgocGF5bG9hZExlbmd0aCAmIDB4RkYwMCkgPj4gOCk7
CisgICAgICAgIGZyYW1lRGF0YS5hcHBlbmQocGF5bG9hZExlbmd0aCAmIDB4RkYpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGZyYW1lRGF0YS5hcHBlbmQobWFza0JpdCB8IHBheWxvYWRMZW5ndGhX
aXRoRWlnaHRCeXRlRXh0ZW5kZWRMZW5ndGhGaWVsZCk7CisgICAgICAgIGNoYXIgZXh0ZW5kZWRQ
YXlsb2FkTGVuZ3RoWzhdOworICAgICAgICBzaXplX3QgcmVtYWluaW5nID0gcGF5bG9hZExlbmd0
aDsKKyAgICAgICAgLy8gRmlsbCB0aGUgbGVuZ3RoIGludG8gZXh0ZW5kZWRQYXlsb2FkTGVuZ3Ro
IGluIHRoZSBuZXR3b3JrIGJ5dGUgb3JkZXIuCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
ODsgKytpKSB7CisgICAgICAgICAgICBleHRlbmRlZFBheWxvYWRMZW5ndGhbNyAtIGldID0gcmVt
YWluaW5nICYgMHhGRjsKKyAgICAgICAgICAgIHJlbWFpbmluZyA+Pj0gODsKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlQoIXJlbWFpbmluZyk7CisgICAgICAgIGZyYW1lRGF0YS5hcHBlbmQoZXh0
ZW5kZWRQYXlsb2FkTGVuZ3RoLCA4KTsKKyAgICB9CisKKyAgICBhcHBlbmRNYXNrZWRGcmFtZVBh
eWxvYWQoKnRoaXMsIGZyYW1lRGF0YSk7Cit9CisKK1dlYlNvY2tldEZyYW1lOjpXZWJTb2NrZXRG
cmFtZShPcENvZGUgb3BDb2RlLCBib29sIGZpbmFsLCBib29sIGNvbXByZXNzLCBib29sIG1hc2tl
ZCwgY29uc3QgY2hhciogcGF5bG9hZCwgc2l6ZV90IHBheWxvYWRMZW5ndGgpCisgICAgOiBvcENv
ZGUob3BDb2RlKQorICAgICwgZmluYWwoZmluYWwpCisgICAgLCBjb21wcmVzcyhjb21wcmVzcykK
KyAgICAsIHJlc2VydmVkMihmYWxzZSkKKyAgICAsIHJlc2VydmVkMyhmYWxzZSkKKyAgICAsIG1h
c2tlZChtYXNrZWQpCisgICAgLCBwYXlsb2FkKHBheWxvYWQpCisgICAgLCBwYXlsb2FkTGVuZ3Ro
KHBheWxvYWRMZW5ndGgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmgKaW5kZXggN2VmZWE3OGRiMWQzYTQ0NjIzNWFjOTgw
MWJkNWZiNmRkM2ZhNGU0Zi4uYzE4OTM2MjRmMmY5MGYwYzU5NzAxZmM5NGFmNDU4ZTg3M2YxZDNm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEZyYW1lLmgKQEAgLTMzLDYgKzMzLDggQEAKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKIAor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBXZWJTb2NrZXRGcmFtZSB7CkBAIC00NywyMSArNDksMjAgQEAgc3RydWN0IFdlYlNv
Y2tldEZyYW1lIHsKICAgICAgICAgT3BDb2RlSW52YWxpZCA9IDB4MTAKICAgICB9OwogCisgICAg
ZW51bSBQYXJzZUZyYW1lUmVzdWx0IHsKKyAgICAgICAgRnJhbWVPSywKKyAgICAgICAgRnJhbWVJ
bmNvbXBsZXRlLAorICAgICAgICBGcmFtZUVycm9yCisgICAgfTsKKwogICAgIHN0YXRpYyBib29s
IGlzTm9uQ29udHJvbE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiBvcENvZGUgPT0gT3BD
b2RlQ29udGludWF0aW9uIHx8IG9wQ29kZSA9PSBPcENvZGVUZXh0IHx8IG9wQ29kZSA9PSBPcENv
ZGVCaW5hcnk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0NvbnRyb2xPcENvZGUoT3BDb2RlIG9wQ29k
ZSkgeyByZXR1cm4gb3BDb2RlID09IE9wQ29kZUNsb3NlIHx8IG9wQ29kZSA9PSBPcENvZGVQaW5n
IHx8IG9wQ29kZSA9PSBPcENvZGVQb25nOyB9CiAgICAgc3RhdGljIGJvb2wgaXNSZXNlcnZlZE9w
Q29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiAhaXNOb25Db250cm9sT3BDb2RlKG9wQ29kZSkg
JiYgIWlzQ29udHJvbE9wQ29kZShvcENvZGUpOyB9CisgICAgc3RhdGljIGJvb2wgbmVlZHNFeHRl
bmRlZExlbmd0aEZpZWxkKHNpemVfdCBwYXlsb2FkTGVuZ3RoKTsKKyAgICBzdGF0aWMgUGFyc2VG
cmFtZVJlc3VsdCBwYXJzZUZyYW1lKGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBXZWJT
b2NrZXRGcmFtZSYsIGNvbnN0IGNoYXIqJiBmcmFtZUVuZCwgU3RyaW5nJiBlcnJvclN0cmluZyk7
IC8vIE1heSBtb2RpZnkgcGFydCBvZiBkYXRhIHRvIHVubWFzayB0aGUgZnJhbWUuCiAKLSAgICBX
ZWJTb2NrZXRGcmFtZShPcENvZGUgb3BDb2RlID0gT3BDb2RlSW52YWxpZCwgYm9vbCBmaW5hbCA9
IGZhbHNlLCBib29sIGNvbXByZXNzID0gZmFsc2UsIGJvb2wgbWFza2VkID0gZmFsc2UsIGNvbnN0
IGNoYXIqIHBheWxvYWQgPSAwLCBzaXplX3QgcGF5bG9hZExlbmd0aCA9IDApCi0gICAgICAgIDog
b3BDb2RlKG9wQ29kZSkKLSAgICAgICAgLCBmaW5hbChmaW5hbCkKLSAgICAgICAgLCBjb21wcmVz
cyhjb21wcmVzcykKLSAgICAgICAgLCByZXNlcnZlZDIoZmFsc2UpCi0gICAgICAgICwgcmVzZXJ2
ZWQzKGZhbHNlKQotICAgICAgICAsIG1hc2tlZChtYXNrZWQpCi0gICAgICAgICwgcGF5bG9hZChw
YXlsb2FkKQotICAgICAgICAsIHBheWxvYWRMZW5ndGgocGF5bG9hZExlbmd0aCkKLSAgICB7Ci0g
ICAgfQorICAgIFdlYlNvY2tldEZyYW1lKE9wQ29kZSA9IE9wQ29kZUludmFsaWQsIGJvb2wgZmlu
YWwgPSBmYWxzZSwgYm9vbCBjb21wcmVzcyA9IGZhbHNlLCBib29sIG1hc2tlZCA9IGZhbHNlLCBj
b25zdCBjaGFyKiBwYXlsb2FkID0gMCwgc2l6ZV90IHBheWxvYWRMZW5ndGggPSAwKTsKKyAgICB2
b2lkIG1ha2VGcmFtZURhdGEoVmVjdG9yPGNoYXI+JiBmcmFtZURhdGEpOwogCiAgICAgT3BDb2Rl
IG9wQ29kZTsKICAgICBib29sIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCA4MjNhMDllNGVk
Nzc2NzFkNDU4NzAyNTRhYjQ4ZTIwZDg5YTFhZWYzLi4zMGMwODg2OWNmNDFjN2U5NGU4NTRhN2Jm
MmM2MGZlOTA0MzQ4YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHN0
YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQogICAgIHJldHVybiBiYXNlNjRF
bmNvZGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oa2V5KSwgbm9uY2VTaXplKTsKIH0KIAotc3Rh
dGljIFN0cmluZyBnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25zdCBTdHJpbmcmIHNlY1dl
YlNvY2tldEtleSkKK1N0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29j
a2V0QWNjZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0S2V5KQogewogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCB3ZWJTb2NrZXRLZXlHVUlEID0gIjI1OEVBRkE1LUU5MTQtNDdEQS05
NUNBLUM1QUIwREM4NUIxMSI7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaGExSGFzaFNpemUg
PSAyMDsgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgaW4gU0hBMS5oLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5oCmluZGV4IGI5MmNlYTAxNGJiNzAyN2FjZTU5OGMyYjRkMThkNjAwOTY2OTdlNzYuLjIxZDFm
M2ZjOTQ4MmIyYjRkNzdiZmQ2ZmJiMzlmZmU1MjdjODk4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTkw
LDYgKzkwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRFeHRlbnNpb25Qcm9jZXNzb3IoUGFz
c093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+KTsKIAorICAgIHN0YXRpYyBTdHJp
bmcgZ2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQoY29uc3QgU3RyaW5nJiBzZWNXZWJTb2NrZXRL
ZXkpOworCiBwcml2YXRlOgogICAgIEtVUkwgaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29v
a2llcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBkNGJjNjFlMmU1MDRiOWE1YTY0ZmVlZGNl
ODJkYWE1OTU1ZDM1YTQ3Li5jZWUzZTU0MDdkMTgwMTRhYThkMWZjYTU5MzVmMDZmOTBmODVjMDRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTM3MTgsNiArMzcxOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXREZWZsYXRlci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RnJhbWUuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkMTk1ZjZhY2Y4MjU1YjA3NTBk
MDZhZTRhMDNmMTJiMGNlNzFkYWJhLi4zNDBmMmRlOGU1ZTE4YWQ1YTBhNGQwNTRjNjZkYmEzNGIw
ZTg1NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNjUwLDYgKzE2NTAsNyBAQAogICAgICAgICAg
ICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RnJhbWUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RnJhbWUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDhhMTliZjJmNDZkOWRlMWUzMzk3NTFlNWFjYTMwYzRmYWRjNWFmYjEuLjJlMDJjOWU4
ZWFmZGU1ZmE0ZmU3MjkxZGVlN2I0YzUyMzhiZWE0MTcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDc2MSw2ICsyNDc2MSwxMCBAQAogCQkJ
CQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxl
c1x3ZWJzb2NrZXRzXFdlYlNvY2tldEZyYW1lLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXZWJTb2Nr
ZXRGcmFtZS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZmYzMxYTkzNjBhNjJlMWVmYzNm
YjI3OTE2MWZkNWQzMzY2MTMwNTEuLjhlYzEzNmYyZDZmOWJiZTBkY2U2YTEyZDBlYTEwYzYwODkx
NWQ3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTQ0MDcsNiArNDQwNyw3IEBACiAJCUFBMjFFQ0NEMEFCRjBGQzYwMDJCODM0
QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBQTA5NzhFRTBBQkFBNkUxMDA4NzQ0ODAgLyogQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUFBNEMzQTc2MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0QzNBNzQwQjJCMTY3OTAw
MjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgKi87IH07CiAJCUFBNEMzQTc3MEIyQjE2NzkwMDIz
MzRBMiAvKiBTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFBNEMzQTc1MEIyQjE2NzkwMDIzMzRBMiAvKiBTdHlsZUVsZW1lbnQuaCAq
LzsgfTsKKwkJQUFGNUI3QjcxNTI0QjZDNTAwMDRDQjQ5IC8qIFdlYlNvY2tldEZyYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBRjVCN0IxMTUy
NEI0QkQwMDA0Q0I0OSAvKiBXZWJTb2NrZXRGcmFtZS5jcHAgKi87IH07CiAJCUFCMjNBMzI3MDlC
QkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQjIzQTMyNTA5QkJBN0QwMDA2N0ND
NTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwICovOyB9OwogCQlBQjIzQTMyODA5QkJB
N0QwMDA2N0NDNTMgLyogQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCMjNBMzI2MDlCQkE3RDAwMDY3Q0M1MyAv
KiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oICovOyB9OwogCQlBQjI0N0E2QzBBRkQ2MzgzMDAz
RkE1RkQgLyogUmVuZGVyU2xpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFCMjQ3QTZBMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIu
Y3BwICovOyB9OwpAQCAtMTEyOTUsNiArMTEyOTYsNyBAQAogCQlBQTA5NzhFRTBBQkFBNkUxMDA4
NzQ0ODAgLyogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBQTRDM0E3NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBQTRDM0E3NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUFGNUI3QjExNTI0QjRCRDAwMDRDQjQ5
IC8qIFdlYlNvY2tldEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFdlYlNvY2tldEZyYW1lLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCMjNBMzI1MDlCQkE3
RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQjIzQTMyNjA5QkJBN0QwMDA2N0NDNTMgLyogQmVm
b3JlVGV4dEluc2VydGVkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFCMjQ3QTZBMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNsaWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNzM5Miw2ICsxNzM5NCw3IEBACiAJCQkJOTdBQUJEMDcxNEZB
MDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovLAogCQkJ
CTk3QUFCRDA4MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmggKi8sCiAJCQkJOTdBQUJEMDkxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lv
blByb2Nlc3Nvci5oICovLAorCQkJCUFBRjVCN0IxMTUyNEI0QkQwMDA0Q0I0OSAvKiBXZWJTb2Nr
ZXRGcmFtZS5jcHAgKi8sCiAJCQkJOTdBQUJEMEExNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tl
dEZyYW1lLmggKi8sCiAJCQkJOTdBQUJEMEIxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhh
bmRzaGFrZS5jcHAgKi8sCiAJCQkJOTdBQUJEMEMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZS5oICovLApAQCAtMjc1NjYsNiArMjc1NjksNyBAQAogCQkJCTRBMzhCRjUwMTRG
RTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3QUFCRDIwMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyMjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBQUY1QjdCNzE1MjRC
NkM1MDAwNENCNDkgLyogV2ViU29ja2V0RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdB
QUJEMjYxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5N0FBQkQyODE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyQTE0RkEwOUQ1MDA3NDU3QUUg
LyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="139405"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>