<?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>51504</bug_id>
          
          <creation_ts>2010-12-22 16:00:21 -0800</creation_ts>
          <short_desc>Make Speech menu items work in WebKit2</short_desc>
          <delta_ts>2010-12-23 08:28:21 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>325749</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-22 16:00:21 -0800</bug_when>
    <thetext>Make Speech menu items work in WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325760</commentid>
    <comment_count>1</comment_count>
      <attachid>77272</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-22 16:13:03 -0800</bug_when>
    <thetext>Created attachment 77272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325763</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-22 16:14:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/8246002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325779</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-22 16:27:59 -0800</bug_when>
    <thetext>Attachment 77272 did not build on qt:
Build output: http://queues.webkit.org/results/7287108</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325782</commentid>
    <comment_count>4</comment_count>
      <attachid>77272</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-12-22 16:31:59 -0800</bug_when>
    <thetext>Comment on attachment 77272
Patch

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

&gt; WebKit2/UIProcess/API/mac/WKView.mm:350
&gt; +        return YES;

This should return &quot;enabled&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325790</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-22 16:45:19 -0800</bug_when>
    <thetext>Committed r74521: &lt;http://trac.webkit.org/changeset/74521&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325792</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-22 16:50:29 -0800</bug_when>
    <thetext>Committed r74522: &lt;http://trac.webkit.org/changeset/74522&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325808</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-22 17:19:21 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74521 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
http/tests/local/stylesheet-and-script-load-order-media-print.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325874</commentid>
    <comment_count>8</comment_count>
      <attachid>77272</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-12-22 20:25:18 -0800</bug_when>
    <thetext>Comment on attachment 77272
Patch

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

&gt; WebKit2/UIProcess/WebPageProxy.messages.in:119
&gt; +    # Keyboard support messages.

This and other changes seem to add periods to the end of sentence fragments, which seems wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325875</commentid>
    <comment_count>9</comment_count>
      <attachid>77272</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-12-22 20:27:48 -0800</bug_when>
    <thetext>Comment on attachment 77272
Patch

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

&gt; WebKit2/WebProcess/WebPage/WebPage.cpp:1377
&gt; +bool WebPage::isSpeaking()
&gt; +{
&gt; +    bool result;
&gt; +    return sendSync(Messages::WebPageProxy::GetIsSpeaking(), Messages::WebPageProxy::GetIsSpeaking::Reply(result)) &amp;&amp; result;
&gt; +}

It seems suboptimal to do synchronous messaging to the UI process just to validate this one context menu item. Is there a way we can have the validation happen in the UI process in the first place? That seems like the right way to do it, since that&apos;s where the action will happen. In fact, the popup menu runs in the UI process, it would be better if WebKit-provided items could be handled in the UI process when appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326088</commentid>
    <comment_count>10</comment_count>
      <attachid>77272</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-23 08:28:21 -0800</bug_when>
    <thetext>Comment on attachment 77272
Patch

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

&gt;&gt; WebKit2/UIProcess/WebPageProxy.messages.in:119
&gt;&gt; +    # Keyboard support messages.
&gt; 
&gt; This and other changes seem to add periods to the end of sentence fragments, which seems wrong.

These periods were on all the other sentence fragments in the file; I corrected the few that were different to be consistent. It’s OK if you want to be consistent the other way.

&gt;&gt; WebKit2/WebProcess/WebPage/WebPage.cpp:1377
&gt;&gt; +}
&gt; 
&gt; It seems suboptimal to do synchronous messaging to the UI process just to validate this one context menu item. Is there a way we can have the validation happen in the UI process in the first place? That seems like the right way to do it, since that&apos;s where the action will happen. In fact, the popup menu runs in the UI process, it would be better if WebKit-provided items could be handled in the UI process when appropriate.

Yes, that would be a nice refinement to make later. This works well, but what you describe would be even better.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77272</attachid>
            <date>2010-12-22 16:13:03 -0800</date>
            <delta_ts>2010-12-23 08:28:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51504-20101222161302.patch</filename>
            <type>text/plain</type>
            <size>40498</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDUxMikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTMgQEAKKzIwMTAtMTItMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
U3BlZWNoIG1lbnUgaXRlbXMgd29yayBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTUwNAorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWUuY3BwOgorICAgICAgICAoV0tGcmFtZUdldFdlYkFyY2hpdmUpOiBVcGRhdGVk
IHRvIHVzZSBuZXctbmFtZWQgdHlwZWRlZi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6IERpdHRv
LgorICAgICAgICAoV0tQYWdlUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24pOiBEaXR0
by4KKyAgICAgICAgKFdLUGFnZUdldFNvdXJjZUZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChX
S1BhZ2VHZXRDb250ZW50c0FzU3RyaW5nKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW06CisgICAgICAgIChtZW51SXRlbSk6IEFkZGVkLiBIZWxwZXIgZnVu
Y3Rpb24gdG8gbWFrZSBpdCBlYXN5IHRvIGNhbGwgbWVudSBpdGVtCisgICAgICAgIGZ1bmN0aW9u
cyBvbiBhcmJpdHJhcnkgdXNlciBpbnRlcmZhY2UgaXRlbXMuCisgICAgICAgICh0b29sYmFySXRl
bSk6IERpdHRvLgorICAgICAgICAoLVtXS1ZpZXcgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpd
KTogQWRkZWQgdmFsaWRhdGlvbiBmb3Igc3RhcnRTcGVha2luZworICAgICAgICBhbmQgc3RvcFNw
ZWFraW5nIGNvbW1hbmRzLiBSZXdvcmtlZCB0aGUgY29kZSB0byBmaXggYSBidWcgd2hlcmUKKyAg
ICAgICAgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcgd291bGQgYWx3YXlzIGJlIGVuYWJs
ZWQgZXZlbiB3aGVuIGl0IHNob3VsZAorICAgICAgICBiZSBkaXNhYmxlZC4gUmV3b3JrZWQgdGhl
IGFzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGNvZGUgc28gaXQgd29ya3MgZm9yCisgICAgICAgIGl0
ZW1zIG90aGVyIHRoYW4gbWVudSBpdGVtcyBhbmQgY2FuIGFsc28gaGFuZGxlIG1vcmUgdGhhbiBv
bmUgaXRlbSBmb3IgdGhlCisgICAgICAgIHNhbWUgY29tbWFuZC4gQWRkZWQgc29tZSBjb21tZW50
cy4KKyAgICAgICAgKHNwZWFrU3RyaW5nKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbiB0byBiZSB1
c2VkIGFzIGEgY2FsbGJhY2sgd2hlbiB3ZQorICAgICAgICBnZXQgdGhlIHNlbGVjdGlvbiBvciBj
b250ZW50cyB0byBzcGVhay4KKyAgICAgICAgKC1bV0tWaWV3IHN0YXJ0U3BlYWtpbmc6XSk6IEFk
ZGVkLiBVc2VzIGdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZy4KKyAgICAgICAgKC1bV0tW
aWV3IHN0b3BTcGVha2luZzpdKTogQWRkZWQuCisgICAgICAgICgtW1dLVmlldyBfc2V0VXNlcklu
dGVyZmFjZUl0ZW1TdGF0ZTplbmFibGVkOnN0YXRlOl0pOiBSZXdvcmtlZCB0byB3b3JrCisgICAg
ICAgIHdpdGggdGhlIGNoYW5nZXMgdG8gdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbSBhYm92ZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVQcm94eTo6aXNEaXNwbGF5aW5nTWFya3VwRG9jdW1lbnQpOiBBZGRlZCBhIEZJ
WE1FIGFib3V0CisgICAgICAgIGEgcHJvYmxlbSBJIG5vdGljZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lUHJveHk6OmRpZENvbW1pdExvYWQpOiBUd2Vha2VkIGFyZ3VtZW50IG5hbWUuCisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmdldFdlYkFyY2hpdmUpOiBDaGFuZ2VkIHRv
IHVzZSBuZXctbmFtZWQgdHlwZWRlZi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5oOiBDaGFuZ2VkIFdlYkFyY2hpdmVDYWxsYmFjayB0byBEYXRhQ2FsbGFiYWNrLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y2xvc2UpOiBJbnZhbGlkYXRlIHRoZSB0d28gY2FsbGJhY2sgbWFwcyBzaW5jZQor
ICAgICAgICB3ZSBvbmx5IGhhdmUgdHdvIG5vdy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUpOiBDaGFuZ2VkIHRvIHVzZSBtZXJnZWQKKyAg
ICAgICAgbWFwcyBhbmQgdHlwZWRlZnMgc28gd2UgZG9uJ3QgbmVlZCBhIHNlcGFyYXRlIGNhbGxi
YWNrIG1hcCBmb3IgZWFjaCBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
Zyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkR2V0Q29u
dGVudHNBc1N0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZEdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJl
c2VudGF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkR2V0
U291cmNlRm9yRnJhbWUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRHZXRXZWJBcmNoaXZlT2ZGcmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnByb2Nlc3NEaWRDcmFzaCk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOiBVcGRhdGVkIGZvciBjaGFuZ2VzIGFib3ZlLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQgRGlkR2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nLAorICAgICAgICBHZXRJc1NwZWFraW5nLCBTcGVhaywgYW5kIFN0b3BT
cGVha2luZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldElzU3BlYWtpbmcpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzcGVhayk6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnN0b3BTcGVha2luZyk6IEFkZGVkLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29udGV4dE1lbnVDbGllbnRNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50Ojppc1NwZWFraW5nKTogQ2FsbCBX
ZWJQYWdlIGluc3RlYWQgb2YgZG9pbmcKKyAgICAgICAgdGhlIHdvcmsgZGlyZWN0bHksIHNvIGl0
IGNhbiBydW4gaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRN
ZW51Q2xpZW50OjpzcGVhayk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUNsaWVudDo6c3RvcFNwZWFraW5nKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoU3BvdGxpZ2h0KTogQWRkZWQgRklYTUUgY29tbWVudCBh
bmQKKyAgICAgICAgY2hhbmdlZCBjb2RlIHRvIGF2b2lkIGEgQy1zdHlsZSBjYXN0LgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OnNlbGVjdGlvbkFzU3RyaW5nKTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmg6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFuZ2VBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSk6IFVzZSBzZW5kU3luYyBpbiB0aGUKKyAgICAgICAgbW9kZXJu
IHdheSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgY2FsbGluZyBXZWJQcm9jZXNzLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcpOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNTcGVha2luZyk6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzcGVhayk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpzdG9wU3BlYWtpbmcpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOiBBZGRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkZWQgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5n
LgorCiAyMDEwLTEyLTIyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwCShyZXZpc2lvbiA3NDUwMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw4IEBAIGJvb2wgV2ViRnJh
bWVQcm94eTo6aXNEaXNwbGF5aW5nU3RhbmRhbG8KIAogYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rp
c3BsYXlpbmdNYXJrdXBEb2N1bWVudCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgY2hl
Y2sgc2hvdWxkIGJlIG1vdmVkIHRvIHNvbWV3aGVyZSBpbiBXZWJDb3JlLiAKKyAgICAvLyBGSVhN
RTogVGhpcyBjaGVjayBzaG91bGQgYmUgbW92ZWQgdG8gc29tZXdoZXJlIGluIFdlYkNvcmUuCisg
ICAgLy8gRklYTUU6IFRoaXMgcmV0dXJucyBmYWxzZSB3aGVuIGRpc3BsYXlpbmcgYSB3ZWIgYXJj
aGl2ZS4KICAgICByZXR1cm4gbV9NSU1FVHlwZSA9PSAidGV4dC9odG1sIiB8fCBtX01JTUVUeXBl
ID09ICJpbWFnZS9zdmcreG1sIiB8fCBET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZSht
X01JTUVUeXBlKTsKIH0KIApAQCAtMTI3LDcgKzEyOCw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG8KICAgICBtX3Byb3Zpc2lvbmFsVVJMID0gU3RyaW5nKCk7CiB9
CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ29tbWl0TG9hZChjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQordm9p
ZCBXZWJGcmFtZVByb3h5OjpkaWRDb21taXRMb2FkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCiB7CiAgICAg
QVNTRVJUKG1fbG9hZFN0YXRlID09IExvYWRTdGF0ZVByb3Zpc2lvbmFsKTsKICAgICBBU1NFUlQo
IW1fcHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKTsKQEAgLTEzNSw3ICsxMzYsNyBAQCB2b2lkIFdl
YkZyYW1lUHJveHk6OmRpZENvbW1pdExvYWQoY29uc3QgCiAgICAgbV91cmwgPSBtX3Byb3Zpc2lv
bmFsVVJMOwogICAgIG1fcHJvdmlzaW9uYWxVUkwgPSBTdHJpbmcoKTsKICAgICBtX3RpdGxlID0g
U3RyaW5nKCk7Ci0gICAgbV9NSU1FVHlwZSA9IG1pbWVUeXBlOworICAgIG1fTUlNRVR5cGUgPSBj
b250ZW50VHlwZTsKICAgICBtX2lzRnJhbWVTZXQgPSBmYWxzZTsKICAgICBtX2NlcnRpZmljYXRl
SW5mbyA9IFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKGNlcnRpZmljYXRlSW5mbyk7CiB9CkBA
IC0xOTMsNyArMTk0LDcgQEAgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KiBXZWJGcmFt
ZQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkq
PihtX2FjdGl2ZUxpc3RlbmVyLmdldCgpKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpnZXRX
ZWJBcmNoaXZlKFBhc3NSZWZQdHI8V2ViQXJjaGl2ZUNhbGxiYWNrPiBjYWxsYmFjaykKK3ZvaWQg
V2ViRnJhbWVQcm94eTo6Z2V0V2ViQXJjaGl2ZShQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4gY2Fs
bGJhY2spCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKICAgICAgICAgY2FsbGJhY2stPmludmFsaWRh
dGUoKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgJKHJldmlzaW9uIDc0NTAwKQor
KysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw3IEBAIGNsYXNzIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eTsKIGNsYXNz
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAotdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tEYXRhUmVmPiBXZWJBcmNoaXZlQ2FsbGJhY2s7Cit0eXBl
ZGVmIEdlbmVyaWNDYWxsYmFjazxXS0RhdGFSZWY+IERhdGFDYWxsYmFjazsKIAogY2xhc3MgV2Vi
RnJhbWVQcm94eSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgpAQCAtOTYsNyArOTYsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2VEb2N1bWVudCgp
IGNvbnN0OwogICAgIGJvb2wgaXNEaXNwbGF5aW5nTWFya3VwRG9jdW1lbnQoKSBjb25zdDsKIAot
ICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZShQYXNzUmVmUHRyPFdlYkFyY2hpdmVDYWxsYmFjaz4pOwor
ICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZShQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOwogCiAgICAg
dm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5n
JiB1cmwpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA3NDUw
MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0NSwxMSArMjQ1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAgIG1f
dG9vbFRpcCA9IFN0cmluZygpOwogCi0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fY29udGVu
dHNBc1N0cmluZ0NhbGxiYWNrcyk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fZnJhbWVT
b3VyY2VDYWxsYmFja3MpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3JlbmRlclRyZWVF
eHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tzKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tN
YXAobV9zY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrcyk7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNr
TWFwKG1fd2ViQXJjaGl2ZUNhbGxiYWNrcyk7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1f
ZGF0YUNhbGxiYWNrcyk7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fc3RyaW5nQ2FsbGJh
Y2tzKTsKIAogICAgIFZlY3RvcjxXZWJFZGl0Q29tbWFuZFByb3h5Kj4gZWRpdENvbW1hbmRWZWN0
b3I7CiAgICAgY29weVRvVmVjdG9yKG1fZWRpdENvbW1hbmRTZXQsIGVkaXRDb21tYW5kVmVjdG9y
KTsKQEAgLTc4NCw0MyArNzgxLDUxIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01h
dGNoZXMoY28KICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3Ry
aW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CiB9
CiAgICAgCi12b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBQYXNzUmVmUHRyPFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s+IHBy
cENhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShj
b25zdCBTdHJpbmcmIHNjcmlwdCwgUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4gcHJwQ2FsbGJh
Y2spCiB7Ci0gICAgUmVmUHRyPFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s+IGNhbGxiYWNrID0g
cHJwQ2FsbGJhY2s7CisgICAgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFjayA9IHBycENh
bGxiYWNrOwogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fc2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxi
YWNrLmdldCgpKTsKKyAgICBtX3N0cmluZ0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJh
Y2suZ2V0KCkpOwogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFBh
c3NSZWZQdHI8UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjaz4gcHJwQ2Fs
bGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb24oUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCiB7Ci0gICAgUmVm
UHRyPFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0g
cHJwQ2FsbGJhY2s7CisgICAgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBjYWxsYmFjayA9IHBycENh
bGxiYWNrOwogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwotICAgIG1fcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFja3Muc2V0KGNh
bGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBtX3N0cmluZ0NhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBQYXNzUmVmUHRyPEZyYW1lU291cmNlQ2FsbGJhY2s+IHBycENh
bGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBwcnBDYWxsYmFjaykKIHsKLSAg
ICBSZWZQdHI8RnJhbWVTb3VyY2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKKyAg
ICBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7CiAgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9mcmFtZVNv
dXJjZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOworICAgIG1fc3Ry
aW5nQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7CiAgICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJh
bWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0Q29udGVudHNBc1N0cmluZyhQYXNzUmVmUHRyPENvbnRlbnRzQXNTdHJpbmdDYWxsYmFjaz4g
cHJwQ2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhQYXNz
UmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBwcnBDYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8Q29udGVu
dHNBc1N0cmluZ0NhbGxiYWNrPiBjYWxsYmFjayA9IHBycENhbGxiYWNrOworICAgIFJlZlB0cjxT
dHJpbmdDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAgICBtX2NvbnRlbnRzQXNTdHJpbmdD
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBtX3N0cmluZ0Nh
bGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwogICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUsIFBhc3NSZWZQdHI8V2ViQXJjaGl2ZUNhbGxiYWNrPiBwcnBD
YWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJp
bmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCiB7Ci0gICAgUmVmUHRy
PFdlYkFyY2hpdmVDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKKyAgICBSZWZQdHI8
U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7CiAgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV93ZWJBcmNoaXZlQ2FsbGJh
Y2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7CisgICAgbV9zdHJpbmdDYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBwcm9jZXNzKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPiBwcnBD
YWxsYmFjaykKK3sKKyAgICBSZWZQdHI8RGF0YUNhbGxiYWNrPiBjYWxsYmFjayA9IHBycENhbGxi
YWNrOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwor
ICAgIG1fZGF0YUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwogICAg
IHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUo
ZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtMTcxMCw3
ICsxNzE1LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMKIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldENvbnRlbnRzQXNTdHJpbmcoY29uc3QgU3RyaW5nJiBy
ZXN1bHRTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgUmVmUHRyPENvbnRlbnRz
QXNTdHJpbmdDYWxsYmFjaz4gY2FsbGJhY2sgPSBtX2NvbnRlbnRzQXNTdHJpbmdDYWxsYmFja3Mu
dGFrZShjYWxsYmFja0lEKTsKKyAgICBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrID0g
bV9zdHJpbmdDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7
CisgICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShy
ZXN1bHRTdHJpbmcuaW1wbCgpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldFNlbGVj
dGlvbk9yQ29udGVudHNBc1N0cmluZyhjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywgdWludDY0
X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IGNhbGxiYWNrID0g
bV9zdHJpbmdDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0LgogICAgICAgICByZXR1cm47
CkBAIC0xNzIxLDcgKzE3MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0Q29udGVudHNB
c1N0cmluCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
Y29uc3QgU3RyaW5nJiByZXN1bHRTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAg
UmVmUHRyPFNjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2s+IGNhbGxiYWNrID0gbV9zY3JpcHRSZXR1
cm5WYWx1ZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAgIFJlZlB0cjxTdHJpbmdDYWxs
YmFjaz4gY2FsbGJhY2sgPSBtX3N0cmluZ0NhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOwogICAg
IGlmICghY2FsbGJhY2spIHsKICAgICAgICAgLy8gRklYTUU6IExvZyBlcnJvciBvciBhc3NlcnQu
CiAgICAgICAgIHJldHVybjsKQEAgLTE3MzIsNyArMTc0OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSdW5KYXZhU2NyaXB0SW5NYWkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcmVzdWx0U3RyaW5nLCB1
aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxSZW5kZXJUcmVlRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IG1fcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25DYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBSZWZQdHI8U3RyaW5nQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gbV9zdHJpbmdDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKICAg
ICBpZiAoIWNhbGxiYWNrKSB7CiAgICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0
LgogICAgICAgICByZXR1cm47CkBAIC0xNzQzLDcgKzE3NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkR2V0UmVuZGVyVHJlZUV4dGVyCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRTb3Vy
Y2VGb3JGcmFtZShjb25zdCBTdHJpbmcmIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKLSAgICBSZWZQdHI8RnJhbWVTb3VyY2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBtX2ZyYW1l
U291cmNlQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CisgICAgUmVmUHRyPFN0cmluZ0NhbGxi
YWNrPiBjYWxsYmFjayA9IG1fc3RyaW5nQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CiAgICAg
aWYgKCFjYWxsYmFjaykgewogICAgICAgICAvLyBGSVhNRTogTG9nIGVycm9yIG9yIGFzc2VydC4K
ICAgICAgICAgcmV0dXJuOwpAQCAtMTc1NCw3ICsxNzcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEdldFNvdXJjZUZvckZyYW1lKAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkR2V0V2ViQXJj
aGl2ZU9mRnJhbWUoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBSZWZQdHI8V2ViQXJjaGl2ZUNhbGxiYWNrPiBj
YWxsYmFjayA9IG1fd2ViQXJjaGl2ZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAgIFJl
ZlB0cjxEYXRhQ2FsbGJhY2s+IGNhbGxiYWNrID0gbV9kYXRhQ2FsbGJhY2tzLnRha2UoY2FsbGJh
Y2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewogICAgICAgICAvLyBGSVhNRTogTG9nIGVycm9y
IG9yIGFzc2VydC4KICAgICAgICAgcmV0dXJuOwpAQCAtMTgxOSwxMSArMTgzNSw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2goKQogCiAgICAgbV90b29sVGlwID0gU3RyaW5n
KCk7CiAKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9jb250ZW50c0FzU3RyaW5nQ2FsbGJh
Y2tzKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9mcmFtZVNvdXJjZUNhbGxiYWNrcyk7
Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb25DYWxsYmFja3MpOwotICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3NjcmlwdFJldHVy
blZhbHVlQ2FsbGJhY2tzKTsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV93ZWJBcmNoaXZl
Q2FsbGJhY2tzKTsKKyAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9kYXRhQ2FsbGJhY2tzKTsK
KyAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9zdHJpbmdDYWxsYmFja3MpOwogCiAgICAgVmVj
dG9yPFdlYkVkaXRDb21tYW5kUHJveHkqPiBlZGl0Q29tbWFuZFZlY3RvcjsKICAgICBjb3B5VG9W
ZWN0b3IobV9lZGl0Q29tbWFuZFNldCwgZWRpdENvbW1hbmRWZWN0b3IpOwpJbmRleDogV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDc0NDk0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDEwICs5Niw3IEBAIHN0cnVjdCBQ
bGF0Zm9ybVBvcHVwTWVudURhdGE7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsK
IHN0cnVjdCBXZWJQb3B1cEl0ZW07CiAKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLU3RyaW5n
UmVmLCBTdHJpbmdJbXBsKj4gRnJhbWVTb3VyY2VDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPFdLU3RyaW5nUmVmLCBTdHJpbmdJbXBsKj4gUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVz
ZW50YXRpb25DYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLU3RyaW5nUmVmLCBT
dHJpbmdJbXBsKj4gU2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPFdLU3RyaW5nUmVmLCBTdHJpbmdJbXBsKj4gQ29udGVudHNBc1N0cmluZ0NhbGxiYWNr
OwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tTdHJpbmdSZWYsIFN0cmluZ0ltcGwqPiBTdHJp
bmdDYWxsYmFjazsKIAogY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHVi
bGljIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQgewogcHVibGljOgpAQCAtMjQwLDExICsyMzcs
MTIgQEAgcHVibGljOgogICAgIHZvaWQgaGlkZUZpbmRVSSgpOwogICAgIHZvaWQgY291bnRTdHJp
bmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KTsKIAotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYs
IFBhc3NSZWZQdHI8U2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjaz4pOwotICAgIHZvaWQgZ2V0UmVu
ZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oUGFzc1JlZlB0cjxSZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrPik7Ci0gICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShX
ZWJGcmFtZVByb3h5KiwgUGFzc1JlZlB0cjxGcmFtZVNvdXJjZUNhbGxiYWNrPik7Ci0gICAgdm9p
ZCBnZXRDb250ZW50c0FzU3RyaW5nKFBhc3NSZWZQdHI8Q29udGVudHNBc1N0cmluZ0NhbGxiYWNr
Pik7Ci0gICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgUGFzc1Jl
ZlB0cjxXZWJBcmNoaXZlQ2FsbGJhY2s+KTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPik7CisgICAgdm9p
ZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihQYXNzUmVmUHRyPFN0cmluZ0Nh
bGxiYWNrPik7CisgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgUGFz
c1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0Q29udGVudHNBc1N0cmluZyhQ
YXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPik7CisgICAgdm9pZCBnZXRTZWxlY3Rpb25PckNvbnRl
bnRzQXNTdHJpbmcoUGFzc1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4pOworICAgIHZvaWQgZ2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPik7
CiAKICAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9u
LCBXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAKQEAgLTM5NSw4ICszOTMs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8odWludDY0
X3QgY29tbWFuZElELCB1aW50MzJfdCBlZGl0QWN0aW9uKTsKICAgICB2b2lkIGNsZWFyQWxsRWRp
dENvbW1hbmRzKCk7CiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gS2V5Ym9hcmQgaGFuZGxp
bmcKKyNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbnRlcnByZXRLZXlFdmVudCh1aW50MzJf
dCBldmVudFR5cGUsIFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+JiwgdWludDMyX3Qg
c2VsZWN0aW9uU3RhcnQsIHVpbnQzMl90IHNlbGVjdGlvbkVuZCwgVmVjdG9yPFdlYkNvcmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcyk7CiAjZW5kaWYKICAgICAKQEAgLTQxMyw2
ICs0MTEsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBDb250ZXh0IE1lbnUuCiAgICAgdm9pZCBzaG93
Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4mLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAorICAgIC8v
IFNwZWVjaC4KKyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBnZXRJc1NwZWFraW5nKGJvb2wm
KTsKKyAgICB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3RvcFNwZWFraW5n
KCk7CisjZW5kaWYKKwogICAgIHZvaWQgdGFrZUZvY3VzKGJvb2wgZGlyZWN0aW9uKTsKICAgICB2
b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3Qg
V2ViQ29yZTo6Q3Vyc29yJik7CkBAIC00MjEsMTAgKzQyNiwxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCk7CiAK
ICAgICB2b2lkIGRpZEdldENvbnRlbnRzQXNTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWludDY0X3Qp
OwotICAgIHZvaWQgZGlkUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KTsKICAgICB2b2lkIGRpZEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KTsKKyAgICB2b2lkIGRpZEdldFNlbGVjdGlvbk9yQ29u
dGVudHNBc1N0cmluZyhjb25zdCBTdHJpbmcmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBkaWRHZXRT
b3VyY2VGb3JGcmFtZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBkaWRHZXRX
ZWJBcmNoaXZlT2ZGcmFtZShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0X3Qp
OworICAgIHZvaWQgZGlkUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KTsKIAogICAgIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdlZCh1aW50NjRfdCBmcmFtZUlE
KTsKIApAQCAtNDY3LDExICs0NzMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJJbnNwZWN0
b3JQcm94eT4gbV9pbnNwZWN0b3I7CiAjZW5kaWYKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxDb250ZW50c0FzU3RyaW5nQ2FsbGJhY2s+ID4gbV9jb250ZW50c0FzU3RyaW5nQ2FsbGJh
Y2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxGcmFtZVNvdXJjZUNhbGxiYWNrPiA+
IG1fZnJhbWVTb3VyY2VDYWxsYmFja3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFJl
bmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2s+ID4gbV9yZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8U2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjaz4gPiBtX3NjcmlwdFJldHVyblZhbHVlQ2FsbGJh
Y2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJBcmNoaXZlQ2FsbGJhY2s+ID4g
bV93ZWJBcmNoaXZlQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEYXRh
Q2FsbGJhY2s+ID4gbV9kYXRhQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxTdHJpbmdDYWxsYmFjaz4gPiBtX3N0cmluZ0NhbGxiYWNrczsKIAogICAgIEhhc2hTZXQ8V2Vi
RWRpdENvbW1hbmRQcm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDc0NDk0KQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksMTMgKzEwOSwxNCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBD
YWxsYmFjayBtZXNzYWdlcy4KICAgICBEaWRHZXRDb250ZW50c0FzU3RyaW5nKFdURjo6U3RyaW5n
IHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBEaWRHZXRTZWxlY3Rpb25P
ckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpTdHJpbmcgcmVzdWx0U3RyaW5nLCB1aW50NjRfdCBjYWxs
YmFja0lEKQogICAgIERpZEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6
U3RyaW5nIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBEaWRHZXRTb3Vy
Y2VGb3JGcmFtZShXVEY6OlN0cmluZyByZXN1bHRTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAgICAgRGlkR2V0V2ViQXJjaGl2ZU9mRnJhbWUoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBhcmNo
aXZlRGF0YSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBEaWRSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoV1RGOjpTdHJpbmcgcmVzdWx0U3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQogCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgICMgS2V5Ym9hcmQgc3VwcG9ydAorICAgICMgS2V5Ym9hcmQg
c3VwcG9ydCBtZXNzYWdlcy4KICAgICBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAt
PiAoVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUsIHVpbnQzMl90
IHNlbGVjdGlvblN0YXJ0LCB1aW50MzJfdCBzZWxlY3Rpb25FbmQsIFZlY3RvcjxXZWJDb3JlOjpD
b21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcykKICNlbmRpZgogICAgIApAQCAtMTQyLDMz
ICsxNDMsNDAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDaGFuZ2VDb21w
b3NpdGlvblNlbGVjdGlvbihib29sIGhhc0NoYW5nZWQpCiAjZW5kaWYKIAotICAgICMgRmluZC4K
KyAgICAjIEZpbmQgbWVzc2FnZXMuCiAgICAgRGlkQ291bnRTdHJpbmdNYXRjaGVzKFdURjo6U3Ry
aW5nIHN0cmluZywgdWludDMyX3QgbWF0Y2hDb3VudCkKICAgICBTZXRGaW5kSW5kaWNhdG9yKFdl
YkNvcmU6OkZsb2F0UmVjdCBzZWxlY3Rpb25SZWN0LCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0
PiB0ZXh0UmVjdHMsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgY29udGVudEltYWdlSGFu
ZGxlLCBib29sIGZhZGVPdXQpCiAgICAgRGlkRmluZFN0cmluZyhXVEY6OlN0cmluZyBzdHJpbmcs
IHVpbnQzMl90IG1hdGNoQ291bnQpCiAgICAgRGlkRmFpbFRvRmluZFN0cmluZyhXVEY6OlN0cmlu
ZyBzdHJpbmcpCiAKLSAgICAjIFBvcHVwTWVudS4KKyAgICAjIFBvcHVwTWVudSBtZXNzYWdlcy4K
ICAgICBTaG93UG9wdXBNZW51KFdlYkNvcmU6OkludFJlY3QgcmVjdCwgVmVjdG9yPFdlYktpdDo6
V2ViUG9wdXBJdGVtPiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBXZWJLaXQ6OlBsYXRm
b3JtUG9wdXBNZW51RGF0YSBkYXRhKQogICAgIEhpZGVQb3B1cE1lbnUoKQogICAgIAotICAgICMg
Q29udGV4dE1lbnUKKyAgICAjIENvbnRleHRNZW51IG1lc3NhZ2VzLgogICAgIFNob3dDb250ZXh0
TWVudShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4gaXRlbXMsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29k
ZXIgdXNlckRhdGEpCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgIyBB
Y2NlbGVyYXRlZCBjb21wc2l0aW5nIG1lc3NhZ2VzLgorICAgICMgQWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgbWVzc2FnZXMuCiAgICAgRGlkQ2hhbmdlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29s
IGNvbXBvc2l0aW5nKSAtPiAoV2ViS2l0OjpEcmF3aW5nQXJlYUluZm8gbmV3RHJhd2luZ0FyZWEp
CiAjZW5kaWYKIAotICAgICMgQXV0aGVudGljYXRpb24KKyAgICAjIEF1dGhlbnRpY2F0aW9uIG1l
c3NhZ2VzLgogICAgIENhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3Bh
Y2UpIC0+IChib29sIGNhbkF1dGhlbnRpY2F0ZSkKICAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgY2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKIAotICAgICMgRGF0YWJhc2Vz
CisgICAgIyBEYXRhYmFzZSBtZXNzYWdlcy4KICAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGEodWlu
dDY0X3QgZnJhbWVJRCwgV1RGOjpTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgV1RGOjpTdHJpbmcg
ZGF0YWJhc2VOYW1lLCBXVEY6OlN0cmluZyBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBj
dXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2Fn
ZSkgLT4gKHVpbnQ2NF90IG5ld1F1b3RhKQogCi0gICAgIyBDb21wbGV4IHRleHQgaW5wdXQgc3Vw
cG9ydCBmb3IgcGx1Zy1pbnMuCisgICAgIyBQbHVnLWluIGNvbXBsZXggdGV4dCBpbnB1dCBzdXBw
b3J0IG1lc3NhZ2VzLgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBTZXRDb21wbGV4VGV4dElucHV0
RW5hYmxlZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBj
b21wbGV4VGV4dElucHV0RW5hYmxlZCkKICNlbmRpZgorCisgICAgIyBTcGVlY2ggbWVzc2FnZXMu
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEdldElzU3BlYWtpbmcoKSAtPiAoYm9vbCBpc1NwZWFr
aW5nKQorICAgIFNwZWFrKFdURjo6U3RyaW5nIHN0cmluZykKKyAgICBTdG9wU3BlYWtpbmcoKQor
I2VuZGlmCiB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAkocmV2aXNpb24g
NzQ0OTQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIGJvb2wgV0tGcmFtZUlzRnJhbWVTZXQoV0tGcmFtZVJl
ZiBmcmFtZVIKIAogdm9pZCBXS0ZyYW1lR2V0V2ViQXJjaGl2ZShXS0ZyYW1lUmVmIGZyYW1lUmVm
LCBXS0ZyYW1lR2V0V2ViQXJjaGl2ZUZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQog
ewotICAgIHRvSW1wbChmcmFtZVJlZiktPmdldFdlYkFyY2hpdmUoV2ViQXJjaGl2ZUNhbGxiYWNr
OjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwoZnJhbWVSZWYpLT5nZXRX
ZWJBcmNoaXZlKERhdGFDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAK
ICNpZmRlZiBfX0JMT0NLU19fCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJl
dmlzaW9uIDc0NDg3KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50
KFdLUGFnZVJlZiBwYWcKIAogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQ
YWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRvSW1wbChwYWdlUmVm
KS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwg
U2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7Cisg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUodG9JbXBsKHNjcmlw
dFJlZiktPnN0cmluZygpLCBTdHJpbmdDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNr
KSk7CiB9CiAKICNpZmRlZiBfX0JMT0NLU19fCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBXS1Bh
Z2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVfYihXSwogCiB2b2lkIFdLUGFnZVJlbmRlclRyZWVF
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBX
S1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZ1bmN0aW9uIGNhbGxiYWNrKQog
ewotICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24oUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25DYWxsYmFjazo6Y3JlYXRlKGNvbnRl
eHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRSZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihTdHJpbmdDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNr
KSk7CiB9CiAKICNpZmRlZiBfX0JMT0NLU19fCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBXS1Bh
Z2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdAogCiB2b2lkIFdLUGFnZUdldFNvdXJjZUZv
ckZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCB2b2lkKiBjb250
ZXh0LCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZUZ1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRv
SW1wbChwYWdlUmVmKS0+Z2V0U291cmNlRm9yRnJhbWUodG9JbXBsKGZyYW1lUmVmKSwgRnJhbWVT
b3VyY2VDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBh
Z2VSZWYpLT5nZXRTb3VyY2VGb3JGcmFtZSh0b0ltcGwoZnJhbWVSZWYpLCBTdHJpbmdDYWxsYmFj
azo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKICNpZmRlZiBfX0JMT0NLU19fCkBA
IC0zODMsNyArMzgzLDcgQEAgdm9pZCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZV9iKFdLUGFnZVJl
ZgogCiB2b2lkIFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIHZv
aWQqIGNvbnRleHQsIFdLUGFnZUdldENvbnRlbnRzQXNTdHJpbmdGdW5jdGlvbiBjYWxsYmFjaykK
IHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmdldENvbnRlbnRzQXNTdHJpbmcoQ29udGVudHNBc1N0
cmluZ0NhbGxiYWNrOjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFn
ZVJlZiktPmdldENvbnRlbnRzQXNTdHJpbmcoU3RyaW5nQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0
LCBjYWxsYmFjaykpOwogfQogCiAjaWZkZWYgX19CTE9DS1NfXwpJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDc0NDg3KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDEwICsyNSw2IEBACiAKICNp
bXBvcnQgIldLVmlldy5oIgogCi0vLyBDIEFQSQotI2ltcG9ydCAiV0tBUElDYXN0LmgiCi0KLS8v
IEltcGxlbWVudGF0aW9uCiAjaW1wb3J0ICJDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5o
IgogI2ltcG9ydCAiRmluZEluZGljYXRvci5oIgogI2ltcG9ydCAiRmluZEluZGljYXRvcldpbmRv
dy5oIgpAQCAtMzksNiArMzUsOCBAQAogI2ltcG9ydCAiUGFnZUNsaWVudEltcGwuaCIKICNpbXBv
cnQgIlJ1bkxvb3AuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCisjaW1wb3J0ICJXS0FQSUNh
c3QuaCIKKyNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVGV4dElucHV0V2luZG93
Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViQ29udGV4dC5oIgogI2ltcG9ydCAiV2ViRXZlbnRG
YWN0b3J5LmgiCkBAIC01NiwyMiArNTQsMzEgQEAKICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAorQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChEZXRh
aWxzKQorLSAodm9pZClzcGVha1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7CitAZW5kCisKK0Bp
bnRlcmZhY2UgTlNXaW5kb3cgKERldGFpbHMpCistIChOU1JlY3QpX2dyb3dCb3hSZWN0OworLSAo
Qk9PTClfdXBkYXRlR3Jvd0JveEZvcldpbmRvd0ZyYW1lQ2hhbmdlOworQGVuZAorCiBleHRlcm4g
IkMiIHsKLSAgICAKICAgICAvLyBOZWVkIHRvIGRlY2xhcmUgdGhpcyBhdHRyaWJ1dGUgbmFtZSBi
ZWNhdXNlIEFwcEtpdCBleHBvcnRzIGl0IGJ1dCBkb2VzIG5vdCBtYWtlIGl0IGF2YWlsYWJsZSBp
biBBUEkgb3IgU1BJIGhlYWRlcnMuCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzg2MzE0Njg+IHRy
YWNrcyB0aGUgcmVxdWVzdCB0byBtYWtlIGl0IGF2YWlsYWJsZS4gVGhpcyBjb2RlIHNob3VsZCBi
ZSByZW1vdmVkIHdoZW4gdGhlIGJ1ZyBpcyBjbG9zZWQuCi0gICAgCiAgICAgZXh0ZXJuIE5TU3Ry
aW5nICpOU1RleHRJbnB1dFJlcGxhY2VtZW50UmFuZ2VBdHRyaWJ1dGVOYW1lOwotICAgIAogfQog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLUBp
bnRlcmZhY2UgTlNXaW5kb3cgKERldGFpbHMpCi0tIChOU1JlY3QpX2dyb3dCb3hSZWN0OwotLSAo
Qk9PTClfdXBkYXRlR3Jvd0JveEZvcldpbmRvd0ZyYW1lQ2hhbmdlOwotQGVuZAorbmFtZXNwYWNl
IFdlYktpdCB7CisKK3R5cGVkZWYgaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+IFZh
bGlkYXRpb25JdGVtOwordHlwZWRlZiBWZWN0b3I8UmV0YWluUHRyPFZhbGlkYXRpb25JdGVtPiA+
IFZhbGlkYXRpb25WZWN0b3I7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWYWxpZGF0aW9uVmVj
dG9yPiBWYWxpZGF0aW9uTWFwOworCit9CiAKIEBpbnRlcmZhY2UgV0tWaWV3RGF0YSA6IE5TT2Jq
ZWN0IHsKIEBwdWJsaWMKQEAgLTg2LDggKzkzLDkgQEAgQGludGVyZmFjZSBXS1ZpZXdEYXRhIDog
TlNPYmplY3QgewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBOU1ZpZXcg
Kl9sYXllckhvc3RpbmdWaWV3OwogI2VuZGlmCi0gICAgLy8gRm9yIE1lbnVzLgotICAgIEhhc2hN
YXA8U3RyaW5nLCBSZXRhaW5QdHI8TlNNZW51SXRlbT4gPiBfbWVudUl0ZW1zTWFwOworCisgICAg
Ly8gRm9yIGFzeW5jaHJvbm91cyB2YWxpZGF0aW9uLgorICAgIFZhbGlkYXRpb25NYXAgX3ZhbGlk
YXRpb25NYXA7CiAKICAgICBPd25QdHI8UERGVmlld0NvbnRyb2xsZXI+IF9wZGZWaWV3Q29udHJv
bGxlcjsKIApAQCAtMjk0LDcgKzMwMiw2IEBAIHN0YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVGb3JT
ZWxlY3RvcihTRUwKIH0KIAogLy8gRWRpdGluZyBjb21tYW5kcwotLy8gRklYTUU6IHdlIHNob3Vs
ZCBhZGQgYWxsIHRoZSBjb21tYW5kcyBoZXJlIGFzIHdlIGltcGxlbWVudCB0aGVtLgogCiAjZGVm
aW5lIFdFQkNPUkVfQ09NTUFORChjb21tYW5kKSAtICh2b2lkKWNvbW1hbmQ6KGlkKXNlbmRlciB7
IF9kYXRhLT5fcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lRm9yU2VsZWN0b3Io
X2NtZCkpOyB9CiAKQEAgLTMxMCw0MSArMzE3LDg4IEBAIFdFQkNPUkVfQ09NTUFORCh0YWtlRmlu
ZFN0cmluZ0Zyb21TZWxlY3QKIAogLy8gTWVudSBpdGVtcyB2YWxpZGF0aW9uCiAKLS0gKEJPT0wp
dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0
ZW0+KWl0ZW0KK3N0YXRpYyBOU01lbnVJdGVtICptZW51SXRlbShpZCA8TlNWYWxpZGF0ZWRVc2Vy
SW50ZXJmYWNlSXRlbT4gaXRlbSkKK3sKKyAgICBpZiAoIVsoTlNPYmplY3QgKilpdGVtIGlzS2lu
ZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBy
ZXR1cm4gKE5TTWVudUl0ZW0gKilpdGVtOworfQorCitzdGF0aWMgTlNUb29sYmFySXRlbSAqdG9v
bGJhckl0ZW0oaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+IGl0ZW0pCiB7Ci0gICAg
TlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07Ci0gICAgaWYgKCFbbWVu
dUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKQotICAgICAgICByZXR1cm4g
Tk87IC8vIEZJWE1FOiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gaGFuZGxlIG90aGVyIHVzZXIgaW50
ZXJmYWNlIGVsZW1lbnRzLgorICAgIGlmICghWyhOU09iamVjdCAqKWl0ZW0gaXNLaW5kT2ZDbGFz
czpbTlNUb29sYmFySXRlbSBjbGFzc11dKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVy
biAoTlNUb29sYmFySXRlbSAqKWl0ZW07Cit9CiAKKy0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJm
YWNlSXRlbTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWl0ZW0KK3sKICAgICBT
RUwgYWN0aW9uID0gW2l0ZW0gYWN0aW9uXTsKIAotICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9y
KHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nOikpIHsKLSAgICAgICAgYm9vbCBjaGVja01h
cmsgPSBmYWxzZTsKLSAgICAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IGZhbHNlOwotICAgICAgICBp
ZiAoVGV4dENoZWNrZXI6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdBbGxvd2VkKCkpCi0gICAg
ICAgICAgICBjaGVja01hcmsgPSBUZXh0Q2hlY2tlcjo6aXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKTsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSB0cnVlOworICAgIC8vIEZJWE1FOiBU
aGlzIGlzIG9ubHkgbmVlZGVkIHRvIHdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgd2UgZG9uJ3Qg
cmV0dXJuIFlFUyBmb3IKKyAgICAvLyBzZWxlY3RvcnMgdGhhdCBhcmUgbm90IGVkaXRpbmcgY29t
bWFuZHMgKHNlZSBiZWxvdykuIElmIHRoYXQncyBmaXhlZCwgdGhpcyBjYW4gYmUgcmVtb3ZlZC4K
KyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzdGFydFNwZWFraW5nOikpCisgICAgICAgIHJl
dHVybiBZRVM7CisKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzdG9wU3BlYWtpbmc6KSkK
KyAgICAgICAgcmV0dXJuIFtOU0FwcCBpc1NwZWFraW5nXTsKIAotICAgICAgICBbbWVudUl0ZW0g
c2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07Ci0gICAgICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVDb250
aW51b3VzU3BlbGxDaGVja2luZzopKSB7CisgICAgICAgIGJvb2wgZW5hYmxlZCA9IFRleHRDaGVj
a2VyOjppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nQWxsb3dlZCgpOworICAgICAgICBib29sIGNo
ZWNrZWQgPSBlbmFibGVkICYmIFRleHRDaGVja2VyOjppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZCgpOworICAgICAgICBbbWVudUl0ZW0oaXRlbSkgc2V0U3RhdGU6Y2hlY2tlZCA/IE5T
T25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICByZXR1cm4gWUVTOwogICAgIH0KIAogICAg
IGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUdyYW1tYXJDaGVja2luZzopKSB7Ci0gICAg
ICAgIGJvb2wgY2hlY2tNYXJrID0gVGV4dENoZWNrZXI6OmlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpOwotICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNPblN0YXRlIDog
TlNPZmZTdGF0ZV07CisgICAgICAgIGJvb2wgY2hlY2tlZCA9IFRleHRDaGVja2VyOjppc0dyYW1t
YXJDaGVja2luZ0VuYWJsZWQoKTsKKyAgICAgICAgW21lbnVJdGVtKGl0ZW0pIHNldFN0YXRlOmNo
ZWNrZWQgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICAgICAgcmV0dXJuIFlFUzsKICAg
ICB9Ci0gICAgCisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJldHVybiBZRVMgaGVyZSBmb3Ig
c2VsZWN0b3JzIHRoYXQgYXJlIG5vdCBlZGl0aW5nIGNvbW1hbmRzLgorICAgIC8vIEJ1dCBhdCB0
aGUgbW9tZW50IHRoZXJlIGlzIG5vIHdheSB0byBmaW5kIG91dCBpZiBhIHNlbGVjdG9yIGlzIGFu
IGVkaXRpbmcgY29tbWFuZCBvciBub3QKKyAgICAvLyBpbiB0aGUgVUkgcHJvY2Vzcy4gU28gZm9y
IG5vdyB3ZSBhc3N1bWUgYW55IHNlbGVjdG9ycyBub3QgaGFuZGxlZCBhYm92ZSBhcmUgZWRpdGlu
ZyBjb21tYW5kcy4KKwogICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGNvbW1hbmROYW1lRm9yU2Vs
ZWN0b3IoW2l0ZW0gYWN0aW9uXSk7CiAKLSAgICBpZiAoX2RhdGEtPl9tZW51SXRlbXNNYXAuZmlu
ZChjb21tYW5kTmFtZSkgPT0gX2RhdGEtPl9tZW51SXRlbXNNYXAuZW5kKCkpIHsKLSAgICAgICAg
X2RhdGEtPl9tZW51SXRlbXNNYXAuYWRkKGNvbW1hbmROYW1lLCBtZW51SXRlbSk7CisgICAgLy8g
QWRkIHRoaXMgbWVudSBpdGVtIHRvIHRoZSB2ZWN0b3Igb2YgaXRlbXMgZm9yIGEgZ2l2ZW4gY29t
bWFuZCB0aGF0IGFyZSBhd2FpdGluZyB2YWxpZGF0aW9uLgorICAgIC8vIElmIHRoZSBpdGVtIGlz
IHRoZSBmaXJzdCB0byBiZSBhZGRlZCwgdGhlbiBjYWxsIHZhbGlkYXRlTWVudUl0ZW0gdG8gc3Rh
cnQgdGhlIGFzeW5jaHJvbm91cworICAgIC8vIHZhbGlkYXRpb24gcHJvY2Vzcy4KKyAgICBwYWly
PFZhbGlkYXRpb25NYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBfZGF0YS0+X3ZhbGlk
YXRpb25NYXAuYWRkKGNvbW1hbmROYW1lLCBWYWxpZGF0aW9uVmVjdG9yKCkpOworICAgIGFkZFJl
c3VsdC5maXJzdC0+c2Vjb25kLmFwcGVuZChpdGVtKTsKKyAgICBpZiAoYWRkUmVzdWx0LnNlY29u
ZCkgeworICAgICAgICAvLyBGSVhNRTogVGhlIGZ1bmN0aW9uIHNob3VsZCBiZSByZW5hbWVkIHZh
bGlkYXRlQ29tbWFuZCBiZWNhdXNlIGl0IGlzIG5vdCBzcGVjaWZpYyB0byBtZW51IGl0ZW1zLgog
ICAgICAgICBfZGF0YS0+X3BhZ2UtPnZhbGlkYXRlTWVudUl0ZW0oY29tbWFuZE5hbWUpOwogICAg
IH0KIAorICAgIC8vIFRyZWF0IGFzIGVuYWJsZWQgdW50aWwgd2UgZ2V0IHRoZSByZXN1bHQgYmFj
ayBmcm9tIHRoZSB3ZWIgcHJvY2VzcyBhbmQgX3NldFVzZXJJbnRlcmZhY2VJdGVtU3RhdGUgaXMg
Y2FsbGVkLgorICAgIC8vIEZJWE1FOiBUaGlzIG1lYW5zIHRoYXQgaXRlbXMgd2lsbCBmbGFzaCBl
bmFibGVkIGF0IGZpcnN0LCBhbmQgb25seSB0aGVuIGRpc2FibGUgYSBtb21lbnQgbGF0ZXIsIHdo
aWNoIGlzIHVuYXR0cmFjdGl2ZS4KKyAgICAvLyBCdXQgcmV0dXJuaW5nIE5PIGhlcmUgaXMgd29y
c2UsIGJlY2F1c2UgdGhhdCBtYWtlcyBrZXlib2FyZCBjb21tYW5kcyBzdWNoIGFzIGNvbW1hbmQt
QyBmYWlsLgogICAgIHJldHVybiBZRVM7CiB9CiAKK3N0YXRpYyB2b2lkIHNwZWFrU3RyaW5nKFdL
U3RyaW5nUmVmIHN0cmluZywgV0tFcnJvclJlZiBlcnJvciwgdm9pZCopCit7CisgICAgaWYgKGVy
cm9yKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFzdHJpbmcpCisgICAgICAgIHJldHVybjsK
KworICAgIE5TU3RyaW5nICpjb252ZXJ0ZWRTdHJpbmcgPSB0b0ltcGwoc3RyaW5nKS0+c3RyaW5n
KCk7CisgICAgW05TQXBwIHNwZWFrU3RyaW5nOmNvbnZlcnRlZFN0cmluZ107Cit9CisKKy0gKElC
QWN0aW9uKXN0YXJ0U3BlYWtpbmc6KGlkKXNlbmRlcgoreworICAgIF9kYXRhLT5fcGFnZS0+Z2V0
U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFN0cmluZ0NhbGxiYWNrOjpjcmVhdGUoMCwgc3Bl
YWtTdHJpbmcpKTsKK30KKworLSAoSUJBY3Rpb24pc3RvcFNwZWFraW5nOihpZClzZW5kZXIKK3sK
KyAgICBbTlNBcHAgc3RvcFNwZWFraW5nOnNlbmRlcl07Cit9CisKIC0gKElCQWN0aW9uKXRvZ2ds
ZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nOihpZClzZW5kZXIKIHsKICAgICBib29sIHNwZWxsQ2hl
Y2tpbmdFbmFibGVkID0gIVRleHRDaGVja2VyOjppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZCgpOwpAQCAtMzU0LDcgKzQwOCw3IEBAIC0gKElCQWN0aW9uKXRvZ2dsZUNvbnRpbnVvdXNT
cGVsbENoZWNraW4KICAgICAgICAgX2RhdGEtPl9wYWdlLT51bm1hcmtBbGxNaXNzcGVsbGluZ3Mo
KTsKIH0KIAotLSAodm9pZCl0b2dnbGVHcmFtbWFyQ2hlY2tpbmc6KGlkKXNlbmRlcgorLSAoSUJB
Y3Rpb24pdG9nZ2xlR3JhbW1hckNoZWNraW5nOihpZClzZW5kZXIKIHsKICAgICBib29sIGdyYW1t
YXJDaGVja2luZ0VuYWJsZWQgPSAhVGV4dENoZWNrZXI6OmlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpOwogICAgIFRleHRDaGVja2VyOjpzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKGdyYW1tYXJD
aGVja2luZ0VuYWJsZWQpOwpAQCAtMzcyLDcgKzQyNiw2IEBAIC0gKEJPT0wpX3dhbnRzS2V5RG93
bkZvckV2ZW50OihOU0V2ZW50ICoKICAgICByZXR1cm4gWUVTOwogfQogCi0KICNkZWZpbmUgRVZF
TlRfSEFORExFUihTZWxlY3RvciwgVHlwZSkgXAogICAgIC0gKHZvaWQpU2VsZWN0b3I6KE5TRXZl
bnQgKil0aGVFdmVudCBcCiAgICAgeyBcCkBAIC05MjYsOSArOTc5LDE2IEBAIC0gKHZvaWQpX3Nl
dEN1cnNvcjooTlNDdXJzb3IgKiljdXJzb3IKIAogLSAodm9pZClfc2V0VXNlckludGVyZmFjZUl0
ZW1TdGF0ZTooTlNTdHJpbmcgKiljb21tYW5kTmFtZSBlbmFibGVkOihCT09MKWlzRW5hYmxlZCBz
dGF0ZTooaW50KW5ld1N0YXRlCiB7Ci0gICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSBfZGF0YS0+
X21lbnVJdGVtc01hcC50YWtlKGNvbW1hbmROYW1lKS5nZXQoKTsKLSAgICBbbWVudUl0ZW0gc2V0
U3RhdGU6bmV3U3RhdGVdOwotICAgIFttZW51SXRlbSBzZXRFbmFibGVkOmlzRW5hYmxlZF07Cisg
ICAgVmFsaWRhdGlvblZlY3RvciBpdGVtcyA9IF9kYXRhLT5fdmFsaWRhdGlvbk1hcC50YWtlKGNv
bW1hbmROYW1lKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGl0ZW1zLnNpemUoKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBWYWxpZGF0aW9uSXRlbSBpdGVt
ID0gaXRlbXNbaV0uZ2V0KCk7CisgICAgICAgIFttZW51SXRlbShpdGVtKSBzZXRTdGF0ZTpuZXdT
dGF0ZV07CisgICAgICAgIFttZW51SXRlbShpdGVtKSBzZXRFbmFibGVkOmlzRW5hYmxlZF07Cisg
ICAgICAgIFt0b29sYmFySXRlbShpdGVtKSBzZXRFbmFibGVkOmlzRW5hYmxlZF07CisgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgdXNlciBpbnRlcmZhY2UgaXRlbSBpcyBuZWl0aGVyIGEgbWVudSBp
dGVtIG5vciBhIHRvb2xiYXIsIGl0IHdpbGwgYmUgbGVmdCBlbmFibGVkLgorICAgICAgICAvLyBJ
dCdzIG5vdCBvYnZpb3VzIGhvdyB0byBmaXggdGhpcy4KKyAgICB9CiB9CiAKIC0gKE5TUmVjdClf
Y29udmVydFRvRGV2aWNlU3BhY2U6KE5TUmVjdClyZWN0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHJldmlzaW9uIDc0NDg3KQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAorQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChEZXRhaWxz
KQorLSAodm9pZClzcGVha1N0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7CitAZW5kCisKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkwLDQgKzk0LDIw
IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGMKICAgICByZXR1cm4g
bWFrZVN0cmluZygiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgIiBQUk9DRVNTT1IgIiBNYWMg
T1MgWCAiLCBvc1ZlcnNpb24sICI7ICIsIGxhbmd1YWdlLCAiKSBBcHBsZVdlYktpdC8iLCB3ZWJL
aXRWZXJzaW9uLCAiIChLSFRNTCwgbGlrZSBHZWNrbykgIiwgYXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmdldElzU3BlYWtpbmcoYm9vbCYgaXNT
cGVha2luZykKK3sKKyAgICBpc1NwZWFraW5nID0gW05TQXBwIGlzU3BlYWtpbmddOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6c3BlYWsoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgTlNT
dHJpbmcgKmNvbnZlcnRlZFN0cmluZyA9IHN0cmluZzsKKyAgICBbTlNBcHAgc3BlYWtTdHJpbmc6
Y29udmVydGVkU3RyaW5nXTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnN0b3BTcGVha2luZygp
Cit7CisgICAgW05TQXBwIHN0b3BTcGVha2luZzpuaWxdOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViQ29u
dGV4dE1lbnVDbGllbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJDb250ZXh0TWVudUNsaWVudE1hYy5tbQkocmV2aXNpb24gNzQ0
ODcpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkNvbnRleHRN
ZW51Q2xpZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOCArMjUsMTIgQEAKIAogI2lu
Y2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLUBpbnRlcmZhY2UgTlNBcHBsaWNh
dGlvbiAoQXBwS2l0U2VjcmV0c0lLbm93QWJvdXQpCi0tICh2b2lkKXNwZWFrU3RyaW5nOihOU1N0
cmluZyAqKXN0cmluZzsKLUBlbmQKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNDksMjEgKzQzLDI1IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGll
bnQ6Omxvb2tVcEluRGljdGkKIAogYm9vbCBXZWJDb250ZXh0TWVudUNsaWVudDo6aXNTcGVha2lu
ZygpCiB7Ci0gICAgcmV0dXJuIFtOU0FwcCBpc1NwZWFraW5nXTsKKyAgICByZXR1cm4gbV9wYWdl
LT5pc1NwZWFraW5nKCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNwZWFrKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIFtOU0FwcCBzcGVha1N0cmluZzpbWyhOU1N0cmlu
Zyopc3RyaW5nIGNvcHldIGF1dG9yZWxlYXNlXV07CisgICAgbV9wYWdlLT5zcGVhayhzdHJpbmcp
OwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzdG9wU3BlYWtpbmcoKQogewotICAg
IFtOU0FwcCBzdG9wU3BlYWtpbmc6bmlsXTsKKyAgICBtX3BhZ2UtPnN0b3BTcGVha2luZygpOwog
fQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoU3BvdGxpZ2h0KCkKIHsK
KyAgICAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdG8gc2VhcmNoIGFsbCB0aGUgZnJhbWVzIGxp
a2UgdGhpcz8KKyAgICAvLyBJc24ndCB0aGVyZSBhbnkgZnVuY3Rpb24gaW4gV2ViQ29yZSB0aGF0
IGNhbiBkbyB0aGlzPworICAgIC8vIElmIG5vdCwgY2FuIHdlIGZpbmQgYSBwbGFjZSBpbiBXZWJD
b3JlIHRvIHB1dCB0aGlzPworCiAgICAgRnJhbWUqIG1haW5GcmFtZSA9IG1fcGFnZS0+Y29yZVBh
Z2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgCiAgICAgRnJhbWUqIHNlbGVjdGlvbkZyYW1lID0gbWFp
bkZyYW1lOwpAQCAtNzksNyArNzcsOSBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFy
Y2hXaXRoU3BvCiAgICAgaWYgKHNlbGVjdGVkU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIHNob3dTZWFyY2hSZXN1
bHRzRm9yUXVlcnlTdHJpbmc6KE5TU3RyaW5nICopc2VsZWN0ZWRTdHJpbmddOworICAgIE5TU3Ry
aW5nICpjb252ZXJ0ZWRTZWxlY3RlZFN0cmluZyA9IHNlbGVjdGVkU3RyaW5nOworCisgICAgW1tO
U1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIHNob3dTZWFyY2hSZXN1bHRzRm9yUXVlcnlTdHJp
bmc6Y29udmVydGVkU2VsZWN0ZWRTdHJpbmddOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDc0
NDg3KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzgsNiArMjc4LDE0IEBAIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0
cmluZygpIGNvbnMKICAgICByZXR1cm4gcGxhaW5UZXh0KHJhbmdlLmdldCgpKTsKIH0KIAorU3Ry
aW5nIFdlYkZyYW1lOjpzZWxlY3Rpb25Bc1N0cmluZygpIGNvbnN0IAoreworICAgIGlmICghbV9j
b3JlRnJhbWUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX2NvcmVG
cmFtZS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhtX2NvcmVGcmFtZS0+ZWRpdG9y
KCktPnNlbGVjdGVkVGV4dCgpKTsKK30KKwogYm9vbCBXZWJGcmFtZTo6aXNGcmFtZVNldCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuaAkocmV2aXNpb24gNzQ0ODcpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHB1YmxpYzoK
IAogICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdDsKICAgICBTdHJpbmcgY29udGVudHNBc1N0cmlu
ZygpIGNvbnN0OworICAgIFN0cmluZyBzZWxlY3Rpb25Bc1N0cmluZygpIGNvbnN0OwogCiAgICAg
Ly8gV0tCdW5kbGVGcmFtZSBBUEkgYW5kIFNQSSBmdW5jdGlvbnMKICAgICBib29sIGlzTWFpbkZy
YW1lKCkgY29uc3Q7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gNzQ0OTQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgV2ViUGFnZTo6Y2hhbmdl
QWNjZWxlcmF0ZWRDb21wb3NpdGkKICAgICAvLyBkcmF3aW5nIGFyZWEgdHlwZXMuCiAgICAgRHJh
d2luZ0FyZWFJbmZvIG5ld0RyYXdpbmdBcmVhSW5mbzsKIAotICAgIGlmICghV2ViUHJvY2Vzczo6
c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRDaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nKGNvbXBvc2l0aW5nKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkQ2hhbmdlQWNjZWxlcmF0ZWRDb21wb3NpdGluZzo6UmVwbHkobmV3RHJh
d2luZ0FyZWFJbmZvKSwgbV9wYWdlSUQpKQorICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkQ2hhbmdlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyhjb21wb3NpdGluZyks
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENoYW5nZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmc6
OlJlcGx5KG5ld0RyYXdpbmdBcmVhSW5mbykpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
aWYgKG5ld0RyYXdpbmdBcmVhSW5mby50eXBlICE9IGRyYXdpbmdBcmVhKCktPmluZm8oKS50eXBl
KSB7CkBAIC05MjYsNiArOTI2LDE0IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4dGVy
bmFsUmVwcmUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEdldFJlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHJlc3VsdFN0cmluZywgY2FsbGJhY2tJRCkpOwogfQog
Cit2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyh1aW50NjRfdCBj
YWxsYmFja0lEKQoreworICAgIFN0cmluZyByZXN1bHRTdHJpbmcgPSBtX21haW5GcmFtZS0+c2Vs
ZWN0aW9uQXNTdHJpbmcoKTsKKyAgICBpZiAocmVzdWx0U3RyaW5nLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmVzdWx0U3RyaW5nID0gbV9tYWluRnJhbWUtPmNvbnRlbnRzQXNTdHJpbmcoKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEdldENvbnRlbnRzQXNTdHJpbmcocmVzdWx0
U3RyaW5nLCBjYWxsYmFja0lEKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBTdHJpbmcg
cmVzdWx0U3RyaW5nOwpAQCAtMTM2Miw0ICsxMzcwLDIwIEBAIHZvaWQgV2ViUGFnZTo6c2V0Q3Vz
dG9tVGV4dEVuY29kaW5nTmFtZSgKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogCitib29sIFdlYlBhZ2U6
OmlzU3BlYWtpbmcoKQoreworICAgIGJvb2wgcmVzdWx0OworICAgIHJldHVybiBzZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRJc1NwZWFraW5nKCksIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkdldElzU3BlYWtpbmc6OlJlcGx5KHJlc3VsdCkpICYmIHJlc3VsdDsKK30KKwordm9p
ZCBXZWJQYWdlOjpzcGVhayhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNwZWFrKHN0cmluZykpOworfQorCit2b2lkIFdlYlBhZ2U6OnN0
b3BTcGVha2luZygpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdG9wU3Bl
YWtpbmcoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNzQ0OTQpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw4ICsyNTgsMTcgQEAg
cHVibGljOgogICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVySW5TZWxlY3RlZFJhbmdlKGNv
bnN0IHVpbnQ2NF90IGNoYXJhY3RlclBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0JiByZXN1bHRS
ZWN0KTsKICAgICB2b2lkIGdldFNlbGVjdGVkVGV4dChXVEY6OlN0cmluZyYpOwogI2VuZGlmCisK
KyAgICAvLyBGSVhNRTogVGhpcyBhIGR1bW15IG1lc3NhZ2UsIHRvIGF2b2lkIGJyZWFraW5nIHRo
ZSBidWlsZCBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZQorICAgIC8vIGFueSBzeW5j
aHJvbm91cyBtZXNzYWdlcywgYW5kIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9i
bGVtLzg3NzUxMTU+IGlzIGZpeGVkLgogICAgIHZvaWQgZHVtbXkoYm9vbCYpOwogCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIGJvb2wgaXNTcGVha2luZygpOworICAgIHZvaWQgc3BlYWsoY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBzdG9wU3BlYWtpbmcoKTsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJik7CiAKQEAgLTMwOSw2ICszMTgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnZXRDb250
ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0UmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb24odWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKICAgICB2b2lkIGdldFdlYkFyY2hpdmVPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiA3NDQ5NCkKKysr
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDYgKzUyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgIyBDYWxs
YmFja3MuCiAgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24odWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICBHZXRDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CisgICAgR2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAgICAgR2V0U291cmNlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXVEY6OlN0cmluZyBz
Y3JpcHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCg==
</data>
<flag name="review"
          id="68343"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>