<?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>11628</bug_id>
          
          <creation_ts>2006-11-17 04:20:09 -0800</creation_ts>
          <short_desc>REGRESSION (r17597): Command-return in text fields doesn&apos;t open a new tab or window</short_desc>
          <delta_ts>2006-12-17 09:29:49 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniele Metilli">daniele.metilli</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>darin</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>45611</commentid>
    <comment_count>0</comment_count>
    <who name="Daniele Metilli">daniele.metilli</who>
    <bug_when>2006-11-17 04:20:09 -0800</bug_when>
    <thetext>In the old fields, command-click allowed the user to open a new tab or window. In the new ones, this doesn&apos;t work anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45470</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-11-18 02:04:16 -0800</bug_when>
    <thetext>Could you please provide an example? I&apos;m afraid I don&apos;t understand what the issue is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45472</commentid>
    <comment_count>2</comment_count>
    <who name="Daniele Metilli">daniele.metilli</who>
    <bug_when>2006-11-18 02:26:56 -0800</bug_when>
    <thetext>Oops, I meant Command-return, not Command-click!

Example:

1 - Go to imdb.com
2 - Type something in the field on the left
3 - Command-return

The resulting page will be loaded in the same tab, and it shouldn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45396</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-11-18 13:01:28 -0800</bug_when>
    <thetext>Confirmed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44980</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-11-21 09:12:17 -0800</bug_when>
    <thetext>The regression is due to r17597, specifically &quot;added DOM Event parameters to various functions so that the handlers can use the DOM Event instead of the global &quot;current NSEvent&quot;;&quot;.

The problem is that when a Command-Return keyboard event triggers a simulated click event, the click event doesn&apos;t inherit the modifiers from the mouse event. This affects not only form fields but also focused links, and breaks to the Option modifier as well. I think everything funnels through HTMLElement::click(), and in the relevant cases the caller to click() still has the original keyboard event which it could pass along if click() were modified to take it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43971</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-11-28 17:11:16 -0800</bug_when>
    <thetext>Sounds like a good approach. I&apos;ll try to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43617</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-01 13:44:03 -0800</bug_when>
    <thetext>Got a patch -- writing release notes for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43621</commentid>
    <comment_count>7</comment_count>
      <attachid>11706</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-01 14:14:45 -0800</bug_when>
    <thetext>Created attachment 11706
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43627</commentid>
    <comment_count>8</comment_count>
      <attachid>11706</attachid>
    <who name="">mitz</who>
    <bug_when>2006-12-01 14:51:00 -0800</bug_when>
    <thetext>Comment on attachment 11706
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43629</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-01 14:58:24 -0800</bug_when>
    <thetext>Committed revision 17976.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43630</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-01 14:58:44 -0800</bug_when>
    <thetext>Note that this actually had nothing to do with native text fields!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43495</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-12-02 13:00:09 -0800</bug_when>
    <thetext>Oops, Command-Return on a focused link is still broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43496</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-12-02 13:32:52 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Oops, Command-Return on a focused link is still broken.
&gt; 

Two reasons for that. One is that HTMLAnchorElement::defaultEventHandler() neglects to pass the original event to dispatchSimulatedClick(). The other is that even if it did, findKeyStateEvent() stops at the simulated click event, which doesn&apos;t have the correct modifier state.

I&apos;m reopening this bug, but if you feel that a new bug is needed, just close this one again and I&apos;ll file a new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43497</commentid>
    <comment_count>13</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-12-02 13:51:26 -0800</bug_when>
    <thetext>(Forgot to reopen)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43498</commentid>
    <comment_count>14</comment_count>
      <attachid>11706</attachid>
    <who name="">mitz</who>
    <bug_when>2006-12-02 13:54:59 -0800</bug_when>
    <thetext>Comment on attachment 11706
patch

Clearing the review flag to keep the bug from showing in the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43339</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-12-04 22:42:42 -0800</bug_when>
    <thetext>Darin fixed the &quot;focused link&quot; case in r18012 (even though he would have preferred having a separate bug for that case!). Thanks, Darin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41788</commentid>
    <comment_count>16</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-12-17 09:29:49 -0800</bug_when>
    <thetext>Command-clicking a form&apos;s submit button is still broken. I will file a separate bug on that :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11706</attachid>
            <date>2006-12-01 14:14:45 -0800</date>
            <delta_ts>2006-12-02 13:54:59 -0800</delta_ts>
            <desc>patch</desc>
            <filename>UnderlyingEventPatch.txt</filename>
            <type>text/plain</type>
            <size>50004</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNzk2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA1IEBACisyMDA2LTEyLTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZp
eCBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOAorICAgICAgICAg
IFJFR1JFU1NJT04gKHIxNzU5Nyk6IENvbW1hbmQtcmV0dXJuIGluIG5hdGl2ZSB0ZXh0IGZpZWxk
cyBkb2Vzbid0IG9wZW4gYSBuZXcgdGFiIG9yIHdpbmRvdworCisgICAgICAgIEkgY291bGRuJ3Qg
dGhpbmsgb2YgYW4gZWFzeSB3YXkgdG8gbWFrZSBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhpcywg
YnV0IG1heWJlCisgICAgICAgIEknbGwgZ2V0IGFuIGlkZWEgbGF0ZXIgYWJvdXQgaG93IHRvIGRv
IGl0LgorCisgICAgICAgIFRoZSBtYWluIHRoaW5nIEkgZGlkIHdhcyBhZGQgYSBjb25jZXB0IG9m
IGEgRE9NIGV2ZW50IGhhdmluZyBhbiAidW5kZXJseWluZyBldmVudCIuCisgICAgICAgIFRoYXQg
YWxsb3dzIHRoZSBET00gYWN0aXZhdGUgZXZlbnQgdG8gY29udGFpbiBpbnNpZGUgaXQgdGhlIG9y
aWdpbmFsIGtleWJvYXJkIGV2ZW50CisgICAgICAgIHRoYXQgdHJpZ2dlcmVkIHRoZSBmb3JtIHN1
Ym1pc3Npb24sIGFuZCB0aHVzIGFsbG93cyBXZWJLaXQgdG8gc2VlIHRoZSBtb2RpZmllciBrZXlz
CisgICAgICAgIGZyb20gdGhhdCBvcmlnaW5hbCBldmVudC4gVGhlIGNvZGUgdGhhdCB1c2VzIHRo
ZSB1bmRlcmx5aW5nIGV2ZW50IGlzIGluIFdlYktpdCwgYnV0CisgICAgICAgIHRoZSBjb2RlIHRv
IHNldCBpdCB1cCBpcyBoZXJlIGluIFdlYkNvcmUuCisKKyAgICAgICAgLSBhbHNvIGRvIHNvbWUg
Y2xlYW4tdXAgdG8gcmVsYXRlZCBldmVudCBoYW5kbGluZyBjb2RlCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9ranNfZXZlbnRzLmNwcDogKEtKUzo6RE9NRXZlbnQ6OmdldFZhbHVlUHJvcGVydHkp
OiBVcGRhdGVkIGZvciB0aGUKKyAgICAgICAgbmFtZSBjaGFuZ2Ugb2YgY2FuY2VsQnViYmxlLgor
CisgICAgICAgICogZG9tL0V2ZW50Lmg6IFJlbW92ZWQgYSB1c2VsZXNzIGNvbW1lbnQuIEZpeGVk
IHNvbWUgd2hpdGVzcGFjZSBhbmQgZm9ybWF0dGluZy4KKyAgICAgICAgUmVuYW1lZCBnZXRDYW5j
ZWxCdWJibGUgdG8gY2FuY2VsQnViYmxlIHRvIG1hdGNoIHRoZSBET00gLS0gSSBzdXNwZWN0IHRo
ZSBvbGQKKyAgICAgICAgbmFtZSBwcmVkYXRlZCB0aGUgdXNlIG9mIHRoZSBtXyBwcmVmaXggb24g
ZGF0YSBtZW1iZXJzLiBBZGRlZCB0aGUgdW5kZXJseWluZyBldmVudCwKKyAgICAgICAgYW5kIGEg
Z2V0dGVyIGFuZCBzZXR0ZXIuCisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50OjpzZXRUYXJnZXQpOiBVcGRhdGVkIHRvIHRha2UgYSBQYXNzUmVmUHRyLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OnNldFVuZGVybHlpbmdFdmVudCk6IEFkZGVkLgorCisg
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oOiBBZGRlZCBhbiBvcHRpb25hbCB1bmRlcmx5
aW5nRXZlbnQgcGFyYW1ldGVyIHRvCisgICAgICAgIGRpc3BhdGNoVUlFdmVudCwgb25lIG9mIHRo
ZSBvdmVybG9hZHMgb2YgZGlzcGF0Y2hNb3VzZUV2ZW50LCBhbmQKKyAgICAgICAgZGlzcGF0Y2hT
aW11bGF0ZWRNb3VzZUV2ZW50LiBBZGRlZCBhIG5ldyBkaXNwYXRjaFNpbXVsYXRlZENsaWNrIGZ1
bmN0aW9uIGhlcmUgdGhhdAorICAgICAgICBtb3N0bHkgcmVwbGFjZXMgdGhlIGNsaWNrIGZ1bmN0
aW9uIGluIEhUTUxFbGVtZW50LgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldE5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudCk6
IFVwZGF0ZWQgZm9yIHRoZSBuYW1lIGNoYW5nZQorICAgICAgICBvZiBjYW5jZWxCdWJibGUuCisg
ICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoVUlFdmVudCk6IEFkZGVk
IGFuIHVuZGVybHlpbmcgZXZlbnQgcGFyYW1ldGVyLAorICAgICAgICB3aGljaCBnZXRzIGF0dGFj
aGVkIHRvIHRoZSBVSUV2ZW50IG9iamVjdCBhZnRlciBpdCdzIGNyZWF0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoTW91c2VFdmVudCk6IFR3ZWFrZWQgZm9y
bWF0dGluZyBhbmQgcGFyYW1ldGVyCisgICAgICAgIG5hbWUgZm9yIHRoZSB2ZXJzaW9uIHRoYXQg
Y3JlYXRlcyBhIG1vdXNlIGV2ZW50IGZvciBhIHJlYWwgcGxhdGZvcm0gbW91c2UgZXZlbnQuCisg
ICAgICAgIEFkZGVkIGFuIHVuZGVybHlpbmcgZXZlbnQgcGFyYW1ldGVyIHRvIHRoZSBtYWluIHZl
cnNpb24sIGFuZCBhdHRhY2hlZCBpdCB0byBhbGwKKyAgICAgICAgdGhyZWUgb2YgdGhlIGV2ZW50
cyB0aGF0IGNhbiBiZSBkaXNwYXRjaGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXRO
b2RlOjpkaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnQpOiBBZGRlZCBhbiB1bmRlcmx5aW5nCisg
ICAgICAgIGV2ZW50IHBhcmFtZXRlciwgcGFzc2VkIGl0IGFsb25nIHRvIGRpc3BhdGNoTW91c2VF
dmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hTaW11bGF0
ZWRDbGljayk6IE1vdmVkIHRoaXMgaGVyZSBmcm9tIEhUTUxFbGVtZW50CisgICAgICAgIGFuZCBy
ZW5hbWVkIGl0IGZyb20gY2xpY2suIEFkZGVkIGFuIHVuZGVybHlpbmdFdmVudCBwYXJhbWV0ZXIs
IGFuZCBwYXNzZWQgdGhhdCBhbG9uZworICAgICAgICBpbiBhbGwgdGhyZWUgb2YgdGhlIGNhbGxz
IHRvIGRpc3BhdGNoU2ltdWxhdGVkTW91c2VFdmVudC4KKworICAgICAgICAqIGJyaWRnZS9tYWMv
RnJhbWVNYWMubW06IChXZWJDb3JlOjpGcmFtZU1hYzo6c2hvdWxkQ2xvc2UpOiBVcGRhdGVkIGNh
bGwgdG8KKyAgICAgICAgc2V0VGFyZ2V0IHRoYXQgbm8gbG9uZ2VyIG5lZWRzIGEgZ2V0KCkuCisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0VsZW1lbnQuY3BwOiAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6
c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBDb252ZXJ0ZWQgYSBjYWxsIHRvIGNsaWNrCisgICAgICAg
IHRvIGEgY2FsbCB0byBkaXNwYXRjaFNpbXVsYXRlZENsaWNrLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEFuY2hvckVsZW1lbnQ6OmFjY2Vzc0tleUFjdGlvbik6IERpdHRvLgorICAgICAgICAqIGh0
bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJ1dHRvbkVs
ZW1lbnQ6OmFjY2Vzc0tleUFjdGlvbik6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1l
bnQuaDogUmVtb3ZlZCB0aGUgcGFyYW1ldGVycyB0byBjbGljayBhbmQgbWFkZSBpdCBub24tdmly
dHVhbC4KKyAgICAgICAgV2UgY291bGQgbW92ZSBpdCBkb3duIHRvIHRoZSBpbnB1dCBhbmQgYnV0
dG9uIGVsZW1lbnRzLCBub3cgdGhhdCBpdCdzIGp1c3QKKyAgICAgICAgYSBzaW5nbGUgZnVuY3Rp
b24gY2FsbCwgYnV0IGl0J3MgYWxzbyBPSyB0byBqdXN0IGxlYXZlIGl0IGhlcmUuCisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
Y2xpY2spOiBSZW1vdmVkIHRoZSBwYXJhbWV0ZXJzIGFuZCBjaGFuZ2VkIHRoaXMgdG8ganVzdAor
ICAgICAgICBjYWxsIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2suIFRoZSByZWFsIHdvcmsgaXMgbm93
IGluIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2suCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVu
dDo6YWNjZXNzS2V5QWN0aW9uKTogQ29udmVydGVkIGEgY2FsbCB0byBjbGljayB0byBhIGNhbGwg
dG8KKyAgICAgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljay4KKyAgICAgICAgKiBodG1sL0hUTUxG
b3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1p
dENsaWNrKTogRGl0dG8uIEJ1dCB1bmxpa2UgYWNjZXNzS2V5QWN0aW9uIGNhbGxlcnMsCisgICAg
ICAgIHBhc3MgdGhlIGV2ZW50IGFsb25nIGFzIHRoZSB1bmRlcmx5aW5nIGV2ZW50LgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5jcHA6IFJlbW92ZWQgb3ZlcnJpZGUgb2YgdmlydHVhbCBjbGljayBmdW5jdGlvbi4gVGhl
CisgICAgICAgIHNwZWNpYWwgY2FzZXMgZm9yIHRoZSBmaWxlIGNvbnRyb2wgYW5kIGhpZGRlbiBp
bnB1dCBlbGVtZW50cyBhcmVuJ3QgbmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKTogQ29udmVydGVkIGEgY2FsbCB0byBjbGljayB0byBh
IGNhbGwgdG8KKyAgICAgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljay4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBDb252ZXJ0ZWQgY2Fs
bHMgdG8gY2xpY2sgdG8gY2FsbHMgdG8KKyAgICAgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljaywg
cGFzc2luZyBhbG9uZyB0aGUgZXZlbnQgYXMgdGhlIHVuZGVybHlpbmcgZXZlbnQuCisgICAgICAg
ICogaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMYWJl
bEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBDb252ZXJ0ZWQgYSBjYWxsIHRvIGNsaWNr
IHRvIGEgY2FsbAorICAgICAgICB0byBkaXNwYXRjaFNpbXVsYXRlZENsaWNrLCBwYXNzaW5nIHRo
ZSBldmVudCBhbG9uZyBhcyB0aGUgdW5kZXJseWluZyBldmVudC4gQWxzbworICAgICAgICBjaGFu
Z2VkIHRoZSBsb2NhbCB2YXJpYWJsZSBmb3IgdGhlIGVsZW1lbnQgdG8gYSBSZWZQdHIgc2luY2Ug
dGhlIGNvZGUgYXNzdW1lcyBpdCdzCisgICAgICAgIHN0aWxsIGFyb3VuZCBhZnRlciBjYWxsaW5n
IGFyYml0cmFyeSBKYXZhU2NyaXB0IGNvZGUuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5
QWN0aW9uKTogQ29udmVydGVkIGEgY2FsbCB0byBjbGljayB0byBhIGNhbGwgdG8KKyAgICAgICAg
ZGlzcGF0Y2hTaW11bGF0ZWRDbGljay4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHA6IChXZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6Y2xpY2spOgorICAg
ICAgICBSZW1vdmVkIHVubmVlZGVkIGlnbm9yZWQgcGFyYW1ldGVyIHRvIHRoZSBjbGljayBmdW5j
dGlvbiwgYW5kIGFsc28gbWFkZSBpdCBub24tdmlydHVhbC4KKworICAgICAgICAqIGxvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmg6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgICog
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwOiBNb3ZlZCBhbGwgdGhlIGNvZGUgaGVyZSBmcm9t
IE5hdmlnYXRpb25BY3Rpb25NYWMubW0sCisgICAgICAgIHNpbmNlIG5vbmUgb2YgaXQgaXMgTWFj
LXNwZWNpZmljIGFueSBtb3JlLgorICAgICAgICAqIGxvYWRlci9tYWMvTmF2aWdhdGlvbkFjdGlv
bk1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IFVwZGF0ZWQgZm9yIHJlbW92ZWQgZmlsZS4KKworICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdBRWxlbWVudC5jcHA6IFJlbW92ZWQgYW4gdW5uZWNlc3NhcnkgaW5jbHVkZS4KKworICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6IEFkZGVkIGEgbmV3bHktbmVlZGVkIGluY2x1dWRl
LgorICAgICAgICAqIGxvYWRlci9tYWMvRG9jdW1lbnRMb2FkZXJNYWMubW06IERpdHRvLgorICAg
ICAgICAqIGxvYWRlci9tYWMvRnJhbWVMb2FkZXJNYWMubW06IERpdHRvLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOiBEaXR0by4KKwogMjAwNi0xMi0wMSAgSm9obiBTdWxs
aXZhbiAgPHN1bGxpdmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbgpJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE3OTY3KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE1MTAsNyArMTUxMCw2IEBACiAJCTkzQzg0MUY4MDlDRTg1NUMwMERG
RjVFNSAvKiBET01JbXBsZW1lbnRhdGlvbkZyb250LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0M4NDFGNzA5Q0U4NTVDMDBERkY1RTUgLyogRE9NSW1w
bGVtZW50YXRpb25Gcm9udC5oICovOyB9OwogCQk5M0M4NDFGRjA5Q0U4NTgzMDBERkY1RTUgLyog
RE9NSW1wbGVtZW50YXRpb25Gcm9udC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0M4NDFGRTA5Q0U4NTgzMDBERkY1RTUgLyogRE9NSW1wbGVtZW50
YXRpb25Gcm9udC5jcHAgKi87IH07CiAJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZp
Z2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0NDRjAyNjBBRjZDNTI5MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzQ0NGMDU4MEFG
NkM5RkUwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDQ0YwNTcwQUY2QzlGRTAwMDE4RTg5IC8q
IE5hdmlnYXRpb25BY3Rpb25NYWMubW0gKi87IH07CiAJCTkzQ0NGMDYwMEFGNkNBNzYwMDAxOEU4
OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQ0NGMDVGMEFGNkNBNzYwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0
aW9uLmNwcCAqLzsgfTsKIAkJOTNDRDRGREUwOTk1RjlFQTAwN0VDQzk3IC8qIEF0b21pY1N0cmlu
Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0NE
NEZENzA5OTVGOUVBMDA3RUNDOTcgLyogQXRvbWljU3RyaW5nLmNwcCAqLzsgfTsKIAkJOTNDRDRG
REYwOTk1RjlFQTAwN0VDQzk3IC8qIEF0b21pY1N0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDRDRGRDgwOTk1RjlFQTAwN0VDQzk3IC8qIEF0
b21pY1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC00NDk4LDcgKzQ0OTcsNiBAQAogCQk5M0NBNENBMjA5REY5M0ZBMDBERjg2NzcgLyog
c3ZnLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBzdmcuY3NzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0NBNENBMzA5REY5M0ZBMDBERjg2NzcgLyogdG9rZW5pemVyLmZsZXgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gdG9rZW5pemVyLmZsZXg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQ0NGMDI2MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRpb25BY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTNDQ0YwNTcwQUY2QzlGRTAwMDE4RTg5IC8q
IE5hdmlnYXRpb25BY3Rpb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBOYXZpZ2F0aW9uQWN0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0NDRjA1RjBBRjZDQTc2MDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0aW9uQWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDRDRGRDcwOTk1RjlFQTAwN0VDQzk3IC8q
IEF0b21pY1N0cmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
dG9taWNTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0NENEZEODA5
OTVGOUVBMDA3RUNDOTcgLyogQXRvbWljU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEF0b21pY1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzcwMCw3ICs3Njk4LDYgQEAKIAkJCQk2NTYzQTlBNTBBREY0MDk0MDAwRUQyQ0QgLyogTG9hZGVy
TlNVUkxSZXF1ZXN0RXh0cmFzLmggKi8sCiAJCQkJNjU2M0E5QTYwQURGNDA5NDAwMEVEMkNEIC8q
IExvYWRlck5TVVJMUmVxdWVzdEV4dHJhcy5tICovLAogCQkJCTY1NkQzNzJBMEFEQkE1REUwMEE0
NTU0RCAvKiBNYWluUmVzb3VyY2VMb2FkZXJNYWMubW0gKi8sCi0JCQkJOTNDQ0YwNTcwQUY2QzlG
RTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rpb25NYWMubW0gKi8sCiAJCQkJNjU2RDM3MkMwQURC
QTVERTAwQTQ1NTREIC8qIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyTWFjLm1tICovLAogCQkJ
CTY1NkQzNzI4MEFEQkE1REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlck1hYy5tbSAqLywKIAkJ
CQk2NTZEMzczMTBBREJBNURFMDBBNDU1NEQgLyogU3VicmVzb3VyY2VMb2FkZXJNYWMubW0gKi8s
CkBAIC0xMTk5MCw3ICsxMTk4Nyw2IEBACiAJCQkJOTNFMjJBNkYwQUY1RTk0MTAwRDQ4MzI0IC8q
IFBhZ2VTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QjI3MDk4MzBBRjJFNUUwMDA2NTEy
N0YgLyogUGFzdGVib2FyZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1MEUzRjZBMEFGNkMx
NjgwMDFGQTNBRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQk5
M0NDRjA1ODBBRjZDOUZFMDAwMThFODkgLyogTmF2aWdhdGlvbkFjdGlvbk1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzQ0NGMDYwMEFGNkNBNzYwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQTAxNUE4MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFw
aGljc0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBMDE1QUEwQUY2Q0Q1MzAwNkJD
RTBFIC8qIEdyYXBoaWNzVHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc19ldmVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMva2pzX2V2ZW50cy5jcHAJKHJldmlzaW9uIDE3OTY3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9ranNfZXZlbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk2LDcgKzM5Niw3IEBAIEpTVmFs
dWUgKkRPTUV2ZW50OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWMKICAgY2FzZSBCdWJibGVzOgogICAg
IHJldHVybiBqc0Jvb2xlYW4oZXZlbnQuYnViYmxlcygpKTsKICAgY2FzZSBDYW5jZWxCdWJibGU6
Ci0gICAgcmV0dXJuIGpzQm9vbGVhbihldmVudC5nZXRDYW5jZWxCdWJibGUoKSk7CisgICAgcmV0
dXJuIGpzQm9vbGVhbihldmVudC5jYW5jZWxCdWJibGUoKSk7CiAgIGNhc2UgUmV0dXJuVmFsdWU6
CiAgICAgcmV0dXJuIGpzQm9vbGVhbighZXZlbnQuZGVmYXVsdFByZXZlbnRlZCgpKTsKICAgY2Fz
ZSBDYW5jZWxhYmxlOgpJbmRleDogV2ViQ29yZS9icmlkZ2UvbWFjL0ZyYW1lTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL21hYy9GcmFtZU1hYy5tbQkocmV2aXNpb24gMTc5Njcp
CisrKyBXZWJDb3JlL2JyaWRnZS9tYWMvRnJhbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1
OTgsNyArMTU5OCw3IEBAIGJvb2wgRnJhbWVNYWM6OnNob3VsZENsb3NlKCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBSZWZQdHI8QmVmb3JlVW5sb2FkRXZlbnQ+IGV2ZW50ID0gbmV3IEJl
Zm9yZVVubG9hZEV2ZW50OwotICAgIGV2ZW50LT5zZXRUYXJnZXQoZG9jLmdldCgpKTsKKyAgICBl
dmVudC0+c2V0VGFyZ2V0KGRvYyk7CiAgICAgZG9jLT5oYW5kbGVXaW5kb3dFdmVudChldmVudC5n
ZXQoKSwgZmFsc2UpOwogCiAgICAgaWYgKCFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpICYmIGRv
YykKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FdmVudC5jcHAJKHJldmlzaW9uIDE3OTY3KQorKysgV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzMsMTAgKzEzMywxMCBAQCB2b2lkIEV2ZW50OjpzdG9yZVJlc3Vs
dChjb25zdCBTdHJpbmcmKQogewogfQogCi12b2lkIEV2ZW50OjpzZXRUYXJnZXQoTm9kZSogdGFy
Z2V0KQordm9pZCBFdmVudDo6c2V0VGFyZ2V0KFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0KQogewog
ICAgIG1fdGFyZ2V0ID0gdGFyZ2V0OwotICAgIGlmICh0YXJnZXQpCisgICAgaWYgKG1fdGFyZ2V0
KQogICAgICAgICByZWNlaXZlZFRhcmdldCgpOwogfQogCkBAIC0xNDQsNCArMTQ0LDEzIEBAIHZv
aWQgRXZlbnQ6OnJlY2VpdmVkVGFyZ2V0KCkKIHsKIH0KIAordm9pZCBFdmVudDo6c2V0VW5kZXJs
eWluZ0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHVlKQoreworICAgIC8vIFByb2hpYml0IGNyZWF0
aW9uIG9mIGEgY3ljbGUgLS0ganVzdCBkbyBub3RoaW5nIGluIHRoYXQgY2FzZS4KKyAgICBmb3Ig
KEV2ZW50KiBlID0gdWUuZ2V0KCk7IGU7IGUgPSBlLT51bmRlcmx5aW5nRXZlbnQoKSkKKyAgICAg
ICAgaWYgKGUgPT0gdGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICBtX3VuZGVybHlpbmdF
dmVudCA9IHVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Rv
bS9FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDE3
OTY3KQorKysgV2ViQ29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBCVUJCTElOR19QSEFTRSAgICAg
ID0gMyAKICAgICAgICAgfTsKIAotICAgICAgICAvLyBSZXZlcnNlLWVuZ2luZWVyZWQgZnJvbSBO
ZXRzY2FwZQogICAgICAgICBlbnVtIEV2ZW50VHlwZSB7CiAgICAgICAgICAgICBNT1VTRURPV04g
ICAgICAgICAgID0gMSwKICAgICAgICAgICAgIE1PVVNFVVAgICAgICAgICAgICAgPSAyLApAQCAt
NjcsMjQgKzY2LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFNFTEVDVCAg
ICAgICAgICAgICAgPSAxNjM4NCwKICAgICAgICAgICAgIENIQU5HRSAgICAgICAgICAgICAgPSAz
Mjc2OAogICAgICAgICB9OwotICAgIAorCiAgICAgICAgIEV2ZW50KCk7Ci0gICAgICAgIEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZUFyZywgYm9vbCBjYW5CdWJibGVBcmcsIGJvb2wgY2Fu
Y2VsYWJsZUFyZyk7CisgICAgICAgIEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSk7CiAgICAgICAgIHZpcnR1YWwgfkV2ZW50KCk7
CiAKLSAgICAgICAgdm9pZCBpbml0RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nICZldmVudFR5cGVB
cmcsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcpOworICAgICAgICB2b2lk
IGluaXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUpOwogCiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgICAgICAKKwogICAgICAgICBOb2RlKiB0YXJnZXQoKSBj
b25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldFRhcmdldChO
b2RlKik7Ci0gICAgICAgIAorICAgICAgICB2b2lkIHNldFRhcmdldChQYXNzUmVmUHRyPE5vZGU+
KTsKKwogICAgICAgICBOb2RlKiBjdXJyZW50VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50VGFyZ2V0OyB9CiAgICAgICAgIHZvaWQgc2V0Q3VycmVudFRhcmdldChOb2RlKiBjdXJyZW50
VGFyZ2V0KSB7IG1fY3VycmVudFRhcmdldCA9IGN1cnJlbnRUYXJnZXQ7IH0KLSAgICAgICAgCisK
ICAgICAgICAgdW5zaWduZWQgc2hvcnQgZXZlbnRQaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZl
bnRQaGFzZTsgfQogICAgICAgICB2b2lkIHNldEV2ZW50UGhhc2UodW5zaWduZWQgc2hvcnQgZXZl
bnRQaGFzZSkgeyBtX2V2ZW50UGhhc2UgPSBldmVudFBoYXNlOyB9Ci0gICAgICAgIAorCiAgICAg
ICAgIGJvb2wgYnViYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FuQnViYmxlOyB9CiAgICAgICAg
IGJvb2wgY2FuY2VsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsYWJsZTsgfQogICAgICAg
ICBET01UaW1lU3RhbXAgdGltZVN0YW1wKCkgeyByZXR1cm4gbV9jcmVhdGVUaW1lOyB9CkBAIC0x
MDIsMTggKzEwMSwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWZkZWYgU1ZHX1NVUFBPUlQK
ICAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHWm9vbUV2ZW50KCkgY29uc3Q7CiAjZW5kaWYKLSAg
ICAgICAgCi0gICAgICAgIGJvb2wgcHJvcGFnYXRpb25TdG9wcGVkKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wYWdhdGlvblN0b3BwZWQ7IH0KLSAgICAgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UHJldmVudGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRE
ZWZhdWx0SGFuZGxlZCgpIHsgbV9kZWZhdWx0SGFuZGxlZCA9IHRydWU7IH0KLSAgICAgICAgYm9v
bCBkZWZhdWx0SGFuZGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdEhhbmRsZWQ7IH0KKyAg
ICAgICAgYm9vbCBwcm9wYWdhdGlvblN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX3Byb3BhZ2F0
aW9uU3RvcHBlZDsgfQogCisgICAgICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVmYXVsdFByZXZlbnRlZDsgfQogICAgICAgICB2b2lkIHByZXZlbnREZWZhdWx0
KCkgeyBpZiAobV9jYW5jZWxhYmxlKSBtX2RlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlOyB9CiAgICAg
ICAgIHZvaWQgc2V0RGVmYXVsdFByZXZlbnRlZChib29sIGRlZmF1bHRQcmV2ZW50ZWQpIHsgbV9k
ZWZhdWx0UHJldmVudGVkID0gZGVmYXVsdFByZXZlbnRlZDsgfQogCisgICAgICAgIGJvb2wgZGVm
YXVsdEhhbmRsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRIYW5kbGVkOyB9CisgICAgICAg
IHZvaWQgc2V0RGVmYXVsdEhhbmRsZWQoKSB7IG1fZGVmYXVsdEhhbmRsZWQgPSB0cnVlOyB9CisK
KyAgICAgICAgYm9vbCBjYW5jZWxCdWJibGUoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbEJ1YmJs
ZTsgfQogICAgICAgICB2b2lkIHNldENhbmNlbEJ1YmJsZShib29sIGNhbmNlbCkgeyBtX2NhbmNl
bEJ1YmJsZSA9IGNhbmNlbDsgfQotICAgICAgICBib29sIGdldENhbmNlbEJ1YmJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuY2VsQnViYmxlOyB9CisKKyAgICAgICAgRXZlbnQqIHVuZGVybHlpbmdF
dmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJseWluZ0V2ZW50LmdldCgpOyB9CisgICAgICAg
IHZvaWQgc2V0VW5kZXJseWluZ0V2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgc3RvcmVzUmVzdWx0QXNTdHJpbmcoKSBjb25zdDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHN0b3JlUmVzdWx0KGNvbnN0IFN0cmluZyYpOwpAQCAtMTMyLDEwICsxMzQsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fZGVmYXVsdEhhbmRsZWQ7CiAgICAg
ICAgIGJvb2wgbV9jYW5jZWxCdWJibGU7CiAKLSAgICAgICAgTm9kZSogbV9jdXJyZW50VGFyZ2V0
OyAvLyByZWYgPiAwIG1haW50YWluZWQgZXh0ZXJuYWxseQorICAgICAgICBOb2RlKiBtX2N1cnJl
bnRUYXJnZXQ7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fZXZlbnRQaGFzZTsKICAgICAgICAg
UmVmUHRyPE5vZGU+IG1fdGFyZ2V0OwogICAgICAgICBET01UaW1lU3RhbXAgbV9jcmVhdGVUaW1l
OworCisgICAgICAgIFJlZlB0cjxFdmVudD4gbV91bmRlcmx5aW5nRXZlbnQ7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRXZlbnRUYXJnZXROb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudFRhcmdldE5vZGUuY3BwCShyZXZp
c2lvbiAxNzk2NykKKysrIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMSw3ICsyMzEsNyBAQCBib29sIEV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hH
ZW5lcmljRXZlCiAgICAgCiAgICAgaWYgKGV2dC0+YnViYmxlcygpKSB7CiAgICAgICAgIGV2dC0+
c2V0RXZlbnRQaGFzZShFdmVudDo6QlVCQkxJTkdfUEhBU0UpOwotICAgICAgICBmb3IgKDsgaXQu
Y3VycmVudCgpICYmICFldnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpICYmICFldnQtPmdldENhbmNl
bEJ1YmJsZSgpOyAtLWl0KSB7CisgICAgICAgIGZvciAoOyBpdC5jdXJyZW50KCkgJiYgIWV2dC0+
cHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2dC0+Y2FuY2VsQnViYmxlKCk7IC0taXQpIHsKICAg
ICAgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldChpdC5jdXJyZW50KCkpOwogICAgICAgICAg
ICAgRXZlbnRUYXJnZXROb2RlQ2FzdChpdC5jdXJyZW50KCkpLT5oYW5kbGVMb2NhbEV2ZW50cyhl
dnQuZ2V0KCksIGZhbHNlKTsKICAgICAgICAgfQpAQCAtMjM5LDcgKzIzOSw3IEBAIGJvb2wgRXZl
bnRUYXJnZXROb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmUKICAgICAgICAgLy8gYmVjYXVzZSBNb3pp
bGxhIHVzZWQgdG8gbmV2ZXIgcHJvcGFnYXRlIGxvYWQgZXZlbnRzIGF0IGFsbAogCiAgICAgICAg
IGl0LnRvRmlyc3QoKTsKLSAgICAgICAgaWYgKGV2dC0+dHlwZSgpICE9IGxvYWRFdmVudCAmJiBp
dC5jdXJyZW50KCktPmlzRG9jdW1lbnROb2RlKCkgJiYgIWV2dC0+cHJvcGFnYXRpb25TdG9wcGVk
KCkgJiYgIWV2dC0+Z2V0Q2FuY2VsQnViYmxlKCkpIHsKKyAgICAgICAgaWYgKGV2dC0+dHlwZSgp
ICE9IGxvYWRFdmVudCAmJiBpdC5jdXJyZW50KCktPmlzRG9jdW1lbnROb2RlKCkgJiYgIWV2dC0+
cHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2dC0+Y2FuY2VsQnViYmxlKCkpIHsKICAgICAgICAg
ICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldChpdC5jdXJyZW50KCkpOwogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPihpdC5jdXJyZW50KCkpLT5oYW5kbGVXaW5kb3dFdmVudChldnQu
Z2V0KCksIGZhbHNlKTsKICAgICAgICAgfSAKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIEV2ZW50
VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hXaW5kb3dFdmVuCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBuZXcgRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGVB
cmcsIGNhbmNlbGFibGVBcmcpOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jID0gZG9jdW1lbnQo
KTsKLSAgICBldnQtPnNldFRhcmdldChkb2MuZ2V0KCkpOworICAgIGV2dC0+c2V0VGFyZ2V0KGRv
Yyk7CiAgICAgZG9jLT5oYW5kbGVXaW5kb3dFdmVudChldnQuZ2V0KCksIHRydWUpOwogICAgIGRv
Yy0+aGFuZGxlV2luZG93RXZlbnQoZXZ0LmdldCgpLCBmYWxzZSk7CiAgICAgCkBAIC0zMzcsNyAr
MzM3LDcgQEAgdm9pZCBFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoV2luZG93RXZlbgogICAgIH0K
IH0KIAotYm9vbCBFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoVUlFdmVudChjb25zdCBBdG9taWNT
dHJpbmcgJmV2ZW50VHlwZSwgaW50IGRldGFpbCkKK2Jvb2wgRXZlbnRUYXJnZXROb2RlOjpkaXNw
YXRjaFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGludCBkZXRhaWwsIFBh
c3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCkKIHsKICAgICBhc3NlcnQoIWV2ZW50RGlz
cGF0Y2hGb3JiaWRkZW4oKSk7CiAgICAgYXNzZXJ0KGV2ZW50VHlwZSA9PSBET01Gb2N1c0luRXZl
bnQgfHwgZXZlbnRUeXBlID09IERPTUZvY3VzT3V0RXZlbnQgfHwgZXZlbnRUeXBlID09IERPTUFj
dGl2YXRlRXZlbnQpOwpAQCAtMzQ1LDggKzM0NSw5IEBAIGJvb2wgRXZlbnRUYXJnZXROb2RlOjpk
aXNwYXRjaFVJRXZlbnQoY28KICAgICBib29sIGNhbmNlbGFibGUgPSBldmVudFR5cGUgPT0gRE9N
QWN0aXZhdGVFdmVudDsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBVSUV2
ZW50KiBldnQgPSBuZXcgVUlFdmVudChldmVudFR5cGUsIHRydWUsIGNhbmNlbGFibGUsIGRvY3Vt
ZW50KCktPmRlZmF1bHRWaWV3KCksIGRldGFpbCk7Ci0gICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQo
ZXZ0LCBlYywgdHJ1ZSk7CisgICAgUmVmUHRyPFVJRXZlbnQ+IGV2dCA9IG5ldyBVSUV2ZW50KGV2
ZW50VHlwZSwgdHJ1ZSwgY2FuY2VsYWJsZSwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgZGV0
YWlsKTsKKyAgICBldnQtPnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOworICAg
IHJldHVybiBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIGVjLCB0cnVlKTsKIH0KIAogYm9v
bCBFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBrZXkpCkBAIC0zNjUsMzMgKzM2Niw0OSBAQCBib29sIEV2ZW50VGFyZ2V0Tm9kZTo6
ZGlzcGF0Y2hLZXlFdmVudChjCiAgICAgcmV0dXJuIHI7CiB9CiAKLWJvb2wgRXZlbnRUYXJnZXRO
b2RlOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBfbW91c2Us
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKK2Jv
b2wgRXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsCisgICAgaW50IGRl
dGFpbCwgTm9kZSogcmVsYXRlZFRhcmdldCkKIHsKICAgICBhc3NlcnQoIWV2ZW50RGlzcGF0Y2hG
b3JiaWRkZW4oKSk7CiAgICAgCiAgICAgSW50UG9pbnQgY29udGVudHNQb3M7CiAgICAgaWYgKEZy
YW1lVmlldyogdmlldyA9IGRvY3VtZW50KCktPnZpZXcoKSkKLSAgICAgICAgY29udGVudHNQb3Mg
PSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKF9tb3VzZS5wb3MoKSk7CisgICAgICAgIGNvbnRlbnRz
UG9zID0gdmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3MoKSk7CiAgICAgCi0gICAgcmV0
dXJuIGRpc3BhdGNoTW91c2VFdmVudChldmVudFR5cGUsIF9tb3VzZS5idXR0b24oKSwgZGV0YWls
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNQb3MueCgpLCBjb250ZW50
c1Bvcy55KCksIF9tb3VzZS5nbG9iYWxYKCksIF9tb3VzZS5nbG9iYWxZKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfbW91c2UuY3RybEtleSgpLCBfbW91c2UuYWx0S2V5KCksIF9t
b3VzZS5zaGlmdEtleSgpLCBfbW91c2UubWV0YUtleSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFsc2UsIHJlbGF0ZWRUYXJnZXQpOworICAgIHJldHVybiBkaXNwYXRjaE1vdXNl
RXZlbnQoZXZlbnRUeXBlLCBldmVudC5idXR0b24oKSwgZGV0YWlsLAorICAgICAgICBjb250ZW50
c1Bvcy54KCksIGNvbnRlbnRzUG9zLnkoKSwgZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZ
KCksCisgICAgICAgIGV2ZW50LmN0cmxLZXkoKSwgZXZlbnQuYWx0S2V5KCksIGV2ZW50LnNoaWZ0
S2V5KCksIGV2ZW50Lm1ldGFLZXkoKSwKKyAgICAgICAgZmFsc2UsIHJlbGF0ZWRUYXJnZXQpOwog
fQogCi1ib29sIEV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlKQordm9pZCBFdmVudFRhcmdldE5vZGU6OmRpc3Bh
dGNoU2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwKKyAg
ICBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQpCiB7CiAgICAgYXNzZXJ0KCFldmVu
dERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIC8vIExpa2UgR2Vja28sIHdlIGp1c3QgcGFzcyAw
IGZvciBldmVyeXRoaW5nIHdoZW4gd2UgbWFrZSBhIGZha2UgbW91c2UgZXZlbnQuCiAgICAgLy8g
SW50ZXJuZXQgRXhwbG9yZXIgaW5zdGVhZCBnaXZlcyB0aGUgY3VycmVudCBtb3VzZSBwb3NpdGlv
biBhbmQgc3RhdGUuCi0gICAgcmV0dXJuIGRpc3BhdGNoTW91c2VFdmVudChldmVudFR5cGUsIDAs
IDAsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKKyAgICBk
aXNwYXRjaE1vdXNlRXZlbnQoZXZlbnRUeXBlLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgICAgICBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgMCwgdW5kZXJseWluZ0V2ZW50KTsKK30K
Kwordm9pZCBFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soUGFzc1JlZlB0
cjxFdmVudD4gZXZlbnQsIGJvb2wgc2VuZE1vdXNlRXZlbnRzLCBib29sIHNob3dQcmVzc2VkTG9v
aykKK3sKKyAgICAvLyBzZW5kIG1vdXNlZG93biBhbmQgbW91c2V1cCBiZWZvcmUgdGhlIGNsaWNr
LCBpZiByZXF1ZXN0ZWQKKyAgICBpZiAoc2VuZE1vdXNlRXZlbnRzKQorICAgICAgICBkaXNwYXRj
aFNpbXVsYXRlZE1vdXNlRXZlbnQobW91c2Vkb3duRXZlbnQsIGV2ZW50LmdldCgpKTsKKyAgICBz
ZXRBY3RpdmUodHJ1ZSwgc2hvd1ByZXNzZWRMb29rKTsKKyAgICBpZiAoc2VuZE1vdXNlRXZlbnRz
KQorICAgICAgICBkaXNwYXRjaFNpbXVsYXRlZE1vdXNlRXZlbnQobW91c2V1cEV2ZW50LCBldmVu
dC5nZXQoKSk7CisgICAgc2V0QWN0aXZlKGZhbHNlKTsKKworICAgIC8vIGFsd2F5cyBzZW5kIGNs
aWNrCisgICAgZGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50KGNsaWNrRXZlbnQsIGV2ZW50KTsK
IH0KIAogYm9vbCBFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgaW50IGJ1dHRvbiwgaW50IGRldGFpbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYWdlWCwgaW50IHBhZ2VZLCBp
bnQgc2NyZWVuWCwgaW50IHNjcmVlblksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc1NpbXVsYXRlZCwgTm9kZSogcmVsYXRlZFRhcmdldEFyZykKKyAgICBpbnQgcGFn
ZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLAorICAgIGJvb2wgY3RybEtl
eSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgCisgICAgYm9vbCBp
c1NpbXVsYXRlZCwgTm9kZSogcmVsYXRlZFRhcmdldEFyZywgUGFzc1JlZlB0cjxFdmVudD4gdW5k
ZXJseWluZ0V2ZW50KQogewogICAgIGFzc2VydCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsK
ICAgICBpZiAoZGlzYWJsZWQoKSkgLy8gRG9uJ3QgZXZlbiBzZW5kIERPTSBldmVudHMgZm9yIGRp
c2FibGVkIGNvbnRyb2xzLi4KQEAgLTQxNSw5ICs0MzIsMTAgQEAgYm9vbCBFdmVudFRhcmdldE5v
ZGU6OmRpc3BhdGNoTW91c2VFdmVudAogICAgIEV2ZW50VGFyZ2V0Tm9kZSAqcmVsYXRlZFRhcmdl
dCA9IChyZWxhdGVkVGFyZ2V0QXJnICYmIHJlbGF0ZWRUYXJnZXRBcmctPmlzRXZlbnRUYXJnZXRO
b2RlKCkpID8gc3RhdGljX2Nhc3Q8RXZlbnRUYXJnZXROb2RlKj4ocmVsYXRlZFRhcmdldEFyZykg
OiAwOwogCiAgICAgUmVmUHRyPEV2ZW50PiBtZSA9IG5ldyBNb3VzZUV2ZW50KGV2ZW50VHlwZSwg
dHJ1ZSwgY2FuY2VsYWJsZSwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWwsIHNjcmVlblgsIHNjcmVl
blksIHBhZ2VYLCBwYWdlWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZFRhcmdldCwg
MCwgaXNTaW11bGF0ZWQpOworICAgICAgICBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VY
LCBwYWdlWSwKKyAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0
dG9uLAorICAgICAgICByZWxhdGVkVGFyZ2V0LCAwLCBpc1NpbXVsYXRlZCk7CisgICAgbWUtPnNl
dFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQuZ2V0KCkpOwogICAgIAogICAgIGRpc3Bh
dGNoRXZlbnQobWUsIGVjLCB0cnVlKTsKICAgICBib29sIGRlZmF1bHRIYW5kbGVkID0gbWUtPmRl
ZmF1bHRIYW5kbGVkKCk7CkBAIC00MzMsNiArNDUxLDcgQEAgYm9vbCBFdmVudFRhcmdldE5vZGU6
OmRpc3BhdGNoTW91c2VFdmVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRh
aWwsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSwgYnV0dG9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0LCAwLCBpc1NpbXVs
YXRlZCk7CisgICAgICAgIG1lLT5zZXRVbmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50Lmdl
dCgpKTsKICAgICAgICAgaWYgKGRlZmF1bHRIYW5kbGVkKQogICAgICAgICAgICAgbWUtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIGRpc3BhdGNoRXZlbnQobWUsIGVjLCB0cnVlKTsKQEAg
LTQ0Miw3ICs0NjEsNyBAQCBib29sIEV2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50
CiAgICAgCiAgICAgLy8gQWxzbyBzZW5kIGEgRE9NQWN0aXZhdGUgZXZlbnQsIHdoaWNoIGNhdXNl
cyB0aGluZ3MgbGlrZSBmb3JtIHN1Ym1pc3Npb25zIHRvIG9jY3VyLgogICAgIGlmIChldmVudFR5
cGUgPT0gY2xpY2tFdmVudCAmJiAhZGVmYXVsdFByZXZlbnRlZCkKLSAgICAgICAgZGlzcGF0Y2hV
SUV2ZW50KERPTUFjdGl2YXRlRXZlbnQsIGRldGFpbCk7CisgICAgICAgIGRpc3BhdGNoVUlFdmVu
dChET01BY3RpdmF0ZUV2ZW50LCBkZXRhaWwsIHVuZGVybHlpbmdFdmVudCk7CiAgICAgCiAgICAg
cmV0dXJuIHN3YWxsb3dFdmVudDsKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oCShyZXZpc2lv
biAxNzk2NykKKysrIFdlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmLCBib29sIHRlbXBFdmVudCA9IGZhbHNlKTsKICAg
ICBib29sIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoYm9vbCBjaGlsZHJlbkNoYW5nZWQg
PSB0cnVlKTsKICAgICB2b2lkIGRpc3BhdGNoV2luZG93RXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUpOwotICAgIGJvb2wg
ZGlzcGF0Y2hVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWls
ID0gMCk7CisgICAgYm9vbCBkaXNwYXRjaFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGludCBkZXRhaWwgPSAwLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQg
PSAwKTsKICAgICBib29sIGRpc3BhdGNoS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2
ZW50Jik7CiAgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50Jik7
CiAgICAgYm9vbCBkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsCkBAIC02MCw4ICs2MCw5IEBAIHB1YmxpYzoK
ICAgICBib29sIGRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgaW50IGJ1dHRvbiwgaW50IGNsaWNrQ291bnQsCiAgICAgICAgIGludCBwYWdlWCwgaW50IHBh
Z2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9v
bCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwKLSAgICAgICAgYm9vbCBpc1Np
bXVsYXRlZCA9IGZhbHNlLCBOb2RlKiByZWxhdGVkVGFyZ2V0ID0gMCk7Ci0gICAgYm9vbCBkaXNw
YXRjaFNpbXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwor
ICAgICAgICBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UsIE5vZGUqIHJlbGF0ZWRUYXJnZXQgPSAw
LCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQgPSAwKTsKKyAgICB2b2lkIGRpc3Bh
dGNoU2ltdWxhdGVkTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFz
c1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50ID0gMCk7CisgICAgdm9pZCBkaXNwYXRjaFNp
bXVsYXRlZENsaWNrKFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgYm9vbCBzZW5k
TW91c2VFdmVudHMgPSBmYWxzZSwgYm9vbCBzaG93UHJlc3NlZExvb2sgPSB0cnVlKTsKIAogICAg
IHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQqLCBib29sIHVzZUNhcHR1cmUpOwogCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3OTY3KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4
Miw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmQKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChrLT5rZXlFdmVudCgpKSB7CiAgICAgICAgICAgICAgICAg
ZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgICAgICAgICAgICAgIGNsaWNrKGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKDApOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjg3LDkgKzI4Nyw4IEBA
IHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKIAogdm9pZCBIVE1MQW5j
aG9yRWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RWxlbWVudCkKIHsKLSAg
ICAvLyBzZW5kIHRoZSBtb3VzZSBidXR0b24gZXZlbnRzIGlmZiB0aGUKLSAgICAvLyBjYWxsZXIg
c3BlY2lmaWVkIHNlbmRUb0FueUVsZW1lbnQKLSAgICBjbGljayhzZW5kVG9BbnlFbGVtZW50KTsK
KyAgICAvLyBzZW5kIHRoZSBtb3VzZSBidXR0b24gZXZlbnRzIGlmZiB0aGUgY2FsbGVyIHNwZWNp
ZmllZCBzZW5kVG9BbnlFbGVtZW50CisgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljaygwLCBzZW5k
VG9BbnlFbGVtZW50KTsKIH0KIAogYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6aXNVUkxBdHRyaWJ1
dGUoQXR0cmlidXRlICphdHRyKSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCdXR0b25F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNzk2NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw5ICsxMjksOCBAQCBib29sIEhUTUxCdXR0b25FbGVt
ZW50OjphcHBlbmRGb3JtRGF0YShGCiAKIHZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OmFjY2Vzc0tl
eUFjdGlvbihib29sIHNlbmRUb0FueUVsZW1lbnQpCiB7ICAgCi0gICAgLy8gc2VuZCB0aGUgbW91
c2UgYnV0dG9uIGV2ZW50cyBpZmYgdGhlCi0gICAgLy8gY2FsbGVyIHNwZWNpZmllZCBzZW5kVG9B
bnlFbGVtZW50Ci0gICAgY2xpY2soc2VuZFRvQW55RWxlbWVudCk7CisgICAgLy8gc2VuZCB0aGUg
bW91c2UgYnV0dG9uIGV2ZW50cyBpZmYgdGhlIGNhbGxlciBzcGVjaWZpZWQgc2VuZFRvQW55RWxl
bWVudAorICAgIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soMCwgc2VuZFRvQW55RWxlbWVudCk7CiB9
CiAKIFN0cmluZyBIVE1MQnV0dG9uRWxlbWVudDo6YWNjZXNzS2V5KCkgY29uc3QKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmNwcAkocmV2aXNpb24gMTc5NjcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJE
b2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKQEAgLTU4NCwxOCArNTg1LDkgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0Q29udGVudEVk
aXRhYmxlKGNvbgogICAgICAgICBzZXRBdHRyaWJ1dGUoY29udGVudGVkaXRhYmxlQXR0ciwgZW5h
YmxlZC5pc0VtcHR5KCkgPyAidHJ1ZSIgOiBlbmFibGVkKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVu
dDo6Y2xpY2soYm9vbCBzZW5kTW91c2VFdmVudHMsIGJvb2wgc2hvd1ByZXNzZWRMb29rKQordm9p
ZCBIVE1MRWxlbWVudDo6Y2xpY2soKQogewotICAgIC8vIHNlbmQgbW91c2Vkb3duIGFuZCBtb3Vz
ZXVwIGJlZm9yZSB0aGUgY2xpY2ssIGlmIHJlcXVlc3RlZAotICAgIGlmIChzZW5kTW91c2VFdmVu
dHMpCi0gICAgICAgIGRpc3BhdGNoU2ltdWxhdGVkTW91c2VFdmVudChtb3VzZWRvd25FdmVudCk7
Ci0gICAgc2V0QWN0aXZlKHRydWUsIHNob3dQcmVzc2VkTG9vayk7Ci0gICAgaWYgKHNlbmRNb3Vz
ZUV2ZW50cykKLSAgICAgICAgZGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50KG1vdXNldXBFdmVu
dCk7Ci0gICAgc2V0QWN0aXZlKGZhbHNlKTsKLQotICAgIC8vIGFsd2F5cyBzZW5kIGNsaWNrCi0g
ICAgZGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50KGNsaWNrRXZlbnQpOworICAgIGRpc3BhdGNo
U2ltdWxhdGVkQ2xpY2soMCk7CiB9CiAKIC8vIGFjY2Vzc0tleUFjdGlvbiBpcyB1c2VkIGJ5IHRo
ZSBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgY29kZQpAQCAtNjA4LDcgKzYwMCw3IEBAIHZvaWQgSFRN
TEVsZW1lbnQ6OmNsaWNrKGJvb2wgc2VuZE1vdXNlRXYKIHZvaWQgSFRNTEVsZW1lbnQ6OmFjY2Vz
c0tleUFjdGlvbihib29sIHNlbmRUb0FueUVsZW1lbnQpCiB7CiAgICAgaWYgKHNlbmRUb0FueUVs
ZW1lbnQpCi0gICAgICAgIGNsaWNrKHRydWUpOworICAgICAgICBkaXNwYXRjaFNpbXVsYXRlZENs
aWNrKDAsIHRydWUpOwogfQogCiBTdHJpbmcgSFRNTEVsZW1lbnQ6OnRvU3RyaW5nKCkgY29uc3QK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAxNzk2NykKKysrIFdlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudEVkaXRhYmxlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50RWRpdGFibGUoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY2xpY2soYm9vbCBzZW5kTW91c2VFdmVudHMgPSBmYWxzZSwgYm9vbCBzaG93UHJl
c3NlZExvb2sgPSB0cnVlKTsKKyAgICB2b2lkIGNsaWNrKCk7CisKICAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RWxlbWVudCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNHZW5lcmljRm9ybUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3OTY3KQorKysgV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGb3JtRGF0
YS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgpAQCAtMTMzLDcgKzEzNCw3IEBAIHZvaWQg
SFRNTEZvcm1FbGVtZW50OjpzdWJtaXRDbGljayhFdmVudCoKICAgICAgICAgICAgIEhUTUxJbnB1
dEVsZW1lbnQgKmVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50ICo+KGZvcm1F
bGVtZW50c1tpXSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNTdWNjZXNzZnVsU3VibWl0
QnV0dG9uKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIHN1Ym1p
dEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5jbGljayhmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgZWxlbWVudC0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE3OTY3KQorKysgV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjgsMzQgKzYyOCw2IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UKICAgICB9CiB9CiAKLXZv
aWQgSFRNTElucHV0RWxlbWVudDo6Y2xpY2soYm9vbCBzZW5kTW91c2VFdmVudHMsIGJvb2wgc2hv
d1ByZXNzZWRMb29rKQotewotICAgIHN3aXRjaCAoaW5wdXRUeXBlKCkpIHsKLSAgICAgICAgY2Fz
ZSBCVVRUT046Ci0gICAgICAgIGNhc2UgQ0hFQ0tCT1g6Ci0gICAgICAgIGNhc2UgSU1BR0U6Ci0g
ICAgICAgIGNhc2UgSVNJTkRFWDoKLSAgICAgICAgY2FzZSBQQVNTV09SRDoKLSAgICAgICAgY2Fz
ZSBSQURJTzoKLSAgICAgICAgY2FzZSBSQU5HRToKLSAgICAgICAgY2FzZSBSRVNFVDoKLSAgICAg
ICAgY2FzZSBTRUFSQ0g6Ci0gICAgICAgIGNhc2UgU1VCTUlUOgotICAgICAgICBjYXNlIFRFWFQ6
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGSUxFOgotICAgICAgICAgICAgaWYg
KHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJGaWxlVXBs
b2FkQ29udHJvbCo+KHJlbmRlcmVyKCkpLT5jbGljayhzZW5kTW91c2VFdmVudHMpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEhJRERFTjoKLSAgICAgICAgICAgIC8vIGEgbm8tb3AgZm9yIHRoaXMgdHlwZQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50Ojpj
bGljayhzZW5kTW91c2VFdmVudHMsIHNob3dQcmVzc2VkTG9vayk7Ci19Ci0KIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55RWxlbWVudCkKIHsKICAg
ICBzd2l0Y2ggKGlucHV0VHlwZSgpKSB7CkBAIC02NzAsNyArNjQyLDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjphY2Nlc3NLZXlBY3Rpb24oYgogICAgICAgICAgICAgLy8gZm9jdXMKICAgICAg
ICAgICAgIGZvY3VzKCk7CiAgICAgICAgICAgICAvLyBzZW5kIHRoZSBtb3VzZSBidXR0b24gZXZl
bnRzIGlmZiB0aGUgY2FsbGVyIHNwZWNpZmllZCBzZW5kVG9BbnlFbGVtZW50Ci0gICAgICAgICAg
ICBjbGljayhzZW5kVG9BbnlFbGVtZW50KTsKKyAgICAgICAgICAgIGRpc3BhdGNoU2ltdWxhdGVk
Q2xpY2soMCwgc2VuZFRvQW55RWxlbWVudCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBISURERU46CiAgICAgICAgICAgICAvLyBhIG5vLW9wIGZvciB0aGlzIHR5cGUKQEAgLTEy
MTksMTEgKzExOTEsMTEgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpwb3N0RGlzcGF0Y2hFdmVu
dAogICAgIH0KIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50ICpldnQpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2dCkKIHsKICAgICBpZiAoaW5wdXRUeXBlKCkgPT0gSU1BR0UgJiYgZXZ0LT5pc01v
dXNlRXZlbnQoKSAmJiBldnQtPnR5cGUoKSA9PSBjbGlja0V2ZW50KSB7CiAgICAgICAgIC8vIHJl
Y29yZCB0aGUgbW91c2UgcG9zaXRpb24gZm9yIHdoZW4gd2UgZ2V0IHRoZSBET01BY3RpdmF0ZSBl
dmVudAotICAgICAgICBNb3VzZUV2ZW50ICptZSA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihl
dnQpOworICAgICAgICBNb3VzZUV2ZW50KiBtZSA9IHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihl
dnQpOwogICAgICAgICAvLyBGSVhNRTogV2UgY291bGQganVzdCBjYWxsIG9mZnNldFgoKSBhbmQg
b2Zmc2V0WSgpIG9uIHRoZSBldmVudCwKICAgICAgICAgLy8gYnV0IHRoYXQncyBjdXJyZW50bHkg
YnJva2VuLCBzbyBmb3Igbm93IGRvIHRoZSBjb21wdXRhdGlvbiBoZXJlLgogICAgICAgICBpZiAo
bWUtPmlzU2ltdWxhdGVkKCkgfHwgIXJlbmRlcmVyKCkpIHsKQEAgLTEyNDAsNyArMTIxMiw3IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGwKIAogICAgIC8vIERPTUFj
dGl2YXRlIGV2ZW50cyBjYXVzZSB0aGUgaW5wdXQgdG8gYmUgImFjdGl2YXRlZCIgLSBpbiB0aGUg
Y2FzZSBvZiBpbWFnZSBhbmQgc3VibWl0IGlucHV0cywgdGhpcyBtZWFucwogICAgIC8vIGFjdHVh
bGx5IHN1Ym1pdHRpbmcgdGhlIGZvcm0uIEZvciByZXNldCBpbnB1dHMsIHRoZSBmb3JtIGlzIHJl
c2V0LiBUaGVzZSBldmVudHMgYXJlIHNlbnQgd2hlbiB0aGUgdXNlciBjbGlja3MKLSAgICAvLyBv
biB0aGUgZWxlbWVudCwgb3IgcHJlc3NlcyBlbnRlciB3aGlsZSBpdCBpcyB0aGUgYWN0aXZlIGVs
ZW1lbnQuIEphdmFjc3JpcHQgY29kZSB3aXNoaW5nIHRvIGFjdGl2YXRlIHRoZSBlbGVtZW50Cisg
ICAgLy8gb24gdGhlIGVsZW1lbnQsIG9yIHByZXNzZXMgZW50ZXIgd2hpbGUgaXQgaXMgdGhlIGFj
dGl2ZSBlbGVtZW50LiBKYXZhU2NyaXB0IGNvZGUgd2lzaGluZyB0byBhY3RpdmF0ZSB0aGUgZWxl
bWVudAogICAgIC8vIG11c3QgZGlzcGF0Y2ggYSBET01BY3RpdmF0ZSBldmVudCAtIGEgY2xpY2sg
ZXZlbnQgd2lsbCBub3QgZG8gdGhlIGpvYi4KICAgICBpZiAoZXZ0LT50eXBlKCkgPT0gRE9NQWN0
aXZhdGVFdmVudCAmJiAhZGlzYWJsZWQoKSkgewogICAgICAgICBpZiAoaW5wdXRUeXBlKCkgPT0g
SU1BR0UgfHwgaW5wdXRUeXBlKCkgPT0gU1VCTUlUIHx8IGlucHV0VHlwZSgpID09IFJFU0VUKSB7
CkBAIC0xMjU3LDcgKzEyMjksNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsCiAgICAgICAgICAgICAgICAgbV9hY3RpdmVTdWJtaXQgPSBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChpbnB1dFR5cGUoKSA9PSBGSUxFICYmIHJlbmRlcmVy
KCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCo+KHJl
bmRlcmVyKCkpLT5jbGljayhmYWxzZSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJG
aWxlVXBsb2FkQ29udHJvbCo+KHJlbmRlcmVyKCkpLT5jbGljaygpOwogICAgIH0KIAogICAgIC8v
IFVzZSBrZXkgcHJlc3MgZXZlbnQgaGVyZSBzaW5jZSBzZW5kaW5nIHNpbXVsYXRlZCBtb3VzZSBl
dmVudHMKQEAgLTEzNTYsNyArMTMyOCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dEVsdC0+aXNGb2N1
c2FibGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0RWx0LT5zZXRDaGVj
a2VkKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnNldEZv
Y3VzZWROb2RlKGlucHV0RWx0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dEVs
dC0+Y2xpY2soZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1
dEVsdC0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAt
MTM2Niw3ICsxMzM4LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNsaWNrRWxlbWVudCkgewotICAgICAgICAgICAg
Y2xpY2soZmFsc2UpOworICAgICAgICAgICAgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldnQpOwog
ICAgICAgICAgICAgZXZ0LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICB9IGVsc2UgaWYg
KGNsaWNrRGVmYXVsdEZvcm1CdXR0b24gJiYgKGlucHV0VHlwZSgpICE9IFNFQVJDSCB8fCBmb3Jt
KCkpKSB7CiAgICAgICAgICAgICBpZiAoZm9ybSgpKSB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgJKHJldmlzaW9uIDE3OTY3KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDggKzExMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNlbGVjdGlvbkVuZChpbnQpOwogICAgIHZvaWQgc2VsZWN0KCk7CiAgICAgdm9pZCBzZXRTZWxl
Y3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBj
bGljayhib29sIHNlbmRNb3VzZUV2ZW50cyA9IGZhbHNlLCBib29sIHNob3dQcmVzc2VkTG9vayA9
IHRydWUpOworCiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRUb0Fu
eUVsZW1lbnQpOwogCiAgICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OwpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmNwcAkocmV2aXNpb24gMTc5NjcpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTExhYmVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCwyMiArMTA4
LDIyIEBAIHZvaWQgSFRNTExhYmVsRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGwKICAgICBzdGF0
aWMgYm9vbCBwcm9jZXNzaW5nQ2xpY2sgPSBmYWxzZTsKIAogICAgIGlmIChldnQtPnR5cGUoKSA9
PSBjbGlja0V2ZW50ICYmICFwcm9jZXNzaW5nQ2xpY2spIHsKLSAgICAgICAgSFRNTEVsZW1lbnQq
IGVsZW1lbnQgPSBmb3JtRWxlbWVudCgpOwotICAgICAgICAKKyAgICAgICAgUmVmUHRyPEhUTUxF
bGVtZW50PiBlbGVtZW50ID0gZm9ybUVsZW1lbnQoKTsKKwogICAgICAgICAvLyBJZiB3ZSBjYW4n
dCBmaW5kIGEgY29udHJvbCBvciBpZiB0aGUgY29udHJvbCByZWNlaXZlZCB0aGUgY2xpY2sKICAg
ICAgICAgLy8gZXZlbnQsIHRoZW4gdGhlcmUncyBubyBuZWVkIGZvciB1cyB0byBkbyBhbnl0aGlu
Zy4KICAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQtPmNvbnRhaW5zKGV2dC0+dGFyZ2V0
KCkpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgICAgICBwcm9jZXNzaW5n
Q2xpY2sgPSB0cnVlOwogCiAgICAgICAgIC8vIENsaWNrIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRy
b2wuCi0gICAgICAgIGVsZW1lbnQtPmNsaWNrKGZhbHNlKTsKLSAgICAgICAgICAgIAorICAgICAg
ICBlbGVtZW50LT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2dCk7CisKICAgICAgICAgLy8gSWYg
dGhlIGNvbnRyb2wgY2FuIGJlIGZvY3VzZWQgdmlhIHRoZSBtb3VzZSwgdGhlbiBkbyB0aGF0IHRv
by4KICAgICAgICAgaWYgKGVsZW1lbnQtPmlzTW91c2VGb2N1c2FibGUoKSkKICAgICAgICAgICAg
IGVsZW1lbnQtPmZvY3VzKCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICBwcm9jZXNzaW5nQ2xp
Y2sgPSBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBIVE1MTGFi
ZWxFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbAogCiB2b2lkIEhUTUxMYWJlbEVsZW1lbnQ6OmZv
Y3VzKCkKIHsKLSAgICBpZiAoRWxlbWVudCAqZWxlbWVudCA9IGZvcm1FbGVtZW50KCkpCisgICAg
aWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBmb3JtRWxlbWVudCgpKQogICAgICAgICBlbGVtZW50LT5m
b2N1cygpOwogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDE3OTY3KQorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODc1LDkgKzg3NSw4IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6cHJldmlvdXNT
ZWxlY3RhYmwKIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wg
c2VuZFRvQW55RWxlbWVudCkKIHsKLSAgICAvLyBzZW5kIHRoZSBtb3VzZSBidXR0b24gZXZlbnRz
IGlmZiB0aGUKLSAgICAvLyBjYWxsZXIgc3BlY2lmaWVkIHNlbmRUb0FueUVsZW1lbnQKLSAgICBj
bGljayhzZW5kVG9BbnlFbGVtZW50KTsKKyAgICAvLyBzZW5kIHRoZSBtb3VzZSBidXR0b24gZXZl
bnRzIGlmZiB0aGUgY2FsbGVyIHNwZWNpZmllZCBzZW5kVG9BbnlFbGVtZW50CisgICAgZGlzcGF0
Y2hTaW11bGF0ZWRDbGljaygwLCBzZW5kVG9BbnlFbGVtZW50KTsKIH0KIAogdm9pZCBIVE1MU2Vs
ZWN0RWxlbWVudDo6c2V0TXVsdGlwbGUoYm9vbCBtdWx0aXBsZSkKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0FFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3OTY3KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
QUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRl
ICJBdHRyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTc5Njcp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTczLDcgKzE3Myw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6c2VuZFNWR0xvYWRFdmVudElmUG9zc2kK
ICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1hbGxvYyBjb3VsZCBiZSBhdm9pZGVk
IGJ5IHdhbGtpbmcgdGhlIHRyZWUgZmlyc3QgdG8gY2hlY2sgaWYgYW55IGxpc3RlbmVycyBhcmUg
cHJlc2VudDogaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNjQKICAg
ICAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IG5ldyBFdmVudChsb2FkRXZlbnQsIGZhbHNlLCBm
YWxzZSk7Ci0gICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoY3VycmVudFRhcmdldC5nZXQoKSk7Cisg
ICAgICAgIGV2ZW50LT5zZXRUYXJnZXQoY3VycmVudFRhcmdldCk7CiAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgaWdub3JlZCA9IDA7CiAgICAgICAgIGRpc3BhdGNoR2VuZXJpY0V2ZW50KGV2ZW50LnJl
bGVhc2UoKSwgaWdub3JlZCwgZmFsc2UpOwogICAgICAgICBjdXJyZW50VGFyZ2V0ID0gKHBhcmVu
dCAmJiBwYXJlbnQtPmlzU1ZHRWxlbWVudCgpKSA/IHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHRWxl
bWVudD4ocGFyZW50KSA6IDA7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAx
Nzk2NykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVkaXRvckNs
aWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb3Jt
U3RhdGUuaCIKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCShyZXZpc2lvbiAx
Nzk2NykKKysrIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw1NSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5h
dmlnYXRpb25BY3Rpb24uaCIKIAorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgTmF2aWdhdGlvblR5cGUg
bmF2aWdhdGlvblR5cGUoRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1
Ym1pc3Npb24sIGJvb2wgaGF2ZUV2ZW50KQoreworICAgIGlmIChpc0Zvcm1TdWJtaXNzaW9uKQor
ICAgICAgICByZXR1cm4gTmF2aWdhdGlvblR5cGVGb3JtU3VibWl0dGVkOworICAgIGlmIChoYXZl
RXZlbnQpCisgICAgICAgIHJldHVybiBOYXZpZ2F0aW9uVHlwZUxpbmtDbGlja2VkOworICAgIGlm
IChmcmFtZUxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWQpCisgICAgICAgIHJldHVybiBO
YXZpZ2F0aW9uVHlwZVJlbG9hZDsKKyAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKGZyYW1l
TG9hZFR5cGUpKQorICAgICAgICByZXR1cm4gTmF2aWdhdGlvblR5cGVCYWNrRm9yd2FyZDsKKyAg
ICByZXR1cm4gTmF2aWdhdGlvblR5cGVPdGhlcjsKK30KKworTmF2aWdhdGlvbkFjdGlvbjo6TmF2
aWdhdGlvbkFjdGlvbigpCisgICAgOiBtX3R5cGUoTmF2aWdhdGlvblR5cGVPdGhlcikKK3sKK30K
KworTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiBVUkwsIE5h
dmlnYXRpb25UeXBlIHR5cGUpCisgICAgOiBtX1VSTChVUkwpCisgICAgLCBtX3R5cGUodHlwZSkK
K3sKK30KKworTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiBV
UkwsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwKKyAgICAgICAgYm9vbCBpc0Zvcm1TdWJt
aXNzaW9uKQorICAgIDogbV9VUkwoVVJMKQorICAgICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZy
YW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIDApKQoreworfQorCitOYXZpZ2F0aW9uQWN0
aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIFVSTCwgTmF2aWdhdGlvblR5cGUgdHlw
ZSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCisgICAgOiBtX1VSTChVUkwpCisgICAgLCBtX3R5
cGUodHlwZSkKKyAgICAsIG1fZXZlbnQoZXZlbnQpCit7Cit9CisKK05hdmlnYXRpb25BY3Rpb246
Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgVVJMLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9h
ZFR5cGUsCisgICAgICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCisgICAgOiBtX1VSTChVUkwpCisgICAgLCBtX3R5cGUobmF2aWdhdGlvblR5cGUoZnJh
bWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpKQorICAgICwgbV9ldmVudChldmVu
dCkKK3sKK30KKwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24g
MTc5NjcpCisrKyBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDkgKzI5LDcgQEAKICNpZm5kZWYgTmF2aWdhdGlvbkFjdGlvbl9oCiAjZGVmaW5l
IE5hdmlnYXRpb25BY3Rpb25faAogCi0jaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIktV
UkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9t
YWMvRG9jdW1lbnRMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbWFj
L0RvY3VtZW50TG9hZGVyTWFjLm1tCShyZXZpc2lvbiAxNzk2NykKKysrIFdlYkNvcmUvbG9hZGVy
L21hYy9Eb2N1bWVudExvYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogI2ltcG9ydCAiRG9jdW1lbnRMb2FkZXIuaCIKIAogI2ltcG9ydCAiRG9jdW1lbnQuaCIKKyNp
bXBvcnQgIkV2ZW50LmgiCiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiRnJhbWVN
YWMuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyaW5nLmgiCkluZGV4OiBXZWJDb3JlL2xvYWRlci9t
YWMvRnJhbWVMb2FkZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbWFjL0Zy
YW1lTG9hZGVyTWFjLm1tCShyZXZpc2lvbiAxNzk2NykKKysrIFdlYkNvcmUvbG9hZGVyL21hYy9G
cmFtZUxvYWRlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9y
dCAiRE9NRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAi
RG9jdW1lbnRMb2FkZXIuaCIKKyNpbXBvcnQgIkV2ZW50LmgiCiAjaW1wb3J0ICJGbG9hdFJlY3Qu
aCIKICNpbXBvcnQgIkZvcm1EYXRhU3RyZWFtTWFjLmgiCiAjaW1wb3J0ICJGb3JtU3RhdGUuaCIK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL21hYy9OYXZpZ2F0aW9uQWN0aW9uTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL21hYy9OYXZpZ2F0aW9uQWN0aW9uTWFjLm1tCShyZXZpc2lv
biAxNzk2NykKKysrIFdlYkNvcmUvbG9hZGVyL21hYy9OYXZpZ2F0aW9uQWN0aW9uTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4g
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKLQotI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIE5hdmlnYXRpb25UeXBl
IG5hdmlnYXRpb25UeXBlKEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwgYm9vbCBpc0Zvcm1T
dWJtaXNzaW9uLCBib29sIGhhdmVFdmVudCkKLXsKLSAgICBpZiAoaXNGb3JtU3VibWlzc2lvbikK
LSAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25UeXBlRm9ybVN1Ym1pdHRlZDsKLSAgICBpZiAoaGF2
ZUV2ZW50KQotICAgICAgICByZXR1cm4gTmF2aWdhdGlvblR5cGVMaW5rQ2xpY2tlZDsKLSAgICBp
ZiAoZnJhbWVMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2FkKQotICAgICAgICByZXR1cm4g
TmF2aWdhdGlvblR5cGVSZWxvYWQ7Ci0gICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShmcmFt
ZUxvYWRUeXBlKSkKLSAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25UeXBlQmFja0ZvcndhcmQ7Ci0g
ICAgcmV0dXJuIE5hdmlnYXRpb25UeXBlT3RoZXI7Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5h
dmlnYXRpb25BY3Rpb24oKQotICAgIDogbV90eXBlKE5hdmlnYXRpb25UeXBlT3RoZXIpCi17Ci19
Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgVVJMLCBO
YXZpZ2F0aW9uVHlwZSB0eXBlKQotICAgIDogbV9VUkwoVVJMKQotICAgICwgbV90eXBlKHR5cGUp
Ci17Ci19Ci0KLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYg
VVJMLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsCi0gICAgICAgIGJvb2wgaXNGb3JtU3Vi
bWlzc2lvbikKLSAgICA6IG1fVVJMKFVSTCkKLSAgICAsIG1fdHlwZShuYXZpZ2F0aW9uVHlwZShm
cmFtZUxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCAwKSkKLXsKLX0KLQotTmF2aWdhdGlvbkFj
dGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiBVUkwsIE5hdmlnYXRpb25UeXBlIHR5
cGUsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQotICAgIDogbV9VUkwoVVJMKQotICAgICwgbV90
eXBlKHR5cGUpCi0gICAgLCBtX2V2ZW50KGV2ZW50KQotewotfQotCi1OYXZpZ2F0aW9uQWN0aW9u
OjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIFVSTCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxv
YWRUeXBlLAotICAgICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24sIFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQotICAgIDogbV9VUkwoVVJMKQotICAgICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZy
YW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KSkKLSAgICAsIG1fZXZlbnQoZXZl
bnQpCi17Ci19Ci0KLX0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5jcHAJKHJldmlzaW9uIDE3OTY3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBA
IHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnZhbHVlQ2hhbmcKICAgICByZXBhaW50KCk7
CiB9CiAKLXZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmNsaWNrKGJvb2wgc2VuZE1vdXNl
RXZlbnRzKQordm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6Y2xpY2soKQogewogICAgIG1f
ZmlsZUNob29zZXItPm9wZW5GaWxlQ2hvb3NlcigpOwogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oCShyZXZpc2lvbiAxNzk2NykKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYWxjTWluTWF4V2lkdGgo
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQg
dHkpOwogCi0gICAgdmlydHVhbCB2b2lkIGNsaWNrKGJvb2wgc2VuZE1vdXNlRXZlbnRzKTsKKyAg
ICB2b2lkIGNsaWNrKCk7CiAKICAgICB2b2lkIHZhbHVlQ2hhbmdlZCgpOwogCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDE3OTY3KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIgCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE3OTY1KQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI0IEBACisyMDA2LTEyLTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZpeCBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYyOAorICAgICAgICAgIFJF
R1JFU1NJT04gKHIxNzU5Nyk6IENvbW1hbmQtcmV0dXJuIGluIG5hdGl2ZSB0ZXh0IGZpZWxkcyBk
b2Vzbid0IG9wZW4gYSBuZXcgdGFiIG9yIHdpbmRvdworCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChmaW5kS2V5U3RhdGVFdmVudCk6
IEFkZGVkLiBIZWxwZXIgdGhhdCBmaW5kcyB0aGUgbW91c2Ugb3Iga2V5Ym9hcmQgZXZlbnQgaW4g
YSBjaGFpbgorICAgICAgICBvZiBldmVudHMgYW5kIHRoZWlyIHVuZGVybHlpbmcgZXZlbnRzLgor
ICAgICAgICAoZmluZE1vdXNlRXZlbnQpOiBBZGRlZC4gU2FtZSwgYnV0IHNwZWNpZmljYWxseSBm
b3IgbW91c2UgZXZlbnRzLgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRp
Y3Rpb25hcnkpOiBSZXdyb3RlIHRvIHVzZSB0aGUgYWJvdmUgZnVuY3Rpb25zLiBUaGlzIG1lYW5z
IHdlCisgICAgICAgIHVzZSB0aGUgbW9kaWZpZXJzIGZyb20gdGhlIHVuZGVybHlpbmcgZXZlbnRz
IHJhdGhlciB0aGFuIGp1c3QgdGhlIG9uZSBmcm9tIHRoZSBldmVudCBpdHNlbGYuCisgICAgICAg
IFNvIGlmIHRoZSBldmVudCBpcyBhIERPTSBhY3RpdmF0ZSBldmVudCwgd2UgY2FuIHN0aWxsIHNl
ZSB0aGUgbW9kaWZpZXJzIGZyb20gdGhlIG9yaWdpbmFsCisgICAgICAgIGtleWJvYXJkIGV2ZW50
IHRoYXQgdHJpZ2dlcmVkIGl0LiBIYXMgbm8gZWZmZWN0IGlmIHRoZSBldmVudCBpcyBhbHJlYWR5
IHRoZSByaWdodCB0eXBlIG9yCisgICAgICAgIGlmIHRoZXJlIGlzIG5vIHVuZGVybHlpbmcgZXZl
bnQuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOiBBZGRlZCBhIG5ld2x5LW5lZWRl
ZCBpbmNsdXVkZS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OiBYY29kZSB3YW50cyB3aGF0IGl0IHdhbnRzLgorCiAyMDA2LTEyLTAxICBEb24gR2lic29uICA8
ZGdpYnNvbjc3QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNaXR6LgpJbmRleDog
V2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNp
b24gMTc5NjIpCisrKyBXZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZU1hYy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZVRyZWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvTW91c2VF
dmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CkBAIC0xMTY5LDI5ICsxMTcwLDQ0IEBA
IFN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KCkKICAgICByZXR1cm4gW2dl
dFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkgX3VzZXJBZ2VudF07CiB9CiAKK3N0YXRpYyBjb25z
dCBVSUV2ZW50V2l0aEtleVN0YXRlKiBmaW5kS2V5U3RhdGVFdmVudChjb25zdCBFdmVudCogZXZl
bnQpCit7CisgICAgZm9yIChjb25zdCBFdmVudCogZSA9IGV2ZW50OyBlOyBlID0gZS0+dW5kZXJs
eWluZ0V2ZW50KCkpCisgICAgICAgIGlmIChlLT5pc01vdXNlRXZlbnQoKSB8fCBlLT5pc0tleWJv
YXJkRXZlbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBVSUV2ZW50
V2l0aEtleVN0YXRlKj4oZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBNb3Vz
ZUV2ZW50KiBmaW5kTW91c2VFdmVudChjb25zdCBFdmVudCogZXZlbnQpCit7CisgICAgZm9yIChj
b25zdCBFdmVudCogZSA9IGV2ZW50OyBlOyBlID0gZS0+dW5kZXJseWluZ0V2ZW50KCkpCisgICAg
ICAgIGlmIChlLT5pc01vdXNlRXZlbnQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBNb3VzZUV2ZW50Kj4oZSk7CisgICAgcmV0dXJuIDA7Cit9CisKIE5TRGljdGlvbmFy
eSAqV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uKSBjb25zdAogewogICAgIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MgPSAw
OwogICAgIGNvbnN0IEV2ZW50KiBldmVudCA9IGFjdGlvbi5ldmVudCgpOwotICAgIGlmIChldmVu
dCAmJiAoZXZlbnQtPmlzTW91c2VFdmVudCgpIHx8IGV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSkp
IHsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PGNvbnN0IFVJRXZlbnRXaXRoS2V5U3RhdGUqPihl
dmVudCktPmN0cmxLZXkoKSkKKyAgICBpZiAoY29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSoga2V5
U3RhdGVFdmVudCA9IGZpbmRLZXlTdGF0ZUV2ZW50KGV2ZW50KSkgeworICAgICAgICBpZiAoa2V5
U3RhdGVFdmVudC0+Y3RybEtleSgpKQogICAgICAgICAgICAgbW9kaWZpZXJGbGFncyB8PSBOU0Nv
bnRyb2xLZXlNYXNrOwotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgVUlFdmVudFdpdGhL
ZXlTdGF0ZSo+KGV2ZW50KS0+YWx0S2V5KCkpCisgICAgICAgIGlmIChrZXlTdGF0ZUV2ZW50LT5h
bHRLZXkoKSkKICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3MgfD0gTlNBbHRlcm5hdGVLZXlNYXNr
OwotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSo+KGV2
ZW50KS0+c2hpZnRLZXkoKSkKKyAgICAgICAgaWYgKGtleVN0YXRlRXZlbnQtPnNoaWZ0S2V5KCkp
CiAgICAgICAgICAgICBtb2RpZmllckZsYWdzIHw9IE5TU2hpZnRLZXlNYXNrOwotICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8Y29uc3QgVUlFdmVudFdpdGhLZXlTdGF0ZSo+KGV2ZW50KS0+bWV0YUtl
eSgpKQorICAgICAgICBpZiAoa2V5U3RhdGVFdmVudC0+bWV0YUtleSgpKQogICAgICAgICAgICAg
bW9kaWZpZXJGbGFncyB8PSBOU0NvbW1hbmRLZXlNYXNrOwogICAgIH0KLSAgICBpZiAoZXZlbnQg
JiYgZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7Ci0gICAgICAgIEludFBvaW50IHBvaW50KHN0YXRp
Y19jYXN0PGNvbnN0IE1vdXNlRXZlbnQqPihldmVudCktPmNsaWVudFgoKSwKLSAgICAgICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZlbnQqPihldmVudCktPmNsaWVudFkoKSk7CisgICAg
aWYgKGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBmaW5kTW91c2VFdmVudChldmVudCkp
IHsKKyAgICAgICAgSW50UG9pbnQgcG9pbnQobW91c2VFdmVudC0+Y2xpZW50WCgpLCBtb3VzZUV2
ZW50LT5jbGllbnRZKCkpOwogICAgICAgICBXZWJFbGVtZW50RGljdGlvbmFyeSAqZWxlbWVudCA9
IFtbV2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdCiAgICAgICAgICAgICBpbml0V2l0aEhpdFRl
c3RSZXN1bHQ6Y29yZShtX3dlYkZyYW1lLmdldCgpKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RS
ZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSldOwogICAgICAgICBOU0RpY3Rpb25hcnkgKnJlc3Vs
dCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmFjdGlvbi50eXBlKCldLCBXZWJBY3Rpb25OYXZp
Z2F0aW9uVHlwZUtleSwKICAgICAgICAgICAgIGVsZW1lbnQsIFdlYkFjdGlvbkVsZW1lbnRLZXks
Ci0gICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzdGF0aWNfY2FzdDxjb25zdCBN
b3VzZUV2ZW50Kj4oZXZlbnQpLT5idXR0b24oKV0sIFdlYkFjdGlvbkJ1dHRvbktleSwKKyAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1vdXNlRXZlbnQtPmJ1dHRvbigpXSwgV2Vi
QWN0aW9uQnV0dG9uS2V5LAogICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bW9k
aWZpZXJGbGFnc10sIFdlYkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXksCiAgICAgICAgICAgICBhY3Rp
b24uVVJMKCkuZ2V0TlNVUkwoKSwgV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXksCiAgICAgICAgICAg
ICBuaWxdOwpJbmRleDogV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTc5NjIpCisrKyBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNjIsNyArMTI2Miw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4MzIwODkwMkIwRjAwOEE5RUZDIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViS2l0IiAqLzsKLQkJCWNv
bXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7CiAJCQloYXNTY2FubmVkRm9yRW5jb2Rp
bmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLApAQCAtMTI3Nyw3ICsx
Mjc2LDYgQEAKIAkJCXByb2R1Y3RSZWZHcm91cCA9IDAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAv
KiBQcm9kdWN0cyAqLzsKIAkJCXByb2plY3REaXJQYXRoID0gIiI7CiAJCQlwcm9qZWN0Um9vdCA9
ICIiOwotCQkJc2hvdWxkQ2hlY2tDb21wYXRpYmlsaXR5ID0gMTsKIAkJCXRhcmdldHMgPSAoCiAJ
CQkJOTM5ODEwMEEwODI0QkYwMTAwOERGMDM4IC8qIFdlYktpdCAqLywKIAkJCSk7CkluZGV4OiBX
ZWJLaXQvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9X
ZWJGcmFtZS5tbQkocmV2aXNpb24gMTc5NjIpCisrKyBXZWJLaXQvV2ViVmlldy9XZWJGcmFtZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVy
bmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Nocm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1
bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9FdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZU1hYy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZVRyZWUuaD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>