<?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>74067</bug_id>
          
          <creation_ts>2011-12-08 01:54:07 -0800</creation_ts>
          <short_desc>Unify willMoveToNewOwnerDocument() and didMoveToNewOwnerDocument() for better performance</short_desc>
          <delta_ts>2011-12-25 23:05:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>59816</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>517256</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-08 01:54:07 -0800</bug_when>
    <thetext>This change unify
    virtual void Node::willMoveToNewOwnerDocument();
    virtual void Node::didMoveToNewOwnerDocument();
into
    virtual void Node::didMoveToNewOwnerDocument(Document* oldDocment, Document* newDocument);

This is preparation for Bug 59816.
This also comes with a potential performance win because we kill two virtual function call down to one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518122</commentid>
    <comment_count>1</comment_count>
      <attachid>118533</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-08 22:40:38 -0800</bug_when>
    <thetext>Created attachment 118533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518123</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-08 22:42:05 -0800</bug_when>
    <thetext>Hi Dimitri, could you take a look at this?
This and blocking Bug 59816 pushes forward to make TreeScope first class citizen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518607</commentid>
    <comment_count>3</comment_count>
      <attachid>118533</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-09 15:52:36 -0800</bug_when>
    <thetext>Comment on attachment 118533
Patch

Attachment 118533 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10831400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518968</commentid>
    <comment_count>4</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-11 19:00:52 -0800</bug_when>
    <thetext>The redness on cr-linux is apparently due to tree breakage at that time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519849</commentid>
    <comment_count>5</comment_count>
      <attachid>118948</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-12 21:26:54 -0800</bug_when>
    <thetext>Created attachment 118948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519852</commentid>
    <comment_count>6</comment_count>
      <attachid>118948</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-12 21:36:29 -0800</bug_when>
    <thetext>Comment on attachment 118948
Patch

Attachment 118948 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10847234</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519855</commentid>
    <comment_count>7</comment_count>
      <attachid>118948</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-12 21:42:35 -0800</bug_when>
    <thetext>Comment on attachment 118948
Patch

Attachment 118948 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10846218</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519857</commentid>
    <comment_count>8</comment_count>
      <attachid>118948</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-12 21:43:58 -0800</bug_when>
    <thetext>Comment on attachment 118948
Patch

Attachment 118948 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10845219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519859</commentid>
    <comment_count>9</comment_count>
      <attachid>118948</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-12 21:46:47 -0800</bug_when>
    <thetext>Comment on attachment 118948
Patch

Attachment 118948 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10845218</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520604</commentid>
    <comment_count>10</comment_count>
      <attachid>119137</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-13 19:10:02 -0800</bug_when>
    <thetext>Created attachment 119137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520619</commentid>
    <comment_count>11</comment_count>
      <attachid>119137</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 20:06:14 -0800</bug_when>
    <thetext>Comment on attachment 119137
Patch

Attachment 119137 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10874080</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526158</commentid>
    <comment_count>12</comment_count>
      <attachid>120304</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-22 03:32:13 -0800</bug_when>
    <thetext>Created attachment 120304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526166</commentid>
    <comment_count>13</comment_count>
      <attachid>120304</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-12-22 03:43:36 -0800</bug_when>
    <thetext>Comment on attachment 120304
Patch

Attachment 120304 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10998413</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526167</commentid>
    <comment_count>14</comment_count>
      <attachid>120304</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-22 03:53:17 -0800</bug_when>
    <thetext>Comment on attachment 120304
Patch

Attachment 120304 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10981480</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526171</commentid>
    <comment_count>15</comment_count>
      <attachid>120304</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-12-22 03:58:26 -0800</bug_when>
    <thetext>Comment on attachment 120304
Patch

Attachment 120304 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10998418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526172</commentid>
    <comment_count>16</comment_count>
      <attachid>120304</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 03:59:25 -0800</bug_when>
    <thetext>Comment on attachment 120304
Patch

Attachment 120304 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10998416</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526278</commentid>
    <comment_count>17</comment_count>
      <attachid>120304</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-22 08:45:51 -0800</bug_when>
    <thetext>Comment on attachment 120304
Patch

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

The EWS bot is failing on the patch, so I think you’ll need a new version. The idea seems fine, but it can be done in a more-lightweight fashion.

&gt; Source/WebCore/dom/Node.h:693
&gt; +    virtual void didMoveToNewOwnerDocument(const NodeOwnerChange&amp;);

It seems to me we should just pass the old document. The new document is easy to get, just call document(), so there is no need to pass it. Having a named structure just to pass two arguments also seems unnecessarily heavyweight.

&gt; Source/WebCore/html/HTMLFormControlElement.h:123
&gt; +    virtual void didMoveToNewOwnerDocument(const NodeOwnerChange&amp;);

Please use OVERRIDE in all the didMoveToNewOwnerDocument function declarations. This will catch if we get the argument list wrong in any of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527109</commentid>
    <comment_count>18</comment_count>
      <attachid>120517</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-25 19:34:45 -0800</bug_when>
    <thetext>Created attachment 120517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527110</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-25 19:37:05 -0800</bug_when>
    <thetext>Hi Darin, thanks you for taking look!
I updated the patch. Could you take another look?

&gt; It seems to me we should just pass the old document. The new document is easy to get, just call document(), so there is no need to pass it. Having a named structure just to pass two arguments also seems unnecessarily heavyweight.
Right. The updated patch addresses this.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLFormControlElement.h:123
&gt; &gt; +    virtual void didMoveToNewOwnerDocument(const NodeOwnerChange&amp;);
&gt; 
&gt; Please use OVERRIDE in all the didMoveToNewOwnerDocument function declarations. This will catch if we get the argument list wrong in any of them.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527117</commentid>
    <comment_count>20</comment_count>
      <attachid>120517</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-25 19:58:02 -0800</bug_when>
    <thetext>Comment on attachment 120517
Patch

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

This is looking great. review- because of the HTMLInputElement being a bit too messy.

Also, one last idea. I think didMoveToNewDocument is a fine name for this. I don’t think we need to emphasize “owner document” just because the DOM does; the old functions had awkward names, but no reason that we should keep those awkward names.

&gt; Source/WebCore/html/FormAssociatedElement.cpp:59
&gt; +    if (element-&gt;fastHasAttribute(formAttr) &amp;&amp; oldDocument)
&gt; +        oldDocument-&gt;unregisterFormElementWithFormAttribute(this);

Probably should check oldDocument first for better performance in the new-element case.

&gt; Source/WebCore/html/FormAssociatedElement.h:67
&gt; +    void didMoveToNewOwnerDocument(Document* oldDocument) OVERRIDE;

This is not an override of a virtual function; I would not expect this to compile at all!

&gt; Source/WebCore/html/HTMLInputElement.cpp:1510
&gt; +        if (needsSuspensionCallback())

Since this function always calls needsSuspensionCallback at least once, it would be better if it called it only once and stored it in a local variable.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3401
&gt; +void HTMLMediaElement::setShouldDelayLoadEvent(Document* doc, bool shouldDelay)

Please don’t use the abbreviation “doc” in an argument name. The name document would be better.

This new function is messy. It’s not good for the media element itself to change its m_shouldDelayLoadEvent state when moving from one document to another. Instead, only the count should be updated when the element moves from document to the other and this function shouldn’t be called at all. I don’t even think didMoveToNewOwnerDocument should look at m_readyState. It should only look at m_shouldDelayLoadEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527130</commentid>
    <comment_count>21</comment_count>
      <attachid>120524</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-25 21:16:11 -0800</bug_when>
    <thetext>Created attachment 120524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527135</commentid>
    <comment_count>22</comment_count>
      <attachid>120524</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-25 21:28:09 -0800</bug_when>
    <thetext>Comment on attachment 120524
Patch

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

Please fix the one thing I mentioned; otherwise this is ready to go.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:288
&gt; +    if (m_readyState &lt; HAVE_CURRENT_DATA &amp;&amp; m_shouldDelayLoadEvent) {

We do not want to check m_readyState &lt; HAVE_CURRENT_DATA here. If this somehow gets out of sync with m_shouldDelayLoadEvent it could result in us leaving a document with the wrong load event delay count. This logic should solely be based on the value of m_shouldDelayLoadEvent. The old code needed to check m_readyState because of a flaw in how the old code worked that is now fixed by your new function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527140</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-25 22:03:12 -0800</bug_when>
    <thetext>Hi Darin, thanks for lighting review! I&apos;ll land this after addressing your point.

(In reply to comment #22)
&gt; (From update of attachment 120524 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=120524&amp;action=review
&gt; 
&gt; Please fix the one thing I mentioned; otherwise this is ready to go.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:288
&gt; &gt; +    if (m_readyState &lt; HAVE_CURRENT_DATA &amp;&amp; m_shouldDelayLoadEvent) {
&gt; 
&gt; We do not want to check m_readyState &lt; HAVE_CURRENT_DATA here. If this somehow gets out of sync with m_shouldDelayLoadEvent it could result in us leaving a document with the wrong load event delay count. This logic should solely be based on the value of m_shouldDelayLoadEvent. The old code needed to check m_readyState because of a flaw in how the old code worked that is now fixed by your new function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527141</commentid>
    <comment_count>24</comment_count>
      <attachid>120526</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-25 22:05:59 -0800</bug_when>
    <thetext>Created attachment 120526
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527147</commentid>
    <comment_count>25</comment_count>
      <attachid>120526</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-25 22:26:39 -0800</bug_when>
    <thetext>Comment on attachment 120526
Patch for landing

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

&gt; Source/WebCore/dom/Node.cpp:2511
&gt; +#else
&gt; +    UNUSED_PARAM(oldDocument);

Hmm, I just noticed that oldDocument is never used on either side of the if statement. That means that you should leave out the argument name altogether. Without that I think we’ll fail to compile when MUTATION_OBSERVERS is enabled.

&gt; Source/WebCore/dom/StyledElement.cpp:185
&gt; +    // Normally we would be concerned about reseting the parent of those declarations in StyledElement::didMoveToNewDocument().

I think it’s spelled resetting rather than reseting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527151</commentid>
    <comment_count>26</comment_count>
      <attachid>120526</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-25 23:05:16 -0800</bug_when>
    <thetext>Comment on attachment 120526
Patch for landing

Clearing flags on attachment: 120526

Committed r103679: &lt;http://trac.webkit.org/changeset/103679&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527152</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-25 23:05:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118533</attachid>
            <date>2011-12-08 22:40:38 -0800</date>
            <delta_ts>2011-12-12 21:26:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74067-20111209154036.patch</filename>
            <type>text/plain</type>
            <size>32773</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJjZGU5Yjc1ODc3Nzgw
MzhjNmQ4ZWQ5ZTBkN2Q3MjNjNmZlY2MxMC4uZWZlNGUyOTc2OTU1ZmEzMGE2YWNlZDZkNGU4MGRi
MWM4YmVjZGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDExLTEyLTA4ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2NworICAgICAgICBSZWZhY3RvcmluZzog
VW5pdGZ5IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgYW5kIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGNvbWJpbmVzIHR3byBtZXRob2QgTm9kZTo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KSBhbmQgTm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCisgICAgICAgIGludG8gTm9k
ZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKS4KKyAg
ICAgICAgTm90ZSB0aGF0IG5ld2x5IGludHJvZHVjZWQgTm9kZU93bmVyQ2hhbmdlIG9iamVjdCBo
b2xkcyBib3RoIG9sZCBhbmQgbmV3IG93bmVyIGRvY3VtZW50cy4KKworICAgICAgICBUaGUgaW50
ZW50aW9uIG9mIHRoaXMgY2hhbmdlIGlzOgorICAgICAgICAtIE1ha2luZyB1cGNvbWluZyByZWZh
Y3RvcmluZyAoQnVnIDU5ODE2KSBwb3NzaWJsZS4gVGhlIHJlZmFjdG9yaW5nIHdpbGwgdHVybiBO
b2RlOjptX2RvY3VtZW50IGludG8KKyAgICAgICAgICBOb2RlOjptX3RyZWVTY29wZSwgYW5kIHdl
IHdpbGwgbm8gbG9uZ2VyIGhhdmUgTm9kZTo6c2V0RG9jdW1lbnQoKSB3aGVyZSB3ZSBjYW4gaW52
b2tlIGJvdGgKKyAgICAgICAgICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpIGFuZCBkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkgYXQgb25jZS4KKyAgICAgICAgLSBLaWxsaW5nIG9uZSBl
eHRyYSB2aXJ0dWFsIG1ldGhvZCBjYWxsLgorICAgICAgICAtIE1ha2luZyB0aGUgY29uY2VwdCBv
ZiAib3duZXJzaGlwIG1vdmUiIGNsZWFyZXIgYnkga2VlcGluZyBzdWNoIGFuIG9wZXJhdGlvbiBp
bnRvIHRoZSBzaW5nbGUgbWV0aG9kLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6c2V0RG9jdW1lbnQpOiBVbmlmaWVkIHRoZSBjYWxsLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPd25lckNoYW5nZTo6Tm9kZU93bmVy
Q2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlT3duZXJDaGFuZ2U6Om9sZERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPd25lckNoYW5nZTo6bmV3RG9jdW1lbnQp
OgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYWRFdmVu
dCk6CisgICAgICAgIC0gUGFzcyBEb2N1bWVudCBhcyBhIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFj
Y2Vzc2luZyBpdCBieSB0aGUgZG9jdW1lbnQoKSBnZXR0ZXIuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RG9jdW1lbnRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBl
Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjplbGVtZW50RGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIC0gUmVuYW1lZCBmcm9tIGVsZW1lbnRXaWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudAorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
SW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKwogMjAxMS0xMi0wOCAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBJdCdzIHNlbWFudGljYWxseSBpbmNvcnJl
Y3QgdG8gY2FsbCBub3RpZnlOb2RlTGlzdHNBdHRyaWJ1dGVDaGFuZ2VkIGluIGRpc3BhdGNoU3Vi
dHJlZU1vZGlmaWVkRXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmZTVjNWUxMmMyYTE1MWUwNDhh
ZTZhYzYxN2ZhN2U5NjUzN2VhNDcwLi5kZWExNTE2NjMyMmNjOTQ5ZDg1MDQzNjg1N2NhZDdkNGQz
ODQwNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MjgsMTQgKzQyOCw4IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGJvb2wpCiB9CiAK
ICNlbHNlCi0gICAgCi1zdGF0aWMgYm9vbCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0Nh
bGxlZDsKLXN0YXRpYyBib29sIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQ7CiAK
LXN0YXRpYyB2b2lkIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGJvb2wg
d2FzQ2FsbGVkKQotewotICAgIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkID0g
d2FzQ2FsbGVkOwotfQorc3RhdGljIGJvb2wgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0Nh
bGxlZDsKIAogc3RhdGljIHZvaWQgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxl
ZChib29sIHdhc0NhbGxlZCkKIHsKQEAgLTQ1MiwxOSArNDQ2LDE2IEBAIHZvaWQgTm9kZTo6c2V0
RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogCiAgICAgZG9jdW1lbnQtPmd1YXJkUmVmKCk7
CiAKLSAgICBzZXRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChmYWxzZSk7Ci0g
ICAgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBBU1NFUlQod2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwotCiAgICAgaWYgKG1fZG9jdW1lbnQpIHsKICAgICAg
ICAgbV9kb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KHRoaXMsIGRvY3Vt
ZW50KTsKICAgICAgICAgbV9kb2N1bWVudC0+Z3VhcmREZXJlZigpOwogICAgIH0KIAorICAgIERv
Y3VtZW50KiBvbGREb2N1bWVudCA9IG1fZG9jdW1lbnQ7CiAgICAgbV9kb2N1bWVudCA9IGRvY3Vt
ZW50OwogCiAgICAgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChmYWxzZSk7
Ci0gICAgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoTm9kZU93bmVyQ2hhbmdlKG9sZERvY3VtZW50LCBkb2N1bWVudCkpOwogICAgIEFT
U0VSVChkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKTsKIH0KIApAQCAtMjQ5OCwx
MyArMjQ4OSw3IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiAgICAgY2xlYXJJ
bkRvY3VtZW50KCk7CiB9CiAKLXZvaWQgTm9kZTo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KQotewotICAgIEFTU0VSVCghd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwot
ICAgIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKHRydWUpOwotfQotCi12
b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBOb2RlOjpkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpCiB7CiAgICAgQVNTRVJU
KCFkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKTsKICAgICBzZXREaWRNb3ZlVG9O
ZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKHRydWUpOwpAQCAtMjUxNSwxNCArMjUwMCwxNCBAQCB2
b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogICAgIGlmIChWZWN0b3I8T3du
UHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+ID4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJ5KCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWdp
c3RyeS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChyZWdpc3RyeS0+YXQoaSktPmlz
U3VidHJlZSgpKQotICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkZFN1YnRyZWVNdXRhdGlv
bk9ic2VydmVyVHlwZXMocmVnaXN0cnktPmF0KGkpLT5tdXRhdGlvblR5cGVzKCkpOworICAgICAg
ICAgICAgICAgIGNoYW5nZS5uZXdEb2N1bWVudCgpLT5hZGRTdWJ0cmVlTXV0YXRpb25PYnNlcnZl
clR5cGVzKHJlZ2lzdHJ5LT5hdChpKS0+bXV0YXRpb25UeXBlcygpKTsKICAgICAgICAgfQogICAg
IH0KIAogICAgIGlmIChIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qPiogdHJh
bnNpZW50UmVnaXN0cnkgPSB0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgewog
ICAgICAgICBmb3IgKEhhc2hTZXQ8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbio+OjppdGVy
YXRvciBpdGVyID0gdHJhbnNpZW50UmVnaXN0cnktPmJlZ2luKCk7IGl0ZXIgIT0gdHJhbnNpZW50
UmVnaXN0cnktPmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmICgoKml0ZXIpLT5pc1N1
YnRyZWUoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRTdWJ0cmVlTXV0YXRpb25P
YnNlcnZlclR5cGVzKCgqaXRlciktPm11dGF0aW9uVHlwZXMoKSk7CisgICAgICAgICAgICAgICAg
Y2hhbmdlLm5ld0RvY3VtZW50KCktPmFkZFN1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXMoKCpp
dGVyKS0+bXV0YXRpb25UeXBlcygpKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggODFlOGRlMGExNjZjYmYxYzZmOGZlZmEyOTY1NjI3M2IzZDI0NjQ4Ni4uZWMwYzg5
MjNmMDVhZTdmZDQ0MWUzNzg2NzBhM2FjMTIxOGEzZGYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0xMDEs
NiArMTAxLDIyIEBAIGVudW0gU3R5bGVDaGFuZ2VUeXBlIHsKICAgICBTeW50aGV0aWNTdHlsZUNo
YW5nZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQKIH07CiAKK2NsYXNzIE5vZGVPd25lckNo
YW5nZSB7CitwdWJsaWM6CisgICAgTm9kZU93bmVyQ2hhbmdlKERvY3VtZW50KiBvbGREb2N1bWVu
dCwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KQorICAgICAgICA6IG1fb2xkRG9jdW1lbnQob2xkRG9j
dW1lbnQpCisgICAgICAgICwgbV9uZXdEb2N1bWVudChuZXdEb2N1bWVudCkKKyAgICB7CisgICAg
fQorCisgICAgRG9jdW1lbnQqIG9sZERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9vbGREb2N1
bWVudDsgfQorICAgIERvY3VtZW50KiBuZXdEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3
RG9jdW1lbnQ7IH0KKworcHJpdmF0ZToKKyAgICBEb2N1bWVudCogbV9vbGREb2N1bWVudDsKKyAg
ICBEb2N1bWVudCogbV9uZXdEb2N1bWVudDsKK307CisKIGNsYXNzIE5vZGUgOiBwdWJsaWMgRXZl
bnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVkPENvbnRh
aW5lck5vZGU+IHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNz
IFRyZWVTY29wZTsKQEAgLTY3NCw4ICs2OTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKICAgICBO
b2RlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBhZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdCB7IH0KICAg
ICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShzaG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggMWRkYjZhNjVjMjY2MmYwOThhODMw
MzkxZmNiZTExNDAxYWIyMTY2My4uY2FlZjhhMzdlMWJjYzY4OTE0MGUzNGJjZjUxODJlY2JmNzFk
NWE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cApAQCAtNTIsMTEgKzUyLDExIEBAIFZhbGlkaXR5U3RhdGUqIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dmFsaWRpdHkoKQogICAgIHJldHVybiBtX3ZhbGlkaXR5U3RhdGUuZ2V0KCk7CiB9CiAKLXZv
aWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2
b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25z
dCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9
IHRvSFRNTEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUo
Zm9ybUF0dHIpKQotICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9ybUVs
ZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgY2hhbmdlLm9sZERvY3VtZW50
KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKHRoaXMpOwogfQogCiB2
b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKaW5kZXggNWE4NjFlMjcyNjFi
Njc1MzhmMDBiMGYyMGEyMjJmODY1NGM0MzU0Mi4uNGUxNDE5YjAyM2I4NjM1OWNhYjYzYWI1NGQ5
ZTIwMzQ1MjlmMGQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2Np
YXRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJlbW92ZWRGcm9t
VHJlZSgpOwogICAgIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2b2lkIHJlbW92
ZWRGcm9tRG9jdW1lbnQoKTsKLSAgICB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7
CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5n
ZSYpOwogCiAgICAgdm9pZCBzZXRGb3JtKEhUTUxGb3JtRWxlbWVudCogZm9ybSkgeyBtX2Zvcm0g
PSBmb3JtOyB9CiAgICAgdm9pZCByZW1vdmVGcm9tRm9ybSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMDcwNDQ0ODc2MmJiM2M5MmM0
MDExYTEzYzVjZjQ2OWVmOGI2YzQyZS4uZDFmYWVkNjhhOTljOGU4ZjQ2ZmE2YjE0MzVhNmRkNDRh
YjVmMmNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCkBAIC0xOTYsMTAgKzE5NiwxMCBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OmF0dGFjaCgpCiAgICAgcmVzdW1lUG9zdEF0dGFjaENhbGxiYWNrcygpOwogfQogCi12b2lkIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQg
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBO
b2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6Ondp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgSFRNTEVsZW1lbnQ6OndpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7CisgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KGNoYW5nZSk7CisgICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld093
bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpp
bnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKQEAgLTUxMiwxNiArNTEyLDEyIEBAIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGU6On5IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRl
KCkKICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoU3RhdGUodGhpcyk7
CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6d2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpk
aWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQog
ewotICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0ZSh0aGlzKTsK
LSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
OwotfQotCi12b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQotewotICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9ybUVsZW1lbnRX
aXRoU3RhdGUodGhpcyk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOworICAgIGlmIChjaGFuZ2Uub2xkRG9jdW1lbnQoKSkKKyAgICAgICAg
Y2hhbmdlLm9sZERvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0ZSh0aGlz
KTsKKyAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0
ZSh0aGlzKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KGNoYW5nZSk7CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZTo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZmQ1MmNjYTA4OTkxMjY2YmNkMmViNWEwZGQ0NjJi
YjllNjBiMWU1OC4uZGM2MTJjYWQ2NjU5NTE4MmMzZmI4ODY3NmZiMGQ1ZmY4N2RjMmUyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTExOCw3
ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShi
b29sIGRlZXApOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xOYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKQEAgLTE4Miw4ICsxODIsNyBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwotICAgIHZpcnR1YWwgdm9pZCB3aWxs
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IHNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDU1NmJmMjE1MjNhMzEwOTZjYjhlOGE1
NGFhYzFkMGY1MjJkODc5NGUuLjZjOWViOTVhNDM0ODk5NjlhM2E4M2NkODIxMzc2MjY3Y2QzYjRm
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTY0NiwxOCAr
NjQ2LDE1IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgp
CiAgICAgfQogfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKQordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQo
Y29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgaWYgKCFzaG91bGRBdXRvY29t
cGxldGUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZh
dGlvbkNhbGxiYWNrcyh0aGlzKTsKLSAgICBIVE1MRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKLX0KKyAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgpKSB7CisgICAgICAg
IGlmIChjaGFuZ2Uub2xkRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGNoYW5nZS5vbGREb2N1bWVu
dCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOworICAg
ICAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25D
YWxsYmFja3ModGhpcyk7CisgICAgfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6ZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpCi17Ci0gICAgaWYgKCFzaG91bGRBdXRvY29tcGxldGUoKSkKLSAg
ICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3Mo
dGhpcyk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAg
ICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQogCiBi
b29sIEhUTUxGb3JtRWxlbWVudDo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDg0M2E5ODZhODliNmNlZTBhNzRjZDM5OWM2
ZTU4NzljNTQ2YzM2ZGMuLmQxZmFkMmY3N2Y2N2EwNDJjYjAxNjMxZDZjNjczZGMyNGNjODQ2OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMTI4LDggKzEyOCw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lk
IGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKICAg
ICB2b2lkIHN1Ym1pdChFdmVudCosIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlLCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0MmE0ZTc4NzMzOTFkYTYzNTBlOTVm
MTNlYmNjN2JlZTk2OTM3ZTQ0Li42ODc1ZThkYWZkODgwOGJhZTkxZTM4YTI4ZTA2MDQ3MDI3ODkx
NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTM4NCwx
MCArMzg0LDEwIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zCiAgICAgYWRkU3VicmVzb3VyY2VV
UkwodXJscywgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHVzZW1hcEF0dHIp
KSk7CiB9CiAKLXZvaWQgSFRNTEltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKQordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNv
bnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewotICAgIG1faW1hZ2VMb2FkZXIuZWxlbWVu
dFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgSFRNTEVsZW1lbnQ6OndpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgbV9pbWFnZUxvYWRlci5lbGVtZW50RGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KGNoYW5nZSk7CiB9CiAKIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNTZXJ2ZXJNYXAo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA5YmVjOWQ4
MGI3Mjk3MmNlYzljY2MzYzJmMzI0OGJhYzFjMjY3YjI0Li41ZDI3YjRiM2JlM2FlZGE0ZTMzOTU5
YjQ4OTE4ZTYxMTAyZmQ0MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqID0g
MCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJD
aGFuZ2UmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA0ODExM2I1
N2RiZWNmYjQ4Y2Y2NzE5YmE3MGQ2ZTE1MzAwODA0ZjM4Li5mODc3NjY4NGFkMDAzMmVmYjg5NGNk
MDRhYzlkMTkwZTg1OWIwN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTE1MDUsMjQgKzE1MDUsMjMgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpkb2N1
bWVudERpZEJlY29tZUFjdGl2ZSgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBIVE1MSW5wdXRF
bGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFu
Z2UpCiB7CiAgICAgbV9pbnB1dFR5cGUtPndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Cisg
ICAgaWYgKGNoYW5nZS5vbGREb2N1bWVudCgpKSB7CisgICAgICAgIC8vIEFsd2F5cyB1bnJlZ2lz
dGVyIGZvciBjYWNoZSBjYWxsYmFja3Mgd2hlbiBsZWF2aW5nIGEgZG9jdW1lbnQsIGV2ZW4gaWYg
d2Ugd291bGQgb3RoZXJ3aXNlIGxpa2UgdG8gYmUgcmVnaXN0ZXJlZAorICAgICAgICBpZiAobmVl
ZHNBY3RpdmF0aW9uQ2FsbGJhY2soKSkKKyAgICAgICAgICAgIGNoYW5nZS5vbGREb2N1bWVudCgp
LT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgICAg
ICBjaGFuZ2Uub2xkRG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRv
bih0aGlzKTsKKyAgICB9CiAKLSAgICAvLyBBbHdheXMgdW5yZWdpc3RlciBmb3IgY2FjaGUgY2Fs
bGJhY2tzIHdoZW4gbGVhdmluZyBhIGRvY3VtZW50LCBldmVuIGlmIHdlIHdvdWxkIG90aGVyd2lz
ZSBsaWtlIHRvIGJlIHJlZ2lzdGVyZWQKLSAgICBpZiAobmVlZHNBY3RpdmF0aW9uQ2FsbGJhY2so
KSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNh
bGxiYWNrcyh0aGlzKTsKLQotICAgIGRvY3VtZW50KCktPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5y
ZW1vdmVCdXR0b24odGhpcyk7Ci0KLSAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6d2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLX0KLQotdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKLXsKLSAgICByZWdpc3RlckZvckFjdGl2YXRpb25D
YWxsYmFja0lmTmVlZGVkKCk7CisgICAgaWYgKCFuZWVkc0FjdGl2YXRpb25DYWxsYmFjaygpKSB7
CisgICAgICAgIGlmIChjaGFuZ2Uub2xkRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGNoYW5nZS5v
bGREb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRo
aXMpOworICAgICAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFj
dGl2YXRpb25DYWxsYmFja3ModGhpcyk7CisgICAgfQogCi0gICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQogCiB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxLVVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmgKaW5kZXggY2Y5YWI1ZTA5YWM5YzhhMDU0MTE2ODRhNDMyYmY3ZDM1YmQwOThhNS4uZmM3YjFi
ZmZjYzVkNjBmZWYyN2JkZGQ5ZmY1YzY0ZTdmZGNkM2E0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKQEAgLTI0OSw4ICsyNDksNyBAQCBwcml2YXRlOgogICAgIGVudW0g
QXV0b0NvbXBsZXRlU2V0dGluZyB7IFVuaW5pdGlhbGl6ZWQsIE9uLCBPZmYgfTsKICAgICBlbnVt
IEFueVN0ZXBIYW5kbGluZyB7IFJlamVjdEFueSwgQW55SXNEZWZhdWx0U3RlcCB9OwogCi0gICAg
dmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMzE2MTQ5MDEzYzQ1Njg2N2Q5OTg1MzhhYTdlY2Jm
NzkyZDU0NjliZi4uM2U2YmYyNGU0ZjJkZThiYjJmMDkxNGNiNDI3MDVhNGMwMjU2YTY1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNzYsMjcgKzI3Niwy
NSBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgcmVtb3ZlRWxl
bWVudEZyb21Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCgpKTsKIH0KIAotdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBj
aGFuZ2UpCiB7Ci0gICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQotICAgICAg
ICBkb2N1bWVudCgpLT5yZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7Ci0gICAgc2V0
U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwotICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJG
b3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgZG9jdW1lbnQoKS0+dW5y
ZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOwotICAgIHJlbW92ZUVsZW1lbnRG
cm9tRG9jdW1lbnRNYXAodGhpcywgZG9jdW1lbnQoKSk7Ci0gICAgSFRNTEVsZW1lbnQ6OndpbGxN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci19CisgICAgaWYgKGNoYW5nZS5vbGREb2N1bWVudCgp
KSB7CisgICAgICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKKyAgICAgICAg
ICAgIGNoYW5nZS5vbGREb2N1bWVudCgpLT5yZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhp
cyk7CisgICAgICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGNoYW5nZS5vbGREb2N1bWVudCgp
LCBmYWxzZSk7CisgICAgICAgIGNoYW5nZS5vbGREb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9j
dW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBjaGFuZ2Uub2xkRG9jdW1l
bnQoKS0+dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBy
ZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRoaXMsIGNoYW5nZS5vbGREb2N1bWVudCgpKTsK
KyAgICB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpCi17CiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQotICAgICAgICBk
b2N1bWVudCgpLT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7CisgICAgICAgICBjaGFu
Z2UubmV3RG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwogICAgIGlm
IChtX3JlYWR5U3RhdGUgPCBIQVZFX0NVUlJFTlRfREFUQSkKLSAgICAgICAgc2V0U2hvdWxkRGVs
YXlMb2FkRXZlbnQodHJ1ZSk7Ci0gICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFj
dGl2YXRpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JNZWRp
YVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKLSAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlz
LCBkb2N1bWVudCgpKTsKLSAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOworICAgICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChjaGFuZ2UubmV3RG9jdW1lbnQo
KSwgdHJ1ZSk7CisgICAgY2hhbmdlLm5ld0RvY3VtZW50KCktPnJlZ2lzdGVyRm9yRG9jdW1lbnRB
Y3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgIGNoYW5nZS5uZXdEb2N1bWVudCgpLT5yZWdp
c3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOworICAgIGFkZEVsZW1lbnRUb0RvY3Vt
ZW50TWFwKHRoaXMsIGNoYW5nZS5uZXdEb2N1bWVudCgpKTsKKyAgICBIVE1MRWxlbWVudDo6ZGlk
TW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdApAQCAtMzIwMyw2ICszMjAxLDExIEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyaWJ1dGUpIGNvbnN0
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCBz
aG91bGREZWxheSkKIHsKKyAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChkb2N1bWVudCgpLCBz
aG91bGREZWxheSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlM
b2FkRXZlbnQoRG9jdW1lbnQqIGRvYywgYm9vbCBzaG91bGREZWxheSkKK3sKICAgICBpZiAobV9z
aG91bGREZWxheUxvYWRFdmVudCA9PSBzaG91bGREZWxheSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0zMjEwLDkgKzMyMTMsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZERlbGF5
TG9hZEV2ZW50KGJvb2wgc2hvdWxkRGVsYXkpCiAKICAgICBtX3Nob3VsZERlbGF5TG9hZEV2ZW50
ID0gc2hvdWxkRGVsYXk7CiAgICAgaWYgKHNob3VsZERlbGF5KQotICAgICAgICBkb2N1bWVudCgp
LT5pbmNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CisgICAgICAgIGRvYy0+aW5jcmVtZW50
TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIGVsc2UKLSAgICAgICAgZG9jdW1lbnQoKS0+ZGVj
cmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOworICAgICAgICBkb2MtPmRlY3JlbWVudExvYWRF
dmVudERlbGF5Q291bnQoKTsKIH0KICAgICAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCA0YjM2OThiZGZmYzY5NTNmMTY4NTdiMGJmZTJkYTAxNTg5MzM1YjJmLi4y
NmVhYmVmNDk3ODViODJmNTExM2RlZWVhZThlYWFiNjc3NDczYTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjczLDggKzI3Myw3IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGF0dGFjaCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2Rl
T3duZXJDaGFuZ2UmKTsKIAogICAgIGVudW0gRGlzcGxheU1vZGUgeyBVbmtub3duLCBOb25lLCBQ
b3N0ZXIsIFBvc3RlcldhaXRpbmdGb3JWaWRlbywgVmlkZW8gfTsKICAgICBEaXNwbGF5TW9kZSBk
aXNwbGF5TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU1vZGU7IH0KQEAgLTQyMyw3ICs0
MjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAg
ICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJvb2wpOwotCisgICAgdm9pZCBzZXRTaG91
bGREZWxheUxvYWRFdmVudChEb2N1bWVudCosIGJvb2wpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNh
Y2hlZFRpbWUoKTsKICAgICB2b2lkIHJlZnJlc2hDYWNoZWRUaW1lKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggYmM2NmRiMjIxZmNjZjg0
OGU3M2FkMzllNGI0N2EyY2UxNjllZmM1OS4uOWEwMDhlYWVmY2Q4MmQ3ZDAzODMzYjQwYzdmMjZl
ZThkZDYxYzcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAK
QEAgLTUxMSwxMCArNTExLDEwIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uCiAgICAgICAgIGFk
ZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVzZU1hcCkpOwog
fQogCi12b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
Cit2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0
IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewotICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOworICAgIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggZGNlYzVjZjBmODY3YWY0NDYzOTU2MGFl
NTMwMzNhYTViMDhiNDFiNy4uZmEzNDAzOGZjOTBjZjM5YjAyNDRiYWM3NzZmMzdmOThhOTgyYTkz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNzMsOCArNzMs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5v
ZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3Vt
ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKTsK
KwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIg
PSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBp
bnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoQXR0cmlidXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAppbmRleCAxYzA4MzkwZDU4NGU3MTdiODBlMGRmOWFmYjE5Mzk2NzU5
ZjM1ODFjLi40MTNkOWU0MTRmZDBjOWFhMjc2ZmFhOTViZGYwYjE4OTBiZWE4M2Y5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTE4Nywx
MSArMTg3LDExIEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOyAgICAKIH0KIAotdm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3Qg
Tm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCi0gICAg
ICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwot
ICAgIEhUTUxQbHVnSW5FbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAg
ICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwor
ICAgIEhUTUxQbHVnSW5FbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5nZSk7
CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlV2lkZ2V0Q2FsbGJhY2so
Tm9kZSogbiwgdW5zaWduZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5oCmluZGV4IGViMmQxN2UyYTc4MWNmZjUyODc3NmI1NGZkZWE5MDc1YTAwNmFjNDUu
LjRjODk2ZmM2NGI3NmJjMTg2MmIzZWEzM2Q1ZjJkOTkwYWU3NjAzZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC02OSw3ICs2OSw3IEBAIHBy
b3RlY3RlZDoKICAgICBib29sIGFsbG93ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVy
bCk7CiAgICAgYm9vbCB3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAzMTA3ZDE1
MmU4OGQ5NTc5NzZiZjYzODE0ZTEwZmUwMTA0NjFkMzZiLi5kMjA0NjhmMjI5NzRmZDgxOGE3ZDYw
MGVmNjQ4ZTg0NTQ1MTA1YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTI3MSwxMSArMjcxLDExIEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0
RGlzcGxheWluZ0Z1bGxzY3JlZW4oKQogICAgIHJldHVybiBpc0Z1bGxzY3JlZW4oKTsKIH0KIAot
dm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lk
IEhUTUxWaWRlb0VsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93
bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCi0gICAgICAgIG1f
aW1hZ2VMb2FkZXItPmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIEhU
TUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgICAgIG1f
aW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgSFRN
TE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQogCiAj
aWYgRU5BQkxFKE1FRElBX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5oCmluZGV4IDgyZDA2NTkxMDkxNzIxYzU1NjdlNWFkZDMyMDk1ZGUxYmQyODEzODIuLmRm
NjAwMjUzZWE2NWVmYWMxNTAyMjIzODdkODE5MjliZGYxOWZmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC04NCw5ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKLQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOwotCisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldERp
c3BsYXlNb2RlKERpc3BsYXlNb2RlKTsKIAogICAgIE93blB0cjxIVE1MSW1hZ2VMb2FkZXI+IG1f
aW1hZ2VMb2FkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA3ZGIx
YWMzMjU3MTBmMDNlNjY1N2U1MjI0OGVlYzMwZThjZjM5ZWNkLi4wYmRlZTlhZmU2NDlmYWZmMDE3
NmM4Zjc3MWUwMTQ5MmMyODZkNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZpcnR1YWwgfklt
YWdlRG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQo
Y29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKICAgICBJbWFnZURvY3VtZW50KiBtX2ltYWdlRG9j
dW1lbnQ7CiB9OwpAQCAtNDA3LDEzICs0MDcsMTMgQEAgSW1hZ2VEb2N1bWVudEVsZW1lbnQ6On5J
bWFnZURvY3VtZW50RWxlbWVudCgpCiAgICAgICAgIG1faW1hZ2VEb2N1bWVudC0+ZGlzY29ubmVj
dEltYWdlRWxlbWVudCgpOwogfQogCi12b2lkIEltYWdlRG9jdW1lbnRFbGVtZW50Ojp3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEltYWdlRG9jdW1lbnRFbGVtZW50OjpkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewogICAg
IGlmIChtX2ltYWdlRG9jdW1lbnQpIHsKICAgICAgICAgbV9pbWFnZURvY3VtZW50LT5kaXNjb25u
ZWN0SW1hZ2VFbGVtZW50KCk7CiAgICAgICAgIG1faW1hZ2VEb2N1bWVudCA9IDA7CiAgICAgfQot
ICAgIEhUTUxJbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAg
SFRNTEltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDkwZDdiYjlhY2Ey
MzhhYjJlMjdlMjM3NDI5NWE5ODJhZTZlZjFhNmEuLmExMThkYTc0Mjg0OTJhNGRjZGVjMmE0NTcw
MTJlODU5NjA1Nzg4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBA
IC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBJbWFnZUlucHV0VHlwZTo6d2lsbE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQogewogICAgIEJhc2VCdXR0b25JbnB1dFR5cGU6OndpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCk7CiAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCi0gICAgICAgIG1faW1hZ2VMb2Fk
ZXItPmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgICAgICBtX2ltYWdl
TG9hZGVyLT5lbGVtZW50RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogfQogCiBib29sIElt
YWdlSW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0QWxpZ25BdHRyaWJ1dGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggODIwY2ZkM2ZiOWE4ZGU5NjA2NjY5ZmY0OGJjNjhk
YjhiMDUxMmJmZC4uMzgyNGZjMDIxZmI0YTAyNjgxMDE0YTFiYWY3N2ExODhkM2Q3ZmQyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgdm9p
ZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCiAgICAgbG9hZEV2ZW50
U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CiB9CiAKLXZvaWQgSW1hZ2VMb2FkZXI6
OmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEltYWdlTG9hZGVyOjpl
bGVtZW50RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiB7CiAgICAgc2V0SW1hZ2UoMCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCmluZGV4IGU4NWYxZDExZTY2MjQwODQxZGY2
YWI1ZGRmMDU4Y2M1MjhhYzliYmEuLmI2N2ZiNDhlZjlkYjIxYTIzMDI1MDdhNTdmZWM0NjJkZjBi
M2E3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICAvLyBkb2Vzbid0IGNoYW5nZTsgc3RhcnRzIG5ldyBsb2FkIHVuY29uZGl0
aW9uYWxseSAobWF0Y2hlcyBGaXJlZm94IGFuZCBPcGVyYSBiZWhhdmlvcikuCiAgICAgdm9pZCB1
cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogCi0gICAgdm9pZCBlbGVt
ZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2b2lkIGVsZW1lbnREaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CiAKICAgICBFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbGVtZW50OyB9CiAgICAgYm9vbCBpbWFnZUNvbXBsZXRlKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZUNvbXBsZXRlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3Bw
CmluZGV4IGFmNGMyNzA3N2I0NTk1MGJiZDI1NWE2YTQ0MDRlNzk4MzQ3YTAzN2QuLmVjZmE2MDll
OTRlOGMwOWRkY2I2NTg4Y2I3YzA0M2ZmN2ZlMDhjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwCkBAIC0yMTUsMTIgKzIxNSwxMyBAQCB2b2lkIFNWR0ltYWdlRWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBj
b25zdAogICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KGhyZWYoKSkpOwogfQogCi12b2lkIFNWR0ltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQordm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgbV9pbWFnZUxvYWRlci5l
bGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBtX2ltYWdl
TG9hZGVyLmVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY2hhbmdlKTsK
IH0KIAorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5oCmluZGV4IGY5N2UxZDkyOWJlZTE0MzkwMTU4NmRlNDFmNzNjNDI1YTk4ZGY2MDgu
LjhjMjg1MzVjODk1OWU4NzA1ZjIxY2JjNjVmYWU3ODkwOTQ0YzU1YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB3aWxs
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdP
d25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpOwogCiAgICAgQkVHSU5fREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ltYWdlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoWCwgeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRl
eCA3Zjc1NTQ3OTc0M2I2NjFlMjk2M2ZlOGQwODQ0OWY4NTI2NTFhZTFhLi44MTBlOGU1YjllZTJl
ZjRlODFkOTIwYzM3YWUwMTIxZGIxNDQzZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwCkBAIC0xMDYsMTYgKzEwNiwxMiBAQCBTVkdTVkdFbGVtZW50Ojp+U1ZHU1ZHRWxlbWVu
dCgpCiAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1vdmVUaW1lQ29u
dGFpbmVyKHRoaXMpOwogfQogCi12b2lkIFNWR1NWR0VsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCkKK3ZvaWQgU1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dChjb25zdCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBkb2N1bWVudCgpLT51bnJl
Z2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwotICAgIFNWR1N0eWxl
ZExvY2F0YWJsZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci19Ci0KLXZv
aWQgU1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCi17Ci0gICAgZG9j
dW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7Ci0g
ICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
OworICAgIGlmIChjaGFuZ2Uub2xkRG9jdW1lbnQoKSkKKyAgICAgICAgY2hhbmdlLm9sZERvY3Vt
ZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7Cisg
ICAgY2hhbmdlLm5ld0RvY3VtZW50KCktPnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2Fs
bGJhY2tzKHRoaXMpOworICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdF
bGVtZW50Ojpjb250ZW50U2NyaXB0VHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaAppbmRleCBmNjE3MGFjMTFlMGU1NzlhODJjYTZiYzkxNWRjNGUwYTc3ZmE5OThlLi4xNjUz
M2Q0NGNjOWYyZGZhOWM5OTMzZDllMDE2ODdhMjI3ZmJkYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmgKQEAgLTEyNiw4ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogZ2V0
RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpOwogCiBwcml2YXRl
OgogICAgIFNWR1NWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118948</attachid>
            <date>2011-12-12 21:26:54 -0800</date>
            <delta_ts>2011-12-13 19:09:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74067-20111213142652.patch</filename>
            <type>text/plain</type>
            <size>33149</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU2YjI4OTI1NjNkOTZm
NzgxMTZkNzFjNTE2M2U1M2JlZWFhYWFiMC4uMTc0NzQ3M2Q5MmEzZWFiNmJiZGE5NWZkMDQ2ZWZk
OGFiNjdmYTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDExLTEyLTA4ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2NworICAgICAgICBSZWZhY3RvcmluZzog
VW5pdGZ5IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgYW5kIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGNvbWJpbmVzIHR3byBtZXRob2QgTm9kZTo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KSBhbmQgTm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCisgICAgICAgIGludG8gTm9k
ZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKS4KKyAg
ICAgICAgTm90ZSB0aGF0IG5ld2x5IGludHJvZHVjZWQgTm9kZU93bmVyQ2hhbmdlIG9iamVjdCBo
b2xkcyBib3RoIG9sZCBhbmQgbmV3IG93bmVyIGRvY3VtZW50cy4KKworICAgICAgICBUaGUgaW50
ZW50aW9uIG9mIHRoaXMgY2hhbmdlIGlzOgorICAgICAgICAtIE1ha2luZyB1cGNvbWluZyByZWZh
Y3RvcmluZyAoQnVnIDU5ODE2KSBwb3NzaWJsZS4gVGhlIHJlZmFjdG9yaW5nIHdpbGwgdHVybiBO
b2RlOjptX2RvY3VtZW50IGludG8KKyAgICAgICAgICBOb2RlOjptX3RyZWVTY29wZSwgYW5kIHdl
IHdpbGwgbm8gbG9uZ2VyIGhhdmUgTm9kZTo6c2V0RG9jdW1lbnQoKSB3aGVyZSB3ZSBjYW4gaW52
b2tlIGJvdGgKKyAgICAgICAgICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpIGFuZCBkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkgYXQgb25jZS4KKyAgICAgICAgLSBLaWxsaW5nIG9uZSBl
eHRyYSB2aXJ0dWFsIG1ldGhvZCBjYWxsLgorICAgICAgICAtIE1ha2luZyB0aGUgY29uY2VwdCBv
ZiAib3duZXJzaGlwIG1vdmUiIGNsZWFyZXIgYnkga2VlcGluZyBzdWNoIGFuIG9wZXJhdGlvbiBp
bnRvIHRoZSBzaW5nbGUgbWV0aG9kLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6c2V0RG9jdW1lbnQpOiBVbmlmaWVkIHRoZSBjYWxsLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPd25lckNoYW5nZTo6Tm9kZU93bmVy
Q2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlT3duZXJDaGFuZ2U6Om9sZERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPd25lckNoYW5nZTo6bmV3RG9jdW1lbnQp
OgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYWRFdmVu
dCk6CisgICAgICAgIC0gUGFzcyBEb2N1bWVudCBhcyBhIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFj
Y2Vzc2luZyBpdCBieSB0aGUgZG9jdW1lbnQoKSBnZXR0ZXIuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RG9jdW1lbnRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBl
Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjplbGVtZW50RGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIC0gUmVuYW1lZCBmcm9tIGVsZW1lbnRXaWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudAorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
SW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKwogMjAxMS0xMi0xMiAgS29ucmFkIFBpYXNj
aWsgIDxrcGlhc2Npa0ByaW0uY29tPgogCiAgICAgICAgIDIwMTEtMTItMTIgIEtvbnJhZCBQaWFz
Y2lrICA8a3BpYXNjaWtAcmltLmNvbT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmZTVjNWUxMmMyYTE1
MWUwNDhhZTZhYzYxN2ZhN2U5NjUzN2VhNDcwLi5kZWExNTE2NjMyMmNjOTQ5ZDg1MDQzNjg1N2Nh
ZDdkNGQzODQwNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MjgsMTQgKzQyOCw4IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGJvb2wp
CiB9CiAKICNlbHNlCi0gICAgCi1zdGF0aWMgYm9vbCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dFdhc0NhbGxlZDsKLXN0YXRpYyBib29sIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxs
ZWQ7CiAKLXN0YXRpYyB2b2lkIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVk
KGJvb2wgd2FzQ2FsbGVkKQotewotICAgIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2Fs
bGVkID0gd2FzQ2FsbGVkOwotfQorc3RhdGljIGJvb2wgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dFdhc0NhbGxlZDsKIAogc3RhdGljIHZvaWQgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdh
c0NhbGxlZChib29sIHdhc0NhbGxlZCkKIHsKQEAgLTQ1MiwxOSArNDQ2LDE2IEBAIHZvaWQgTm9k
ZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogCiAgICAgZG9jdW1lbnQtPmd1YXJk
UmVmKCk7CiAKLSAgICBzZXRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChmYWxz
ZSk7Ci0gICAgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBBU1NFUlQod2lsbE1v
dmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwotCiAgICAgaWYgKG1fZG9jdW1lbnQpIHsK
ICAgICAgICAgbV9kb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KHRoaXMs
IGRvY3VtZW50KTsKICAgICAgICAgbV9kb2N1bWVudC0+Z3VhcmREZXJlZigpOwogICAgIH0KIAor
ICAgIERvY3VtZW50KiBvbGREb2N1bWVudCA9IG1fZG9jdW1lbnQ7CiAgICAgbV9kb2N1bWVudCA9
IGRvY3VtZW50OwogCiAgICAgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChm
YWxzZSk7Ci0gICAgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIGRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoTm9kZU93bmVyQ2hhbmdlKG9sZERvY3VtZW50LCBkb2N1bWVudCkpOwog
ICAgIEFTU0VSVChkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKTsKIH0KIApAQCAt
MjQ5OCwxMyArMjQ4OSw3IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiAgICAg
Y2xlYXJJbkRvY3VtZW50KCk7CiB9CiAKLXZvaWQgTm9kZTo6d2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKQotewotICAgIEFTU0VSVCghd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxs
ZWQpOwotICAgIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKHRydWUpOwot
fQotCi12b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBOb2RlOjpk
aWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpCiB7CiAgICAg
QVNTRVJUKCFkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKTsKICAgICBzZXREaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKHRydWUpOwpAQCAtMjUxNSwxNCArMjUwMCwx
NCBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogICAgIGlmIChWZWN0
b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+ID4qIHJlZ2lzdHJ5ID0gbXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByZWdpc3RyeS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChyZWdpc3RyeS0+YXQo
aSktPmlzU3VidHJlZSgpKQotICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPmFkZFN1YnRyZWVN
dXRhdGlvbk9ic2VydmVyVHlwZXMocmVnaXN0cnktPmF0KGkpLT5tdXRhdGlvblR5cGVzKCkpOwor
ICAgICAgICAgICAgICAgIGNoYW5nZS5uZXdEb2N1bWVudCgpLT5hZGRTdWJ0cmVlTXV0YXRpb25P
YnNlcnZlclR5cGVzKHJlZ2lzdHJ5LT5hdChpKS0+bXV0YXRpb25UeXBlcygpKTsKICAgICAgICAg
fQogICAgIH0KIAogICAgIGlmIChIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24q
PiogdHJhbnNpZW50UmVnaXN0cnkgPSB0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnko
KSkgewogICAgICAgICBmb3IgKEhhc2hTZXQ8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbio+
OjppdGVyYXRvciBpdGVyID0gdHJhbnNpZW50UmVnaXN0cnktPmJlZ2luKCk7IGl0ZXIgIT0gdHJh
bnNpZW50UmVnaXN0cnktPmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmICgoKml0ZXIp
LT5pc1N1YnRyZWUoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRTdWJ0cmVlTXV0
YXRpb25PYnNlcnZlclR5cGVzKCgqaXRlciktPm11dGF0aW9uVHlwZXMoKSk7CisgICAgICAgICAg
ICAgICAgY2hhbmdlLm5ld0RvY3VtZW50KCktPmFkZFN1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlw
ZXMoKCppdGVyKS0+bXV0YXRpb25UeXBlcygpKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggZjA1M2Y3YTYwYzhmNjNmNjBkNGI2MTdhNTcxZGFlZDY0NjFmYTU5MC4u
NWZhNTYyYmVkMzYwMmUxYTYwYWJiNzg1MDFhZTMwNjg3N2U2YTE1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBA
IC0xMDEsNiArMTAxLDIyIEBAIGVudW0gU3R5bGVDaGFuZ2VUeXBlIHsKICAgICBTeW50aGV0aWNT
dHlsZUNoYW5nZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQKIH07CiAKK2NsYXNzIE5vZGVP
d25lckNoYW5nZSB7CitwdWJsaWM6CisgICAgTm9kZU93bmVyQ2hhbmdlKERvY3VtZW50KiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KQorICAgICAgICA6IG1fb2xkRG9jdW1lbnQo
b2xkRG9jdW1lbnQpCisgICAgICAgICwgbV9uZXdEb2N1bWVudChuZXdEb2N1bWVudCkKKyAgICB7
CisgICAgfQorCisgICAgRG9jdW1lbnQqIG9sZERvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9v
bGREb2N1bWVudDsgfQorICAgIERvY3VtZW50KiBuZXdEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fbmV3RG9jdW1lbnQ7IH0KKworcHJpdmF0ZToKKyAgICBEb2N1bWVudCogbV9vbGREb2N1bWVu
dDsKKyAgICBEb2N1bWVudCogbV9uZXdEb2N1bWVudDsKK307CisKIGNsYXNzIE5vZGUgOiBwdWJs
aWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVk
PENvbnRhaW5lck5vZGU+IHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAgICAgZnJpZW5k
IGNsYXNzIFRyZWVTY29wZTsKQEAgLTY3NCw4ICs2OTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsK
ICAgICBOb2RlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdCB7
IH0KICAgICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShzaG9ydCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggMWRkYjZhNjVjMjY2MmYw
OThhODMwMzkxZmNiZTExNDAxYWIyMTY2My4uY2FlZjhhMzdlMWJjYzY4OTE0MGUzNGJjZjUxODJl
Y2JmNzFkNWE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcApAQCAtNTIsMTEgKzUyLDExIEBAIFZhbGlkaXR5U3RhdGUqIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6dmFsaWRpdHkoKQogICAgIHJldHVybiBtX3ZhbGlkaXR5U3RhdGUuZ2V0KCk7CiB9
CiAKLXZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpCit2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dChjb25zdCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKGVsZW1lbnQtPmZhc3RIYXNBdHRy
aWJ1dGUoZm9ybUF0dHIpKQotICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT51bnJlZ2lzdGVy
Rm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAgICAgICAgY2hhbmdlLm9sZERv
Y3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3JtQXR0cmlidXRlKHRoaXMpOwog
fQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKaW5kZXggNWE4NjFl
MjcyNjFiNjc1MzhmMDBiMGYyMGEyMjJmODY1NGM0MzU0Mi4uNGUxNDE5YjAyM2I4NjM1OWNhYjYz
YWI1NGQ5ZTIwMzQ1MjlmMGQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lh
dGVkRWxlbWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJlbW92
ZWRGcm9tVHJlZSgpOwogICAgIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2b2lk
IHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLSAgICB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25l
ckNoYW5nZSYpOwogCiAgICAgdm9pZCBzZXRGb3JtKEhUTUxGb3JtRWxlbWVudCogZm9ybSkgeyBt
X2Zvcm0gPSBmb3JtOyB9CiAgICAgdm9pZCByZW1vdmVGcm9tRm9ybSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMDcwNDQ0ODc2MmJi
M2M5MmM0MDExYTEzYzVjZjQ2OWVmOGI2YzQyZS4uZDFmYWVkNjhhOTljOGU4ZjQ2ZmE2YjE0MzVh
NmRkNDRhYjVmMmNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCkBAIC0xOTYsMTAgKzE5NiwxMCBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmF0dGFjaCgpCiAgICAgcmVzdW1lUG9zdEF0dGFjaENhbGxiYWNrcygpOwogfQogCi12
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkK
K3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChj
b25zdCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgSFRNTEVsZW1lbnQ6OndpbGxN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5nZSk7CisgICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKQEAgLTUxMiwxNiArNTEyLDEyIEBAIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6On5IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlKCkKICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoU3RhdGUo
dGhpcyk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6d2lsbE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hh
bmdlKQogewotICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0ZSh0
aGlzKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpOwotfQotCi12b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpZE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKQotewotICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9ybUVs
ZW1lbnRXaXRoU3RhdGUodGhpcyk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIGlmIChjaGFuZ2Uub2xkRG9jdW1lbnQoKSkKKyAg
ICAgICAgY2hhbmdlLm9sZERvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0
ZSh0aGlzKTsKKyAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JtRWxlbWVudFdp
dGhTdGF0ZSh0aGlzKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdP
d25lckRvY3VtZW50KGNoYW5nZSk7CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZTo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZmQ1MmNjYTA4OTkxMjY2YmNkMmViNWEw
ZGQ0NjJiYjllNjBiMWU1OC4uZGM2MTJjYWQ2NjU5NTE4MmMzZmI4ODY3NmZiMGQ1ZmY4N2RjMmUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAg
LTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
VHJlZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgp
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1v
dmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xOYW1lKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKQEAgLTE4Miw4ICsxODIsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIHNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDJlYTkxMDBmNGE3YjMyMWU3
ZjA1MGM4ZWMwN2JlZDRhZTc5Njg1MWYuLmZlOTRlNzA2M2RkNWE3MDI1NDQwNTQ2MjU0N2M0MzY4
M2QwMmFiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTY0
NywxOCArNjQ3LDE1IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpkb2N1bWVudERpZEJlY29tZUFj
dGl2ZSgpCiAgICAgfQogfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6d2lsbE1vdmVUb05ld093
bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgaWYgKCFzaG91bGRB
dXRvY29tcGxldGUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKLSAgICBIVE1MRWxlbWVudDo6d2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKLX0KKyAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgpKSB7Cisg
ICAgICAgIGlmIChjaGFuZ2Uub2xkRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGNoYW5nZS5vbGRE
b2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMp
OworICAgICAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2
YXRpb25DYWxsYmFja3ModGhpcyk7CisgICAgfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6ZGlk
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCi17Ci0gICAgaWYgKCFzaG91bGRBdXRvY29tcGxldGUo
KSkKLSAgICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxs
YmFja3ModGhpcyk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwog
fQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDg0M2E5ODZhODliNmNlZTBhNzRj
ZDM5OWM2ZTU4NzljNTQ2YzM2ZGMuLmQxZmFkMmY3N2Y2N2EwNDJjYjAxNjMxZDZjNjczZGMyNGNj
ODQ2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMTI4LDggKzEy
OCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3Rp
dmUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVh
bCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7
CiAKICAgICB2b2lkIHN1Ym1pdChFdmVudCosIGJvb2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJv
b2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCAzMmYzNWVjNzU5MWNkODdm
OTUyZDdjZjBmYTJlMmNkMGMzN2YzYjc5Li4zN2MzYTdhNzlkYmI1NTY1YWNhYWQ2ODRhYmYwNGJm
NzNjOWRjM2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAg
LTM4NSwxMCArMzg1LDEwIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zCiAgICAgYWRkU3VicmVz
b3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHVzZW1h
cEF0dHIpKSk7CiB9CiAKLXZvaWQgSFRNTEltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewotICAgIG1faW1hZ2VMb2FkZXIu
ZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgSFRNTEVsZW1lbnQ6Ondp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgbV9pbWFnZUxvYWRlci5lbGVtZW50RGlk
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdP
d25lckRvY3VtZW50KGNoYW5nZSk7CiB9CiAKIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNTZXJ2
ZXJNYXAoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA5
YmVjOWQ4MGI3Mjk3MmNlYzljY2MzYzJmMzI0OGJhYzFjMjY3YjI0Li41ZDI3YjRiM2JlM2FlZGE0
ZTMzOTU5YjQ4OTE4ZTYxMTAyZmQ0MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTElt
YWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1l
bnQqID0gMCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2Rl
T3duZXJDaGFuZ2UmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3Vs
dCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA0
ODExM2I1N2RiZWNmYjQ4Y2Y2NzE5YmE3MGQ2ZTE1MzAwODA0ZjM4Li5mODc3NjY4NGFkMDAzMmVm
Yjg5NGNkMDRhYzlkMTkwZTg1OWIwN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKQEAgLTE1MDUsMjQgKzE1MDUsMjMgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBIVE1M
SW5wdXRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdl
JiBjaGFuZ2UpCiB7CiAgICAgbV9pbnB1dFR5cGUtPndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCk7CisgICAgaWYgKGNoYW5nZS5vbGREb2N1bWVudCgpKSB7CisgICAgICAgIC8vIEFsd2F5cyB1
bnJlZ2lzdGVyIGZvciBjYWNoZSBjYWxsYmFja3Mgd2hlbiBsZWF2aW5nIGEgZG9jdW1lbnQsIGV2
ZW4gaWYgd2Ugd291bGQgb3RoZXJ3aXNlIGxpa2UgdG8gYmUgcmVnaXN0ZXJlZAorICAgICAgICBp
ZiAobmVlZHNBY3RpdmF0aW9uQ2FsbGJhY2soKSkKKyAgICAgICAgICAgIGNoYW5nZS5vbGREb2N1
bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwor
ICAgICAgICBjaGFuZ2Uub2xkRG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92
ZUJ1dHRvbih0aGlzKTsKKyAgICB9CiAKLSAgICAvLyBBbHdheXMgdW5yZWdpc3RlciBmb3IgY2Fj
aGUgY2FsbGJhY2tzIHdoZW4gbGVhdmluZyBhIGRvY3VtZW50LCBldmVuIGlmIHdlIHdvdWxkIG90
aGVyd2lzZSBsaWtlIHRvIGJlIHJlZ2lzdGVyZWQKLSAgICBpZiAobmVlZHNBY3RpdmF0aW9uQ2Fs
bGJhY2soKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZh
dGlvbkNhbGxiYWNrcyh0aGlzKTsKLQotICAgIGRvY3VtZW50KCktPmNoZWNrZWRSYWRpb0J1dHRv
bnMoKS5yZW1vdmVCdXR0b24odGhpcyk7Ci0KLSAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLX0KLQotdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKLXsKLSAgICByZWdpc3RlckZvckFjdGl2
YXRpb25DYWxsYmFja0lmTmVlZGVkKCk7CisgICAgaWYgKCFuZWVkc0FjdGl2YXRpb25DYWxsYmFj
aygpKSB7CisgICAgICAgIGlmIChjaGFuZ2Uub2xkRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGNo
YW5nZS5vbGREb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJh
Y2tzKHRoaXMpOworICAgICAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7CisgICAgfQogCi0gICAgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwog
fQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKaW5kZXggY2Y5YWI1ZTA5YWM5YzhhMDU0MTE2ODRhNDMyYmY3ZDM1YmQwOThhNS4u
ZmM3YjFiZmZjYzVkNjBmZWYyN2JkZGQ5ZmY1YzY0ZTdmZGNkM2E0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI0OSw4ICsyNDksNyBAQCBwcml2YXRlOgogICAg
IGVudW0gQXV0b0NvbXBsZXRlU2V0dGluZyB7IFVuaW5pdGlhbGl6ZWQsIE9uLCBPZmYgfTsKICAg
ICBlbnVtIEFueVN0ZXBIYW5kbGluZyB7IFJlamVjdEFueSwgQW55SXNEZWZhdWx0U3RlcCB9Owog
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGQxNjRjOGVkYjRmOTBmNDAwMTAyMDNh
YWU4ODgyNjJmMWRjYzg4NS4uZTNmNjgzYjJlMWNkNjNlNzhjZjM0MTkwYmNiNDdkODJmMzE3MTVh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNzYsMjcg
KzI3NiwyNSBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgcmVt
b3ZlRWxlbWVudEZyb21Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCgpKTsKIH0KIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hh
bmdlJiBjaGFuZ2UpCiB7Ci0gICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQot
ICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7Ci0g
ICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwotICAgIGRvY3VtZW50KCktPnVucmVn
aXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgZG9jdW1lbnQo
KS0+dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOwotICAgIHJlbW92ZUVs
ZW1lbnRGcm9tRG9jdW1lbnRNYXAodGhpcywgZG9jdW1lbnQoKSk7Ci0gICAgSFRNTEVsZW1lbnQ6
OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci19CisgICAgaWYgKGNoYW5nZS5vbGREb2N1
bWVudCgpKSB7CisgICAgICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKKyAg
ICAgICAgICAgIGNoYW5nZS5vbGREb2N1bWVudCgpLT5yZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIodGhpcyk7CisgICAgICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGNoYW5nZS5vbGREb2N1
bWVudCgpLCBmYWxzZSk7CisgICAgICAgIGNoYW5nZS5vbGREb2N1bWVudCgpLT51bnJlZ2lzdGVy
Rm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBjaGFuZ2Uub2xk
RG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOworICAg
ICAgICByZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRoaXMsIGNoYW5nZS5vbGREb2N1bWVu
dCgpKTsKKyAgICB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJE
b2N1bWVudCgpCi17CiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQotICAg
ICAgICBkb2N1bWVudCgpLT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7CisgICAgICAg
ICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwog
ICAgIGlmIChtX3JlYWR5U3RhdGUgPCBIQVZFX0NVUlJFTlRfREFUQSkKLSAgICAgICAgc2V0U2hv
dWxkRGVsYXlMb2FkRXZlbnQodHJ1ZSk7Ci0gICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJG
b3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKLSAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1h
cCh0aGlzLCBkb2N1bWVudCgpKTsKLSAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJE
b2N1bWVudCgpOworICAgICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChjaGFuZ2UubmV3RG9j
dW1lbnQoKSwgdHJ1ZSk7CisgICAgY2hhbmdlLm5ld0RvY3VtZW50KCktPnJlZ2lzdGVyRm9yRG9j
dW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgIGNoYW5nZS5uZXdEb2N1bWVudCgp
LT5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOworICAgIGFkZEVsZW1lbnRU
b0RvY3VtZW50TWFwKHRoaXMsIGNoYW5nZS5uZXdEb2N1bWVudCgpKTsKKyAgICBIVE1MRWxlbWVu
dDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQogCiBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdApAQCAtMzIwMyw2ICszMjAxLDExIEBAIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyaWJ1dGUp
IGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQo
Ym9vbCBzaG91bGREZWxheSkKIHsKKyAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChkb2N1bWVu
dCgpLCBzaG91bGREZWxheSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxk
RGVsYXlMb2FkRXZlbnQoRG9jdW1lbnQqIGRvYywgYm9vbCBzaG91bGREZWxheSkKK3sKICAgICBp
ZiAobV9zaG91bGREZWxheUxvYWRFdmVudCA9PSBzaG91bGREZWxheSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zMjEwLDkgKzMyMTMsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3Vs
ZERlbGF5TG9hZEV2ZW50KGJvb2wgc2hvdWxkRGVsYXkpCiAKICAgICBtX3Nob3VsZERlbGF5TG9h
ZEV2ZW50ID0gc2hvdWxkRGVsYXk7CiAgICAgaWYgKHNob3VsZERlbGF5KQotICAgICAgICBkb2N1
bWVudCgpLT5pbmNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CisgICAgICAgIGRvYy0+aW5j
cmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIGVsc2UKLSAgICAgICAgZG9jdW1lbnQo
KS0+ZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOworICAgICAgICBkb2MtPmRlY3JlbWVu
dExvYWRFdmVudERlbGF5Q291bnQoKTsKIH0KICAgICAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAppbmRleCA0YjM2OThiZGZmYzY5NTNmMTY4NTdiMGJmZTJkYTAxNTg5MzM1
YjJmLi4yNmVhYmVmNDk3ODViODJmNTExM2RlZWVhZThlYWFiNjc3NDczYTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjczLDggKzI3Myw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25z
dCBOb2RlT3duZXJDaGFuZ2UmKTsKIAogICAgIGVudW0gRGlzcGxheU1vZGUgeyBVbmtub3duLCBO
b25lLCBQb3N0ZXIsIFBvc3RlcldhaXRpbmdGb3JWaWRlbywgVmlkZW8gfTsKICAgICBEaXNwbGF5
TW9kZSBkaXNwbGF5TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU1vZGU7IH0KQEAgLTQy
Myw3ICs0MjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7
CiAKICAgICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJvb2wpOwotCisgICAgdm9pZCBz
ZXRTaG91bGREZWxheUxvYWRFdmVudChEb2N1bWVudCosIGJvb2wpOwogICAgIHZvaWQgaW52YWxp
ZGF0ZUNhY2hlZFRpbWUoKTsKICAgICB2b2lkIHJlZnJlc2hDYWNoZWRUaW1lKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZTc3ZTAyYjQ2
MjhhZGMyZjhmODczMmI2YThhNWVjNzlhMjY3OTYzZS4uZDQ4YmNhN2UwZDc2ZGE4NmYxMGUwM2Nm
MGFmMTkyMzI2ZDFlNWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5jcHAKQEAgLTUxMiwxMCArNTEyLDEwIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uCiAgICAg
ICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVzZU1h
cCkpOwogfQogCi12b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpCit2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50
KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewotICAgIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOworICAgIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAog
dm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggZGNlYzVjZjBmODY3YWY0NDYz
OTU2MGFlNTMwMzNhYTViMDhiNDFiNy4uZmEzNDAzOGZjOTBjZjM5YjAyNDRiYWM3NzZmMzdmOThh
OTgyYTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNzMs
OCArNzMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICAKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFu
Z2UmKTsKKwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2Ug
PSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxB
dHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxNGE1NWIyYTI5OGFiZDIyYWIwNTNkNDFmYjk4
NTI3N2JjMzBiM2ZmLi5kNWJhZjllNTZkNzk0OGJlODM2ZGNkMTZkMTUwZTI2YjA3ZDFkMjkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAg
LTIwMiwxNSArMjAyLDE0IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZmluaXNoUGFy
c2luZ0NoaWxkcmVuKCkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOyAgICAKIH0KIAot
dm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
Cit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQo
Y29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgaWYgKG1fbmVlZHNEb2N1bWVu
dEFjdGl2YXRpb25DYWxsYmFja3MpCiAgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JE
b2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7CiAKICAgICBpZiAobV9pbWFnZUxvYWRl
cikKLSAgICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7Ci0KLSAgICBIVE1MUGx1Z0luRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudERpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dChjaGFuZ2UpOwogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuaAppbmRleCA5ZTQ4NWU4OGViNzBhZWM2NGM3MzcwOTBhZGVjMTA1NTVkMmY0ZDM0Li5m
OWY1NmFiNGU0Nzk4MDg3ZjUxZDJlZDE1YTM2NzZmODQ4YmFhZTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaApAQCAtNzMsMTQgKzczLDE2IEBAIHBy
b3RlY3RlZDoKICAgICBib29sIGFsbG93ZWRUb0xvYWRGcmFtZVVSTChjb25zdCBTdHJpbmcmIHVy
bCk7CiAgICAgYm9vbCB3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJikgT1ZFUlJJREU7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCkgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVy
ZXIoKSBPVkVSUklERTsKIAorCisKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggMzEwN2QxNTJlODhkOTU3OTc2YmY2MzgxNGUxMGZl
MDEwNDYxZDM2Yi4uZDIwNDY4ZjIyOTc0ZmQ4MThhN2Q2MDBlZjY0OGU4NDU0NTEwNWM3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0yNzEsMTEgKzI3MSwx
MSBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuKCkK
ICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCk7CiB9CiAKLXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewog
ICAgIGlmIChtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50V2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50RGlk
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TVEFUSVNU
SUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCA4MmQwNjU5MTA5
MTcyMWM1NTY3ZTVhZGQzMjA5NWRlMWJkMjgxMzgyLi5kZjYwMDI1M2VhNjVlZmFjMTUwMjIyMzg3
ZDgxOTI5YmRmMTlmZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApA
QCAtODQsOSArODQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGhhc0F2YWlsYWJs
ZVZpZGVvRnJhbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVN0YXRl
KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25l
ckNoYW5nZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXREaXNwbGF5TW9kZShEaXNwbGF5TW9kZSk7
CiAKICAgICBPd25QdHI8SFRNTEltYWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggN2RiMWFjMzI1NzEwZjAzZTY2NTdlNTIyNDhl
ZWMzMGU4Y2YzOWVjZC4uMGJkZWU5YWZlNjQ5ZmFmZjAxNzZjOGY3NzFlMDE0OTJjMjg2ZDQ5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICB2aXJ0dWFsIH5JbWFnZURvY3VtZW50RWxlbWVudCgpOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYp
OwogCiAgICAgSW1hZ2VEb2N1bWVudCogbV9pbWFnZURvY3VtZW50OwogfTsKQEAgLTQwNywxMyAr
NDA3LDEzIEBAIEltYWdlRG9jdW1lbnRFbGVtZW50Ojp+SW1hZ2VEb2N1bWVudEVsZW1lbnQoKQog
ICAgICAgICBtX2ltYWdlRG9jdW1lbnQtPmRpc2Nvbm5lY3RJbWFnZUVsZW1lbnQoKTsKIH0KIAot
dm9pZCBJbWFnZURvY3VtZW50RWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQor
dm9pZCBJbWFnZURvY3VtZW50RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25z
dCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBpZiAobV9pbWFnZURvY3VtZW50KSB7
CiAgICAgICAgIG1faW1hZ2VEb2N1bWVudC0+ZGlzY29ubmVjdEltYWdlRWxlbWVudCgpOwogICAg
ICAgICBtX2ltYWdlRG9jdW1lbnQgPSAwOwogICAgIH0KLSAgICBIVE1MSW1hZ2VFbGVtZW50Ojp3
aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1v
dmVUb05ld093bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlSW5wdXRUeXBlLmNwcAppbmRleCA5MGQ3YmI5YWNhMjM4YWIyZTI3ZTIzNzQyOTVhOTgyYWU2
ZWYxYTZhLi5hMTE4ZGE3NDI4NDkyYTRkY2RlYzJhNDU3MDEyZTg1OTYwNTc4ODBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQg
SW1hZ2VJbnB1dFR5cGU6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKIHsKICAgICBCYXNl
QnV0dG9uSW5wdXRUeXBlOjp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIGlmICht
X2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50V2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudERpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKIH0KIAogYm9vbCBJbWFnZUlucHV0VHlwZTo6c2hvdWxkUmVz
cGVjdEFsaWduQXR0cmlidXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmlu
ZGV4IDgyMGNmZDNmYjlhOGRlOTYwNjY2OWZmNDhiYzY4ZGI4YjA1MTJiZmQuLjM4MjRmYzAyMWZi
NGEwMjY4MTAxNGExYmFmNzdhMTg4ZDNkN2ZkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNo
UGVuZGluZ0xvYWRFdmVudHMoKQogICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGlu
Z0V2ZW50cygpOwogfQogCi12b2lkIEltYWdlTG9hZGVyOjplbGVtZW50V2lsbE1vdmVUb05ld093
bmVyRG9jdW1lbnQoKQordm9pZCBJbWFnZUxvYWRlcjo6ZWxlbWVudERpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQogewogICAgIHNldEltYWdlKDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VM
b2FkZXIuaAppbmRleCBlODVmMWQxMWU2NjI0MDg0MWRmNmFiNWRkZjA1OGNjNTI4YWM5YmJhLi5i
NjdmYjQ4ZWY5ZGIyMWEyMzAyNTA3YTU3ZmVjNDYyZGYwYjNhN2RjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgLy8gZG9lc24n
dCBjaGFuZ2U7IHN0YXJ0cyBuZXcgbG9hZCB1bmNvbmRpdGlvbmFsbHkgKG1hdGNoZXMgRmlyZWZv
eCBhbmQgT3BlcmEgYmVoYXZpb3IpLgogICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnRJZ25vcmlu
Z1ByZXZpb3VzRXJyb3IoKTsKIAotICAgIHZvaWQgZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7CisgICAgdm9pZCBlbGVtZW50RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwog
CiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAg
IGJvb2wgaW1hZ2VDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VDb21wbGV0ZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhZjRjMjcwNzdiNDU5NTBi
YmQyNTVhNmE0NDA0ZTc5ODM0N2EwMzdkLi5lY2ZhNjA5ZTk0ZThjMDlkZGNiNjU4OGNiN2MwNDNm
ZjdmZTA4Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMjE1
LDEyICsyMTUsMTMgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKICAgICBhZGRTdWJyZXNvdXJj
ZVVSTCh1cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKCkpKTsKIH0KIAotdm9pZCBT
VkdJbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgU1ZHSW1h
Z2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5n
ZSYgY2hhbmdlKQogewotICAgIG1faW1hZ2VMb2FkZXIuZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCk7Ci0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OndpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgbV9pbWFnZUxvYWRlci5lbGVtZW50RGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpk
aWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5nZSk7CiB9CiAKKwogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCBmOTdlMWQ5
MjliZWUxNDM5MDE1ODZkZTQxZjczYzQyNWE5OGRmNjA4Li44YzI4NTM1Yzg5NTllODcwNWYyMWNi
YzY1ZmFlNzg5MDk0NGM1NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBA
IC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1
aXJlZFJlc291cmNlcygpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0
aHMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2Rl
T3duZXJDaGFuZ2UmKTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdJbWFnZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggN2Y3NTU0Nzk3NDNiNjYxZTI5NjNm
ZThkMDg0NDlmODUyNjUxYWUxYS4uODEwZThlNWI5ZWUyZWY0ZTgxZDkyMGMzN2FlMDEyMWRiMTQ0
M2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTA2LDE2ICsxMDYs
MTIgQEAgU1ZHU1ZHRWxlbWVudDo6flNWR1NWR0VsZW1lbnQoKQogICAgIGRvY3VtZW50KCktPmFj
Y2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlVGltZUNvbnRhaW5lcih0aGlzKTsKIH0KIAotdm9p
ZCBTVkdTVkdFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIFNWR1NW
R0VsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdl
JiBjaGFuZ2UpCiB7Ci0gICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZh
dGlvbkNhbGxiYWNrcyh0aGlzKTsKLSAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Ojp3aWxs
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotfQotCi12b2lkIFNWR1NWR0VsZW1lbnQ6OmRpZE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKQotewotICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yRG9j
dW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwotICAgIFNWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBpZiAoY2hhbmdlLm9sZERv
Y3VtZW50KCkpCisgICAgICAgIGNoYW5nZS5vbGREb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9j
dW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgIGNoYW5nZS5uZXdEb2N1bWVudCgp
LT5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICBTVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5nZSk7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFNjcmlwdFR5
cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggZjYxNzBhYzExZTBl
NTc5YTgyY2E2YmM5MTVkYzRlMGE3N2ZhOTk4ZS4uMTY1MzNkNDRjYzlmMmRmYTljOTkzM2Q5ZTAx
Njg3YTIyN2ZiZGE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0xMjYsOCAr
MTI2LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChj
b25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKIAogcHJpdmF0ZToKICAgICBTVkdTVkdFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119137</attachid>
            <date>2011-12-13 19:10:02 -0800</date>
            <delta_ts>2011-12-22 03:31:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74067-20111214121000.patch</filename>
            <type>text/plain</type>
            <size>33408</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQyODliZjIwNTU4ZDQy
ZDAyZWI0ZmI4ZGQwZmRjOGU1OGU4NzVkYS4uMDc3ODFkNmQ4NjliYzBmMTUyYWI2YmZmM2U1OTcy
NWI1MGRhMjg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDExLTEyLTA4ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2NworICAgICAgICBSZWZhY3RvcmluZzog
VW5pdGZ5IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgYW5kIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGNvbWJpbmVzIHR3byBtZXRob2QgTm9kZTo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KSBhbmQgTm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCisgICAgICAgIGludG8gTm9k
ZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKS4KKyAg
ICAgICAgTm90ZSB0aGF0IG5ld2x5IGludHJvZHVjZWQgTm9kZU93bmVyQ2hhbmdlIG9iamVjdCBo
b2xkcyBib3RoIG9sZCBhbmQgbmV3IG93bmVyIGRvY3VtZW50cy4KKworICAgICAgICBUaGUgaW50
ZW50aW9uIG9mIHRoaXMgY2hhbmdlIGlzOgorICAgICAgICAtIE1ha2luZyB1cGNvbWluZyByZWZh
Y3RvcmluZyAoQnVnIDU5ODE2KSBwb3NzaWJsZS4gVGhlIHJlZmFjdG9yaW5nIHdpbGwgdHVybiBO
b2RlOjptX2RvY3VtZW50IGludG8KKyAgICAgICAgICBOb2RlOjptX3RyZWVTY29wZSwgYW5kIHdl
IHdpbGwgbm8gbG9uZ2VyIGhhdmUgTm9kZTo6c2V0RG9jdW1lbnQoKSB3aGVyZSB3ZSBjYW4gaW52
b2tlIGJvdGgKKyAgICAgICAgICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpIGFuZCBkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkgYXQgb25jZS4KKyAgICAgICAgLSBLaWxsaW5nIG9uZSBl
eHRyYSB2aXJ0dWFsIG1ldGhvZCBjYWxsLgorICAgICAgICAtIE1ha2luZyB0aGUgY29uY2VwdCBv
ZiAib3duZXJzaGlwIG1vdmUiIGNsZWFyZXIgYnkga2VlcGluZyBzdWNoIGFuIG9wZXJhdGlvbiBp
bnRvIHRoZSBzaW5nbGUgbWV0aG9kLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6c2V0RG9jdW1lbnQpOiBVbmlmaWVkIHRoZSBjYWxsLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPd25lckNoYW5nZTo6Tm9kZU93bmVy
Q2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlT3duZXJDaGFuZ2U6Om9sZERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPd25lckNoYW5nZTo6bmV3RG9jdW1lbnQp
OgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYWRFdmVu
dCk6CisgICAgICAgIC0gUGFzcyBEb2N1bWVudCBhcyBhIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFj
Y2Vzc2luZyBpdCBieSB0aGUgZG9jdW1lbnQoKSBnZXR0ZXIuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RG9jdW1lbnRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBl
Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjplbGVtZW50RGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIC0gUmVuYW1lZCBmcm9tIGVsZW1lbnRXaWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudAorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
SW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKwogMjAxMS0xMi0xMyAgQWRyaWVubmUgV2Fs
a2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIEhhc2hNYXA8
Li4uLCBPd25QdHI8VGlsZT4+IGZvciBjb21wb3NpdG9yIHRpbGVtYXAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCAxMTU4NjdlNThiNjcyYjI3NTBjZmEyNTFiM2JkNGQwYTdjNDgzMDFmLi5iNzFjYWQ5YjUw
MTA2ZDM4M2QwYmNmOGU0Mjk5ZDkzZjQxMDNlNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00Mjgs
MTQgKzQyOCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50V2FzQ2FsbGVkKGJvb2wpCiB9CiAKICNlbHNlCi0gICAgCi1zdGF0aWMgYm9vbCB3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZDsKLXN0YXRpYyBib29sIGRpZE1vdmVUb05ld093
bmVyRG9jdW1lbnRXYXNDYWxsZWQ7CiAKLXN0YXRpYyB2b2lkIHNldFdpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50V2FzQ2FsbGVkKGJvb2wgd2FzQ2FsbGVkKQotewotICAgIHdpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50V2FzQ2FsbGVkID0gd2FzQ2FsbGVkOwotfQorc3RhdGljIGJvb2wgZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZDsKIAogc3RhdGljIHZvaWQgc2V0RGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChib29sIHdhc0NhbGxlZCkKIHsKQEAgLTQ1MiwxOSAr
NDQ2LDE2IEBAIHZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogCiAg
ICAgZG9jdW1lbnQtPmd1YXJkUmVmKCk7CiAKLSAgICBzZXRXaWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudFdhc0NhbGxlZChmYWxzZSk7Ci0gICAgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
LSAgICBBU1NFUlQod2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwotCiAgICAg
aWYgKG1fZG9jdW1lbnQpIHsKICAgICAgICAgbV9kb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNU
b05ld0RvY3VtZW50KHRoaXMsIGRvY3VtZW50KTsKICAgICAgICAgbV9kb2N1bWVudC0+Z3VhcmRE
ZXJlZigpOwogICAgIH0KIAorICAgIERvY3VtZW50KiBvbGREb2N1bWVudCA9IG1fZG9jdW1lbnQ7
CiAgICAgbV9kb2N1bWVudCA9IGRvY3VtZW50OwogCiAgICAgc2V0RGlkTW92ZVRvTmV3T3duZXJE
b2N1bWVudFdhc0NhbGxlZChmYWxzZSk7Ci0gICAgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
OworICAgIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoTm9kZU93bmVyQ2hhbmdlKG9sZERvY3Vt
ZW50LCBkb2N1bWVudCkpOwogICAgIEFTU0VSVChkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2Fz
Q2FsbGVkKTsKIH0KIApAQCAtMjQ5OCwxMyArMjQ4OSw3IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZEZy
b21Eb2N1bWVudCgpCiAgICAgY2xlYXJJbkRvY3VtZW50KCk7CiB9CiAKLXZvaWQgTm9kZTo6d2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQotewotICAgIEFTU0VSVCghd2lsbE1vdmVUb05ld093
bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwotICAgIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
V2FzQ2FsbGVkKHRydWUpOwotfQotCi12b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKQordm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25l
ckNoYW5nZSYpCiB7CiAgICAgQVNTRVJUKCFkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2Fs
bGVkKTsKICAgICBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKHRydWUpOwpA
QCAtMjUxNSwxNCArMjUwMCwxNCBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKQogICAgIGlmIChWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+
ID4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByZWdpc3RyeS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IGlmIChyZWdpc3RyeS0+YXQoaSktPmlzU3VidHJlZSgpKQotICAgICAgICAgICAgICAgIGRvY3Vt
ZW50KCktPmFkZFN1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXMocmVnaXN0cnktPmF0KGkpLT5t
dXRhdGlvblR5cGVzKCkpOworICAgICAgICAgICAgICAgIGNoYW5nZS5uZXdEb2N1bWVudCgpLT5h
ZGRTdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lzdHJ5LT5hdChpKS0+bXV0YXRpb25U
eXBlcygpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChIYXNoU2V0PE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24qPiogdHJhbnNpZW50UmVnaXN0cnkgPSB0cmFuc2llbnRNdXRhdGlv
bk9ic2VydmVyUmVnaXN0cnkoKSkgewogICAgICAgICBmb3IgKEhhc2hTZXQ8TXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbio+OjppdGVyYXRvciBpdGVyID0gdHJhbnNpZW50UmVnaXN0cnktPmJl
Z2luKCk7IGl0ZXIgIT0gdHJhbnNpZW50UmVnaXN0cnktPmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgICAgIGlmICgoKml0ZXIpLT5pc1N1YnRyZWUoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVu
dCgpLT5hZGRTdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKCgqaXRlciktPm11dGF0aW9uVHlw
ZXMoKSk7CisgICAgICAgICAgICAgICAgY2hhbmdlLm5ld0RvY3VtZW50KCktPmFkZFN1YnRyZWVN
dXRhdGlvbk9ic2VydmVyVHlwZXMoKCppdGVyKS0+bXV0YXRpb25UeXBlcygpKTsKICAgICAgICAg
fQogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMjEwNzY1ODBiZjE3YmQ1NjQzNjhiM2Mz
ODExZWE0OGY5NzZjOTdhYi4uYjQ1NGY3MGEwMDk3MDQ0NWM0ZmM0M2RjZGRmM2Y4ZTVmOGRjMzFm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCkBAIC0xMDEsNiArMTAxLDIyIEBAIGVudW0gU3R5bGVDaGFuZ2VUeXBl
IHsKICAgICBTeW50aGV0aWNTdHlsZUNoYW5nZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQK
IH07CiAKK2NsYXNzIE5vZGVPd25lckNoYW5nZSB7CitwdWJsaWM6CisgICAgTm9kZU93bmVyQ2hh
bmdlKERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KQorICAgICAg
ICA6IG1fb2xkRG9jdW1lbnQob2xkRG9jdW1lbnQpCisgICAgICAgICwgbV9uZXdEb2N1bWVudChu
ZXdEb2N1bWVudCkKKyAgICB7CisgICAgfQorCisgICAgRG9jdW1lbnQqIG9sZERvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9vbGREb2N1bWVudDsgfQorICAgIERvY3VtZW50KiBuZXdEb2N1bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3RG9jdW1lbnQ7IH0KKworcHJpdmF0ZToKKyAgICBEb2N1
bWVudCogbV9vbGREb2N1bWVudDsKKyAgICBEb2N1bWVudCogbV9uZXdEb2N1bWVudDsKK307CisK
IGNsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUs
IHB1YmxpYyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+IHsKICAgICBmcmllbmQgY2xhc3MgRG9j
dW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKQEAgLTY3NSw4ICs2OTEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgfTsKICAgICBOb2RlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mKSBjb25zdCB7IH0KICAgICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRseShzaG9y
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5k
ZXggMWRkYjZhNjVjMjY2MmYwOThhODMwMzkxZmNiZTExNDAxYWIyMTY2My4uY2FlZjhhMzdlMWJj
YzY4OTE0MGUzNGJjZjUxODJlY2JmNzFkNWE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtNTIsMTEgKzUyLDExIEBAIFZhbGlkaXR5U3Rh
dGUqIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRpdHkoKQogICAgIHJldHVybiBtX3ZhbGlk
aXR5U3RhdGUuZ2V0KCk7CiB9CiAKLXZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKICAg
ICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7CiAgICAgaWYgKGVs
ZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQotICAgICAgICBlbGVtZW50LT5kb2N1
bWVudCgpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoRm9ybUF0dHJpYnV0ZSh0aGlzKTsKKyAg
ICAgICAgY2hhbmdlLm9sZERvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhGb3Jt
QXR0cmlidXRlKHRoaXMpOwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNz
b2NpYXRlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmgKaW5kZXggNWE4NjFlMjcyNjFiNjc1MzhmMDBiMGYyMGEyMjJmODY1NGM0MzU0Mi4uNGUx
NDE5YjAyM2I4NjM1OWNhYjYzYWI1NGQ5ZTIwMzQ1MjlmMGQwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHJlbW92ZWRGcm9tVHJlZSgpOwogICAgIHZvaWQgaW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLSAgICB2b2lkIHdpbGxN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpOwogCiAgICAgdm9pZCBzZXRGb3JtKEhUTUxGb3Jt
RWxlbWVudCogZm9ybSkgeyBtX2Zvcm0gPSBmb3JtOyB9CiAgICAgdm9pZCByZW1vdmVGcm9tRm9y
bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAK
aW5kZXggMDcwNDQ0ODc2MmJiM2M5MmM0MDExYTEzYzVjZjQ2OWVmOGI2YzQyZS4uZDFmYWVkNjhh
OTljOGU4ZjQ2ZmE2YjE0MzVhNmRkNDRhYjVmMmNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0xOTYsMTAgKzE5NiwxMCBAQCB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF0dGFjaCgpCiAgICAgcmVzdW1lUG9zdEF0dGFjaENh
bGxiYWNrcygpOwogfQogCi12b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OndpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAg
SFRNTEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgRm9ybUFzc29j
aWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5nZSk7CisgICAgSFRN
TEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogdm9pZCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKQEAgLTUx
MiwxNiArNTEyLDEyIEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6On5IVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKCkKICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9y
bUVsZW1lbnRXaXRoU3RhdGUodGhpcyk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZTo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5v
ZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewotICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3Jt
RWxlbWVudFdpdGhTdGF0ZSh0aGlzKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxs
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotfQotCi12b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQotewotICAgIGRvY3VtZW50
KCktPnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoU3RhdGUodGhpcyk7Ci0gICAgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIGlmIChjaGFuZ2Uu
b2xkRG9jdW1lbnQoKSkKKyAgICAgICAgY2hhbmdlLm9sZERvY3VtZW50KCktPnVucmVnaXN0ZXJG
b3JtRWxlbWVudFdpdGhTdGF0ZSh0aGlzKTsKKyAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVn
aXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0ZSh0aGlzKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5nZSk7CiB9CiAKIGJvb2wgSFRNTEZv
cm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZmQ1MmNj
YTA4OTkxMjY2YmNkMmViNWEwZGQ0NjJiYjllNjBiMWU1OC4uZGM2MTJjYWQ2NjU5NTE4MmMzZmI4
ODY3NmZiMGQ1ZmY4N2RjMmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmgKQEAgLTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgdm9pZCBpbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAg
dmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hh
bmdlJik7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xOYW1l
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdDsKQEAgLTE4
Miw4ICsxODIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2Nv
bXBsZXRlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
OwotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lk
IGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xT
dGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4
IDJlYTkxMDBmNGE3YjMyMWU3ZjA1MGM4ZWMwN2JlZDRhZTc5Njg1MWYuLmZlOTRlNzA2M2RkNWE3
MDI1NDQwNTQ2MjU0N2M0MzY4M2QwMmFiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKQEAgLTY0NywxOCArNjQ3LDE1IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpk
b2N1bWVudERpZEJlY29tZUFjdGl2ZSgpCiAgICAgfQogfQogCi12b2lkIEhUTUxGb3JtRWxlbWVu
dDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRp
ZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7
Ci0gICAgaWYgKCFzaG91bGRBdXRvY29tcGxldGUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5y
ZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKLSAgICBIVE1MRWxl
bWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLX0KKyAgICBpZiAoIXNob3VsZEF1
dG9jb21wbGV0ZSgpKSB7CisgICAgICAgIGlmIChjaGFuZ2Uub2xkRG9jdW1lbnQoKSkKKyAgICAg
ICAgICAgIGNoYW5nZS5vbGREb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0
aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0
ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7CisgICAgfQogCi12b2lkIEhU
TUxGb3JtRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCi17Ci0gICAgaWYgKCFz
aG91bGRBdXRvY29tcGxldGUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJE
b2N1bWVudChjaGFuZ2UpOwogfQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6c2hvdWxkQXV0b2Nv
bXBsZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDg0
M2E5ODZhODliNmNlZTBhNzRjZDM5OWM2ZTU4NzljNTQ2YzM2ZGMuLmQxZmFkMmY3N2Y2N2EwNDJj
YjAxNjMxZDZjNjczZGMyNGNjODQ2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuaApAQCAtMTI4LDggKzEyOCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9j
dW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3Qg
Tm9kZU93bmVyQ2hhbmdlJik7CiAKICAgICB2b2lkIHN1Ym1pdChFdmVudCosIGJvb2wgYWN0aXZh
dGVTdWJtaXRCdXR0b24sIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBGb3JtU3VibWlzc2lv
blRyaWdnZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRl
eCAzMmYzNWVjNzU5MWNkODdmOTUyZDdjZjBmYTJlMmNkMGMzN2YzYjc5Li4zN2MzYTdhNzlkYmI1
NTY1YWNhYWQ2ODRhYmYwNGJmNzNjOWRjM2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHAKQEAgLTM4NSwxMCArMzg1LDEwIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBj
b25zCiAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
Z2V0QXR0cmlidXRlKHVzZW1hcEF0dHIpKSk7CiB9CiAKLXZvaWQgSFRNTEltYWdlRWxlbWVudDo6
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewot
ICAgIG1faW1hZ2VMb2FkZXIuZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0g
ICAgSFRNTEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgbV9pbWFn
ZUxvYWRlci5lbGVtZW50RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIEhUTUxFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5nZSk7CiB9CiAKIGJvb2wgSFRNTElt
YWdlRWxlbWVudDo6aXNTZXJ2ZXJNYXAoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuaAppbmRleCA5YmVjOWQ4MGI3Mjk3MmNlYzljY2MzYzJmMzI0OGJhYzFjMjY3YjI0
Li41ZDI3YjRiM2JlM2FlZGE0ZTMzOTU5YjQ4OTE4ZTYxMTAyZmQ0MjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqLCBIVE1MRm9ybUVsZW1lbnQqID0gMCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJE
b2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0
cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAppbmRleCA0ODExM2I1N2RiZWNmYjQ4Y2Y2NzE5YmE3MGQ2ZTE1MzAwODA0ZjM4
Li5mODc3NjY4NGFkMDAzMmVmYjg5NGNkMDRhYzlkMTkwZTg1OWIwN2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE1MDUsMjQgKzE1MDUsMjMgQEAgdm9p
ZCBIVE1MSW5wdXRFbGVtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpCiAgICAgcmVzZXQo
KTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29u
c3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgbV9pbnB1dFR5cGUtPndpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgaWYgKGNoYW5nZS5vbGREb2N1bWVudCgpKSB7Cisg
ICAgICAgIC8vIEFsd2F5cyB1bnJlZ2lzdGVyIGZvciBjYWNoZSBjYWxsYmFja3Mgd2hlbiBsZWF2
aW5nIGEgZG9jdW1lbnQsIGV2ZW4gaWYgd2Ugd291bGQgb3RoZXJ3aXNlIGxpa2UgdG8gYmUgcmVn
aXN0ZXJlZAorICAgICAgICBpZiAobmVlZHNBY3RpdmF0aW9uQ2FsbGJhY2soKSkKKyAgICAgICAg
ICAgIGNoYW5nZS5vbGREb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9u
Q2FsbGJhY2tzKHRoaXMpOworICAgICAgICBjaGFuZ2Uub2xkRG9jdW1lbnQoKS0+Y2hlY2tlZFJh
ZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRvbih0aGlzKTsKKyAgICB9CiAKLSAgICAvLyBBbHdheXMg
dW5yZWdpc3RlciBmb3IgY2FjaGUgY2FsbGJhY2tzIHdoZW4gbGVhdmluZyBhIGRvY3VtZW50LCBl
dmVuIGlmIHdlIHdvdWxkIG90aGVyd2lzZSBsaWtlIHRvIGJlIHJlZ2lzdGVyZWQKLSAgICBpZiAo
bmVlZHNBY3RpdmF0aW9uQ2FsbGJhY2soKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3Rl
ckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKLQotICAgIGRvY3VtZW50KCkt
PmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7Ci0KLSAgICBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLX0KLQot
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKLXsKLSAg
ICByZWdpc3RlckZvckFjdGl2YXRpb25DYWxsYmFja0lmTmVlZGVkKCk7CisgICAgaWYgKCFuZWVk
c0FjdGl2YXRpb25DYWxsYmFjaygpKSB7CisgICAgICAgIGlmIChjaGFuZ2Uub2xkRG9jdW1lbnQo
KSkKKyAgICAgICAgICAgIGNoYW5nZS5vbGREb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1l
bnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBjaGFuZ2UubmV3RG9jdW1lbnQo
KS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7CisgICAgfQog
Ci0gICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKTsKKyAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJE
b2N1bWVudChjaGFuZ2UpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggY2Y5YWI1ZTA5YWM5YzhhMDU0MTE2ODRh
NDMyYmY3ZDM1YmQwOThhNS4uZmM3YjFiZmZjYzVkNjBmZWYyN2JkZGQ5ZmY1YzY0ZTdmZGNkM2E0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI0OSw4ICsyNDks
NyBAQCBwcml2YXRlOgogICAgIGVudW0gQXV0b0NvbXBsZXRlU2V0dGluZyB7IFVuaW5pdGlhbGl6
ZWQsIE9uLCBPZmYgfTsKICAgICBlbnVtIEFueVN0ZXBIYW5kbGluZyB7IFJlamVjdEFueSwgQW55
SXNEZWZhdWx0U3RlcCB9OwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3du
ZXJDaGFuZ2UmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJv
YXJkRXZlbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGQxNjRj
OGVkYjRmOTBmNDAwMTAyMDNhYWU4ODgyNjJmMWRjYzg4NS4uZTNmNjgzYjJlMWNkNjNlNzhjZjM0
MTkwYmNiNDdkODJmMzE3MTVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0yNzYsMjcgKzI3NiwyNSBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlh
RWxlbWVudCgpCiAgICAgcmVtb3ZlRWxlbWVudEZyb21Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVu
dCgpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQo
Y29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgaWYgKG1faXNXYWl0aW5nVW50
aWxNZWRpYUNhblN0YXJ0KQotICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVNZWRpYUNhblN0YXJ0
TGlzdGVuZXIodGhpcyk7Ci0gICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwotICAg
IGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhp
cyk7Ci0gICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRo
aXMpOwotICAgIHJlbW92ZUVsZW1lbnRGcm9tRG9jdW1lbnRNYXAodGhpcywgZG9jdW1lbnQoKSk7
Ci0gICAgSFRNTEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci19CisgICAg
aWYgKGNoYW5nZS5vbGREb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChtX2lzV2FpdGluZ1VudGls
TWVkaWFDYW5TdGFydCkKKyAgICAgICAgICAgIGNoYW5nZS5vbGREb2N1bWVudCgpLT5yZW1vdmVN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7CisgICAgICAgIHNldFNob3VsZERlbGF5TG9hZEV2
ZW50KGNoYW5nZS5vbGREb2N1bWVudCgpLCBmYWxzZSk7CisgICAgICAgIGNoYW5nZS5vbGREb2N1
bWVudCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwor
ICAgICAgICBjaGFuZ2Uub2xkRG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2Fs
bGJhY2tzKHRoaXMpOworICAgICAgICByZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRoaXMs
IGNoYW5nZS5vbGREb2N1bWVudCgpKTsKKyAgICB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCi17CiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxN
ZWRpYUNhblN0YXJ0KQotICAgICAgICBkb2N1bWVudCgpLT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIodGhpcyk7CisgICAgICAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFy
dExpc3RlbmVyKHRoaXMpOwogICAgIGlmIChtX3JlYWR5U3RhdGUgPCBIQVZFX0NVUlJFTlRfREFU
QSkKLSAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQodHJ1ZSk7Ci0gICAgZG9jdW1lbnQo
KS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgZG9j
dW1lbnQoKS0+cmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKLSAgICBhZGRF
bGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBkb2N1bWVudCgpKTsKLSAgICBIVE1MRWxlbWVudDo6
ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgICAgICBzZXRTaG91bGREZWxheUxvYWRF
dmVudChjaGFuZ2UubmV3RG9jdW1lbnQoKSwgdHJ1ZSk7CisgICAgY2hhbmdlLm5ld0RvY3VtZW50
KCktPnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOworICAgIGNo
YW5nZS5uZXdEb2N1bWVudCgpLT5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMp
OworICAgIGFkZEVsZW1lbnRUb0RvY3VtZW50TWFwKHRoaXMsIGNoYW5nZS5uZXdEb2N1bWVudCgp
KTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwog
fQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdApAQCAtMzIw
Myw2ICszMjAxLDExIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0
cmlidXRlKiBhdHRyaWJ1dGUpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hv
dWxkRGVsYXlMb2FkRXZlbnQoYm9vbCBzaG91bGREZWxheSkKIHsKKyAgICBzZXRTaG91bGREZWxh
eUxvYWRFdmVudChkb2N1bWVudCgpLCBzaG91bGREZWxheSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoRG9jdW1lbnQqIGRvYywgYm9vbCBzaG91
bGREZWxheSkKK3sKICAgICBpZiAobV9zaG91bGREZWxheUxvYWRFdmVudCA9PSBzaG91bGREZWxh
eSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjEwLDkgKzMyMTMsOSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJvb2wgc2hvdWxkRGVsYXkpCiAKICAg
ICBtX3Nob3VsZERlbGF5TG9hZEV2ZW50ID0gc2hvdWxkRGVsYXk7CiAgICAgaWYgKHNob3VsZERl
bGF5KQotICAgICAgICBkb2N1bWVudCgpLT5pbmNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7
CisgICAgICAgIGRvYy0+aW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogICAgIGVsc2UK
LSAgICAgICAgZG9jdW1lbnQoKS0+ZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOworICAg
ICAgICBkb2MtPmRlY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKIH0KICAgICAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA0YjM2OThiZGZmYzY5NTNmMTY4
NTdiMGJmZTJkYTAxNTg5MzM1YjJmLi4yNmVhYmVmNDk3ODViODJmNTExM2RlZWVhZThlYWFiNjc3
NDczYTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjczLDgg
KzI3Myw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0
cmlidXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3
T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKIAogICAgIGVudW0gRGlzcGxh
eU1vZGUgeyBVbmtub3duLCBOb25lLCBQb3N0ZXIsIFBvc3RlcldhaXRpbmdGb3JWaWRlbywgVmlk
ZW8gfTsKICAgICBEaXNwbGF5TW9kZSBkaXNwbGF5TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
cGxheU1vZGU7IH0KQEAgLTQyMyw3ICs0MjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAgICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJv
b2wpOwotCisgICAgdm9pZCBzZXRTaG91bGREZWxheUxvYWRFdmVudChEb2N1bWVudCosIGJvb2wp
OwogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICB2b2lkIHJlZnJlc2hDYWNo
ZWRUaW1lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5j
cHAKaW5kZXggZTc3ZTAyYjQ2MjhhZGMyZjhmODczMmI2YThhNWVjNzlhMjY3OTYzZS4uZDQ4YmNh
N2UwZDc2ZGE4NmYxMGUwM2NmMGFmMTkyMzI2ZDFlNWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTUxMiwxMCArNTEyLDEwIEBAIHZvaWQgSFRNTE9i
amVjdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYgdXJscykgY29uCiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKHVzZU1hcCkpOwogfQogCi12b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp3aWxs
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewotICAg
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAg
ICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwor
ICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFu
Z2UpOworICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoY2hhbmdlKTsKIH0KIAogdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJl
ZShib29sIGRlZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXgg
ZGNlYzVjZjBmODY3YWY0NDYzOTU2MGFlNTMwMzNhYTViMDhiNDFiNy4uZmEzNDAzOGZjOTBjZjM5
YjAyNDRiYWM3NzZmMzdmOThhOTgyYTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaApAQCAtNzMsOCArNzMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVh
bCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRG
cm9tRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChj
b25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKKwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwg
Tm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxNGE1NWIyYTI5
OGFiZDIyYWIwNTNkNDFmYjk4NTI3N2JjMzBiM2ZmLi5lMzU0Nzc2OTY2YzMwNGRiNTljNGRjNjM1
ZDg5NDI1ODIyMDBmMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKQEAgLTIwMiwyMyArMjAyLDE0IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpOyAgICAKIH0KIAotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAg
aWYgKG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MpCiAgICAgICAgIGRvY3VtZW50
KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7CiAKICAg
ICBpZiAobV9pbWFnZUxvYWRlcikKLSAgICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudFdpbGxN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0KLSAgICBIVE1MUGx1Z0luRWxlbWVudDo6d2lsbE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKTsKLX0KLQotdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKLXsKLSAgICBpZiAobV9uZWVkc0RvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrcykKLSAgICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7ICAgCi0gICAgCi0gICAgSFRNTFBsdWdJbkVs
ZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgbV9pbWFnZUxvYWRl
ci0+ZWxlbWVudERpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBIVE1MUGx1Z0luRWxl
bWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQogCiB2b2lkIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggOWU0ODVlODhlYjcw
YWVjNjRjNzM3MDkwYWRlYzEwNTU1ZDJmNGQzNC4uZjlmNTZhYjRlNDc5ODA4N2Y1MWQyZWQxNWEz
Njc2Zjg0OGJhYWU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmgKQEAgLTczLDE0ICs3MywxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBhbGxvd2Vk
VG9Mb2FkRnJhbWVVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIGJvb2wgd291bGRMb2FkQXNO
ZXRzY2FwZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZXJ2aWNlVHlw
ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5v
ZGVPd25lckNoYW5nZSYpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVu
dFdpbGxCZWNvbWVJbmFjdGl2ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVu
dERpZEJlY29tZUFjdGl2ZSgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgT1ZFUlJJREU7CiAKKworCisKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0
eWxlQ2hhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4
IDMxMDdkMTUyZTg4ZDk1Nzk3NmJmNjM4MTRlMTBmZTAxMDQ2MWQzNmIuLmQyMDQ2OGYyMjk3NGZk
ODE4YTdkNjAwZWY2NDhlODQ1NDUxMDVjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcApAQCAtMjcxLDExICsyNzEsMTEgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
Ojp3ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVlbigpCiAgICAgcmV0dXJuIGlzRnVsbHNjcmVlbigp
OwogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25z
dCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBpZiAobV9pbWFnZUxvYWRlcikKLSAg
ICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7
Ci0gICAgSFRNTE1lZGlhRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAg
ICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudERpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
KyAgICBIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5nZSk7
CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKaW5kZXggODJkMDY1OTEwOTE3MjFjNTU2N2U1YWRkMzIwOTVkZTFiZDI4
MTM4Mi4uZGY2MDAyNTNlYTY1ZWZhYzE1MDIyMjM4N2Q4MTkyOWJkZjE5ZmZkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTg0LDkgKzg0LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHdp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUpOwogCiAgICAgT3duUHRyPEhUTUxJbWFnZUxv
YWRlcj4gbV9pbWFnZUxvYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmlu
ZGV4IDdkYjFhYzMyNTcxMGYwM2U2NjU3ZTUyMjQ4ZWVjMzBlOGNmMzllY2QuLjBiZGVlOWFmZTY0
OWZhZmYwMTc2YzhmNzcxZTAxNDkyYzI4NmQ0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURv
Y3VtZW50LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdmly
dHVhbCB+SW1hZ2VEb2N1bWVudEVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJE
b2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKIAogICAgIEltYWdlRG9jdW1lbnQqIG1f
aW1hZ2VEb2N1bWVudDsKIH07CkBAIC00MDcsMTMgKzQwNywxMyBAQCBJbWFnZURvY3VtZW50RWxl
bWVudDo6fkltYWdlRG9jdW1lbnRFbGVtZW50KCkKICAgICAgICAgbV9pbWFnZURvY3VtZW50LT5k
aXNjb25uZWN0SW1hZ2VFbGVtZW50KCk7CiB9CiAKLXZvaWQgSW1hZ2VEb2N1bWVudEVsZW1lbnQ6
OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSW1hZ2VEb2N1bWVudEVsZW1lbnQ6
OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2Up
CiB7CiAgICAgaWYgKG1faW1hZ2VEb2N1bWVudCkgewogICAgICAgICBtX2ltYWdlRG9jdW1lbnQt
PmRpc2Nvbm5lY3RJbWFnZUVsZW1lbnQoKTsKICAgICAgICAgbV9pbWFnZURvY3VtZW50ID0gMDsK
ICAgICB9Ci0gICAgSFRNTEltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKKyAgICBIVE1MSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5n
ZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKaW5kZXggOTBk
N2JiOWFjYTIzOGFiMmUyN2UyMzc0Mjk1YTk4MmFlNmVmMWE2YS4uYTExOGRhNzQyODQ5MmE0ZGNk
ZWMyYTQ1NzAxMmU4NTk2MDU3ODgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlw
ZS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEltYWdlSW5wdXRUeXBlOjp3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpCiB7CiAgICAgQmFzZUJ1dHRvbklucHV0VHlwZTo6d2lsbE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKICAgICBpZiAobV9pbWFnZUxvYWRlcikKLSAgICAgICAgbV9p
bWFnZUxvYWRlci0+ZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgICAg
IG1faW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiB9CiAK
IGJvb2wgSW1hZ2VJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RBbGlnbkF0dHJpYnV0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCA4MjBjZmQzZmI5YThkZTk2MDY2Njlm
ZjQ4YmM2OGRiOGIwNTEyYmZkLi4zODI0ZmMwMjFmYjRhMDI2ODEwMTRhMWJhZjc3YTE4OGQzZDdm
ZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTM0OSw3ICszNDks
NyBAQCB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKICAgICBs
b2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKIH0KIAotdm9pZCBJbWFn
ZUxvYWRlcjo6ZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSW1hZ2VM
b2FkZXI6OmVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKIHsKICAgICBzZXRJbWFn
ZSgwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggZTg1ZjFkMTFlNjYy
NDA4NDFkZjZhYjVkZGYwNThjYzUyOGFjOWJiYS4uYjY3ZmI0OGVmOWRiMjFhMjMwMjUwN2E1N2Zl
YzQ2MmRmMGIzYTdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogICAgIC8vIGRvZXNuJ3QgY2hhbmdlOyBzdGFydHMgbmV3IGxvYWQg
dW5jb25kaXRpb25hbGx5IChtYXRjaGVzIEZpcmVmb3ggYW5kIE9wZXJhIGJlaGF2aW9yKS4KICAg
ICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAKLSAgICB2
b2lkIGVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZvaWQgZWxlbWVu
dERpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAogICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICBib29sIGltYWdlQ29tcGxldGUoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlQ29tcGxldGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAKaW5kZXggYWY0YzI3MDc3YjQ1OTUwYmJkMjU1YTZhNDQwNGU3OTgzNDdhMDM3ZC4u
ZWNmYTYwOWU5NGU4YzA5ZGRjYjY1ODhjYjdjMDQzZmY3ZmUwOGNjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTIxNSwxMiArMjE1LDEzIEBAIHZvaWQgU1ZHSW1h
Z2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4m
IHVybHMpIGNvbnN0CiAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoaHJlZigpKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VFbGVtZW50Ojp3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpCit2b2lkIFNWR0ltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3du
ZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBtX2ltYWdl
TG9hZGVyLmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAg
IG1faW1hZ2VMb2FkZXIuZWxlbWVudERpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChj
aGFuZ2UpOwogfQogCisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggZjk3ZTFkOTI5YmVlMTQzOTAxNTg2ZGU0MWY3M2M0MjVh
OThkZjYwOC4uOGMyODUzNWM4OTU5ZTg3MDVmMjFjYmM2NWZhZTc4OTA5NDRjNTViNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1v
dmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKICAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHSW1hZ2VFbGVtZW50KQogICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCmluZGV4IDdmNzU1NDc5NzQzYjY2MWUyOTYzZmU4ZDA4NDQ5Zjg1MjY1MWFlMWEuLjgxMGU4
ZTViOWVlMmVmNGU4MWQ5MjBjMzdhZTAxMjFkYjE0NDNmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAKQEAgLTEwNiwxNiArMTA2LDEyIEBAIFNWR1NWR0VsZW1lbnQ6On5TVkdT
VkdFbGVtZW50KCkKICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92
ZVRpbWVDb250YWluZXIodGhpcyk7CiB9CiAKLXZvaWQgU1ZHU1ZHRWxlbWVudDo6d2lsbE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKQordm9pZCBTVkdTVkdFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewotICAgIGRvY3VtZW50
KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7Ci0gICAg
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
LX0KLQotdm9pZCBTVkdTVkdFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKLXsK
LSAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0
aGlzKTsKLSAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7CisgICAgaWYgKGNoYW5nZS5vbGREb2N1bWVudCgpKQorICAgICAgICBjaGFuZ2Uu
b2xkRG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0
aGlzKTsKKyAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2
YXRpb25DYWxsYmFja3ModGhpcyk7CisgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6ZGlk
TW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcm
IFNWR1NWR0VsZW1lbnQ6OmNvbnRlbnRTY3JpcHRUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5oCmluZGV4IGY2MTcwYWMxMWUwZTU3OWE4MmNhNmJjOTE1ZGM0ZTBhNzdmYTk5
OGUuLjE2NTMzZDQ0Y2M5ZjJkZmE5Yzk5MzNkOWUwMTY4N2EyMjdmYmRhNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuaApAQCAtMTI2LDggKzEyNiw3IEBAIHB1YmxpYzoKICAgICBFbGVt
ZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKIAogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAK
IHByaXZhdGU6CiAgICAgU1ZHU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120304</attachid>
            <date>2011-12-22 03:32:13 -0800</date>
            <delta_ts>2011-12-25 19:34:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74067-20111222203211.patch</filename>
            <type>text/plain</type>
            <size>33055</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY3OWE4NzU0Y2JlZWRh
MzI3YTQ2ZTZlMjA2ODI4MmE1MmE4ZjQxMC4uNDM1NWI5MDQ0OThmZWM0OTUxZWFmNGUyM2YxZTU0
MTkzZmI4NWY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDExLTEyLTA4ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2NworICAgICAgICBSZWZhY3RvcmluZzog
VW5pdGZ5IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgYW5kIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGNvbWJpbmVzIHR3byBtZXRob2QgTm9kZTo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KSBhbmQgTm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCisgICAgICAgIGludG8gTm9k
ZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKS4KKyAg
ICAgICAgTm90ZSB0aGF0IG5ld2x5IGludHJvZHVjZWQgTm9kZU93bmVyQ2hhbmdlIG9iamVjdCBo
b2xkcyBib3RoIG9sZCBhbmQgbmV3IG93bmVyIGRvY3VtZW50cy4KKworICAgICAgICBUaGUgaW50
ZW50aW9uIG9mIHRoaXMgY2hhbmdlIGlzOgorICAgICAgICAtIE1ha2luZyB1cGNvbWluZyByZWZh
Y3RvcmluZyAoQnVnIDU5ODE2KSBwb3NzaWJsZS4gVGhlIHJlZmFjdG9yaW5nIHdpbGwgdHVybiBO
b2RlOjptX2RvY3VtZW50IGludG8KKyAgICAgICAgICBOb2RlOjptX3RyZWVTY29wZSwgYW5kIHdl
IHdpbGwgbm8gbG9uZ2VyIGhhdmUgTm9kZTo6c2V0RG9jdW1lbnQoKSB3aGVyZSB3ZSBjYW4gaW52
b2tlIGJvdGgKKyAgICAgICAgICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpIGFuZCBkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkgYXQgb25jZS4KKyAgICAgICAgLSBLaWxsaW5nIG9uZSBl
eHRyYSB2aXJ0dWFsIG1ldGhvZCBjYWxsLgorICAgICAgICAtIE1ha2luZyB0aGUgY29uY2VwdCBv
ZiAib3duZXJzaGlwIG1vdmUiIGNsZWFyZXIgYnkga2VlcGluZyBzdWNoIGFuIG9wZXJhdGlvbiBp
bnRvIHRoZSBzaW5nbGUgbWV0aG9kLgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6c2V0RG9jdW1lbnQpOiBVbmlmaWVkIHRoZSBjYWxsLgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPd25lckNoYW5nZTo6Tm9kZU93bmVy
Q2hhbmdlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlT3duZXJDaGFuZ2U6Om9sZERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVPd25lckNoYW5nZTo6bmV3RG9jdW1lbnQp
OgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6
CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYWRFdmVu
dCk6CisgICAgICAgIC0gUGFzcyBEb2N1bWVudCBhcyBhIHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFj
Y2Vzc2luZyBpdCBieSB0aGUgZG9jdW1lbnQoKSBnZXR0ZXIuCisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RG9jdW1lbnRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBl
Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjplbGVtZW50RGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIC0gUmVuYW1lZCBmcm9tIGVsZW1lbnRXaWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudAorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
SW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKwogMjAxMS0xMi0yMSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSB+Q1NTUGFyc2VyU2VsZWN0b3IgdXNl
IFZlY3RvcjxPd25QdHI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMjUzZWJkYjg0ZDIxYjVmZTUxYmYy
MTFkZDEwZjU2ZWU4ZWFmMzViYS4uOWRmNzY5ODU1OTU1NzM5MjkzYmZkNjRiOGVlNGFkZWJkNjk2
MWIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDI4LDE0ICs0MjgsOCBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChib29sKQogfQogCiAj
ZWxzZQotICAgIAotc3RhdGljIGJvb2wgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxs
ZWQ7Ci1zdGF0aWMgYm9vbCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkOwogCi1z
dGF0aWMgdm9pZCBzZXRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChib29sIHdh
c0NhbGxlZCkKLXsKLSAgICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCA9IHdh
c0NhbGxlZDsKLX0KK3N0YXRpYyBib29sIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxs
ZWQ7CiAKIHN0YXRpYyB2b2lkIHNldERpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQo
Ym9vbCB3YXNDYWxsZWQpCiB7CkBAIC00NTIsMTkgKzQ0NiwxNiBAQCB2b2lkIE5vZGU6OnNldERv
Y3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIAogICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOwog
Ci0gICAgc2V0V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQoZmFsc2UpOwotICAg
IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgQVNTRVJUKHdpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50V2FzQ2FsbGVkKTsKLQogICAgIGlmIChtX2RvY3VtZW50KSB7CiAgICAgICAg
IG1fZG9jdW1lbnQtPm1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudCh0aGlzLCBkb2N1bWVu
dCk7CiAgICAgICAgIG1fZG9jdW1lbnQtPmd1YXJkRGVyZWYoKTsKICAgICB9CiAKKyAgICBEb2N1
bWVudCogb2xkRG9jdW1lbnQgPSBtX2RvY3VtZW50OwogICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVu
dDsKIAogICAgIHNldERpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQoZmFsc2UpOwot
ICAgIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KE5vZGVPd25lckNoYW5nZShvbGREb2N1bWVudCwgZG9jdW1lbnQpKTsKICAgICBBU1NF
UlQoZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCk7CiB9CiAKQEAgLTI0OTcsMTMg
KzI0ODgsNyBAQCB2b2lkIE5vZGU6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogICAgIGNsZWFySW5E
b2N1bWVudCgpOwogfQogCi12b2lkIE5vZGU6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkK
LXsKLSAgICBBU1NFUlQoIXdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKTsKLSAg
ICBzZXRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCh0cnVlKTsKLX0KLQotdm9p
ZCBOb2RlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgTm9kZTo6ZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBB
U1NFUlQoIWRpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwogICAgIHNldERpZE1v
dmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQodHJ1ZSk7CkBAIC0yNTEyLDE3ICsyNDk3LDE4
IEBAIHZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiAKICNpZiBFTkFCTEUo
TVVUQVRJT05fT0JTRVJWRVJTKQogICAgIGlmIChWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyYXRpb24+ID4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkp
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWdpc3RyeS0+c2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIGRvY3VtZW50KCktPmFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhyZWdp
c3RyeS0+YXQoaSktPm11dGF0aW9uVHlwZXMoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZWdpc3RyeS0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjaGFu
Z2UubmV3RG9jdW1lbnQoKS0+YWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lzdHJ5LT5hdChp
KS0+bXV0YXRpb25UeXBlcygpKTsKICAgICB9CiAKICAgICBpZiAoSGFzaFNldDxNdXRhdGlvbk9i
c2VydmVyUmVnaXN0cmF0aW9uKj4qIHRyYW5zaWVudFJlZ2lzdHJ5ID0gdHJhbnNpZW50TXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsKLSAgICAgICAgZm9yIChIYXNoU2V0PE11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyYXRpb24qPjo6aXRlcmF0b3IgaXRlciA9IHRyYW5zaWVudFJlZ2lzdHJ5LT5i
ZWdpbigpOyBpdGVyICE9IHRyYW5zaWVudFJlZ2lzdHJ5LT5lbmQoKTsgKytpdGVyKSB7Ci0gICAg
ICAgICAgICBkb2N1bWVudCgpLT5hZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMoKCppdGVyKS0+bXV0
YXRpb25UeXBlcygpKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKEhhc2hTZXQ8TXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbio+OjppdGVyYXRvciBpdGVyID0gdHJhbnNpZW50UmVnaXN0cnkt
PmJlZ2luKCk7IGl0ZXIgIT0gdHJhbnNpZW50UmVnaXN0cnktPmVuZCgpOyArK2l0ZXIpCisgICAg
ICAgICAgICBjaGFuZ2UubmV3RG9jdW1lbnQoKS0+YWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKCgq
aXRlciktPm11dGF0aW9uVHlwZXMoKSk7CiAgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
Y2hhbmdlKQogI2VuZGlmCisKIH0KIAogI2lmIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAy
MTk1NWFkNjlmYWRlMTRjMzczYzNjZGQxM2NhMDc1NTcwM2NiMmQzLi44ODMxODIzOTNkYzA3ODZm
YmVjYmRiMjVkMGEzMjJjNDRkYWM5NTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTEwMSw2ICsxMDEsMjIg
QEAgZW51bSBTdHlsZUNoYW5nZVR5cGUgewogICAgIFN5bnRoZXRpY1N0eWxlQ2hhbmdlID0gMyA8
PCBub2RlU3R5bGVDaGFuZ2VTaGlmdAogfTsKIAorY2xhc3MgTm9kZU93bmVyQ2hhbmdlIHsKK3B1
YmxpYzoKKyAgICBOb2RlT3duZXJDaGFuZ2UoRG9jdW1lbnQqIG9sZERvY3VtZW50LCBEb2N1bWVu
dCogbmV3RG9jdW1lbnQpCisgICAgICAgIDogbV9vbGREb2N1bWVudChvbGREb2N1bWVudCkKKyAg
ICAgICAgLCBtX25ld0RvY3VtZW50KG5ld0RvY3VtZW50KQorICAgIHsKKyAgICB9CisKKyAgICBE
b2N1bWVudCogb2xkRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX29sZERvY3VtZW50OyB9Cisg
ICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9uZXdEb2N1bWVudDsg
fQorCitwcml2YXRlOgorICAgIERvY3VtZW50KiBtX29sZERvY3VtZW50OworICAgIERvY3VtZW50
KiBtX25ld0RvY3VtZW50OworfTsKKwogY2xhc3MgTm9kZSA6IHB1YmxpYyBFdmVudFRhcmdldCwg
cHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT4g
ewogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKICAgICBmcmllbmQgY2xhc3MgVHJlZVNjb3Bl
OwpAQCAtNjc0LDggKzY5MCw3IEBAIHByb3RlY3RlZDoKICAgICB9OwogICAgIE5vZGUoRG9jdW1l
bnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3Qg
Tm9kZU93bmVyQ2hhbmdlJik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0IHsgfQogICAgIHZvaWQgc2V0
VGFiSW5kZXhFeHBsaWNpdGx5KHNob3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCAxZGRiNmE2NWMyNjYyZjA5OGE4MzAzOTFmY2JlMTE0
MDFhYjIxNjYzLi5jYWVmOGEzN2UxYmNjNjg5MTQwZTM0YmNmNTE4MmVjYmY3MWQ1YTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC01Miwx
MSArNTIsMTEgQEAgVmFsaWRpdHlTdGF0ZSogRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGl0
eSgpCiAgICAgcmV0dXJuIG1fdmFsaWRpdHlTdGF0ZS5nZXQoKTsKIH0KIAotdm9pZCBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgRm9ybUFz
c29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25l
ckNoYW5nZSYgY2hhbmdlKQogewogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxl
bWVudCh0aGlzKTsKICAgICBpZiAoZWxlbWVudC0+ZmFzdEhhc0F0dHJpYnV0ZShmb3JtQXR0cikp
Ci0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhG
b3JtQXR0cmlidXRlKHRoaXMpOworICAgICAgICBjaGFuZ2Uub2xkRG9jdW1lbnQoKS0+dW5yZWdp
c3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CiB9CiAKIHZvaWQgRm9ybUFz
c29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCA1YTg2MWUyNzI2MWI2NzUzOGYwMGIw
ZjIwYTIyMmY4NjU0YzQzNTQyLi40ZTE0MTliMDIzYjg2MzU5Y2FiNjNhYjU0ZDllMjAzNDUyOWYw
ZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlZEZyb21UcmVlKCk7CiAg
ICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21Eb2N1
bWVudCgpOwotICAgIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2b2lk
IGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKICAg
ICB2b2lkIHNldEZvcm0oSFRNTEZvcm1FbGVtZW50KiBmb3JtKSB7IG1fZm9ybSA9IGZvcm07IH0K
ICAgICB2b2lkIHJlbW92ZUZyb21Gb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBjMDVlYTQxMDEyYzMwZjU1ZTk0MjFlZGNiYTBh
YjJjNmM0MDhhMjdiLi5hY2JlNDJhM2RhYWRmMTZjZTBiNjM5M2U2MzBkZmIwNWYyZDEwZTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTE5NiwxMCArMTk2LDEwIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNoKCkK
ICAgICByZXN1bWVQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNo
YW5nZSYgY2hhbmdlKQogewotICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6d2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKLSAgICBIVE1MRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoY2hhbmdlKTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dChjaGFuZ2UpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50
b1RyZWUoYm9vbCBkZWVwKQpAQCAtNTExLDE2ICs1MTEsMTIgQEAgSFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZTo6fkhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUoKQogICAgIGRv
Y3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0ZSh0aGlzKTsKIH0KIAotdm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjp3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0YXRlKHRoaXMpOwotICAgIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci19Ci0KLXZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpCi17Ci0gICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0ZSh0
aGlzKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7CisgICAgaWYgKGNoYW5nZS5vbGREb2N1bWVudCgpKQorICAgICAgICBjaGFuZ2Uub2xk
RG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0YXRlKHRoaXMpOworICAgIGNo
YW5nZS5uZXdEb2N1bWVudCgpLT5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0YXRlKHRoaXMpOwor
ICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY2hh
bmdlKTsKIH0KIAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpzaG91bGRB
dXRvY29tcGxldGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaAppbmRleCA3OGI3NDRkNTVlNzdjNmU1NjE4OTAwNDJkNzljNmRiMDdjYzllNjAy
Li40Y2JhNTA5ZjQ5ODM1ZWUwZDY4Mzc4NGUxNjQ1M2M2NGQzNGY1NGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTIwLDcgKzEyMCw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCk7
CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5
Ym9hcmRFdmVudCopIGNvbnN0OwpAQCAtMTg1LDggKzE4NSw3IEBAIHByb3RlY3RlZDoKIAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvY29tcGxldGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25z
dCBOb2RlT3duZXJDaGFuZ2UmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggNWE4ZWNhMzg5NjM2NDQ1NGFlMzMyNjE1OTI4
NTc5NjgzYzliNWE1My4uMGRlMjA3ZjZmNTVlOWQ4N2Q0ODlmYjEzNzc4OWNlMzY5ZjE3ZTJmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNjQ2LDE4ICs2NDYs
MTUgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRvY3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNo
ZSgpCiAgICAgfQogfQogCi12b2lkIEhUTUxGb3JtRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQordm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgaWYgKCFzaG91bGRBdXRv
Y29tcGxldGUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclBhZ2VDYWNoZVN1
c3BlbnNpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgSFRNTEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCk7Ci19CisgICAgaWYgKCFzaG91bGRBdXRvY29tcGxldGUoKSkgeworICAg
ICAgICBpZiAoY2hhbmdlLm9sZERvY3VtZW50KCkpCisgICAgICAgICAgICBjaGFuZ2Uub2xkRG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7
CisgICAgICAgIGNoYW5nZS5uZXdEb2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3Bl
bnNpb25DYWxsYmFja3ModGhpcykKKyAgICB9CiAKLXZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkKLXsKLSAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgp
KQotICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxs
YmFja3ModGhpcyk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwog
fQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDMwMTI1ZmFmNDI4NWE4YTczYjhj
MDVkOTI1MjgxY2I4N2M2OTVjY2QuLjVhZDg0NmE0MjE1Yjk0OTMzYjYyZjhmYTg0YTRhZmVkYTg0
NjM4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMTI4LDggKzEy
OCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRSZXN1bWVGcm9t
UGFnZUNhY2hlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNo
YW5nZSYpOwogCiAgICAgdm9pZCBzdWJtaXQoRXZlbnQqLCBib29sIGFjdGl2YXRlU3VibWl0QnV0
dG9uLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNDJhNGU3ODcz
MzkxZGE2MzUwZTk1ZjEzZWJjYzdiZWU5NjkzN2U0NC4uNjg3NWU4ZGFmZDg4MDhiYWU5MWUzOGEy
OGUwNjA0NzAyNzg5MTc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCkBAIC0zODQsMTAgKzM4NCwxMCBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29ucwogICAgIGFk
ZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGdldEF0dHJpYnV0
ZSh1c2VtYXBBdHRyKSkpOwogfQogCi12b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3du
ZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBtX2ltYWdl
TG9hZGVyLmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIEhUTUxFbGVt
ZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIG1faW1hZ2VMb2FkZXIuZWxl
bWVudERpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQogCiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6
OmlzU2VydmVyTWFwKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgK
aW5kZXggOWJlYzlkODBiNzI5NzJjZWM5Y2NjM2MyZjMyNDhiYWMxYzI2N2IyNC4uNWQyN2I0YjNi
ZTNhZWRhNGUzMzk1OWI0ODkxOGU2MTEwMmZkNDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IEhUTUxJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZv
cm1FbGVtZW50KiA9IDApOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29u
c3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1hcFRv
RW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5
JiByZXN1bHQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
aW5kZXggMjE0ZTVjNGVlOWVkNjc4YTgwNWE3OTAwYTViMDQzYjYzODkxOWI3MS4uODZhODBmYmI3
NGI4ZWRiM2Y2YTkwOTAwNTcxNjM5NzFiMjA0YzYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xNTAyLDI0ICsxNTAyLDIwIEBAIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6ZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKCkKICAgICByZXNldCgpOwog
fQogCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkK
K3ZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChjb25zdCBO
b2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBtX2lucHV0VHlwZS0+d2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKKyAgICBpZiAoRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gY2hhbmdl
Lm9sZERvY3VtZW50KCkpIHsKKyAgICAgICAgLy8gQWx3YXlzIHVucmVnaXN0ZXIgZm9yIGNhY2hl
IGNhbGxiYWNrcyB3aGVuIGxlYXZpbmcgYSBkb2N1bWVudCwgZXZlbiBpZiB3ZSB3b3VsZCBvdGhl
cndpc2UgbGlrZSB0byBiZSByZWdpc3RlcmVkCisgICAgICAgIGlmIChuZWVkc1N1c3BlbnNpb25D
YWxsYmFjaygpKQorICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJGb3JQYWdlQ2Fj
aGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBvbGREb2N1bWVudC0+Y2hlY2tl
ZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRvbih0aGlzKTsKKyAgICB9CiAKLSAgICAvLyBBbHdh
eXMgdW5yZWdpc3RlciBmb3IgY2FjaGUgY2FsbGJhY2tzIHdoZW4gbGVhdmluZyBhIGRvY3VtZW50
LCBldmVuIGlmIHdlIHdvdWxkIG90aGVyd2lzZSBsaWtlIHRvIGJlIHJlZ2lzdGVyZWQKICAgICBp
ZiAobmVlZHNTdXNwZW5zaW9uQ2FsbGJhY2soKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdp
c3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7Ci0KLSAgICBkb2N1bWVu
dCgpLT5jaGVja2VkUmFkaW9CdXR0b25zKCkucmVtb3ZlQnV0dG9uKHRoaXMpOwotCi0gICAgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci19
Ci0KLXZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCi17
Ci0gICAgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOworICAgICAgICBj
aGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJh
Y2tzKHRoaXMpOwogCi0gICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKKyAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudChjaGFuZ2UpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggNzg2N2EzMmVjM2Jm
NzZmMjEwNGQ1ZTllZDI2ODU1MDZmNTc3ZTgxYi4uMTNiMDRmMWQ0MDYzNGRkZDBlYThhNGI0ZjQ4
NjQyMmM0NTk3ZDI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAg
LTI0OSw4ICsyNDksNyBAQCBwcml2YXRlOgogICAgIGVudW0gQXV0b0NvbXBsZXRlU2V0dGluZyB7
IFVuaW5pdGlhbGl6ZWQsIE9uLCBPZmYgfTsKICAgICBlbnVtIEFueVN0ZXBIYW5kbGluZyB7IFJl
amVjdEFueSwgQW55SXNEZWZhdWx0U3RlcCB9OwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChj
b25zdCBOb2RlT3duZXJDaGFuZ2UmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9j
dXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZv
Y3VzYWJsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggYTkzYTFlMDRkYzBhN2U3MGM0Njc3MDQ5OGE0Mzk2OTg0Mzk4Mjg3Yy4uY2IwMTkwZmQx
NWRhZGM2ODcyNzNlMmNiYTgxYTVkNjQ0M2E2YmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNzcsMjUgKzI3NywyMyBAQCBIVE1MTWVkaWFFbGVtZW50
Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgcmVtb3ZlRWxlbWVudEZyb21Eb2N1bWVudE1hcCh0
aGlzLCBkb2N1bWVudCgpKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05ld093
bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0gICAgaWYgKG1f
aXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQotICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7Ci0gICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQo
ZmFsc2UpOwotICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNr
cyh0aGlzKTsKLSAgICByZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRoaXMsIGRvY3VtZW50
KCkpOwotICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotfQor
ICAgIGlmIChEb2N1bWVudCogb2xkRG9jdW1lbnQgPSBjaGFuZ2Uub2xkRG9jdW1lbnQoKSkgewor
ICAgICAgICBpZiAobV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpCisgICAgICAgICAgICBv
bGREb2N1bWVudC0+cmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOworICAgICAgICBz
ZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CisgICAgICAgIG9sZERvY3VtZW50LT51bnJl
Z2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CisgICAgICAgIHJlbW92ZUVsZW1l
bnRGcm9tRG9jdW1lbnRNYXAodGhpcywgb2xkRG9jdW1lbnQpOworICAgIH0KIAotdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKLXsKICAgICBpZiAobV9p
c1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpCi0gICAgICAgIGRvY3VtZW50KCktPmFkZE1lZGlh
Q2FuU3RhcnRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgIGNoYW5nZS5uZXdEb2N1bWVudCgpLT5h
ZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IEhB
VkVfQ1VSUkVOVF9EQVRBKQotICAgICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudCh0cnVlKTsK
LSAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOwot
ICAgIGFkZEVsZW1lbnRUb0RvY3VtZW50TWFwKHRoaXMsIGRvY3VtZW50KCkpOwotICAgIEhUTUxF
bGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgICAgIHNldFNob3VsZERl
bGF5TG9hZEV2ZW50KGNoYW5nZS5uZXdEb2N1bWVudCgpLCB0cnVlKTsKKyAgICBjaGFuZ2UubmV3
RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKKyAgICBh
ZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlzLCBjaGFuZ2UubmV3RG9jdW1lbnQoKSk7CisgICAg
SFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKQEAgLTMzOTcsNiArMzM5
NSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cmlidXRlKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZERlbGF5
TG9hZEV2ZW50KGJvb2wgc2hvdWxkRGVsYXkpCiB7CisgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZl
bnQoZG9jdW1lbnQoKSwgc2hvdWxkRGVsYXkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldFNob3VsZERlbGF5TG9hZEV2ZW50KERvY3VtZW50KiBkb2MsIGJvb2wgc2hvdWxkRGVsYXkp
Cit7CiAgICAgaWYgKG1fc2hvdWxkRGVsYXlMb2FkRXZlbnQgPT0gc2hvdWxkRGVsYXkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMzQwNCw5ICszNDA3LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZXRTaG91bGREZWxheUxvYWRFdmVudChib29sIHNob3VsZERlbGF5KQogCiAgICAgbV9zaG91
bGREZWxheUxvYWRFdmVudCA9IHNob3VsZERlbGF5OwogICAgIGlmIChzaG91bGREZWxheSkKLSAg
ICAgICAgZG9jdW1lbnQoKS0+aW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOworICAgICAg
ICBkb2MtPmluY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKICAgICBlbHNlCi0gICAgICAg
IGRvY3VtZW50KCktPmRlY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKKyAgICAgICAgZG9j
LT5kZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CiB9CiAgICAgCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZTFmMzUxNDlhOTE1YWFhNTc2YmMzMmYyZTcy
MmZmMGM1ZmQ1MDA5OS4uNzYxYWJjODVmYWVmNjI4ZDMzMWRjNzllNjQwNmY1OWM1NGQzZTVlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTI4Miw4ICsyODIsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSop
IGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3
aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKICAgICBlbnVtIERpc3BsYXlNb2RlIHsg
VW5rbm93biwgTm9uZSwgUG9zdGVyLCBQb3N0ZXJXYWl0aW5nRm9yVmlkZW8sIFZpZGVvIH07CiAg
ICAgRGlzcGxheU1vZGUgZGlzcGxheU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlNb2Rl
OyB9CkBAIC00MzQsNyArNDMzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFD
YW5TdGFydCgpOwogCiAgICAgdm9pZCBzZXRTaG91bGREZWxheUxvYWRFdmVudChib29sKTsKLQor
ICAgIHZvaWQgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoRG9jdW1lbnQqLCBib29sKTsKICAgICB2
b2lkIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CiAgICAgdm9pZCByZWZyZXNoQ2FjaGVkVGltZSgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4
IGE5ZTFmMDRiMTY2ZDBlYzkxN2E4YTY0NzYxNjk1ZGYzMGQ4NTg1NGMuLjUyYTcyYmYzY2Q2Y2U4
ZjhhYzE0YTFjNDc1MWU5ZDc3NzJmZGFhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCkBAIC01MDksMTAgKzUwOSwxMCBAQCB2b2lkIEhUTUxPYmplY3RFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMp
IGNvbgogICAgICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0
ZVVSTCh1c2VNYXApKTsKIH0KIAotdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6d2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3du
ZXJEb2N1bWVudChjb25zdCBOb2RlT3duZXJDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY2hhbmdlKTsKKyAg
ICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNoYW5n
ZSk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBk
ZWVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IGRjZWM1Y2Yw
Zjg2N2FmNDQ2Mzk1NjBhZTUzMDMzYWE1YjA4YjQxYjcuLmZhMzQwMzhmYzkwY2YzOWIwMjQ0YmFj
Nzc2ZjM3Zjk4YTk4MmE5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmgKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBp
bnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3Vt
ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0g
ICAgCisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9k
ZU93bmVyQ2hhbmdlJik7CisKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFm
dGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBi
b29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggNDlhM2IzNWE1MzhhMGQ2OGRh
YTVlMjk5N2IxYjYwNjExNGM5YzM3Zi4uNmQ3NWE1OGE1NGI1ZmIzNmQ2N2VjMDQxZjUzNmI1MmE2
YjZmMzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCkBAIC0yMDIsMjMgKzIwMiwxNiBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsg
ICAgCiB9CiAKLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewotICAgIGlmIChtX25l
ZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKQotICAgICAgICBkb2N1bWVudCgpLT51bnJl
Z2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICBpZiAobV9u
ZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcykgeworICAgICAgICBjaGFuZ2Uub2xkRG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7
CisgICAgICAgIGNoYW5nZS5uZXdEb2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3Bl
bnNpb25DYWxsYmFja3ModGhpcyk7CisgICAgfQogCiAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCi0g
ICAgICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
OwotCi0gICAgSFRNTFBsdWdJbkVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7
Ci19Ci0KLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpCi17Ci0gICAgaWYgKG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MpCi0g
ICAgICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNr
cyh0aGlzKTsgICAKLSAgICAKLSAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3du
ZXJEb2N1bWVudCgpOworICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50RGlkTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOworICAgIEhUTUxQbHVnSW5FbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KGNoYW5nZSk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZG9j
dW1lbnRXaWxsU3VzcGVuZEZvclBhZ2VDYWNoZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IGEzMGI5OGI2NmViZTAyNGYwZWQ5MGY2NGRjMTE0
NzQ3ZDA1MTYzZjkuLjRkZjUxMTQyMTQxZTEzY2VlNzZiOGIyOWI5MGI5NDgwYmQ5MjExYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC03NCw4
ICs3NCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGFsbG93ZWRUb0xvYWRGcmFtZVVSTChjb25z
dCBTdHJpbmcmIHVybCk7CiAgICAgYm9vbCB3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2luKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKTsKIAotICAgIHZpcnR1YWwg
dm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJikgT1ZF
UlJJREU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50V2lsbFN1c3BlbmRGb3JQYWdl
Q2FjaGUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRSZXN1bWVGcm9t
UGFnZUNhY2hlKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAppbmRleCAzZGVjNTYyN2U3MGIyMzU5OTk5NGFmNTYwMWUwZTI0NDU4M2M5N2MyLi4zYThm
YjkxMGVlNDAzNzUwZDI4YjMxZDA5NjQxNzU4YTc1NjQ2OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTI3MSwxMSArMjcxLDExIEBAIGJvb2wgSFRNTFZp
ZGVvRWxlbWVudDo6d2Via2l0RGlzcGxheWluZ0Z1bGxzY3JlZW4oKQogICAgIHJldHVybiBpc0Z1
bGxzY3JlZW4oKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3du
ZXJEb2N1bWVudCgpCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgaWYgKG1faW1hZ2VM
b2FkZXIpCi0gICAgICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJE
b2N1bWVudCgpOwotICAgIEhUTUxNZWRpYUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7CisgICAgICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7CisgICAgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dChjaGFuZ2UpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDQ5MTgwMzIxYTRiMmQwNDc4ZTUxNTI2Mjdk
ZTg1N2VhMTU5YTJiNWMuLjdiN2YzZDg2MmEwYmQ4NjgwMjZkZDI3MzZjN2JlYmQxMTljMGMwNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC04NCw5ICs4NCw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKTsKLQotICAgIHZpcnR1
YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotCisgICAgdmlydHVhbCB2b2lk
IGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAgICAg
dmlydHVhbCB2b2lkIHNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlKTsKIAogICAgIE93blB0cjxI
VE1MSW1hZ2VMb2FkZXI+IG1faW1hZ2VMb2FkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcAppbmRleCA3ZGIxYWMzMjU3MTBmMDNlNjY1N2U1MjI0OGVlYzMwZThjZjM5ZWNkLi4w
YmRlZTlhZmU2NDlmYWZmMDE3NmM4Zjc3MWUwMTQ5MmMyODZkNDk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIH0K
IAogICAgIHZpcnR1YWwgfkltYWdlRG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJik7CiAKICAgICBJbWFnZURv
Y3VtZW50KiBtX2ltYWdlRG9jdW1lbnQ7CiB9OwpAQCAtNDA3LDEzICs0MDcsMTMgQEAgSW1hZ2VE
b2N1bWVudEVsZW1lbnQ6On5JbWFnZURvY3VtZW50RWxlbWVudCgpCiAgICAgICAgIG1faW1hZ2VE
b2N1bWVudC0+ZGlzY29ubmVjdEltYWdlRWxlbWVudCgpOwogfQogCi12b2lkIEltYWdlRG9jdW1l
bnRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEltYWdlRG9jdW1l
bnRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5n
ZSYgY2hhbmdlKQogewogICAgIGlmIChtX2ltYWdlRG9jdW1lbnQpIHsKICAgICAgICAgbV9pbWFn
ZURvY3VtZW50LT5kaXNjb25uZWN0SW1hZ2VFbGVtZW50KCk7CiAgICAgICAgIG1faW1hZ2VEb2N1
bWVudCA9IDA7CiAgICAgfQotICAgIEhUTUxJbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCk7CisgICAgSFRNTEltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudChjaGFuZ2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3Bw
CmluZGV4IDkwZDdiYjlhY2EyMzhhYjJlMjdlMjM3NDI5NWE5ODJhZTZlZjFhNmEuLmExMThkYTc0
Mjg0OTJhNGRjZGVjMmE0NTcwMTJlODU5NjA1Nzg4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VJbnB1dFR5cGUuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBJbWFnZUlucHV0VHlwZTo6
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogewogICAgIEJhc2VCdXR0b25JbnB1dFR5cGU6
OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCi0g
ICAgICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
OworICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOwogfQogCiBib29sIEltYWdlSW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0QWxpZ25BdHRyaWJ1
dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggODIwY2ZkM2ZiOWE4
ZGU5NjA2NjY5ZmY0OGJjNjhkYjhiMDUxMmJmZC4uMzgyNGZjMDIxZmI0YTAyNjgxMDE0YTFiYWY3
N2ExODhkM2Q3ZmQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0z
NDksNyArMzQ5LDcgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50
cygpCiAgICAgbG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CiB9CiAK
LXZvaWQgSW1hZ2VMb2FkZXI6OmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2
b2lkIEltYWdlTG9hZGVyOjplbGVtZW50RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiB7CiAg
ICAgc2V0SW1hZ2UoMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1h
Z2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCmluZGV4IGU4
NWYxZDExZTY2MjQwODQxZGY2YWI1ZGRmMDU4Y2M1MjhhYzliYmEuLmI2N2ZiNDhlZjlkYjIxYTIz
MDI1MDdhNTdmZWM0NjJkZjBiM2E3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAvLyBkb2Vzbid0IGNoYW5nZTsgc3RhcnRz
IG5ldyBsb2FkIHVuY29uZGl0aW9uYWxseSAobWF0Y2hlcyBGaXJlZm94IGFuZCBPcGVyYSBiZWhh
dmlvcikuCiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigp
OwogCi0gICAgdm9pZCBlbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2
b2lkIGVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAKICAgICBFbGVtZW50KiBl
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAgICAgYm9vbCBpbWFnZUNvbXBs
ZXRlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUNvbXBsZXRlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGFmNGMyNzA3N2I0NTk1MGJiZDI1NWE2YTQ0MDRlNzk4
MzQ3YTAzN2QuLjM3ZTg0NGRjMzVkYTI2YmQxZWFkOTE0NzI3ZDNhMzVhN2Q5YjRiNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC0yMTUsMTAgKzIxNSwxMCBAQCB2
b2lkIFNWR0ltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JiB1cmxzKSBjb25zdAogICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIGRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKGhyZWYoKSkpOwogfQogCi12b2lkIFNWR0ltYWdlRWxlbWVudDo6
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmRpZE1v
dmVUb05ld093bmVyRG9jdW1lbnQoY29uc3QgTm9kZU93bmVyQ2hhbmdlJiBjaGFuZ2UpCiB7Ci0g
ICAgbV9pbWFnZUxvYWRlci5lbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAg
ICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKTsKKyAgICBtX2ltYWdlTG9hZGVyLmVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCk7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5o
CmluZGV4IGY5N2UxZDkyOWJlZTE0MzkwMTU4NmRlNDFmNzNjNDI1YTk4ZGY2MDguLjhjMjg1MzVj
ODk1OWU4NzA1ZjIxY2JjNjVmYWU3ODkwOTQ0YzU1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR0ltYWdlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoWCwgeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCBjOTZhODNl
NGM5ODRlYzQzMThhOTAxMmM0MTU2MjA0NDI5ODkwMTQzLi4zYTllMGY4YTcwNjBhMWI2MjhlM2Qz
OWFlMzNiMzFjMTU5ZDg2ZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBA
IC0xMDYsMTYgKzEwNiwxNSBAQCBTVkdTVkdFbGVtZW50Ojp+U1ZHU1ZHRWxlbWVudCgpCiAgICAg
ZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1vdmVUaW1lQ29udGFpbmVyKHRo
aXMpOwogfQogCi12b2lkIFNWR1NWR0VsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCkKLXsKLSAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNh
bGxiYWNrcyh0aGlzKTsKLSAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Ojp3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOwotfQotCi12b2lkIFNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQordm9pZCBTVkdTVkdFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYgY2hhbmdlKQogewogICAgIGRvY3VtZW50KCkt
PnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKICAgICBTVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisKKyAg
ICBpZiAoY2hhbmdlLm9sZERvY3VtZW50KCkpCisgICAgICAgIGNoYW5nZS5vbGREb2N1bWVudCgp
LT51bnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICBj
aGFuZ2UubmV3RG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJh
Y2tzKHRoaXMpOworICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093
bmVyRG9jdW1lbnQoY2hhbmdlKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVt
ZW50Ojpjb250ZW50U2NyaXB0VHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
aAppbmRleCA4OWI1YmY2MTIyODA2MGMxYzMyYjg0Yjk1ZDM2YzdhZjEwMTc1OGVmLi5jYzgxZjhm
MjZmN2M4MTQwOTZlYjhiNjdkY2RiNGQwNjQ4YzA0NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmgKQEAgLTEyNiw4ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogZ2V0RWxl
bWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KGNvbnN0IE5vZGVPd25lckNoYW5nZSYpOwogCiBwcml2YXRlOgog
ICAgIFNWR1NWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120517</attachid>
            <date>2011-12-25 19:34:45 -0800</date>
            <delta_ts>2011-12-25 21:16:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74067-20111226123443.patch</filename>
            <type>text/plain</type>
            <size>30877</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA3YjA0OThjODI4MWE3
MDBhZWMxYjM1NzJmMDA5YmUyYWY2ZTQ2ZS4uMjA1ZjM3YjcxOWRiYTE5MTIzNDg5YjIxODg0NDll
MmE5YjBkZDg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDExLTEyLTA4ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2NworICAgICAgICBSZWZhY3RvcmluZzog
VW5pdGZ5IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgYW5kIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgIFRoaXMgY2hh
bmdlIGNvbWJpbmVzIHR3byBtZXRob2QgTm9kZTo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KSBhbmQgTm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCisgICAgICAgIGludG8gTm9k
ZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpLgorCisg
ICAgICAgIFRoZSBpbnRlbnRpb24gb2YgdGhpcyBjaGFuZ2UgaXM6CisgICAgICAgIC0gTWFraW5n
IHVwY29taW5nIHJlZmFjdG9yaW5nIChCdWcgNTk4MTYpIHBvc3NpYmxlLiBUaGUgcmVmYWN0b3Jp
bmcgd2lsbCB0dXJuIE5vZGU6Om1fZG9jdW1lbnQgaW50bworICAgICAgICAgIE5vZGU6Om1fdHJl
ZVNjb3BlLCBhbmQgd2Ugd2lsbCBubyBsb25nZXIgaGF2ZSBOb2RlOjpzZXREb2N1bWVudCgpIHdo
ZXJlIHdlIGNhbiBpbnZva2UgYm90aAorICAgICAgICAgIHdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCkgYW5kIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKSBhdCBvbmNlLgorICAgICAgICAt
IEtpbGxpbmcgb25lIGV4dHJhIHZpcnR1YWwgbWV0aG9kIGNhbGwuCisgICAgICAgIC0gTWFraW5n
IHRoZSBjb25jZXB0IG9mICJvd25lcnNoaXAgbW92ZSIgY2xlYXJlciBieSBrZWVwaW5nIHN1Y2gg
YW4gb3BlcmF0aW9uIGludG8gdGhlIHNpbmdsZSBtZXRob2QuCisKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXREb2N1bWVudCk6IFVuaWZpZWQgdGhl
IGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50
KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlk
TW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJE
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6
OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRTaG91bGREZWxheUxvYWRFdmVudCk6CisgICAgICAgIC0gUGFzcyBEb2N1bWVudCBhcyBh
IHBhcmFtZXRlciBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBpdCBieSB0aGUgZG9jdW1lbnQoKSBnZXR0
ZXIuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVu
dDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogaHRt
bC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6Cisg
ICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
TG9hZGVyOjplbGVtZW50RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgIC0gUmVu
YW1lZCBmcm9tIGVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudAorICAgICAgICAqIGxv
YWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKwog
MjAxMS0xMi0yNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCB0
ZXN0cyBmYWlsaW5nIGFzIGEgcmVzdWx0IG9mIHIxMDM2NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAy
NTNlYmRiODRkMjFiNWZlNTFiZjIxMWRkMTBmNTZlZThlYWYzNWJhLi5jNjZkNjIxNGQ4MWYyMmU2
OWQ2MmM0MTJlOGQxZDJlYjk3MGEyMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00MjgsMTQgKzQy
OCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2Fz
Q2FsbGVkKGJvb2wpCiB9CiAKICNlbHNlCi0gICAgCi1zdGF0aWMgYm9vbCB3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudFdhc0NhbGxlZDsKLXN0YXRpYyBib29sIGRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnRXYXNDYWxsZWQ7CiAKLXN0YXRpYyB2b2lkIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50V2FzQ2FsbGVkKGJvb2wgd2FzQ2FsbGVkKQotewotICAgIHdpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50V2FzQ2FsbGVkID0gd2FzQ2FsbGVkOwotfQorc3RhdGljIGJvb2wgZGlkTW92ZVRvTmV3
T3duZXJEb2N1bWVudFdhc0NhbGxlZDsKIAogc3RhdGljIHZvaWQgc2V0RGlkTW92ZVRvTmV3T3du
ZXJEb2N1bWVudFdhc0NhbGxlZChib29sIHdhc0NhbGxlZCkKIHsKQEAgLTQ1MiwxOSArNDQ2LDE2
IEBAIHZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogCiAgICAgZG9j
dW1lbnQtPmd1YXJkUmVmKCk7CiAKLSAgICBzZXRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdh
c0NhbGxlZChmYWxzZSk7Ci0gICAgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBB
U1NFUlQod2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwotCiAgICAgaWYgKG1f
ZG9jdW1lbnQpIHsKICAgICAgICAgbV9kb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0Rv
Y3VtZW50KHRoaXMsIGRvY3VtZW50KTsKICAgICAgICAgbV9kb2N1bWVudC0+Z3VhcmREZXJlZigp
OwogICAgIH0KIAorICAgIERvY3VtZW50KiBvbGREb2N1bWVudCA9IG1fZG9jdW1lbnQ7CiAgICAg
bV9kb2N1bWVudCA9IGRvY3VtZW50OwogCiAgICAgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dFdhc0NhbGxlZChmYWxzZSk7Ci0gICAgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAg
IGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQob2xkRG9jdW1lbnQpOwogICAgIEFTU0VSVChkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKTsKIH0KIApAQCAtMjQ5NywxMyArMjQ4OCw3
IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCiAgICAgY2xlYXJJbkRvY3VtZW50
KCk7CiB9CiAKLXZvaWQgTm9kZTo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQotewotICAg
IEFTU0VSVCghd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwotICAgIHNldFdp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKHRydWUpOwotfQotCi12b2lkIE5vZGU6
OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKICAgICBBU1NFUlQoIWRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwogICAgIHNldERpZE1vdmVUb05ld093bmVyRG9j
dW1lbnRXYXNDYWxsZWQodHJ1ZSk7CkBAIC0yNTIyLDYgKzI1MDcsOCBAQCB2b2lkIE5vZGU6OmRp
ZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTXV0
YXRpb25PYnNlcnZlclR5cGVzKCgqaXRlciktPm11dGF0aW9uVHlwZXMoKSk7CiAgICAgICAgIH0K
ICAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvbGREb2N1bWVudCk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKaW5kZXggMDkzNjdmNGZlYmVkNmJjMjBjMjdmOTM3Mzk2ZDIzYmY1MzExZGFm
ZC4uMzg5NTg1ZDYzYmZjYjM4OTFiMzZkNGE2YjMxZmY1NTA5OGNhZjI5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CkBAIC02NzgsOCArNjc4LDcgQEAgcHJvdGVjdGVkOgogICAgIH07CiAgICAgTm9kZShEb2N1bWVu
dCosIENvbnN0cnVjdGlvblR5cGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChEb2N1bWVu
dCogb2xkRG9jdW1lbnQpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdCB7IH0KICAgICB2b2lkIHNldFRh
YkluZGV4RXhwbGljaXRseShzaG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5jcHAKaW5kZXggMWRkYjZhNjVjMjY2MmYwOThhODMwMzkxZmNiZTExNDAx
YWIyMTY2My4uZmEwNGNkZmRkNGU5MmI5ZDI2YWYwZWQ3NWNkMzNhZDYyYTQxMGRlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAtNTIsMTEg
KzUyLDExIEBAIFZhbGlkaXR5U3RhdGUqIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRpdHko
KQogICAgIHJldHVybiBtX3ZhbGlkaXR5U3RhdGUuZ2V0KCk7CiB9CiAKLXZvaWQgRm9ybUFzc29j
aWF0ZWRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChEb2N1bWVudCogb2xkRG9j
dW1lbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMp
OwotICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKGZvcm1BdHRyKSkKLSAgICAgICAg
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1
dGUodGhpcyk7CisgICAgaWYgKGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpICYm
IG9sZERvY3VtZW50KQorICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3RlckZvcm1FbGVtZW50
V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CiB9CiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50
OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2Np
YXRlZEVsZW1lbnQuaAppbmRleCA1YTg2MWUyNzI2MWI2NzUzOGYwMGIwZjIwYTIyMmY4NjU0YzQz
NTQyLi5hNDkzNWFlZDFkYjczZTJiNDJmOWI3OGI1YjBhZGI1ODJlMDc3N2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlZEZyb21UcmVlKCk7CiAgICAgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotICAgIHZv
aWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld093
bmVyRG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIAogICAgIHZvaWQg
c2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQqIGZvcm0pIHsgbV9mb3JtID0gZm9ybTsgfQogICAgIHZv
aWQgcmVtb3ZlRnJvbUZvcm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCmluZGV4IGMwNWVhNDEwMTJjMzBmNTVlOTQyMWVkY2JhMGFiMmM2YzQw
OGEyN2IuLmFjMzY0Y2ZmMTllMGM5MTk2ZjU2MzljNDcwNWU4OGY0ZjkxMjI3Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMTk2LDEw
ICsxOTYsMTAgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphdHRhY2goKQogICAgIHJl
c3VtZVBvc3RBdHRhY2hDYWxsYmFja3MoKTsKIH0KIAotdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQog
ewotICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKLSAgICBIVE1MRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQob2xkRG9jdW1l
bnQpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KG9sZERvY3Vt
ZW50KTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG9UcmVl
KGJvb2wgZGVlcCkKQEAgLTUxMSwxNiArNTExLDEyIEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGU6On5IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKCkKICAgICBkb2N1bWVu
dCgpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoU3RhdGUodGhpcyk7CiB9CiAKLXZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KQotewotICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhTdGF0ZSh0aGlz
KTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOwotfQotCi12b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRl
OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKKyAg
ICBpZiAob2xkRG9jdW1lbnQpCisgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyRm9ybUVs
ZW1lbnRXaXRoU3RhdGUodGhpcyk7CiAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JtRWxlbWVu
dFdpdGhTdGF0ZSh0aGlzKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudChvbGREb2N1bWVudCk7CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZTo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggNzhiNzQ0ZDU1ZTc3YzZl
NTYxODkwMDQyZDc5YzZkYjA3Y2M5ZTYwMi4uNTJjNDA5N2NlN2VhNjQ0OTk4NzYyNWI1ZGI3NTli
NTFiZjU5YTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tVHJlZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9E
b2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwpAQCAt
MTg1LDggKzE4NSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRv
Y29tcGxldGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJS
SURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAppbmRleCBlMWEzZmJlODU0NjQ2MzMxYmZjZjc2YzVlOWE3ODk5YTNjNDM0NDBjLi4x
YzQwZDBjZThlOWFmMTgyNzIwZmY5NWQ4MDE1YmYyOTM0MzQyMzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC02MzIsMTggKzYzMiwxNSBAQCB2b2lkIEhUTUxG
b3JtRWxlbWVudDo6ZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKCkKICAgICB9CiB9CiAK
LXZvaWQgSFRNTEZvcm1FbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lk
IEhUTUxGb3JtRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChEb2N1bWVudCogb2xk
RG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFzaG91bGRBdXRvY29tcGxldGUoKSkKLSAgICAgICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7
Ci0gICAgSFRNTEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci19Ci0KLXZv
aWQgSFRNTEZvcm1FbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKLXsKLSAgICBp
ZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgpKQorICAgIGlmICghc2hvdWxkQXV0b2NvbXBsZXRlKCkp
IHsKKyAgICAgICAgaWYgKG9sZERvY3VtZW50KQorICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVu
cmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgICAgICBk
b2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7
Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB9CisK
KyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChvbGREb2N1bWVudCk7
CiB9CiAKIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpzaG91bGRBdXRvY29tcGxldGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggNDMwODcwYmIxNjNiZWVmNzhj
YTI0N2RkZDkzMWJmNWUyZjFhYjRkOS4uYzhiMTZhZDQ4MjhjMWFjMzE0ZmNhNGRlZmIwZTkwY2Nm
MjczYjkyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBAIC0xMjgsOCAr
MTI4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZFJlc3VtZUZy
b21QYWdlQ2FjaGUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoRG9jdW1lbnQqIG9sZERv
Y3VtZW50KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWdpc3RlckFzTmFt
ZWRJdGVtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0NTY4MTgzZWM1M2E2MmU5MzMzZTM4NjQ2
NzQyZTc2NzZiNDkwMzFmLi5jNmE1YTYzM2VlYWVkYWZmNTQyMGZlODBjMzBmMzBhZGMzYjQxYzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTM0OSwxMCAr
MzQ5LDEwIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zCiAgICAgYWRkU3VicmVzb3VyY2VVUkwo
dXJscywgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHVzZW1hcEF0dHIpKSk7
CiB9CiAKLXZvaWQgSFRNTEltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KQordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KERvY3Vt
ZW50KiBvbGREb2N1bWVudCkKIHsKLSAgICBtX2ltYWdlTG9hZGVyLmVsZW1lbnRXaWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOwotICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJE
b2N1bWVudCgpOworICAgIG1faW1hZ2VMb2FkZXIuZWxlbWVudERpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChvbGRE
b2N1bWVudCk7CiB9CiAKIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6aXNTZXJ2ZXJNYXAoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCA2MDYxOGM1YTMxNDNi
NTBhN2JjYTlmYWU4M2NlYTdiM2M5ZTk2NmQzLi5kNjJmNmVjMTBhZjc0N2E5MjlhYTA5M2FmNjAw
YzYwY2QwYzdiYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAt
ODAsNyArODAsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqID0gMCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQp
IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDIxNGU1
YzRlZTllZDY3OGE4MDVhNzkwMGE1YjA0M2I2Mzg5MTliNzEuLjMxZDVhNWNiZGFmOWNlZDJmZjc2
ODA1YWJkMzIxYzhjYTc1OTk1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMTUwMiwyNCArMTUwMiwyMCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRv
Y3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNoZSgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBI
VE1MSW5wdXRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3Vt
ZW50KQogewogICAgIG1faW5wdXRUeXBlLT53aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwor
ICAgIGlmIChvbGREb2N1bWVudCkgeworICAgICAgICAvLyBBbHdheXMgdW5yZWdpc3RlciBmb3Ig
Y2FjaGUgY2FsbGJhY2tzIHdoZW4gbGVhdmluZyBhIGRvY3VtZW50LCBldmVuIGlmIHdlIHdvdWxk
IG90aGVyd2lzZSBsaWtlIHRvIGJlIHJlZ2lzdGVyZWQKKyAgICAgICAgaWYgKG5lZWRzU3VzcGVu
c2lvbkNhbGxiYWNrKCkpCisgICAgICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3RlckZvclBh
Z2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CisgICAgICAgIG9sZERvY3VtZW50LT5j
aGVja2VkUmFkaW9CdXR0b25zKCkucmVtb3ZlQnV0dG9uKHRoaXMpOworICAgIH0KIAotICAgIC8v
IEFsd2F5cyB1bnJlZ2lzdGVyIGZvciBjYWNoZSBjYWxsYmFja3Mgd2hlbiBsZWF2aW5nIGEgZG9j
dW1lbnQsIGV2ZW4gaWYgd2Ugd291bGQgb3RoZXJ3aXNlIGxpa2UgdG8gYmUgcmVnaXN0ZXJlZAog
ICAgIGlmIChuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpKQotICAgICAgICBkb2N1bWVudCgpLT51
bnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKLQotICAgIGRv
Y3VtZW50KCktPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7Ci0KLSAg
ICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKLX0KLQotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCkKLXsKLSAgICByZWdpc3RlckZvclN1c3BlbnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CisgICAg
ICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0
aGlzKTsKIAotICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCk7CisgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQob2xkRG9jdW1lbnQpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggNzg2N2EzMmVjM2Jm
NzZmMjEwNGQ1ZTllZDI2ODU1MDZmNTc3ZTgxYi4uMzJhMGJkNDhjOTRkYjRjZDY4YzNmMWRjYjUx
ZTU4ZWNkZTkwZGJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAg
LTI0OSw4ICsyNDksNyBAQCBwcml2YXRlOgogICAgIGVudW0gQXV0b0NvbXBsZXRlU2V0dGluZyB7
IFVuaW5pdGlhbGl6ZWQsIE9uLCBPZmYgfTsKICAgICBlbnVtIEFueVN0ZXBIYW5kbGluZyB7IFJl
amVjdEFueSwgQW55SXNEZWZhdWx0U3RlcCB9OwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChE
b2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGlzS2V5
Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBp
c01vdXNlRm9jdXNhYmxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCBhOTNhMWUwNGRjMGE3ZTcwYzQ2NzcwNDk4YTQzOTY5ODQzOTgyODdjLi41
Y2RhZmY0ZWVkMjM3NGNlY2VkMmYwYTRhNWIyOTVjNzEwNjA5OWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI3NywyNSArMjc3LDIzIEBAIEhUTUxNZWRp
YUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICByZW1vdmVFbGVtZW50RnJvbURvY3Vt
ZW50TWFwKHRoaXMsIGRvY3VtZW50KCkpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Ondp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7Ci0gICAgaWYgKG1f
aXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQotICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7Ci0gICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQo
ZmFsc2UpOwotICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNr
cyh0aGlzKTsKLSAgICByZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRoaXMsIGRvY3VtZW50
KCkpOwotICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotfQor
ICAgIGlmIChvbGREb2N1bWVudCkgeworICAgICAgICBpZiAobV9pc1dhaXRpbmdVbnRpbE1lZGlh
Q2FuU3RhcnQpCisgICAgICAgICAgICBvbGREb2N1bWVudC0+cmVtb3ZlTWVkaWFDYW5TdGFydExp
c3RlbmVyKHRoaXMpOworICAgICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChvbGREb2N1bWVu
dCwgZmFsc2UpOworICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3RlckZvck1lZGlhVm9sdW1l
Q2FsbGJhY2tzKHRoaXMpOworICAgICAgICByZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRo
aXMsIG9sZERvY3VtZW50KTsKKyAgICB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpCi17CiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNh
blN0YXJ0KQogICAgICAgICBkb2N1bWVudCgpLT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhp
cyk7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA8IEhBVkVfQ1VSUkVOVF9EQVRBKQotICAgICAgICBz
ZXRTaG91bGREZWxheUxvYWRFdmVudCh0cnVlKTsKKyAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2Fk
RXZlbnQoZG9jdW1lbnQoKSwgdHJ1ZSk7CiAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JNZWRp
YVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCh0aGlz
LCBkb2N1bWVudCgpKTsKLSAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KG9sZERvY3Vt
ZW50KTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QK
QEAgLTMzOTcsNiArMzM5NSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzVVJMQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJvb2wgc2hvdWxkRGVsYXkpCiB7CisgICAgc2V0U2hv
dWxkRGVsYXlMb2FkRXZlbnQoZG9jdW1lbnQoKSwgc2hvdWxkRGVsYXkpOworfQorCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZERlbGF5TG9hZEV2ZW50KERvY3VtZW50KiBkb2MsIGJv
b2wgc2hvdWxkRGVsYXkpCit7CiAgICAgaWYgKG1fc2hvdWxkRGVsYXlMb2FkRXZlbnQgPT0gc2hv
dWxkRGVsYXkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzQwNCw5ICszNDA3LDkgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYWRFdmVudChib29sIHNob3VsZERlbGF5
KQogCiAgICAgbV9zaG91bGREZWxheUxvYWRFdmVudCA9IHNob3VsZERlbGF5OwogICAgIGlmIChz
aG91bGREZWxheSkKLSAgICAgICAgZG9jdW1lbnQoKS0+aW5jcmVtZW50TG9hZEV2ZW50RGVsYXlD
b3VudCgpOworICAgICAgICBkb2MtPmluY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKICAg
ICBlbHNlCi0gICAgICAgIGRvY3VtZW50KCktPmRlY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQo
KTsKKyAgICAgICAgZG9jLT5kZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7CiB9CiAgICAg
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggZTFmMzUxNDlhOTE1
YWFhNTc2YmMzMmYyZTcyMmZmMGM1ZmQ1MDA5OS4uZTAxYzFlMzg2MWRjMTI0MGNiYmI2Y2EzZDBk
YzY3ZDA2YzljMmVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTI4Miw4ICsyODIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmli
dXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIAotICAg
IHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1v
dmVUb05ld093bmVyRG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIAog
ICAgIGVudW0gRGlzcGxheU1vZGUgeyBVbmtub3duLCBOb25lLCBQb3N0ZXIsIFBvc3RlcldhaXRp
bmdGb3JWaWRlbywgVmlkZW8gfTsKICAgICBEaXNwbGF5TW9kZSBkaXNwbGF5TW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcGxheU1vZGU7IH0KQEAgLTQzNCw3ICs0MzMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAgICB2b2lkIHNldFNob3VsZERl
bGF5TG9hZEV2ZW50KGJvb2wpOwotCisgICAgdm9pZCBzZXRTaG91bGREZWxheUxvYWRFdmVudChE
b2N1bWVudCosIGJvb2wpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKICAgICB2
b2lkIHJlZnJlc2hDYWNoZWRUaW1lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZTcyZTdjN2E5NjE5MGY2Yzg4ZTNiNTJhNWVkZDFmMTEx
MTUyOThlNS4uYTJlYzQwY2VlNTc5ZWExYjQ5MTVmZmZiMDY0YTI5ZTFlMWRkOGY4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTQ3NiwxMCArNDc2LDEw
IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uCiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVy
bHMsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVzZU1hcCkpOwogfQogCi12b2lkIEhUTUxPYmpl
Y3RFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxPYmplY3RF
bGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkK
IHsKLSAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCk7Ci0gICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKTsKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQob2xkRG9jdW1lbnQpOworICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQob2xkRG9jdW1lbnQpOwogfQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50
OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaAppbmRleCBkNTY2NDdiYmUxYTVhMzMxMmM1MzMxYTI5M2I3NjQwZTI3MDFlZTRh
Li5jYWQzZmY1NWZlNGZjMzJjNWVjMGMzNjA2Mzc5YmM4OWViYWI3NTUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIAorICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CisKICAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJp
YnV0ZSopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKaW5kZXggNDlhM2IzNWE1MzhhMGQ2OGRhYTVlMjk5N2IxYjYwNjExNGM5YzM3Zi4u
NzkxNjQzNDU4ZDEyZjUyZWY3YzUxODdkNjBmNzE4OTRkZTk3YmM3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yMDIsMjMgKzIwMiwx
NyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
CiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsgICAgCiB9CiAKLXZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KERvY3VtZW50KiBvbGRE
b2N1bWVudCkKIHsKLSAgICBpZiAobV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcykK
LSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxs
YmFja3ModGhpcyk7CisgICAgaWYgKG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3Mp
IHsKKyAgICAgICAgaWYgKG9sZERvY3VtZW50KQorICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVu
cmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICBk
b2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7
CisgICAgfQogCiAgICAgaWYgKG1faW1hZ2VMb2FkZXIpCi0gICAgICAgIG1faW1hZ2VMb2FkZXIt
PmVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotCi0gICAgSFRNTFBsdWdJbkVs
ZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci19Ci0KLXZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCi17Ci0gICAgaWYgKG1f
bmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MpCi0gICAgICAgIGRvY3VtZW50KCktPnJl
Z2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsgICAKLSAgICAKLSAg
ICBIVE1MUGx1Z0luRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgICAg
ICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAg
IEhUTUxQbHVnSW5FbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KG9sZERvY3VtZW50
KTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpkb2N1bWVudFdpbGxTdXNwZW5k
Rm9yUGFnZUNhY2hlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmgKaW5kZXggYTMwYjk4YjY2ZWJlMDI0ZjBlZDkwZjY0ZGMxMTQ3NDdkMDUxNjNmOS4uY2Ri
Y2E3YmZkNTViNDBlMTI5MzZiYjJiZDI4OTliMWJlMTY0MTU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTc0LDggKzc0LDcgQEAgcHJvdGVj
dGVkOgogICAgIGJvb2wgYWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsK
ICAgICBib29sIHdvdWxkTG9hZEFzTmV0c2NhcGVQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgc2VydmljZVR5cGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3
T3duZXJEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwogICAgIAogICAg
IHZpcnR1YWwgdm9pZCBkb2N1bWVudFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNoZSgpIE9WRVJS
SURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggM2RlYzU2
MjdlNzBiMjM1OTk5OTRhZjU2MDFlMGUyNDQ1ODNjOTdjMi4uNjcyNDhjNTkwYWZiOGVjMjg2NTZi
ZTRkNDM0ZjFhNzgzNzA2MjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCkBAIC0yNzEsMTEgKzI3MSwxMSBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtp
dERpc3BsYXlpbmdGdWxsc2NyZWVuKCkKICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCk7CiB9CiAK
LXZvaWQgSFRNTFZpZGVvRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9p
ZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KERvY3VtZW50KiBv
bGREb2N1bWVudCkKIHsKICAgICBpZiAobV9pbWFnZUxvYWRlcikKLSAgICAgICAgbV9pbWFnZUxv
YWRlci0+ZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgSFRNTE1lZGlh
RWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgbV9pbWFnZUxv
YWRlci0+ZWxlbWVudERpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBIVE1MTWVkaWFF
bGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KG9sZERvY3VtZW50KTsKIH0KIAogI2lm
IEVOQUJMRShNRURJQV9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuaAppbmRleCA0OTE4MDMyMWE0YjJkMDQ3OGU1MTUyNjI3ZGU4NTdlYTE1OWEyYjVjLi44OGFl
YjYyODViZGFlOGIyZjk0MDE5ZTE0ZDY4ZTNlYjIyYTFhYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtODQsOSArODQsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRGlzcGxheVN0YXRlKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKLQorICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlKTsKIAogICAgIE93blB0cjxIVE1MSW1hZ2VMb2Fk
ZXI+IG1faW1hZ2VMb2FkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRl
eCA3ZGIxYWMzMjU3MTBmMDNlNjY1N2U1MjI0OGVlYzMwZThjZjM5ZWNkLi4wZmM2ZjA2MTFjYThj
ZjY3ZjE2ZTIwNzE4YzA5NjI4YmQ0NThjY2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZpcnR1
YWwgfkltYWdlRG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIAogICAgIEltYWdlRG9jdW1l
bnQqIG1faW1hZ2VEb2N1bWVudDsKIH07CkBAIC00MDcsMTMgKzQwNywxMyBAQCBJbWFnZURvY3Vt
ZW50RWxlbWVudDo6fkltYWdlRG9jdW1lbnRFbGVtZW50KCkKICAgICAgICAgbV9pbWFnZURvY3Vt
ZW50LT5kaXNjb25uZWN0SW1hZ2VFbGVtZW50KCk7CiB9CiAKLXZvaWQgSW1hZ2VEb2N1bWVudEVs
ZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSW1hZ2VEb2N1bWVudEVs
ZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQog
ewogICAgIGlmIChtX2ltYWdlRG9jdW1lbnQpIHsKICAgICAgICAgbV9pbWFnZURvY3VtZW50LT5k
aXNjb25uZWN0SW1hZ2VFbGVtZW50KCk7CiAgICAgICAgIG1faW1hZ2VEb2N1bWVudCA9IDA7CiAg
ICAgfQotICAgIEhUTUxJbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7
CisgICAgSFRNTEltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChvbGREb2N1
bWVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKaW5kZXgg
OTBkN2JiOWFjYTIzOGFiMmUyN2UyMzc0Mjk1YTk4MmFlNmVmMWE2YS4uYTExOGRhNzQyODQ5MmE0
ZGNkZWMyYTQ1NzAxMmU4NTk2MDU3ODgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0
VHlwZS5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEltYWdlSW5wdXRUeXBlOjp3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpCiB7CiAgICAgQmFzZUJ1dHRvbklucHV0VHlwZTo6d2lsbE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKTsKICAgICBpZiAobV9pbWFnZUxvYWRlcikKLSAgICAgICAg
bV9pbWFnZUxvYWRlci0+ZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAg
ICAgIG1faW1hZ2VMb2FkZXItPmVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiB9
CiAKIGJvb2wgSW1hZ2VJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RBbGlnbkF0dHJpYnV0ZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCA4MjBjZmQzZmI5YThkZTk2MDY2
NjlmZjQ4YmM2OGRiOGIwNTEyYmZkLi4zODI0ZmMwMjFmYjRhMDI2ODEwMTRhMWJhZjc3YTE4OGQz
ZDdmZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTM0OSw3ICsz
NDksNyBAQCB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKICAg
ICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKIH0KIAotdm9pZCBJ
bWFnZUxvYWRlcjo6ZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSW1h
Z2VMb2FkZXI6OmVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKIHsKICAgICBzZXRJ
bWFnZSgwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggZTg1ZjFkMTFl
NjYyNDA4NDFkZjZhYjVkZGYwNThjYzUyOGFjOWJiYS4uYjY3ZmI0OGVmOWRiMjFhMjMwMjUwN2E1
N2ZlYzQ2MmRmMGIzYTdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIC8vIGRvZXNuJ3QgY2hhbmdlOyBzdGFydHMgbmV3IGxv
YWQgdW5jb25kaXRpb25hbGx5IChtYXRjaGVzIEZpcmVmb3ggYW5kIE9wZXJhIGJlaGF2aW9yKS4K
ICAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAKLSAg
ICB2b2lkIGVsZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZvaWQgZWxl
bWVudERpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAogICAgIEVsZW1lbnQqIGVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICBib29sIGltYWdlQ29tcGxldGUoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlQ29tcGxldGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKaW5kZXggYWY0YzI3MDc3YjQ1OTUwYmJkMjU1YTZhNDQwNGU3OTgzNDdhMDM3
ZC4uMTkwMzg0YWMwYmU3NTllZDA4MzgwZWViM2UwNmYyOWE5ZTA3NzQzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTIxNSwxMCArMjE1LDEwIEBAIHZvaWQgU1ZH
SW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mIHVybHMpIGNvbnN0CiAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwoaHJlZigpKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VFbGVtZW50Ojp3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIFNWR0ltYWdlRWxlbWVudDo6ZGlkTW92ZVRvTmV3
T3duZXJEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7Ci0gICAgbV9pbWFnZUxvYWRl
ci5lbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBtX2lt
YWdlTG9hZGVyLmVsZW1lbnREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQob2xkRG9j
dW1lbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggZjk3
ZTFkOTI5YmVlMTQzOTAxNTg2ZGU0MWY3M2M0MjVhOThkZjYwOC4uNmJhN2RlOTQ1NjRiMjE2MThh
ODc5MmMzMDg5NzVmNTk4YTk5YjFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
aApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVk
UmVxdWlyZWRSZXNvdXJjZXMoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVM
ZW5ndGhzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoRG9jdW1l
bnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVElFUyhTVkdJbWFnZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFgsIHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggYzk2YTgzZTRj
OTg0ZWM0MzE4YTkwMTJjNDE1NjIwNDQyOTg5MDE0My4uMjRlNjMxNmUwMDYzYzUzMTVkZGNiYzhh
N2Y5NDMxMzI0YWEzMTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAt
MTA2LDE2ICsxMDYsMTUgQEAgU1ZHU1ZHRWxlbWVudDo6flNWR1NWR0VsZW1lbnQoKQogICAgIGRv
Y3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlVGltZUNvbnRhaW5lcih0aGlz
KTsKIH0KIAotdm9pZCBTVkdTVkdFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
Cit2b2lkIFNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoRG9jdW1lbnQq
IG9sZERvY3VtZW50KQogewotICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JQYWdlQ2FjaGVT
dXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwotICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6
OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci19CisgICAgZG9jdW1lbnQoKS0+cmVnaXN0
ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAgIFNWR1N0eWxlZExv
Y2F0YWJsZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQob2xkRG9jdW1lbnQpOwog
Ci12b2lkIFNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQoteworICAg
IGlmIChvbGREb2N1bWVudCkKKyAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJGb3JQYWdl
Q2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgIGRvY3VtZW50KCktPnJlZ2lzdGVy
Rm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKLSAgICBTVkdTdHlsZWRMb2Nh
dGFibGVFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgU1ZHU3R5bGVk
TG9jYXRhYmxlRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChvbGREb2N1bWVudCk7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFNjcmlwdFR5
cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggODliNWJmNjEyMjgw
NjBjMWMzMmI4NGI5NWQzNmM3YWYxMDE3NThlZi4uNWUyNGVkYzMxNGIzNjFiYTM3MzRkNzkzNjc1
YTcwNjU1YzJiMDhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0xMjYsOCAr
MTI2LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudChE
b2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIFNWR1NWR0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120524</attachid>
            <date>2011-12-25 21:16:11 -0800</date>
            <delta_ts>2011-12-25 22:05:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74067-20111226141609.patch</filename>
            <type>text/plain</type>
            <size>31652</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA3YjA0OThjODI4MWE3
MDBhZWMxYjM1NzJmMDA5YmUyYWY2ZTQ2ZS4uMjg4ZWYyZTUxOTBiNWY5NTQxMTY1ODBlNjNiMTEy
NjVmYWZjMmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDExLTEyLTI1ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2NworICAgICAgICBSZWZhY3RvcmluZzog
VW5pdGZ5IHdpbGxNb3ZlVG9OZXdEb2N1bWVudCgpIGFuZCBkaWRNb3ZlVG9OZXdEb2N1bWVudCgp
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29tYmlu
ZXMgdHdvIG1ldGhvZCBOb2RlOjp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpIGFuZCBOb2Rl
OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKKyAgICAgICAgaW50byBOb2RlOjpkaWRNb3Zl
VG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpLgorCisgICAgICAgIFRoZSBpbnRl
bnRpb24gb2YgdGhpcyBjaGFuZ2UgaXM6CisgICAgICAgIC0gTWFraW5nIHVwY29taW5nIHJlZmFj
dG9yaW5nIChCdWcgNTk4MTYpIHBvc3NpYmxlLiBUaGUgcmVmYWN0b3Jpbmcgd2lsbCB0dXJuIE5v
ZGU6Om1fZG9jdW1lbnQgaW50bworICAgICAgICAgIE5vZGU6Om1fdHJlZVNjb3BlLCBhbmQgd2Ug
d2lsbCBubyBsb25nZXIgaGF2ZSBOb2RlOjpzZXREb2N1bWVudCgpIHdoZXJlIHdlIGNhbiBpbnZv
a2UgYm90aAorICAgICAgICAgIHdpbGxNb3ZlVG9OZXdEb2N1bWVudCgpIGFuZCBkaWRNb3ZlVG9O
ZXdEb2N1bWVudCgpIGF0IG9uY2UuCisgICAgICAgIC0gS2lsbGluZyBvbmUgZXh0cmEgdmlydHVh
bCBtZXRob2QgY2FsbC4KKyAgICAgICAgLSBNYWtpbmcgdGhlIGNvbmNlcHQgb2YgIm1vdmUiIGNs
ZWFyZXIgYnkga2VlcGluZyBzdWNoIGFuIG9wZXJhdGlvbiBpbnRvIHRoZSBzaW5nbGUgbWV0aG9k
LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0V2lsbE1v
dmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERpZE1vdmVU
b05ld0RvY3VtZW50V2FzQ2FsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldERvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAg
ICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0
bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVj
dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxPYmpl
Y3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURvY3VtZW50RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VJbnB1dFR5cGU6OndpbGxNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0lt
YWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjplbGVtZW50RGlk
TW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdl
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHU1ZHRWxlbWVudC5oOgorCiAyMDExLTEyLTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgRml4IHRlc3RzIGZhaWxpbmcgYXMgYSByZXN1bHQgb2YgcjEwMzY0
MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCmluZGV4IDI1M2ViZGI4NGQyMWI1ZmU1MWJmMjExZGQxMGY1NmVlOGVh
ZjM1YmEuLmNlNDRiZGYyN2E1YzgwNWI3MTRmY2I5MmFhNmYwODgyNzUxYzA0ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKQEAgLTQxOSwyNyArNDE5LDIxIEBAIE5vZGU6On5Ob2RlKCkKIAogI2lmZGVmIE5E
RUJVRwogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRX
YXNDYWxsZWQoYm9vbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRXaWxsTW92ZVRvTmV3RG9jdW1l
bnRXYXNDYWxsZWQoYm9vbCkKIHsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldERpZE1vdmVU
b05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQoYm9vbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRE
aWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZChib29sKQogewogfQogCiAjZWxzZQotICAgIAot
c3RhdGljIGJvb2wgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQ7Ci1zdGF0aWMg
Ym9vbCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkOwogCi1zdGF0aWMgdm9pZCBz
ZXRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChib29sIHdhc0NhbGxlZCkKLXsK
LSAgICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCA9IHdhc0NhbGxlZDsKLX0K
K3N0YXRpYyBib29sIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkOwogCi1zdGF0aWMgdm9p
ZCBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGJvb2wgd2FzQ2FsbGVkKQor
c3RhdGljIHZvaWQgc2V0RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQoYm9vbCB3YXNDYWxs
ZWQpCiB7Ci0gICAgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCA9IHdhc0NhbGxl
ZDsKKyAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9IHdhc0NhbGxlZDsKIH0KICAg
ICAKICNlbmRpZgpAQCAtNDUyLDIwICs0NDYsMTcgQEAgdm9pZCBOb2RlOjpzZXREb2N1bWVudChE
b2N1bWVudCogZG9jdW1lbnQpCiAKICAgICBkb2N1bWVudC0+Z3VhcmRSZWYoKTsKIAotICAgIHNl
dFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGZhbHNlKTsKLSAgICB3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIEFTU0VSVCh3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudFdhc0NhbGxlZCk7Ci0KICAgICBpZiAobV9kb2N1bWVudCkgewogICAgICAgICBtX2RvY3Vt
ZW50LT5tb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQodGhpcywgZG9jdW1lbnQpOwogICAg
ICAgICBtX2RvY3VtZW50LT5ndWFyZERlcmVmKCk7CiAgICAgfQogCisgICAgRG9jdW1lbnQqIG9s
ZERvY3VtZW50ID0gbV9kb2N1bWVudDsKICAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CiAKLSAg
ICBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGZhbHNlKTsKLSAgICBkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgQVNTRVJUKGRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnRXYXNDYWxsZWQpOworICAgIHNldERpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKGZh
bHNlKTsKKyAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgQVNTRVJU
KGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKTsKIH0KIAogVHJlZVNjb3BlKiBOb2RlOjp0
cmVlU2NvcGUoKSBjb25zdApAQCAtMjQ5NywxNiArMjQ4OCwxMCBAQCB2b2lkIE5vZGU6OnJlbW92
ZWRGcm9tRG9jdW1lbnQoKQogICAgIGNsZWFySW5Eb2N1bWVudCgpOwogfQogCi12b2lkIE5vZGU6
OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewotICAgIEFTU0VSVCghd2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwotICAgIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50V2FzQ2FsbGVkKHRydWUpOwotfQotCi12b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKQotewotICAgIEFTU0VSVCghZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxl
ZCk7Ci0gICAgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCh0cnVlKTsKKyAg
ICBBU1NFUlQoIWRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKTsKKyAgICBzZXREaWRNb3Zl
VG9OZXdEb2N1bWVudFdhc0NhbGxlZCh0cnVlKTsKIAogICAgIC8vIEZJWE1FOiBFdmVudCBsaXN0
ZW5lciB0eXBlcyBmb3IgdGhpcyBub2RlIHNob3VsZCBiZSBzZXQgb24gdGhlIG5ldyBvd25lciBk
b2N1bWVudCBoZXJlLgogCkBAIC0yNTIyLDYgKzI1MDcsOCBAQCB2b2lkIE5vZGU6OmRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTXV0YXRpb25P
YnNlcnZlclR5cGVzKCgqaXRlciktPm11dGF0aW9uVHlwZXMoKSk7CiAgICAgICAgIH0KICAgICB9
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShvbGREb2N1bWVudCk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKaW5kZXggMDkzNjdmNGZlYmVkNmJjMjBjMjdmOTM3Mzk2ZDIzYmY1MzExZGFmZC4uMGZm
MDFlN2I4MWE5ZmIzYzlmYTJiMzVlZmZmYmMzYWVmMmY4MTU1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC02
NzgsOCArNjc4LDcgQEAgcHJvdGVjdGVkOgogICAgIH07CiAgICAgTm9kZShEb2N1bWVudCosIENv
bnN0cnVjdGlvblR5cGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3Vt
ZW50KTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3QgeyB9CiAgICAgdm9pZCBzZXRUYWJJbmRleEV4cGxp
Y2l0bHkoc2hvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IGM1YmU1
NzEyNmY5ZmY0MDljNmJiZmY5MDUwZmI1OTU0ODI3NDUyMmQuLjJiYzg2YWU0MzMyNjk2ZGI5OGI0
NmZlZDczYmI0YjA0MzRiOWFhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAK
QEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQo
QXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCiAgICAgfQogCiAgICAgLy8gcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoKSBtaWdodCBjcmVhdGUgYSBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNs
YXJhdGlvbiBvbiB0aGUgYXR0cmlidXRlLiAgCi0gICAgLy8gTm9ybWFsbHkgd2Ugd291bGQgYmUg
Y29uY2VybmVkIGFib3V0IHJlc2V0aW5nIHRoZSBwYXJlbnQgb2YgdGhvc2UgZGVjbGFyYXRpb25z
IGluIFN0eWxlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKS4KKyAgICAvLyBO
b3JtYWxseSB3ZSB3b3VsZCBiZSBjb25jZXJuZWQgYWJvdXQgcmVzZXRpbmcgdGhlIHBhcmVudCBv
ZiB0aG9zZSBkZWNsYXJhdGlvbnMgaW4gU3R5bGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1l
bnQoKS4KICAgICAvLyBCdXQgY3VycmVudGx5IHdlIGFsd2F5cyBjbGVhciBpdHMgcGFyZW50IGFu
ZCBub2RlIGJlbG93IHdoZW4gYWRkaW5nIGl0IHRvIHRoZSBkZWNsIHRhYmxlLiAgCiAgICAgLy8g
SWYgdGhhdCBjaGFuZ2VzIGZvciBzb21lIHJlYXNvbiBtb3ZpbmcgYmV0d2VlbiBkb2N1bWVudHMg
d2lsbCBiZSBidWdneS4KICAgICAvLyB3ZWJhcmNoaXZlL2Fkb3B0LWF0dHJpYnV0ZS1zdHlsZWQt
bm9kZS13ZWJhcmNoaXZlLmh0bWwgc2hvdWxkIGNhdGNoIGFueSByZXN1bHRpbmcgY3Jhc2hlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCAx
ZGRiNmE2NWMyNjYyZjA5OGE4MzAzOTFmY2JlMTE0MDFhYjIxNjYzLi5mZWIxZDBkN2EwNzI1ZDEy
NDkxYWIxMTA4ZmM0YjJjMGUwNWEwZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC01MiwxMSArNTIsMTEgQEAgVmFsaWRpdHlTdGF0ZSog
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGl0eSgpCiAgICAgcmV0dXJuIG1fdmFsaWRpdHlT
dGF0ZS5nZXQoKTsKIH0KIAotdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OndpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGVs
ZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOwotICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0
cmlidXRlKGZvcm1BdHRyKSkKLSAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+dW5yZWdpc3Rl
ckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CisgICAgaWYgKG9sZERvY3VtZW50
ICYmIGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQorICAgICAgICBvbGREb2N1
bWVudC0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CiB9CiAK
IHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCA1YTg2MWUyNzI2
MWI2NzUzOGYwMGIwZjIwYTIyMmY4NjU0YzQzNTQyLi4xYThlMTY1N2VmZjNmOWE1ZGNlNWJlZmM4
MzViYzNiOTZkNTg5MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlZEZy
b21UcmVlKCk7CiAgICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwotICAgIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCk7
CiAKICAgICB2b2lkIHNldEZvcm0oSFRNTEZvcm1FbGVtZW50KiBmb3JtKSB7IG1fZm9ybSA9IGZv
cm07IH0KICAgICB2b2lkIHJlbW92ZUZyb21Gb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBjMDVlYTQxMDEyYzMwZjU1ZTk0MjFl
ZGNiYTBhYjJjNmM0MDhhMjdiLi44ZmU0NTA0YWU2OWVhMWY1YjY2YmY1ODkxNmQ0YmZkMGM5NWI3
OTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5j
cHAKQEAgLTE5NiwxMCArMTk2LDEwIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0
YWNoKCkKICAgICByZXN1bWVQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiB9CiAKLXZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9j
dW1lbnQpCiB7Ci0gICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJE
b2N1bWVudCgpOwotICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
OworICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9j
dW1lbnQpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVu
dCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShi
b29sIGRlZXApCkBAIC01MTEsMTYgKzUxMSwxMiBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlOjp+SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSgpCiAgICAgZG9jdW1lbnQo
KS0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0YXRlKHRoaXMpOwogfQogCi12b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkK
LXsKLSAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoU3RhdGUodGhpcyk7
Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKLX0KLQotdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaWRNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogeworICAgIGlmIChv
bGREb2N1bWVudCkKKyAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdp
dGhTdGF0ZSh0aGlzKTsKICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0
YXRlKHRoaXMpOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1
bWVudChvbGREb2N1bWVudCk7CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZTo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggNzhiNzQ0ZDU1ZTc3YzZlNTYxODkwMDQyZDc5
YzZkYjA3Y2M5ZTYwMi4uZGY3YTJkMTFlODY5MDlkYzdlZTdhNzA4ZDU3OGFkMTk1NzE4NWQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTEy
MCw3ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJl
ZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJv
YXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKQEAgLTE4NSw4ICsxODUsNyBAQCBw
cm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGUxYTNmYmU4
NTQ2NDYzMzFiZmNmNzZjNWU5YTc4OTlhM2M0MzQ0MGMuLjc5N2EwODIzNjY0ZjI5ZDFiNTQyNTIw
MjZlZDdiM2ZmZTUzYjgyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKQEAgLTYzMiwxOCArNjMyLDE1IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpkb2N1bWVudERp
ZFJlc3VtZUZyb21QYWdlQ2FjaGUoKQogICAgIH0KIH0KIAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6
OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFzaG91
bGRBdXRvY29tcGxldGUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclBhZ2VD
YWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgSFRNTEVsZW1lbnQ6OndpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7Ci19Ci0KLXZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCkKLXsKLSAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgpKQor
ICAgIGlmICghc2hvdWxkQXV0b2NvbXBsZXRlKCkpIHsKKyAgICAgICAgaWYgKG9sZERvY3VtZW50
KQorICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5z
aW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VD
YWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB9CisKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRv
TmV3RG9jdW1lbnQob2xkRG9jdW1lbnQpOwogfQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6c2hv
dWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5o
CmluZGV4IDQzMDg3MGJiMTYzYmVlZjc4Y2EyNDdkZGQ5MzFiZjVlMmYxYWI0ZDkuLjYzOGNlYzNm
YjYzY2E4YmEyMDAzYmZhZjIyMGNlMDI3YmNiZjI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuaApAQCAtMTI4LDggKzEyOCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1
bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29s
IHNob3VsZFJlZ2lzdGVyQXNOYW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDQ1Njgx
ODNlYzUzYTYyZTkzMzNlMzg2NDY3NDJlNzY3NmI0OTAzMWYuLmFkYzllYjkwNDc5MWIwOGNkZmYy
Nzk3NDM0N2NhNGNkODU0MGVmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcApAQCAtMzQ5LDEwICszNDksMTAgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnMKICAg
ICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChnZXRBdHRy
aWJ1dGUodXNlbWFwQXR0cikpKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05l
d0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKLSAgICBtX2ltYWdlTG9hZGVyLmVs
ZW1lbnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIEhUTUxFbGVtZW50Ojp3aWxs
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIG1faW1hZ2VMb2FkZXIuZWxlbWVudERpZE1v
dmVUb05ld0RvY3VtZW50KCk7CisgICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KG9sZERvY3VtZW50KTsKIH0KIAogYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDYwNjE4YzVh
MzE0M2I1MGE3YmNhOWZhZTgzY2VhN2IzYzllOTY2ZDMuLjhjYjNlZTkwMTkxY2YxOTNhZGIzNmJl
ZGQxYTkzNjc1ZTRjZmEzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5o
CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBIVE1MSW1hZ2VFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAw
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQp
IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDIxNGU1
YzRlZTllZDY3OGE4MDVhNzkwMGE1YjA0M2I2Mzg5MTliNzEuLjQ2ZDEwNDliZGViOTlmNjdkZDNj
N2Y2NjExNGU1ZGVhMzJjYTA5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtMTUwMiwyNCArMTUwMiwyMSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRv
Y3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNoZSgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBI
VE1MSW5wdXRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkK
IHsKICAgICBtX2lucHV0VHlwZS0+d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBi
b29sIG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrID0gdGhpcy0+bmVlZHNTdXNwZW5zaW9uQ2FsbGJh
Y2soKTsKKyAgICBpZiAob2xkRG9jdW1lbnQpIHsKKyAgICAgICAgLy8gQWx3YXlzIHVucmVnaXN0
ZXIgZm9yIGNhY2hlIGNhbGxiYWNrcyB3aGVuIGxlYXZpbmcgYSBkb2N1bWVudCwgZXZlbiBpZiB3
ZSB3b3VsZCBvdGhlcndpc2UgbGlrZSB0byBiZSByZWdpc3RlcmVkCisgICAgICAgIGlmIChuZWVk
c1N1c3BlbnNpb25DYWxsYmFjaykKKyAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVy
Rm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICAgICAgb2xkRG9jdW1l
bnQtPmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7CisgICAgfQogCi0g
ICAgLy8gQWx3YXlzIHVucmVnaXN0ZXIgZm9yIGNhY2hlIGNhbGxiYWNrcyB3aGVuIGxlYXZpbmcg
YSBkb2N1bWVudCwgZXZlbiBpZiB3ZSB3b3VsZCBvdGhlcndpc2UgbGlrZSB0byBiZSByZWdpc3Rl
cmVkCi0gICAgaWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkpCi0gICAgICAgIGRvY3VtZW50
KCktPnVucmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwotCi0g
ICAgZG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRvbih0aGlzKTsK
LQotICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpOwotfQotCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKQotewotICAgIHJlZ2lzdGVyRm9yU3VzcGVuc2lvbkNhbGxiYWNrSWZOZWVkZWQoKTsK
KyAgICBpZiAobmVlZHNTdXNwZW5zaW9uQ2FsbGJhY2spCisgICAgICAgIGRvY3VtZW50KCktPnJl
Z2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKIAotICAgIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3Vt
ZW50KTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IDc4NjdhMzJlYzNiZjc2ZjIxMDRkNWU5ZWQyNjg1NTA2ZjU3
N2U4MWIuLjA1NDQzNmRkNDY3NjAyYzNlMTE5OWZlNjhiZjk0ZjMwNTFiMjZlM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0yNDksOCArMjQ5LDcgQEAgcHJpdmF0
ZToKICAgICBlbnVtIEF1dG9Db21wbGV0ZVNldHRpbmcgeyBVbmluaXRpYWxpemVkLCBPbiwgT2Zm
IH07CiAgICAgZW51bSBBbnlTdGVwSGFuZGxpbmcgeyBSZWplY3RBbnksIEFueUlzRGVmYXVsdFN0
ZXAgfTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVh
bCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50
KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE5M2ExZTA0ZGMwYTdl
NzBjNDY3NzA0OThhNDM5Njk4NDM5ODI4N2MuLmVmMmJlMWVkM2U1OWE5YjRjZWM4ZDRkZWFlZjc1
ZTFhMzZhZThmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMjc3LDI1ICsyNzcsMjkgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQo
KQogICAgIHJlbW92ZUVsZW1lbnRGcm9tRG9jdW1lbnRNYXAodGhpcywgZG9jdW1lbnQoKSk7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQor
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xk
RG9jdW1lbnQpCiB7Ci0gICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQotICAg
ICAgICBkb2N1bWVudCgpLT5yZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7Ci0gICAg
c2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwotICAgIGRvY3VtZW50KCktPnVucmVnaXN0
ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKLSAgICByZW1vdmVFbGVtZW50RnJvbURv
Y3VtZW50TWFwKHRoaXMsIGRvY3VtZW50KCkpOwotICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKQotewotICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5T
dGFydCkKKyAgICBpZiAobV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpIHsKKyAgICAgICAg
aWYgKG9sZERvY3VtZW50KQorICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnJlbW92ZU1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcih0aGlzKTsKICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFy
dExpc3RlbmVyKHRoaXMpOwotICAgIGlmIChtX3JlYWR5U3RhdGUgPCBIQVZFX0NVUlJFTlRfREFU
QSkKLSAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQodHJ1ZSk7CisgICAgfQorCisgICAg
aWYgKG1fcmVhZHlTdGF0ZSA8IEhBVkVfQ1VSUkVOVF9EQVRBICYmIG1fc2hvdWxkRGVsYXlMb2Fk
RXZlbnQpIHsKKyAgICAgICAgaWYgKG9sZERvY3VtZW50KQorICAgICAgICAgICAgb2xkRG9jdW1l
bnQtPmRlY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
aW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOworICAgIH0KKworICAgIGlmIChvbGREb2N1
bWVudCkgeworICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2Fs
bGJhY2tzKHRoaXMpOworICAgICAgICByZW1vdmVFbGVtZW50RnJvbURvY3VtZW50TWFwKHRoaXMs
IG9sZERvY3VtZW50KTsKKyAgICB9CisKICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvck1lZGlh
Vm9sdW1lQ2FsbGJhY2tzKHRoaXMpOwogICAgIGFkZEVsZW1lbnRUb0RvY3VtZW50TWFwKHRoaXMs
IGRvY3VtZW50KCkpOwotICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCk7CisKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1lbnQp
OwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBlMWYzNTE0OWE5MTVhYWE1NzZi
YzMyZjJlNzIyZmYwYzVmZDUwMDk5Li5iNmY2NmRhNzhlZmEzN2RmNWJjOGM1NGI5ODRjMTNmMTI5
ZGMzZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjgyLDgg
KzI4Miw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0
cmlidXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIAogICAgIGVudW0gRGlz
cGxheU1vZGUgeyBVbmtub3duLCBOb25lLCBQb3N0ZXIsIFBvc3RlcldhaXRpbmdGb3JWaWRlbywg
VmlkZW8gfTsKICAgICBEaXNwbGF5TW9kZSBkaXNwbGF5TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzcGxheU1vZGU7IH0KQEAgLTQzNCw3ICs0MzMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAgICB2b2lkIHNldFNob3VsZERlbGF5TG9hZEV2ZW50
KGJvb2wpOwotCiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVkVGltZSgpOwogICAgIHZvaWQgcmVm
cmVzaENhY2hlZFRpbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcAppbmRleCBlNzJlN2M3YTk2MTkwZjZjODhlM2I1MmE1ZWRkMWYxMTExNTI5OGU1
Li5lOWJjMzZjMjQ0YWFiYWI1NjM5ODIwZDc2MDI3ODNlOTkwZTNhZWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtNDc2LDEwICs0NzYsMTAgQEAgdm9p
ZCBIVE1MT2JqZWN0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JiB1cmxzKSBjb24KICAgICAgICAgYWRkU3VicmVzb3VyY2VVUkwodXJscywgZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwodXNlTWFwKSk7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1l
bnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6
OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKLSAgICBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgSFRN
TFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsK
KyAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1
bWVudCk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9v
bCBkZWVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IGQ1NjY0
N2JiZTFhNWEzMzEyYzUzMzFhMjkzYjc2NDBlMjcwMWVlNGEuLjI4NzgwMzlmZTJlZmI3ZmM0OWZh
NDU3ZTMyZTM1ODUyZmFiYzdkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmgKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURv
Y3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7
Ci0gICAgCisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBv
bGREb2N1bWVudCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5v
ZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmly
dHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggNDlhM2IzNWE1Mzhh
MGQ2OGRhYTVlMjk5N2IxYjYwNjExNGM5YzM3Zi4uY2U5YmI3NDMxZTIyOGYyYWNhMzcxNDQ1MmJj
OTdhNjZiZDAzOGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCkBAIC0yMDIsMjMgKzIwMiwxNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsgICAgCiB9CiAKLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7Ci0gICAgaWYgKG1fbmVlZHNEb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja3MpCi0gICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJG
b3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAgIGlmIChtX25lZWRzRG9j
dW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKSB7CisgICAgICAgIGlmIChvbGREb2N1bWVudCkKKyAg
ICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNh
bGxiYWNrcyh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JQYWdlQ2FjaGVT
dXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAgIH0KIAogICAgIGlmIChtX2ltYWdlTG9hZGVy
KQotICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKTsKLQotICAgIEhUTUxQbHVnSW5FbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOwotfQotCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKQotewotICAgIGlmIChtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tz
KQotICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNpb25DYWxs
YmFja3ModGhpcyk7ICAgCi0gICAgCi0gICAgSFRNTFBsdWdJbkVsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVudERpZE1vdmVU
b05ld0RvY3VtZW50KCk7CisgICAgSFRNTFBsdWdJbkVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KG9sZERvY3VtZW50KTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpkb2N1
bWVudFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggYTMwYjk4YjY2ZWJlMDI0ZjBlZDkwZjY0ZGMxMTQ3
NDdkMDUxNjNmOS4uMTY4ZWQ0NjM0MzRmZGI3M2Q3Mjc5NTFkMDdiOTQxMDFiYjllMDYwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTc0LDgg
Kzc0LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgYWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICBib29sIHdvdWxkTG9hZEFzTmV0c2NhcGVQbHVnaW4oY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpOwogCi0gICAgdmlydHVhbCB2
b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsK
ICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRXaWxsU3VzcGVuZEZvclBhZ2VDYWNoZSgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZFJlc3VtZUZyb21QYWdlQ2Fj
aGUoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmlu
ZGV4IDNkZWM1NjI3ZTcwYjIzNTk5OTk0YWY1NjAxZTBlMjQ0NTgzYzk3YzIuLmZlZDJmYTQzNTY1
NGQ1YzRhZTE5NjExYjMzZmQ1ODBlMWNlZTA1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcApAQCAtMjcxLDExICsyNzEsMTEgQEAgYm9vbCBIVE1MVmlkZW9FbGVt
ZW50Ojp3ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVlbigpCiAgICAgcmV0dXJuIGlzRnVsbHNjcmVl
bigpOwogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1l
bnQqIG9sZERvY3VtZW50KQogewogICAgIGlmIChtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2lt
YWdlTG9hZGVyLT5lbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBIVE1M
TWVkaWFFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgICAgICBtX2lt
YWdlTG9hZGVyLT5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKTsKKyAgICBIVE1MTWVkaWFF
bGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CiB9CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgK
aW5kZXggNDkxODAzMjFhNGIyZDA0NzhlNTE1MjYyN2RlODU3ZWExNTlhMmI1Yy4uYWY1YWNiZGE2
YTkyMTM1ZjkxMjM5NDMwYjc5ODMwYmIxOTVjMDhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKQEAgLTg0LDkgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
Ym9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURpc3BsYXlTdGF0ZSgpOwotCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCk7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzcGxh
eU1vZGUoRGlzcGxheU1vZGUpOwogCiAgICAgT3duUHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFn
ZUxvYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDdkYjFhYzMy
NTcxMGYwM2U2NjU3ZTUyMjQ4ZWVjMzBlOGNmMzllY2QuLmQ0YTczZDM4MTRjYjFkMTZmMTgyNzFi
ZTcwODgzYjQ2ZjBmM2Y0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApA
QCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdmlydHVhbCB+SW1hZ2VE
b2N1bWVudEVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQq
IG9sZERvY3VtZW50KSBPVkVSUklERTsKIAogICAgIEltYWdlRG9jdW1lbnQqIG1faW1hZ2VEb2N1
bWVudDsKIH07CkBAIC00MDcsMTMgKzQwNywxMyBAQCBJbWFnZURvY3VtZW50RWxlbWVudDo6fklt
YWdlRG9jdW1lbnRFbGVtZW50KCkKICAgICAgICAgbV9pbWFnZURvY3VtZW50LT5kaXNjb25uZWN0
SW1hZ2VFbGVtZW50KCk7CiB9CiAKLXZvaWQgSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OndpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSW1hZ2VEb2N1bWVudEVsZW1lbnQ6OmRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKICAgICBpZiAobV9pbWFnZURv
Y3VtZW50KSB7CiAgICAgICAgIG1faW1hZ2VEb2N1bWVudC0+ZGlzY29ubmVjdEltYWdlRWxlbWVu
dCgpOwogICAgICAgICBtX2ltYWdlRG9jdW1lbnQgPSAwOwogICAgIH0KLSAgICBIVE1MSW1hZ2VF
bGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIEhUTUxJbWFnZUVsZW1l
bnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAppbmRleCA5MGQ3YmI5YWNhMjM4YWIyZTI3ZTIzNzQy
OTVhOTgyYWU2ZWYxYTZhLi4wMzAwOWU4MWRiNDI1OTU1MTkwMjI4NGE2Y2UzZGI2MDYwMTQ3ZGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTQ2LDcgKzE0Niw3
IEBAIHZvaWQgSW1hZ2VJbnB1dFR5cGU6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKIHsK
ICAgICBCYXNlQnV0dG9uSW5wdXRUeXBlOjp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwog
ICAgIGlmIChtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50V2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgbV9pbWFnZUxvYWRlci0+ZWxlbWVu
dERpZE1vdmVUb05ld0RvY3VtZW50KCk7CiB9CiAKIGJvb2wgSW1hZ2VJbnB1dFR5cGU6OnNob3Vs
ZFJlc3BlY3RBbGlnbkF0dHJpYnV0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAppbmRleCA4MjBjZmQzZmI5YThkZTk2MDY2NjlmZjQ4YmM2OGRiOGIwNTEyYmZkLi41NmU2NzUx
NDVlMTgzYWRkYjFmZWJhOWY5MWQ1MjcyODU2MGM1ZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIEltYWdlTG9hZGVyOjpkaXNw
YXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKICAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBl
bmRpbmdFdmVudHMoKTsKIH0KIAotdm9pZCBJbWFnZUxvYWRlcjo6ZWxlbWVudFdpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSW1hZ2VMb2FkZXI6OmVsZW1lbnREaWRNb3ZlVG9OZXdE
b2N1bWVudCgpCiB7CiAgICAgc2V0SW1hZ2UoMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5oCmluZGV4IGU4NWYxZDExZTY2MjQwODQxZGY2YWI1ZGRmMDU4Y2M1MjhhYzliYmEuLjVm
NDgxODk5NzEyMTlkOGVkODUyOTYwOTFmNDZhMmJlOWVmMjRiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAvLyBkb2Vzbid0
IGNoYW5nZTsgc3RhcnRzIG5ldyBsb2FkIHVuY29uZGl0aW9uYWxseSAobWF0Y2hlcyBGaXJlZm94
IGFuZCBPcGVyYSBiZWhhdmlvcikuCiAgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudElnbm9yaW5n
UHJldmlvdXNFcnJvcigpOwogCi0gICAgdm9pZCBlbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICB2b2lkIGVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpOwogCiAgICAg
RWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIGJvb2wg
aW1hZ2VDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VDb21wbGV0ZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhZjRjMjcwNzdiNDU5NTBiYmQyNTVh
NmE0NDA0ZTc5ODM0N2EwMzdkLi43NmJmMTdmMTA0MDBlMTQ3MjJhY2RmMTVkMmE3OTYyNmM2ZWUx
NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMjE1LDEwICsy
MTUsMTAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1
cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKCkpKTsKIH0KIAotdm9pZCBTVkdJbWFn
ZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgU1ZHSW1hZ2VFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7Ci0gICAg
bV9pbWFnZUxvYWRlci5lbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKKyAgICBtX2ltYWdlTG9hZGVyLmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpOworICAg
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGRE
b2N1bWVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCBm
OTdlMWQ5MjliZWUxNDM5MDE1ODZkZTQxZjczYzQyNWE5OGRmNjA4Li5iNWIwM2IwYmQ3ZmEyMzFl
ODkyMGZlZGQwZmEwMDhjZjcwZGRlZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhdmVMb2Fk
ZWRSZXF1aXJlZFJlc291cmNlcygpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2
ZUxlbmd0aHMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQq
IG9sZERvY3VtZW50KSBPVkVSUklERTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVElFUyhTVkdJbWFnZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KFgsIHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggYzk2YTgzZTRjOTg0
ZWM0MzE4YTkwMTJjNDE1NjIwNDQyOTg5MDE0My4uMTExMWJmZGMyYmY4ZGM4ZjAwOTRkMTQ1MDdm
NWYwMTdiN2Y2NzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTA2
LDE2ICsxMDYsMTUgQEAgU1ZHU1ZHRWxlbWVudDo6flNWR1NWR0VsZW1lbnQoKQogICAgIGRvY3Vt
ZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlVGltZUNvbnRhaW5lcih0aGlzKTsK
IH0KIAotdm9pZCBTVkdTVkdFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2
b2lkIFNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1
bWVudCkKIHsKLSAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lv
bkNhbGxiYWNrcyh0aGlzKTsKLSAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Ojp3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotfQorICAgIGRvY3VtZW50KCktPnJlZ2lzdGVyRm9yUGFn
ZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICBTVkdTdHlsZWRMb2NhdGFibGVF
bGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CiAKLXZvaWQgU1ZHU1ZH
RWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCi17CisgICAgaWYgKG9sZERvY3Vt
ZW50KQorICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3RlckZvclBhZ2VDYWNoZVN1c3BlbnNp
b25DYWxsYmFja3ModGhpcyk7CiAgICAgZG9jdW1lbnQoKS0+cmVnaXN0ZXJGb3JQYWdlQ2FjaGVT
dXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwotICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6
OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFNjcmlwdFR5cGUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggODliNWJmNjEyMjgwNjBjMWMzMmI4NGI5NWQzNmM3
YWYxMDE3NThlZi4uZWI1NTgyNzcwNjBmNjgwYTFjOGEyNGYwNzBhYzZjZGMxZGU0ZTdmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0xMjYsOCArMTI2LDcgQEAgcHVibGljOgog
ICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBP
VkVSUklERTsKIAogcHJpdmF0ZToKICAgICBTVkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120526</attachid>
            <date>2011-12-25 22:05:59 -0800</date>
            <delta_ts>2011-12-25 23:05:16 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-74067-20111226150557.patch</filename>
            <type>text/plain</type>
            <size>31613</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA3YjA0OThjODI4MWE3
MDBhZWMxYjM1NzJmMDA5YmUyYWY2ZTQ2ZS4uY2Y0NGYxYjI1NzNmYzY4M2E1M2FjNWE4NzU4ODEw
MTY3MDljNzU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDExLTEyLTI1ICBIYWpp
bWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA2NworICAgICAgICBSZWZhY3RvcmluZzog
VW5pdGZ5IHdpbGxNb3ZlVG9OZXdEb2N1bWVudCgpIGFuZCBkaWRNb3ZlVG9OZXdEb2N1bWVudCgp
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY29tYmluZXMg
dHdvIG1ldGhvZCBOb2RlOjp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpIGFuZCBOb2RlOjpk
aWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKKyAgICAgICAgaW50byBOb2RlOjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpLgorCisgICAgICAgIFRoZSBpbnRlbnRp
b24gb2YgdGhpcyBjaGFuZ2UgaXM6CisgICAgICAgIC0gTWFraW5nIHVwY29taW5nIHJlZmFjdG9y
aW5nIChCdWcgNTk4MTYpIHBvc3NpYmxlLiBUaGUgcmVmYWN0b3Jpbmcgd2lsbCB0dXJuIE5vZGU6
Om1fZG9jdW1lbnQgaW50bworICAgICAgICAgIE5vZGU6Om1fdHJlZVNjb3BlLCBhbmQgd2Ugd2ls
bCBubyBsb25nZXIgaGF2ZSBOb2RlOjpzZXREb2N1bWVudCgpIHdoZXJlIHdlIGNhbiBpbnZva2Ug
Ym90aAorICAgICAgICAgIHdpbGxNb3ZlVG9OZXdEb2N1bWVudCgpIGFuZCBkaWRNb3ZlVG9OZXdE
b2N1bWVudCgpIGF0IG9uY2UuCisgICAgICAgIC0gS2lsbGluZyBvbmUgZXh0cmEgdmlydHVhbCBt
ZXRob2QgY2FsbC4KKyAgICAgICAgLSBNYWtpbmcgdGhlIGNvbmNlcHQgb2YgIm1vdmUiIGNsZWFy
ZXIgYnkga2VlcGluZyBzdWNoIGFuIG9wZXJhdGlvbiBpbnRvIHRoZSBzaW5nbGUgbWV0aG9kLgor
CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0V2lsbE1vdmVU
b05ld0RvY3VtZW50V2FzQ2FsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnNldERpZE1vdmVUb05l
d0RvY3VtZW50V2FzQ2FsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldERvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwv
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVs
ZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVv
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURvY3VtZW50RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAg
ICAgICAqIGh0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJ
bnB1dFR5cGU6OndpbGxNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjplbGVtZW50RGlkTW92
ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAg
ICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VF
bGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHU1ZHRWxlbWVudC5oOgorCiAyMDExLTEyLTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgRml4IHRlc3RzIGZhaWxpbmcgYXMgYSByZXN1bHQgb2YgcjEwMzY0Mwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCmluZGV4IDI1M2ViZGI4NGQyMWI1ZmU1MWJmMjExZGQxMGY1NmVlOGVhZjM1
YmEuLmNlNDRiZGYyN2E1YzgwNWI3MTRmY2I5MmFhNmYwODgyNzUxYzA0ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKQEAgLTQxOSwyNyArNDE5LDIxIEBAIE5vZGU6On5Ob2RlKCkKIAogI2lmZGVmIE5ERUJV
RwogCi1zdGF0aWMgaW5saW5lIHZvaWQgc2V0V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXND
YWxsZWQoYm9vbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRXaWxsTW92ZVRvTmV3RG9jdW1lbnRX
YXNDYWxsZWQoYm9vbCkKIHsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNldERpZE1vdmVUb05l
d093bmVyRG9jdW1lbnRXYXNDYWxsZWQoYm9vbCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXREaWRN
b3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZChib29sKQogewogfQogCiAjZWxzZQotICAgIAotc3Rh
dGljIGJvb2wgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQ7Ci1zdGF0aWMgYm9v
bCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkOwogCi1zdGF0aWMgdm9pZCBzZXRX
aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChib29sIHdhc0NhbGxlZCkKLXsKLSAg
ICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCA9IHdhc0NhbGxlZDsKLX0KK3N0
YXRpYyBib29sIGRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkOwogCi1zdGF0aWMgdm9pZCBz
ZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGJvb2wgd2FzQ2FsbGVkKQorc3Rh
dGljIHZvaWQgc2V0RGlkTW92ZVRvTmV3RG9jdW1lbnRXYXNDYWxsZWQoYm9vbCB3YXNDYWxsZWQp
CiB7Ci0gICAgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCA9IHdhc0NhbGxlZDsK
KyAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudFdhc0NhbGxlZCA9IHdhc0NhbGxlZDsKIH0KICAgICAK
ICNlbmRpZgpAQCAtNDUyLDIwICs0NDYsMTcgQEAgdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1
bWVudCogZG9jdW1lbnQpCiAKICAgICBkb2N1bWVudC0+Z3VhcmRSZWYoKTsKIAotICAgIHNldFdp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGZhbHNlKTsKLSAgICB3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOwotICAgIEFTU0VSVCh3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dFdhc0NhbGxlZCk7Ci0KICAgICBpZiAobV9kb2N1bWVudCkgewogICAgICAgICBtX2RvY3VtZW50
LT5tb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQodGhpcywgZG9jdW1lbnQpOwogICAgICAg
ICBtX2RvY3VtZW50LT5ndWFyZERlcmVmKCk7CiAgICAgfQogCisgICAgRG9jdW1lbnQqIG9sZERv
Y3VtZW50ID0gbV9kb2N1bWVudDsKICAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CiAKLSAgICBz
ZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGZhbHNlKTsKLSAgICBkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgQVNTRVJUKGRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnRXYXNDYWxsZWQpOworICAgIHNldERpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKGZhbHNl
KTsKKyAgICBkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAgQVNTRVJUKGRp
ZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKTsKIH0KIAogVHJlZVNjb3BlKiBOb2RlOjp0cmVl
U2NvcGUoKSBjb25zdApAQCAtMjQ5NywxNiArMjQ4OCwxMCBAQCB2b2lkIE5vZGU6OnJlbW92ZWRG
cm9tRG9jdW1lbnQoKQogICAgIGNsZWFySW5Eb2N1bWVudCgpOwogfQogCi12b2lkIE5vZGU6Ondp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgTm9kZTo6ZGlkTW92ZVRvTmV3RG9jdW1l
bnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewotICAgIEFTU0VSVCghd2lsbE1vdmVUb05ld093
bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwotICAgIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
V2FzQ2FsbGVkKHRydWUpOwotfQotCi12b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKQotewotICAgIEFTU0VSVCghZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCk7
Ci0gICAgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCh0cnVlKTsKKyAgICBB
U1NFUlQoIWRpZE1vdmVUb05ld0RvY3VtZW50V2FzQ2FsbGVkKTsKKyAgICBzZXREaWRNb3ZlVG9O
ZXdEb2N1bWVudFdhc0NhbGxlZCh0cnVlKTsKIAogICAgIC8vIEZJWE1FOiBFdmVudCBsaXN0ZW5l
ciB0eXBlcyBmb3IgdGhpcyBub2RlIHNob3VsZCBiZSBzZXQgb24gdGhlIG5ldyBvd25lciBkb2N1
bWVudCBoZXJlLgogCkBAIC0yNTIyLDYgKzI1MDcsOCBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTXV0YXRpb25PYnNl
cnZlclR5cGVzKCgqaXRlciktPm11dGF0aW9uVHlwZXMoKSk7CiAgICAgICAgIH0KICAgICB9Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShvbGREb2N1bWVudCk7CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKaW5kZXggMDkzNjdmNGZlYmVkNmJjMjBjMjdmOTM3Mzk2ZDIzYmY1MzExZGFmZC4uMGZmMDFl
N2I4MWE5ZmIzYzlmYTJiMzVlZmZmYmMzYWVmMmY4MTU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC02Nzgs
OCArNjc4LDcgQEAgcHJvdGVjdGVkOgogICAgIH07CiAgICAgTm9kZShEb2N1bWVudCosIENvbnN0
cnVjdGlvblR5cGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50
KTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExp
c3RIYXNoU2V0PEtVUkw+JikgY29uc3QgeyB9CiAgICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0
bHkoc2hvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IGM1YmU1NzEy
NmY5ZmY0MDljNmJiZmY5MDUwZmI1OTU0ODI3NDUyMmQuLjJiYzg2YWU0MzMyNjk2ZGI5OGI0NmZl
ZDczYmI0YjA0MzRiOWFhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAg
LTE4Miw3ICsxODIsNyBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0
cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCiAgICAgfQogCiAgICAgLy8gcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoKSBtaWdodCBjcmVhdGUgYSBDU1NNYXBwZWRBdHRyaWJ1dGVEZWNsYXJh
dGlvbiBvbiB0aGUgYXR0cmlidXRlLiAgCi0gICAgLy8gTm9ybWFsbHkgd2Ugd291bGQgYmUgY29u
Y2VybmVkIGFib3V0IHJlc2V0aW5nIHRoZSBwYXJlbnQgb2YgdGhvc2UgZGVjbGFyYXRpb25zIGlu
IFN0eWxlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKS4KKyAgICAvLyBOb3Jt
YWxseSB3ZSB3b3VsZCBiZSBjb25jZXJuZWQgYWJvdXQgcmVzZXRpbmcgdGhlIHBhcmVudCBvZiB0
aG9zZSBkZWNsYXJhdGlvbnMgaW4gU3R5bGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQo
KS4KICAgICAvLyBCdXQgY3VycmVudGx5IHdlIGFsd2F5cyBjbGVhciBpdHMgcGFyZW50IGFuZCBu
b2RlIGJlbG93IHdoZW4gYWRkaW5nIGl0IHRvIHRoZSBkZWNsIHRhYmxlLiAgCiAgICAgLy8gSWYg
dGhhdCBjaGFuZ2VzIGZvciBzb21lIHJlYXNvbiBtb3ZpbmcgYmV0d2VlbiBkb2N1bWVudHMgd2ls
bCBiZSBidWdneS4KICAgICAvLyB3ZWJhcmNoaXZlL2Fkb3B0LWF0dHJpYnV0ZS1zdHlsZWQtbm9k
ZS13ZWJhcmNoaXZlLmh0bWwgc2hvdWxkIGNhdGNoIGFueSByZXN1bHRpbmcgY3Jhc2hlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCAxZGRi
NmE2NWMyNjYyZjA5OGE4MzAzOTFmY2JlMTE0MDFhYjIxNjYzLi5mZWIxZDBkN2EwNzI1ZDEyNDkx
YWIxMTA4ZmM0YjJjMGUwNWEwZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNz
b2NpYXRlZEVsZW1lbnQuY3BwCkBAIC01MiwxMSArNTIsMTEgQEAgVmFsaWRpdHlTdGF0ZSogRm9y
bUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGl0eSgpCiAgICAgcmV0dXJuIG1fdmFsaWRpdHlTdGF0
ZS5nZXQoKTsKIH0KIAotdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCkKK3ZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpkaWRNb3ZlVG9OZXdE
b2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOwotICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmli
dXRlKGZvcm1BdHRyKSkKLSAgICAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZv
cm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CisgICAgaWYgKG9sZERvY3VtZW50ICYm
IGVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoZm9ybUF0dHIpKQorICAgICAgICBvbGREb2N1bWVu
dC0+dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aEZvcm1BdHRyaWJ1dGUodGhpcyk7CiB9CiAKIHZv
aWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCA1YTg2MWUyNzI2MWI2
NzUzOGYwMGIwZjIwYTIyMmY4NjU0YzQzNTQyLi4xYThlMTY1N2VmZjNmOWE1ZGNlNWJlZmM4MzVi
YzNiOTZkNTg5MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lh
dGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlZEZyb21U
cmVlKCk7CiAgICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZvaWQgcmVtb3Zl
ZEZyb21Eb2N1bWVudCgpOwotICAgIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
KyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCk7CiAK
ICAgICB2b2lkIHNldEZvcm0oSFRNTEZvcm1FbGVtZW50KiBmb3JtKSB7IG1fZm9ybSA9IGZvcm07
IH0KICAgICB2b2lkIHJlbW92ZUZyb21Gb3JtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBjMDVlYTQxMDEyYzMwZjU1ZTk0MjFlZGNi
YTBhYjJjNmM0MDhhMjdiLi44ZmU0NTA0YWU2OWVhMWY1YjY2YmY1ODkxNmQ0YmZkMGM5NWI3OTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAK
QEAgLTE5NiwxMCArMTk2LDEwIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXR0YWNo
KCkKICAgICByZXN1bWVQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiB9CiAKLXZvaWQgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1l
bnQpCiB7Ci0gICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpOwotICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwor
ICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9jdW1l
bnQpOworICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7
CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29s
IGRlZXApCkBAIC01MTEsMTYgKzUxMSwxMiBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlOjp+SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSgpCiAgICAgZG9jdW1lbnQoKS0+
dW5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0YXRlKHRoaXMpOwogfQogCi12b2lkIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKLXsK
LSAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9ybUVsZW1lbnRXaXRoU3RhdGUodGhpcyk7Ci0g
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
LX0KLQotdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaWRNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCkKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlk
TW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogeworICAgIGlmIChvbGRE
b2N1bWVudCkKKyAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJGb3JtRWxlbWVudFdpdGhT
dGF0ZSh0aGlzKTsKICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvcm1FbGVtZW50V2l0aFN0YXRl
KHRoaXMpOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVu
dChvbGREb2N1bWVudCk7CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZTo6c2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggNzhiNzQ0ZDU1ZTc3YzZlNTYxODkwMDQyZDc5YzZk
YjA3Y2M5ZTYwMi4uZGY3YTJkMTFlODY5MDlkYzdlZTdhNzA4ZDU3OGFkMTk1NzE4NWQ0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTEyMCw3
ICsxMjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShi
b29sIGRlZXApOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05l
d0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJk
Rm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKQEAgLTE4NSw4ICsxODUsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGUxYTNmYmU4NTQ2
NDYzMzFiZmNmNzZjNWU5YTc4OTlhM2M0MzQ0MGMuLjc5N2EwODIzNjY0ZjI5ZDFiNTQyNTIwMjZl
ZDdiM2ZmZTUzYjgyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
QEAgLTYzMiwxOCArNjMyLDE1IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50Ojpkb2N1bWVudERpZFJl
c3VtZUZyb21QYWdlQ2FjaGUoKQogICAgIH0KIH0KIAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6Ondp
bGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWRNb3Zl
VG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFzaG91bGRB
dXRvY29tcGxldGUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclBhZ2VDYWNo
ZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgSFRNTEVsZW1lbnQ6OndpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7Ci19Ci0KLXZvaWQgSFRNTEZvcm1FbGVtZW50OjpkaWRNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCkKLXsKLSAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgpKQorICAg
IGlmICghc2hvdWxkQXV0b2NvbXBsZXRlKCkpIHsKKyAgICAgICAgaWYgKG9sZERvY3VtZW50KQor
ICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnVucmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9u
Q2FsbGJhY2tzKHRoaXMpOwogICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VDYWNo
ZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7Ci0gICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKKyAgICB9CisKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3
RG9jdW1lbnQob2xkRG9jdW1lbnQpOwogfQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6c2hvdWxk
QXV0b2NvbXBsZXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmlu
ZGV4IDQzMDg3MGJiMTYzYmVlZjc4Y2EyNDdkZGQ5MzFiZjVlMmYxYWI0ZDkuLjYzOGNlYzNmYjYz
Y2E4YmEyMDAzYmZhZjIyMGNlMDI3YmNiZjI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaApAQCAtMTI4LDggKzEyOCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVu
dChEb2N1bWVudCogb2xkRG9jdW1lbnQpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFJlZ2lzdGVyQXNOYW1lZEl0ZW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDQ1NjgxODNl
YzUzYTYyZTkzMzNlMzg2NDY3NDJlNzY3NmI0OTAzMWYuLmFkYzllYjkwNDc5MWIwOGNkZmYyNzk3
NDM0N2NhNGNkODU0MGVmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcApAQCAtMzQ5LDEwICszNDksMTAgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnMKICAgICBh
ZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChnZXRBdHRyaWJ1
dGUodXNlbWFwQXR0cikpKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojp3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKLSAgICBtX2ltYWdlTG9hZGVyLmVsZW1l
bnRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIG1faW1hZ2VMb2FkZXIuZWxlbWVudERpZE1vdmVU
b05ld0RvY3VtZW50KCk7CisgICAgSFRNTEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9s
ZERvY3VtZW50KTsKIH0KIAogYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDYwNjE4YzVhMzE0
M2I1MGE3YmNhOWZhZTgzY2VhN2IzYzllOTY2ZDMuLjhjYjNlZTkwMTkxY2YxOTNhZGIzNmJlZGQx
YTkzNjc1ZTRjZmEzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBA
IC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBIVE1MSW1hZ2VFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCogPSAwKTsK
IAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIE9W
RVJSSURFOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDIxNGU1YzRl
ZTllZDY3OGE4MDVhNzkwMGE1YjA0M2I2Mzg5MTliNzEuLjQ2ZDEwNDliZGViOTlmNjdkZDNjN2Y2
NjExNGU1ZGVhMzJjYTA5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcApAQCAtMTUwMiwyNCArMTUwMiwyMSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRvY3Vt
ZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNoZSgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCBIVE1M
SW5wdXRFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCit2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsK
ICAgICBtX2lucHV0VHlwZS0+d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBib29s
IG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrID0gdGhpcy0+bmVlZHNTdXNwZW5zaW9uQ2FsbGJhY2so
KTsKKyAgICBpZiAob2xkRG9jdW1lbnQpIHsKKyAgICAgICAgLy8gQWx3YXlzIHVucmVnaXN0ZXIg
Zm9yIGNhY2hlIGNhbGxiYWNrcyB3aGVuIGxlYXZpbmcgYSBkb2N1bWVudCwgZXZlbiBpZiB3ZSB3
b3VsZCBvdGhlcndpc2UgbGlrZSB0byBiZSByZWdpc3RlcmVkCisgICAgICAgIGlmIChuZWVkc1N1
c3BlbnNpb25DYWxsYmFjaykKKyAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyRm9y
UGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICAgICAgb2xkRG9jdW1lbnQt
PmNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVCdXR0b24odGhpcyk7CisgICAgfQogCi0gICAg
Ly8gQWx3YXlzIHVucmVnaXN0ZXIgZm9yIGNhY2hlIGNhbGxiYWNrcyB3aGVuIGxlYXZpbmcgYSBk
b2N1bWVudCwgZXZlbiBpZiB3ZSB3b3VsZCBvdGhlcndpc2UgbGlrZSB0byBiZSByZWdpc3RlcmVk
Ci0gICAgaWYgKG5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkpCi0gICAgICAgIGRvY3VtZW50KCkt
PnVucmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwotCi0gICAg
ZG9jdW1lbnQoKS0+Y2hlY2tlZFJhZGlvQnV0dG9ucygpLnJlbW92ZUJ1dHRvbih0aGlzKTsKLQot
ICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOwotfQotCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1l
bnQoKQotewotICAgIHJlZ2lzdGVyRm9yU3VzcGVuc2lvbkNhbGxiYWNrSWZOZWVkZWQoKTsKKyAg
ICBpZiAobmVlZHNTdXNwZW5zaW9uQ2FsbGJhY2spCisgICAgICAgIGRvY3VtZW50KCktPnJlZ2lz
dGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKIAotICAgIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50
KTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCmluZGV4IDc4NjdhMzJlYzNiZjc2ZjIxMDRkNWU5ZWQyNjg1NTA2ZjU3N2U4
MWIuLjA1NDQzNmRkNDY3NjAyYzNlMTE5OWZlNjhiZjk0ZjMwNTFiMjZlM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0yNDksOCArMjQ5LDcgQEAgcHJpdmF0ZToK
ICAgICBlbnVtIEF1dG9Db21wbGV0ZVNldHRpbmcgeyBVbmluaXRpYWxpemVkLCBPbiwgT2ZmIH07
CiAgICAgZW51bSBBbnlTdGVwSGFuZGxpbmcgeyBSZWplY3RBbnksIEFueUlzRGVmYXVsdFN0ZXAg
fTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50Kikg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE5M2ExZTA0ZGMwYTdlNzBj
NDY3NzA0OThhNDM5Njk4NDM5ODI4N2MuLmY2Y2I4MjVmNGI1NDZmZDU5MmYxODIwZGNiOGUyZDhi
N2IzYzRlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
Mjc3LDI1ICsyNzcsMjkgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQog
ICAgIHJlbW92ZUVsZW1lbnRGcm9tRG9jdW1lbnRNYXAodGhpcywgZG9jdW1lbnQoKSk7CiB9CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9j
dW1lbnQpCiB7Ci0gICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQotICAgICAg
ICBkb2N1bWVudCgpLT5yZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7Ci0gICAgc2V0
U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwotICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJG
b3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKLSAgICByZW1vdmVFbGVtZW50RnJvbURvY3Vt
ZW50TWFwKHRoaXMsIGRvY3VtZW50KCkpOwotICAgIEhUTUxFbGVtZW50Ojp3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOwotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQotewotICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFy
dCkKKyAgICBpZiAobV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpIHsKKyAgICAgICAgaWYg
KG9sZERvY3VtZW50KQorICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnJlbW92ZU1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcih0aGlzKTsKICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFydExp
c3RlbmVyKHRoaXMpOwotICAgIGlmIChtX3JlYWR5U3RhdGUgPCBIQVZFX0NVUlJFTlRfREFUQSkK
LSAgICAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQodHJ1ZSk7CisgICAgfQorCisgICAgaWYg
KG1fc2hvdWxkRGVsYXlMb2FkRXZlbnQpIHsKKyAgICAgICAgaWYgKG9sZERvY3VtZW50KQorICAg
ICAgICAgICAgb2xkRG9jdW1lbnQtPmRlY3JlbWVudExvYWRFdmVudERlbGF5Q291bnQoKTsKKyAg
ICAgICAgZG9jdW1lbnQoKS0+aW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOworICAgIH0K
KworICAgIGlmIChvbGREb2N1bWVudCkgeworICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3Rl
ckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOworICAgICAgICByZW1vdmVFbGVtZW50RnJv
bURvY3VtZW50TWFwKHRoaXMsIG9sZERvY3VtZW50KTsKKyAgICB9CisKICAgICBkb2N1bWVudCgp
LT5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMpOwogICAgIGFkZEVsZW1lbnRU
b0RvY3VtZW50TWFwKHRoaXMsIGRvY3VtZW50KCkpOwotICAgIEhUTUxFbGVtZW50OjpkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CisKKyAgICBIVE1MRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9j
dW1lbnQob2xkRG9jdW1lbnQpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnN1cHBvcnRz
Rm9jdXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBl
MWYzNTE0OWE5MTVhYWE1NzZiYzMyZjJlNzIyZmYwYzVmZDUwMDk5Li5iNmY2NmRhNzhlZmEzN2Rm
NWJjOGM1NGI5ODRjMTNmMTI5ZGMzZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaApAQCAtMjgyLDggKzI4Miw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wg
aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFj
aCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklE
RTsKIAogICAgIGVudW0gRGlzcGxheU1vZGUgeyBVbmtub3duLCBOb25lLCBQb3N0ZXIsIFBvc3Rl
cldhaXRpbmdGb3JWaWRlbywgVmlkZW8gfTsKICAgICBEaXNwbGF5TW9kZSBkaXNwbGF5TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU1vZGU7IH0KQEAgLTQzNCw3ICs0MzMsNiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYUNhblN0YXJ0KCk7CiAKICAgICB2b2lkIHNldFNo
b3VsZERlbGF5TG9hZEV2ZW50KGJvb2wpOwotCiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVkVGlt
ZSgpOwogICAgIHZvaWQgcmVmcmVzaENhY2hlZFRpbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBlNzJlN2M3YTk2MTkwZjZjODhlM2I1
MmE1ZWRkMWYxMTExNTI5OGU1Li5lOWJjMzZjMjQ0YWFiYWI1NjM5ODIwZDc2MDI3ODNlOTkwZTNh
ZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtNDc2
LDEwICs0NzYsMTAgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb24KICAgICAgICAgYWRkU3VicmVz
b3VyY2VVUkwodXJscywgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXNlTWFwKSk7CiB9CiAKLXZv
aWQgSFRNTE9iamVjdEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQg
SFRNTE9iamVjdEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1
bWVudCkKIHsKLSAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCk7Ci0gICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3Vt
ZW50KG9sZERvY3VtZW50KTsKKyAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9O
ZXdEb2N1bWVudChvbGREb2N1bWVudCk7CiB9CiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6Omlu
c2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5oCmluZGV4IGQ1NjY0N2JiZTFhNWEzMzEyYzUzMzFhMjkzYjc2NDBlMjcwMWVlNGEuLjI4
NzgwMzlmZTJlZmI3ZmM0OWZhNDU3ZTMyZTM1ODUyZmFiYzdkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYp
OwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7Ci0gICAgCisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgT1ZFUlJJREU7CisKICAgICB2aXJ0dWFsIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJl
Zm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0
YSA9IDApOwogCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAK
aW5kZXggNDlhM2IzNWE1MzhhMGQ2OGRhYTVlMjk5N2IxYjYwNjExNGM5YzM3Zi4uY2U5YmI3NDMx
ZTIyOGYyYWNhMzcxNDQ1MmJjOTdhNjZiZDAzOGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yMDIsMjMgKzIwMiwxNyBAQCB2b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMoKTsgICAgCiB9CiAKLXZvaWQgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQordm9pZCBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiB7Ci0g
ICAgaWYgKG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MpCi0gICAgICAgIGRvY3Vt
ZW50KCktPnVucmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwor
ICAgIGlmIChtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKSB7CisgICAgICAgIGlm
IChvbGREb2N1bWVudCkKKyAgICAgICAgICAgIG9sZERvY3VtZW50LT51bnJlZ2lzdGVyRm9yUGFn
ZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVn
aXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOworICAgIH0KIAogICAg
IGlmIChtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50V2lsbE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKTsKLQotICAgIEhUTUxQbHVnSW5FbGVtZW50Ojp3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotfQotCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQotewotICAgIGlmIChtX25lZWRzRG9jdW1lbnRB
Y3RpdmF0aW9uQ2FsbGJhY2tzKQotICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvclBhZ2VD
YWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7ICAgCi0gICAgCi0gICAgSFRNTFBsdWdJbkVs
ZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgbV9pbWFnZUxvYWRl
ci0+ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7CisgICAgSFRNTFBsdWdJbkVsZW1lbnQ6
OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKIH0KIAogdm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Ojpkb2N1bWVudFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggYTMwYjk4YjY2ZWJl
MDI0ZjBlZDkwZjY0ZGMxMTQ3NDdkMDUxNjNmOS4uMTY4ZWQ0NjM0MzRmZGI3M2Q3Mjc5NTFkMDdi
OTQxMDFiYjllMDYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmgKQEAgLTc0LDggKzc0LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgYWxsb3dlZFRv
TG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBib29sIHdvdWxkTG9hZEFzTmV0
c2NhcGVQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUp
OwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERv
Y3VtZW50KSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRXaWxsU3Vz
cGVuZEZvclBhZ2VDYWNoZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERp
ZFJlc3VtZUZyb21QYWdlQ2FjaGUoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCmluZGV4IDNkZWM1NjI3ZTcwYjIzNTk5OTk0YWY1NjAxZTBlMjQ0NTgz
Yzk3YzIuLmZlZDJmYTQzNTY1NGQ1YzRhZTE5NjExYjMzZmQ1ODBlMWNlZTA1OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMjcxLDExICsyNzEsMTEgQEAg
Ym9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXREaXNwbGF5aW5nRnVsbHNjcmVlbigpCiAgICAg
cmV0dXJuIGlzRnVsbHNjcmVlbigpOwogfQogCi12b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OndpbGxN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGlkTW92ZVRv
TmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQogewogICAgIGlmIChtX2ltYWdlTG9h
ZGVyKQotICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKLSAgICBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVu
dCgpOworICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQo
KTsKKyAgICBIVE1MTWVkaWFFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVu
dCk7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmgKaW5kZXggNDkxODAzMjFhNGIyZDA0NzhlNTE1MjYyN2RlODU3ZWEx
NTlhMmI1Yy4uYWY1YWNiZGE2YTkyMTM1ZjkxMjM5NDMwYjc5ODMwYmIxOTVjMDhjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTg0LDkgKzg0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlTdGF0ZSgpOwotCi0gICAgdmlydHVhbCB2b2lk
IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUpOwogCiAgICAgT3duUHRyPEhUTUxJ
bWFnZUxvYWRlcj4gbV9pbWFnZUxvYWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
Y3BwCmluZGV4IDdkYjFhYzMyNTcxMGYwM2U2NjU3ZTUyMjQ4ZWVjMzBlOGNmMzllY2QuLmQ0YTcz
ZDM4MTRjYjFkMTZmMTgyNzFiZTcwODgzYjQ2ZjBmM2Y0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURvY3VtZW50LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+SW1hZ2VEb2N1bWVudEVsZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIAogICAgIEltYWdlRG9j
dW1lbnQqIG1faW1hZ2VEb2N1bWVudDsKIH07CkBAIC00MDcsMTMgKzQwNywxMyBAQCBJbWFnZURv
Y3VtZW50RWxlbWVudDo6fkltYWdlRG9jdW1lbnRFbGVtZW50KCkKICAgICAgICAgbV9pbWFnZURv
Y3VtZW50LT5kaXNjb25uZWN0SW1hZ2VFbGVtZW50KCk7CiB9CiAKLXZvaWQgSW1hZ2VEb2N1bWVu
dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSW1hZ2VEb2N1bWVu
dEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsK
ICAgICBpZiAobV9pbWFnZURvY3VtZW50KSB7CiAgICAgICAgIG1faW1hZ2VEb2N1bWVudC0+ZGlz
Y29ubmVjdEltYWdlRWxlbWVudCgpOwogICAgICAgICBtX2ltYWdlRG9jdW1lbnQgPSAwOwogICAg
IH0KLSAgICBIVE1MSW1hZ2VFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwor
ICAgIEhUTUxJbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAppbmRleCA5MGQ3YmI5
YWNhMjM4YWIyZTI3ZTIzNzQyOTVhOTgyYWU2ZWYxYTZhLi4wMzAwOWU4MWRiNDI1OTU1MTkwMjI4
NGE2Y2UzZGI2MDYwMTQ3ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNw
cApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgSW1hZ2VJbnB1dFR5cGU6OndpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCkKIHsKICAgICBCYXNlQnV0dG9uSW5wdXRUeXBlOjp3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpOwogICAgIGlmIChtX2ltYWdlTG9hZGVyKQotICAgICAgICBtX2ltYWdl
TG9hZGVyLT5lbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgbV9p
bWFnZUxvYWRlci0+ZWxlbWVudERpZE1vdmVUb05ld0RvY3VtZW50KCk7CiB9CiAKIGJvb2wgSW1h
Z2VJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RBbGlnbkF0dHJpYnV0ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCA4MjBjZmQzZmI5YThkZTk2MDY2NjlmZjQ4YmM2OGRi
OGIwNTEyYmZkLi41NmU2NzUxNDVlMTgzYWRkYjFmZWJhOWY5MWQ1MjcyODU2MGM1ZGQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lk
IEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKICAgICBsb2FkRXZlbnRT
ZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKIH0KIAotdm9pZCBJbWFnZUxvYWRlcjo6
ZWxlbWVudFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKK3ZvaWQgSW1hZ2VMb2FkZXI6OmVs
ZW1lbnREaWRNb3ZlVG9OZXdEb2N1bWVudCgpCiB7CiAgICAgc2V0SW1hZ2UoMCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCmluZGV4IGU4NWYxZDExZTY2MjQwODQxZGY2YWI1ZGRm
MDU4Y2M1MjhhYzliYmEuLjVmNDgxODk5NzEyMTlkOGVkODUyOTYwOTFmNDZhMmJlOWVmMjRiYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICAvLyBkb2Vzbid0IGNoYW5nZTsgc3RhcnRzIG5ldyBsb2FkIHVuY29uZGl0aW9uYWxs
eSAobWF0Y2hlcyBGaXJlZm94IGFuZCBPcGVyYSBiZWhhdmlvcikuCiAgICAgdm9pZCB1cGRhdGVG
cm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogCi0gICAgdm9pZCBlbGVtZW50V2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2b2lkIGVsZW1lbnREaWRNb3ZlVG9OZXdE
b2N1bWVudCgpOwogCiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxl
bWVudDsgfQogICAgIGJvb2wgaW1hZ2VDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VD
b21wbGV0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCBhZjRj
MjcwNzdiNDU5NTBiYmQyNTVhNmE0NDA0ZTc5ODM0N2EwMzdkLi43NmJmMTdmMTA0MDBlMTQ3MjJh
Y2RmMTVkMmE3OTYyNmM2ZWUxNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmNwcApAQCAtMjE1LDEwICsyMTUsMTAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKICAgICBh
ZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKCkpKTsK
IH0KIAotdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkK
K3ZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xk
RG9jdW1lbnQpCiB7Ci0gICAgbV9pbWFnZUxvYWRlci5lbGVtZW50V2lsbE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6d2lsbE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBtX2ltYWdlTG9hZGVyLmVsZW1lbnREaWRNb3ZlVG9O
ZXdEb2N1bWVudCgpOworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpkaWRNb3Zl
VG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuaAppbmRleCBmOTdlMWQ5MjliZWUxNDM5MDE1ODZkZTQxZjczYzQyNWE5OGRmNjA4
Li5iNWIwM2IwYmQ3ZmEyMzFlODkyMGZlZGQwZmEwMDhjZjcwZGRlZTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwogCiAgICAgdmlydHVhbCBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3
RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIAogICAgIEJFR0lOX0RF
Q0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdJbWFnZUVsZW1lbnQpCiAgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAK
aW5kZXggYzk2YTgzZTRjOTg0ZWM0MzE4YTkwMTJjNDE1NjIwNDQyOTg5MDE0My4uMTExMWJmZGMy
YmY4ZGM4ZjAwOTRkMTQ1MDdmNWYwMTdiN2Y2NzVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcApAQCAtMTA2LDE2ICsxMDYsMTUgQEAgU1ZHU1ZHRWxlbWVudDo6flNWR1NWR0Vs
ZW1lbnQoKQogICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlVGlt
ZUNvbnRhaW5lcih0aGlzKTsKIH0KIAotdm9pZCBTVkdTVkdFbGVtZW50Ojp3aWxsTW92ZVRvTmV3
T3duZXJEb2N1bWVudCgpCit2b2lkIFNWR1NWR0VsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50KiBvbGREb2N1bWVudCkKIHsKLSAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9y
UGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKLSAgICBTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotfQorICAgIGRvY3VtZW50
KCktPnJlZ2lzdGVyRm9yUGFnZUNhY2hlU3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICBT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVu
dCk7CiAKLXZvaWQgU1ZHU1ZHRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCi17
CisgICAgaWYgKG9sZERvY3VtZW50KQorICAgICAgICBvbGREb2N1bWVudC0+dW5yZWdpc3RlckZv
clBhZ2VDYWNoZVN1c3BlbnNpb25DYWxsYmFja3ModGhpcyk7CiAgICAgZG9jdW1lbnQoKS0+cmVn
aXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwotICAgIFNWR1N0eWxl
ZExvY2F0YWJsZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKyAgICBTVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFNjcmlwdFR5
cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggODliNWJmNjEyMjgw
NjBjMWMzMmI4NGI5NWQzNmM3YWYxMDE3NThlZi4uZWI1NTgyNzcwNjBmNjgwYTFjOGEyNGYwNzBh
YzZjZGMxZGU0ZTdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0xMjYsOCAr
MTI2LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1l
bnQqIG9sZERvY3VtZW50KSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBTVkdTVkdFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>