<?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>134668</bug_id>
          
          <creation_ts>2014-07-06 16:44:26 -0700</creation_ts>
          <short_desc>LinkBuffer should not keep a reference to the MacroAssembler</short_desc>
          <delta_ts>2014-07-07 21:23:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1020703</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-07-06 16:44:26 -0700</bug_when>
    <thetext>LinkBuffer should not keep a reference to the MacroAssembler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020706</commentid>
    <comment_count>1</comment_count>
      <attachid>234469</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-07-06 16:51:16 -0700</bug_when>
    <thetext>Created attachment 234469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020852</commentid>
    <comment_count>2</comment_count>
      <attachid>234469</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-07 11:15:03 -0700</bug_when>
    <thetext>Comment on attachment 234469
Patch

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

r=me

Please fix Windows build failure if it is real.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        When that happen, the pointer m_assembler points to released memory. That was not causing

&quot;happens&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020886</commentid>
    <comment_count>3</comment_count>
      <attachid>234505</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-07-07 13:18:40 -0700</bug_when>
    <thetext>Created attachment 234505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020923</commentid>
    <comment_count>4</comment_count>
      <attachid>234517</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-07-07 15:13:50 -0700</bug_when>
    <thetext>Created attachment 234517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1021030</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-07-07 21:23:59 -0700</bug_when>
    <thetext>Committed r170876: &lt;http://trac.webkit.org/changeset/170876&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234469</attachid>
            <date>2014-07-06 16:51:16 -0700</date>
            <delta_ts>2014-07-07 13:18:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134668-20140706165058.patch</filename>
            <type>text/plain</type>
            <size>42494</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
N2RhY2QyZGFlOWZmMWNmNmM2NDA1N2E0MWVmYmQ0ODNjNWY0NDcwLi4xMjQ4YjUzY2UwODMwZmJh
ZDkzMDg1ZmI0ZGU4NTRhNzRkMWNmOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAxNC0wNy0wNiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgTGlua0J1ZmZlciBzaG91bGQgbm90IGtlZXAgYSByZWZlcmVuY2Ug
dG8gdGhlIE1hY3JvQXNzZW1ibGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzQ2NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiBGVEwsIHRoZSBMaW5rQnVmZmVyIGNhbiBvdXRsaXZlIHRoZSBNYWNy
b0Fzc2VtYmxlciB0aGF0IHdhcyB1c2VkIGZvciBjb2RlIGdlbmVyYXRpb24uCisgICAgICAgIFdo
ZW4gdGhhdCBoYXBwZW4sIHRoZSBwb2ludGVyIG1fYXNzZW1ibGVyIHBvaW50cyB0byByZWxlYXNl
ZCBtZW1vcnkuIFRoYXQgd2FzIG5vdCBjYXVzaW5nCisgICAgICAgIGlzc3VlcyBiZWNhdXNlIHRo
ZSBhdHRyaWJ1dGUgaXMgbm90IHVzZWQgYWZ0ZXIgbGlua2luZywgYnV0IHRoYXQgd2FzIG5vdCBw
YXJ0aWN1bGFyaWx5CisgICAgICAgIGZ1dHVyZSBwcm9vZi4KKworICAgICAgICBUaGlzIHBhdGNo
IHJlZmFjdG9ycyBMaW5rQnVmZmVyIHRvIGF2b2lkIGFueSBsaWZldGltZSByaXNrLiBUaGUgTWFj
cm9Bc3NlbWJsZXIgaXMgbm93IHBhc3NlZAorICAgICAgICBhcyBhIHJlZmVyZW5jZSwgaXQgaXMg
dXNlZCBmb3IgbGlua2luZyBidXQgbm8gcmVmZXJlbmNlIGlzIGV2ZXIgc3RvcmVkIHdpdGggdGhl
IExpbmtCdWZmZXIuCisKKyAgICAgICAgV2hpbGUgZml4aW5nIHRoZSBjYWxsIHNpdGVzIHRvIHVz
ZSBhIHJlZmVyZW5jZSwgSSBhbHNvIGRpc2NvdmVyZWQgTGlua0J1ZmZlci5oIHdhcyBpbmNsdWRl
ZAorICAgICAgICBldmVyeXdoZXJlLiBJIHJlZmFjdG9yZWQgc29tZSAjaW5jbHVkZSB0byBhdm9p
ZCB0aGF0LgorCisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAo
SlNDOjpMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKToKKyAgICAgICAgKEpTQzo6
TGlua0J1ZmZlcjo6bGlua0NvZGUpOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6
CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OkxpbmtCdWZmZXIpOgorICAgICAgICAqIGJ5dGVj
b2RlL1dhdGNocG9pbnQuY3BwOgorICAgICAgICAqIGRmZy9ERkdEaXNhc3NlbWJsZXIuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdEaXNhc3NlbWJsZXIuaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29t
cGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlua0Z1bmN0aW9uKToKKyAgICAgICAgKiBkZmcv
REZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAg
ICAgICogZGZnL0RGR1RodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRXhpdEdlbmVy
YXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6b3NyRW50cnlUaHVua0dl
bmVyYXRvcik6CisgICAgICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmdlbmVyYXRlSUNGYXN0UGF0aCk6CisgICAgICAgIChKU0M6OkZUTDo6Zml4RnVuY3Rpb25C
YXNlZE9uU3RhY2tNYXBzKToKKyAgICAgICAgKiBmdGwvRlRMSlNDYWxsLmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMSlNDYWxsLmg6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGZ0bC9GVExUaHVua3MuY3BwOgorICAgICAgICAoSlND
OjpGVEw6Om9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpG
VEw6OnNsb3dQYXRoQ2FsbFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvQXJpdHlDaGVj
a0ZhaWxSZXR1cm5UaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpBcml0eUNoZWNrRmFpbFJldHVy
blRodW5rczo6cmV0dXJuUENzRm9yKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
Q2xvc3VyZUNhbGwpOgorICAgICAgICAqIGppdC9KSVREaXNhc3NlbWJsZXIuY3BwOgorICAgICAg
ICAqIGppdC9KSVREaXNhc3NlbWJsZXIuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlUHV0
QnlWYWwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAqIGpp
dC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpnZW5lcmF0ZVJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlcik6CisgICAgICAgIChKU0M6OnJl
Z2lzdGVyUmVzdG9yYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUJ5SWRTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5
Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6ZW1pdFB1dFJlcGxhY2VTdHViKToKKyAgICAg
ICAgKEpTQzo6ZW1pdFB1dFRyYW5zaXRpb25TdHViKToKKyAgICAgICAgKEpTQzo6dHJ5UmVwYXRj
aEluKToKKyAgICAgICAgKEpTQzo6bGlua0Nsb3N1cmVDYWxsKToKKyAgICAgICAgKiBqaXQvU3Bl
Y2lhbGl6ZWRUaHVua0pJVC5oOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpm
aW5hbGl6ZSk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChK
U0M6OnRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OmxpbmtGb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmxpbmtDbG9zdXJlQ2Fs
bEZvclRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6dmlydHVhbEZvclRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
YXJpdHlGaXh1cCk6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOgorICAgICAgICAo
SlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAqIHlhcnIvWWFy
ckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OmNvbXBpbGUpOgor
CiAyMDE0LTA3LTA0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGYXN0IHBhdGggZm9yIGpzU3RyaW5nV2l0aENhY2hlKCkgd2hlbiBhc2tlZCBmb3IgdGhlIHNh
bWUgc3RyaW5nIHJlcGVhdGVkbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ1YjQwOGE2MzZiZjVlOWY4MWM5
ZjA1MDc1ZGNlNzY1NDYzZDhmYS4uNzI2ZmI3MTU0MzgyMTdiYmQwYWY4ODg0MTY2Y2RhYzA0NGZh
MmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTA3LTA2ICBCZW5qYW1pbiBQ
b3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBMaW5rQnVmZmVyIHNob3Vs
ZCBub3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgTWFjcm9Bc3NlbWJsZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDY2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29t
cGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JD
b2RlR2VuZXJhdG9yOjpjb21waWxlKToKKwogMjAxNC0wNy0wNiAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgdGhyb3R0bGUgbGF5ZXIgZmx1c2hlcyB3
aGVuIHRoZSBtYWluIHJlc291cmNlIGlzIGEgR0lGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAppbmRleCBjY2EzYTdlMDA4MGZkZTRiMTFjZDMyYTdh
NGIwN2ViODlmNjRjYjEwLi42NGU5ZDU0Y2E0ZmFlYTQxZTE5ZWViZDhhY2NjMDBhOTZkZDY2NjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAK
QEAgLTc4LDE3ICs3OCwxNyBAQCBMaW5rQnVmZmVyOjpDb2RlUmVmIExpbmtCdWZmZXI6OmZpbmFs
aXplQ29kZVdpdGhEaXNhc3NlbWJseShjb25zdCBjaGFyKiBmb3JtYXQsCiAKICNpZiBFTkFCTEUo
QlJBTkNIX0NPTVBBQ1RJT04pCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5zdHJ1Y3Rpb25UeXBlPgot
dm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKHZvaWQqIG93bmVyVUlELCBK
SVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCit2b2lkIExpbmtCdWZmZXI6OmNvcHlDb21wYWN0
QW5kTGlua0NvZGUoTWFjcm9Bc3NlbWJsZXImIG1hY3JvQXNzZW1ibGVyLCB2b2lkKiBvd25lclVJ
RCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogewotICAgIG1faW5pdGlhbFNpemUgPSBt
X2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIuY29kZVNpemUoKTsKKyAgICBtX2luaXRpYWxTaXplID0g
bWFjcm9Bc3NlbWJsZXIubV9hc3NlbWJsZXIuY29kZVNpemUoKTsKICAgICBhbGxvY2F0ZShtX2lu
aXRpYWxTaXplLCBvd25lclVJRCwgZWZmb3J0KTsKICAgICBpZiAoZGlkRmFpbFRvQWxsb2NhdGUo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIHVpbnQ4X3QqIGluRGF0YSA9ICh1aW50OF90KiltX2Fz
c2VtYmxlci0+dW5saW5rZWRDb2RlKCk7CisgICAgdWludDhfdCogaW5EYXRhID0gKHVpbnQ4X3Qq
KW1hY3JvQXNzZW1ibGVyLnVubGlua2VkQ29kZSgpOwogICAgIHVpbnQ4X3QqIG91dERhdGEgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtX2NvZGUpOwogICAgIGludCByZWFkUHRyID0gMDsK
ICAgICBpbnQgd3JpdGVQdHIgPSAwOwotICAgIFZlY3RvcjxMaW5rUmVjb3JkLCAwLCBVbnNhZmVW
ZWN0b3JPdmVyZmxvdz4mIGp1bXBzVG9MaW5rID0gbV9hc3NlbWJsZXItPmp1bXBzVG9MaW5rKCk7
CisgICAgVmVjdG9yPExpbmtSZWNvcmQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYganVtcHNU
b0xpbmsgPSBtYWNyb0Fzc2VtYmxlci5qdW1wc1RvTGluaygpOwogICAgIHVuc2lnbmVkIGp1bXBD
b3VudCA9IGp1bXBzVG9MaW5rLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
anVtcENvdW50OyArK2kpIHsKICAgICAgICAgaW50IG9mZnNldCA9IHJlYWRQdHIgLSB3cml0ZVB0
cjsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIExpbmtCdWZmZXI6OmNvcHlDb21wYWN0QW5kTGlu
a0NvZGUodm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZgogICAgICAgICBB
U1NFUlQoISh3cml0ZVB0ciAlIDIpKTsKICAgICAgICAgd2hpbGUgKGNvcHlTb3VyY2UgIT0gY29w
eUVuZCkKICAgICAgICAgICAgICpjb3B5RHN0KysgPSAqY29weVNvdXJjZSsrOwotICAgICAgICBt
X2Fzc2VtYmxlci0+cmVjb3JkTGlua09mZnNldHMocmVhZFB0ciwganVtcHNUb0xpbmtbaV0uZnJv
bSgpLCBvZmZzZXQpOworICAgICAgICBtYWNyb0Fzc2VtYmxlci5yZWNvcmRMaW5rT2Zmc2V0cyhy
ZWFkUHRyLCBqdW1wc1RvTGlua1tpXS5mcm9tKCksIG9mZnNldCk7CiAgICAgICAgIHJlYWRQdHIg
Kz0gcmVnaW9uU2l6ZTsKICAgICAgICAgd3JpdGVQdHIgKz0gcmVnaW9uU2l6ZTsKICAgICAgICAg
ICAgIApAQCAtMTE2LDI2ICsxMTYsMjYgQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFu
ZExpbmtDb2RlKHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmYKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdGFyZ2V0ID0gb3V0RGF0YSArIGp1bXBzVG9MaW5rW2ldLnRv
KCkgLSBleGVjdXRhYmxlT2Zmc2V0Rm9yKGp1bXBzVG9MaW5rW2ldLnRvKCkpOwogICAgICAgICAg
ICAgCi0gICAgICAgIEp1bXBMaW5rVHlwZSBqdW1wTGlua1R5cGUgPSBtX2Fzc2VtYmxlci0+Y29t
cHV0ZUp1bXBUeXBlKGp1bXBzVG9MaW5rW2ldLCBvdXREYXRhICsgd3JpdGVQdHIsIHRhcmdldCk7
CisgICAgICAgIEp1bXBMaW5rVHlwZSBqdW1wTGlua1R5cGUgPSBtYWNyb0Fzc2VtYmxlci5jb21w
dXRlSnVtcFR5cGUoanVtcHNUb0xpbmtbaV0sIG91dERhdGEgKyB3cml0ZVB0ciwgdGFyZ2V0KTsK
ICAgICAgICAgLy8gQ29tcGFjdCBicmFuY2ggaWYgd2UgY2FuLi4uCi0gICAgICAgIGlmIChtX2Fz
c2VtYmxlci0+Y2FuQ29tcGFjdChqdW1wc1RvTGlua1tpXS50eXBlKCkpKSB7CisgICAgICAgIGlm
IChtYWNyb0Fzc2VtYmxlci5jYW5Db21wYWN0KGp1bXBzVG9MaW5rW2ldLnR5cGUoKSkpIHsKICAg
ICAgICAgICAgIC8vIFN0ZXAgYmFjayBpbiB0aGUgd3JpdGUgc3RyZWFtCi0gICAgICAgICAgICBp
bnQzMl90IGRlbHRhID0gbV9hc3NlbWJsZXItPmp1bXBTaXplRGVsdGEoanVtcHNUb0xpbmtbaV0u
dHlwZSgpLCBqdW1wTGlua1R5cGUpOworICAgICAgICAgICAgaW50MzJfdCBkZWx0YSA9IG1hY3Jv
QXNzZW1ibGVyLmp1bXBTaXplRGVsdGEoanVtcHNUb0xpbmtbaV0udHlwZSgpLCBqdW1wTGlua1R5
cGUpOwogICAgICAgICAgICAgaWYgKGRlbHRhKSB7CiAgICAgICAgICAgICAgICAgd3JpdGVQdHIg
LT0gZGVsdGE7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXItPnJlY29yZExpbmtPZmZzZXRz
KGp1bXBzVG9MaW5rW2ldLmZyb20oKSAtIGRlbHRhLCByZWFkUHRyLCByZWFkUHRyIC0gd3JpdGVQ
dHIpOworICAgICAgICAgICAgICAgIG1hY3JvQXNzZW1ibGVyLnJlY29yZExpbmtPZmZzZXRzKGp1
bXBzVG9MaW5rW2ldLmZyb20oKSAtIGRlbHRhLCByZWFkUHRyLCByZWFkUHRyIC0gd3JpdGVQdHIp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGp1bXBzVG9MaW5rW2ldLnNldEZy
b20od3JpdGVQdHIpOwogICAgIH0KICAgICAvLyBDb3B5IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGxh
c3QganVtcAogICAgIG1lbWNweShvdXREYXRhICsgd3JpdGVQdHIsIGluRGF0YSArIHJlYWRQdHIs
IG1faW5pdGlhbFNpemUgLSByZWFkUHRyKTsKLSAgICBtX2Fzc2VtYmxlci0+cmVjb3JkTGlua09m
ZnNldHMocmVhZFB0ciwgbV9pbml0aWFsU2l6ZSwgcmVhZFB0ciAtIHdyaXRlUHRyKTsKKyAgICBt
YWNyb0Fzc2VtYmxlci5yZWNvcmRMaW5rT2Zmc2V0cyhyZWFkUHRyLCBtX2luaXRpYWxTaXplLCBy
ZWFkUHRyIC0gd3JpdGVQdHIpOwogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwganVtcENvdW50OyArK2kpIHsKICAgICAgICAgdWludDhfdCogbG9jYXRpb24gPSBvdXREYXRh
ICsganVtcHNUb0xpbmtbaV0uZnJvbSgpOwogICAgICAgICB1aW50OF90KiB0YXJnZXQgPSBvdXRE
YXRhICsganVtcHNUb0xpbmtbaV0udG8oKSAtIGV4ZWN1dGFibGVPZmZzZXRGb3IoanVtcHNUb0xp
bmtbaV0udG8oKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLT5saW5rKGp1bXBzVG9MaW5rW2ldLCBs
b2NhdGlvbiwgdGFyZ2V0KTsKKyAgICAgICAgbWFjcm9Bc3NlbWJsZXIubGluayhqdW1wc1RvTGlu
a1tpXSwgbG9jYXRpb24sIHRhcmdldCk7CiAgICAgfQogCiAgICAganVtcHNUb0xpbmsuY2xlYXIo
KTsKQEAgLTE1MSwyMyArMTUxLDIzIEBAIHZvaWQgTGlua0J1ZmZlcjo6Y29weUNvbXBhY3RBbmRM
aW5rQ29kZSh2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmCiAjZW5kaWYK
IAogCi12b2lkIExpbmtCdWZmZXI6OmxpbmtDb2RlKHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxh
dGlvbkVmZm9ydCBlZmZvcnQpCit2b2lkIExpbmtCdWZmZXI6OmxpbmtDb2RlKE1hY3JvQXNzZW1i
bGVyJiBtYWNyb0Fzc2VtYmxlciwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0
IGVmZm9ydCkKIHsKICNpZiAhRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQogI2lmIGRlZmluZWQo
QVNTRU1CTEVSX0hBU19DT05TVEFOVF9QT09MKSAmJiBBU1NFTUJMRVJfSEFTX0NPTlNUQU5UX1BP
T0wKLSAgICBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIuYnVmZmVyKCkuZmx1c2hDb25zdGFudFBv
b2woZmFsc2UpOworICAgIG1hY3JvQXNzZW1ibGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmZsdXNo
Q29uc3RhbnRQb29sKGZhbHNlKTsKICNlbmRpZgotICAgIEFzc2VtYmxlckJ1ZmZlciYgYnVmZmVy
ID0gbV9hc3NlbWJsZXItPm1fYXNzZW1ibGVyLmJ1ZmZlcigpOworICAgIEFzc2VtYmxlckJ1ZmZl
ciYgYnVmZmVyID0gbWFjcm9Bc3NlbWJsZXIubV9hc3NlbWJsZXIuYnVmZmVyKCk7CiAgICAgYWxs
b2NhdGUoYnVmZmVyLmNvZGVTaXplKCksIG93bmVyVUlELCBlZmZvcnQpOwogICAgIGlmICghbV9k
aWRBbGxvY2F0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChtX2NvZGUpOwogI2lmIENQ
VShBUk1fVFJBRElUSU9OQUwpCi0gICAgbV9hc3NlbWJsZXItPm1fYXNzZW1ibGVyLnByZXBhcmVF
eGVjdXRhYmxlQ29weShtX2NvZGUpOworICAgIG1hY3JvQXNzZW1ibGVyLm1fYXNzZW1ibGVyLnBy
ZXBhcmVFeGVjdXRhYmxlQ29weShtX2NvZGUpOwogI2VuZGlmCiAgICAgbWVtY3B5KG1fY29kZSwg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLmNvZGVTaXplKCkpOwogI2lmIENQVShNSVBTKQotICAgIG1f
YXNzZW1ibGVyLT5tX2Fzc2VtYmxlci5yZWxvY2F0ZUp1bXBzKGJ1ZmZlci5kYXRhKCksIG1fY29k
ZSk7CisgICAgbWFjcm9Bc3NlbWJsZXIubV9hc3NlbWJsZXIucmVsb2NhdGVKdW1wcyhidWZmZXIu
ZGF0YSgpLCBtX2NvZGUpOwogI2VuZGlmCiAjZWxpZiBDUFUoQVJNX1RIVU1CMikKICAgICBjb3B5
Q29tcGFjdEFuZExpbmtDb2RlPHVpbnQxNl90Pihvd25lclVJRCwgZWZmb3J0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5kZXggMjBiYjNhZjcyYjNl
MGYxNDNiYmVlNTc0YTJhOTlkMGNlZDc0OWM3Mi4uZTViZjVkN2E2MjczN2MyMDg0MzA4OTRiNTcy
NjIxYmNiN2JkY2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmgKQEAgLTgwLDM4ICs4MCwzNiBAQCBjbGFzcyBMaW5rQnVmZmVyIHsKICNlbmRpZgog
CiBwdWJsaWM6Ci0gICAgTGlua0J1ZmZlcihWTSYgdm0sIE1hY3JvQXNzZW1ibGVyKiBtYXNtLCB2
b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0ID0gSklUQ29tcGlsYXRp
b25NdXN0U3VjY2VlZCkKKyAgICBMaW5rQnVmZmVyKFZNJiB2bSwgTWFjcm9Bc3NlbWJsZXImIG1h
Y3JvQXNzZW1ibGVyLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0
ID0gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkKICAgICAgICAgOiBtX3NpemUoMCkKICNpZiBF
TkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCiAgICAgICAgICwgbV9pbml0aWFsU2l6ZSgwKQogI2Vu
ZGlmCiAgICAgICAgICwgbV9kaWRBbGxvY2F0ZShmYWxzZSkKICAgICAgICAgLCBtX2NvZGUoMCkK
LSAgICAgICAgLCBtX3N0b3JhZ2UobWFzbS0+bV9hc3NlbWJsZXIuYnVmZmVyKCkuc3RvcmFnZSgp
KQotICAgICAgICAsIG1fYXNzZW1ibGVyKG1hc20pCisgICAgICAgICwgbV9zdG9yYWdlKG1hY3Jv
QXNzZW1ibGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpLnN0b3JhZ2UoKSkKICAgICAgICAgLCBtX3Zt
KCZ2bSkKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICwgbV9jb21wbGV0ZWQoZmFsc2UpCiAjZW5k
aWYKICAgICB7Ci0gICAgICAgIGxpbmtDb2RlKG93bmVyVUlELCBlZmZvcnQpOworICAgICAgICBs
aW5rQ29kZShtYWNyb0Fzc2VtYmxlciwgb3duZXJVSUQsIGVmZm9ydCk7CiAgICAgfQogCi0gICAg
TGlua0J1ZmZlcihWTSYgdm0sIE1hY3JvQXNzZW1ibGVyKiBtYXNtLCB2b2lkKiBjb2RlLCBzaXpl
X3Qgc2l6ZSkKKyAgICBMaW5rQnVmZmVyKFZNJiB2bSwgTWFjcm9Bc3NlbWJsZXImIG1hY3JvQXNz
ZW1ibGVyLCB2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgOiBtX3NpemUoc2l6ZSkK
ICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCiAgICAgICAgICwgbV9pbml0aWFsU2l6ZSgw
KQogI2VuZGlmCiAgICAgICAgICwgbV9kaWRBbGxvY2F0ZShmYWxzZSkKICAgICAgICAgLCBtX2Nv
ZGUoY29kZSkKLSAgICAgICAgLCBtX3N0b3JhZ2UobWFzbS0+bV9hc3NlbWJsZXIuYnVmZmVyKCku
c3RvcmFnZSgpKQotICAgICAgICAsIG1fYXNzZW1ibGVyKG1hc20pCisgICAgICAgICwgbV9zdG9y
YWdlKG1hY3JvQXNzZW1ibGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpLnN0b3JhZ2UoKSkKICAgICAg
ICAgLCBtX3ZtKCZ2bSkKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICwgbV9jb21wbGV0ZWQoZmFs
c2UpCiAjZW5kaWYKICAgICB7Ci0gICAgICAgIGxpbmtDb2RlKDAsIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CisgICAgICAgIGxpbmtDb2RlKG1hY3JvQXNzZW1ibGVyLCAwLCBKSVRDb21waWxhdGlv
bkNhbkZhaWwpOwogICAgIH0KIAogICAgIH5MaW5rQnVmZmVyKCkKQEAgLTI4NSwxMCArMjgzLDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbGxvY2F0ZShzaXplX3QgaW5pdGlhbFNpemUsIHZvaWQq
IG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCk7CiAgICAgdm9pZCBzaHJpbmsoc2l6ZV90
IG5ld1NpemUpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsaW5rQ29kZSh2b2lkKiBv
d25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgbGlua0NvZGUoTWFjcm9Bc3NlbWJsZXImLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRp
b25FZmZvcnQpOwogI2lmIEVOQUJMRShCUkFOQ0hfQ09NUEFDVElPTikKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW5zdHJ1Y3Rpb25UeXBlPgotICAgIHZvaWQgY29weUNvbXBhY3RBbmRMaW5rQ29k
ZSh2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQpOworICAgIHZvaWQgY29weUNv
bXBhY3RBbmRMaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYsIHZvaWQqIG93bmVyVUlELCBKSVRDb21w
aWxhdGlvbkVmZm9ydCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcGVyZm9ybUZpbmFsaXphdGlvbigp
OwpAQCAtMzA5LDcgKzMwNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZEFsbG9jYXRlOwog
ICAgIHZvaWQqIG1fY29kZTsKICAgICBSZWZQdHI8QXNzZW1ibGVyRGF0YT4gbV9zdG9yYWdlOwot
ICAgIE1hY3JvQXNzZW1ibGVyKiBtX2Fzc2VtYmxlcjsKICAgICBWTSogbV92bTsKICNpZm5kZWYg
TkRFQlVHCiAgICAgYm9vbCBtX2NvbXBsZXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9XYXRjaHBvaW50LmNwcAppbmRleCBmMjljMjE0MWNmMjFhNDFhNTc2M2JhMmQ3YmZl
YWE1Zjc2MTNkY2JmLi4wODE2NTRkNTczN2FiYzZjODNmY2MxYjllNzk1ZjAwM2VmYjMzZGRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCkBAIC0y
Niw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5o
IgogCi0jaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Db21waWxhdGlvblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAppbmRleCBkOGE3MzUyMmRhMjhmMDkwOTAz
NjFkZmI3ZmQxMzVhODUxNzI5Zjg4Li4zMTc2MTAwMzViZWU3MjYyOTM4MmJjNTIwZTZhMWE2NzZl
NGQ4MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJE
RkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKICNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rp
c2Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIu
aAppbmRleCA2MjE2MzEwOGU4NjM4ZDNhYTBhZGJmZTUyMThiNWE4YjJlYzg2MTliLi43ODQ0ZmMy
Mzc1NWVhNWRmYWNhMjNhN2E2MzUxMDE5ODA0M2IwMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgKQEAgLTMwLDE0ICszMCwxNyBAQAogCiAjaW5jbHVk
ZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKLSNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKLSNpbmNsdWRlICJQcm9maWxl
ckRhdGFiYXNlLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxhdGlvbi5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Citu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTGlua0J1ZmZlcjsKKworbmFtZXNwYWNlIERGRyB7CiAK
IGNsYXNzIEdyYXBoOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCmluZGV4IDM1ZGUwZWNlZWU3ODE2NjJjYTRiYzU1ZjhhMjJiNTA3ZjhmNGJhMTYuLmM1
NDc0NmU2YmE5OGIzOGQ4YTdjYWQyZmVkZmY0NWMzMmI2NTg0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoKQogewot
ICAgIE93blB0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3IExpbmtCdWZm
ZXIoKm1fdm0sIHRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpKTsKKyAg
ICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVy
KCptX3ZtLCAqdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCkpOwogICAg
IGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7CiAgICAgICAgIG1fZ3JhcGgu
bV9wbGFuLmZpbmFsaXplciA9IGFkb3B0UHRyKG5ldyBGYWlsZWRGaW5hbGl6ZXIobV9ncmFwaC5t
X3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5rRnVuY3Rpb24o
KQogewogICAgIC8vID09PSBMaW5rID09PQotICAgIE93blB0cjxMaW5rQnVmZmVyPiBsaW5rQnVm
ZmVyID0gYWRvcHRQdHIobmV3IExpbmtCdWZmZXIoKm1fdm0sIHRoaXMsIG1fY29kZUJsb2NrLCBK
SVRDb21waWxhdGlvbkNhbkZhaWwpKTsKKyAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZl
ciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKCptX3ZtLCAqdGhpcywgbV9jb2RlQmxvY2ssIEpJ
VENvbXBpbGF0aW9uQ2FuRmFpbCkpOwogICAgIGlmIChsaW5rQnVmZmVyLT5kaWRGYWlsVG9BbGxv
Y2F0ZSgpKSB7CiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLmZpbmFsaXplciA9IGFkb3B0UHRyKG5l
dyBGYWlsZWRGaW5hbGl6ZXIobV9ncmFwaC5tX3BsYW4pKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4
IDYyMzk3ZjQxMjQ1NTk2ZWI5ZWQ1ZWE3MGFhMDFlMDUxZjU2NGJkNDguLjZmN2VmMGRmYWYxOTNm
MDA2M2FhN2U2YjkxYWM4MDYxYWFjOGFmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBjb21w
aWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIAogICAgICAgICBleGl0Q29tcGls
ZXIuY29tcGlsZUV4aXQoZXhpdCwgb3BlcmFuZHMsIHJlY292ZXJ5KTsKICAgICAgICAgCi0gICAg
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBjb2RlQmxvY2spOworICAgICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBjb2RlQmxvY2spOwogICAgICAgICBl
eGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYoCiAgICAgICAgICAgICBzaG91bGRTaG93RGlz
YXNzZW1ibHkoKSB8fCBPcHRpb25zOjp2ZXJib3NlT1NSKCksCiAgICAgICAgICAgICBwYXRjaEJ1
ZmZlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IDA0MDI1YTcxNzE5
NzhlN2ZmMTA4ZDNiZjcyNGQ4MWM0N2IzNGQ3MDUuLmM3OGEzMDdlNmRjYWVjYjJkYjM0Nzg0NGM2
ZTdkZTY4YTk3Y2YyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAt
NjUsOCArNjUsOSBAQAogI2luY2x1ZGUgIkRGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuaCIKICNpbmNsdWRl
ICJEZWJ1Z2dlci5oIgotI2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKKyNpbmNsdWRlICJQcm9m
aWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKICNpZiBFTkFC
TEUoRlRMX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1
bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRleCBk
ZDk5ZDMwMTA3M2JiYjEzM2FlMDA3NDMxZjkyMGI5ZGNlOTc0ZWQwLi41NjBhZWRmNmVmMWY3N2Yw
OGIwNWY3MTIwNDQzMWExYTc5YjBhZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aHVua3MuY3BwCkBAIC04OCw3ICs4OCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0
R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNKiB2bSkKICAgICAKICAgICBqaXQuanVtcChNYWNy
b0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZ2bS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlvbikp
OwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxfVEhV
TktfSUQpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVO
S19JRCk7CiAgICAgCiAgICAgcGF0Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIGNvbXBpbGVP
U1JFeGl0KTsKICAgICAKQEAgLTEzMSw3ICsxMzEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
b3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSogdm0pCiAgICAgb2subGluaygmaml0KTsKICAgICBq
aXQuanVtcChHUFJJbmZvOjpyZWdUMSk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqdm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShw
YXRjaEJ1ZmZlciwgKCJERkcgT1NSIGVudHJ5IHRodW5rIikpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCBmMzhiMWFmZjMxYjUxZGNhMjJiODUwMWVh
NTNmMzU2ZTFkZjRjODMxLi5mZWFiOWJkMTI4NDQ2YzU4YWZkNGEzMjc4YWE3MTc1MGJkMWJmZjcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIGdlbmVyYXRlSUNGYXN0UGF0aCgKICAgICAgICAgY2hhciogc3RhcnRPZklD
ID0KICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsg
cmVjb3JkLmluc3RydWN0aW9uT2Zmc2V0OwogICAgICAgICAKLSAgICAgICAgTGlua0J1ZmZlciBs
aW5rQnVmZmVyKHZtLCAmZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMpOworICAgICAg
ICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVP
ZklDKTsKICAgICAgICAgLy8gTm90ZTogd2UgY291bGQgaGFuZGxlIHRoZSAhaXNWYWxpZCgpIGNh
c2UuIFdlIGp1c3QgZG9uJ3QgYXBwZWFyIHRvIGhhdmUgYQogICAgICAgICAvLyByZWFzb24gdG8g
ZG8gc28sIHlldC4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkp
OwpAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNr
TWFwcygKICAgICAgICAgY2hlY2tKSVQuanVtcChleGNlcHRpb25Db250aW51ZUFyZzFTZXQpOwog
CiAgICAgICAgIE93blB0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3IExp
bmtCdWZmZXIoCi0gICAgICAgICAgICB2bSwgJmNoZWNrSklULCBjb2RlQmxvY2ssIEpJVENvbXBp
bGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAgICAgICAgIHZtLCBjaGVja0pJVCwgY29kZUJsb2Nr
LCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKSk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHIobG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwogICAgICAgICAKICAg
ICAgICAgc3RhdGUuZmluYWxpemVyLT5oYW5kbGVFeGNlcHRpb25zTGlua0J1ZmZlciA9IGxpbmtC
dWZmZXIucmVsZWFzZSgpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0
aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkU2VlVW53aW5k
SW5mbyk7CiAgICAgICAgIAogICAgICAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciA9
IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKAotICAgICAgICAgICAgdm0sICZleGl0VGh1bmtHZW5l
cmF0b3IsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOworICAgICAgICAg
ICAgdm0sIGV4aXRUaHVua0dlbmVyYXRvciwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RT
dWNjZWVkKSk7CiAgICAgICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0ZS5maW5hbGl6
ZXItPm9zckV4aXQuc2l6ZSgpID09IHN0YXRlLmppdENvZGUtPm9zckV4aXQuc2l6ZSgpKTsKICAg
ICAgICAgCkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9u
U3RhY2tNYXBzKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBleGNlcHRpb25KdW1wID0g
c2xvd1BhdGhKSVQuanVtcCgpOwogICAgICAgICAKICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5z
aWRlQ29kZUxpbmtCdWZmZXIgPSBhZG9wdFB0cigKLSAgICAgICAgICAgIG5ldyBMaW5rQnVmZmVy
KHZtLCAmc2xvd1BhdGhKSVQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkp
OworICAgICAgICAgICAgbmV3IExpbmtCdWZmZXIodm0sIHNsb3dQYXRoSklULCBjb2RlQmxvY2ss
IEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5z
aWRlQ29kZUxpbmtCdWZmZXItPmxpbmsoCiAgICAgICAgICAgICBleGNlcHRpb25KdW1wLCBzdGF0
ZS5maW5hbGl6ZXItPmhhbmRsZUV4Y2VwdGlvbnNMaW5rQnVmZmVyLT5lbnRyeXBvaW50KCkpOwog
ICAgICAgICAKQEAgLTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2Vk
T25TdGFja01hcHMoCiAgICAgICAgIAogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPSBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIGNhbGwubV9pbnN0cnVjdGlvbk9mZnNl
dDsKICAgICAgICAgCi0gICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmZhc3RQYXRo
SklULCBzdGFydE9mSUMsIHNpemVPZkNhbGwoKSk7CisgICAgICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcih2bSwgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mQ2FsbCgpKTsKICAgICAgICAg
aWYgKCFsaW5rQnVmZmVyLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgZGF0YUxvZygiRmFpbGVk
IHRvIGluc2VydCBpbmxpbmUgY2FjaGUgZm9yIGNhbGwgYmVjYXVzZSB3ZSB0aG91Z2h0IHRoZSBz
aXplIHdvdWxkIGJlICIsIHNpemVPZkNhbGwoKSwgIiBidXQgaXQgZW5kZWQgdXAgYmVpbmcgIiwg
ZmFzdFBhdGhKSVQubV9hc3NlbWJsZXIuY29kZVNpemUoKSwgIiBwcmlvciB0byBjb21wYWN0aW9u
LlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuY3BwCmluZGV4IDQ0MzlkYTM3YTMxOGIxZDg4Njky
ZWU0OWNjMTdjMjlkZDQyNTg0OGYuLjc2Y2QyZGM1NDdiYjliNmFkMjg5YjVlZjhlOTg4NmY4Nzc4
ZjJlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpTQ2FsbC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoRlRMX0pJVCkKIAogI2luY2x1ZGUgIkRGR05vZGUuaCIKKyNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsLmgKaW5kZXggOTViMzE5NjlhMmIyNmIz
MjY5ZTc5NWE0ZTBjZjBiYzQ5MTA0ZTA5NS4uYmMyNzU4ZGFhMDE5M2M2YjFjZmNiZTdhZjY3ODhl
MWY4ZGJjMDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0Nh
bGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpTQ2FsbC5oCkBAIC0zMSwx
MCArMzEsMTEgQEAKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWxsTGlu
a0luZm8uaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCi0jaW5jbHVkZSAiTGlua0J1ZmZlci5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgTGlua0J1ZmZlcjsKKwogbmFtZXNwYWNlIERG
RyB7CiBzdHJ1Y3QgTm9kZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCmlu
ZGV4IDhhZGQyMGU5OGU5Mzk0MzlmODM2YTJmMmI5N2Q5NjI1ZmNiMTU2ZjIuLjFkOGYxYjE3ZGU4
Njk4YTY4YjRmNGNiNzZjZDMyZmNmNDg2NDVjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMaW5rLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICBtYWluUGF0aEp1bXBz
LmFwcGVuZChqaXQuanVtcCgpKTsKIAotICAgICAgICBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3
IExpbmtCdWZmZXIodm0sICZqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2Vl
ZCkpOworICAgICAgICBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3IExpbmtCdWZmZXIodm0sIGpp
dCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKSk7CiAgICAgICAgIGxpbmtC
dWZmZXItPmxpbmsoY2FsbEFyaXR5Q2hlY2ssIGNvZGVCbG9jay0+bV9pc0NvbnN0cnVjdG9yID8g
b3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKTsK
ICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsQXJpdHlGaXh1cCwgRnVuY3Rpb25QdHIoKHZt
LmdldENUSVN0dWIoYXJpdHlGaXh1cCkpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAg
ICAgICAgIGxpbmtCdWZmZXItPmxpbmsobWFpblBhdGhKdW1wcywgQ29kZUxvY2F0aW9uTGFiZWwo
Yml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRGdW5jdGlvbikpKTsKQEAgLTE5NCw3
ICsxOTQsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG1haW5QYXRoSnVtcCA9
IGppdC5qdW1wKCk7CiAgICAgICAgIAotICAgICAgICBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3
IExpbmtCdWZmZXIodm0sICZqaXQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2Vl
ZCkpOworICAgICAgICBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3IExpbmtCdWZmZXIodm0sIGpp
dCwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKSk7CiAgICAgICAgIGxpbmtC
dWZmZXItPmxpbmsobWFpblBhdGhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uKSkpOwogCiAgICAgICAgIHN0YXRlLmppdENv
ZGUtPmluaXRpYWxpemVBZGRyZXNzRm9yQ2FsbChsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKHN0YXJ0
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CmluZGV4IDE0OGIzOGQ3ZmIwZjg0MDc2OTVmZDk5Y2M4OTRiY2NlMWE0NGFjOTIuLjRiY2QwZWU5
YTkzZTA1ZjU2NzM2ZjU1NDM5M2QyMGY0YTk2NDQzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5j
bHVkZSAiRlRMT3V0cHV0LmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRM
V2VpZ2h0ZWRUYXJnZXQuaCIKLSNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiT3Bl
cmFuZHNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlZpcnR1
YWxSZWdpc3Rlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
U1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0
Q29tcGlsZXIuY3BwCmluZGV4IDczNGU1YTllNzExNmMxOGU0YzBmNWMwYTM0OWM3MTY0MzI3YzBh
NzcuLjYyZTNiOTk5ZjNlMzI4NDYyMmE5NDM0N2UxMDFmZmQyZWE5MTg4NzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKQEAgLTM2Myw3
ICszNjMsNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAKICAgICBhZGp1c3RBbmRK
dW1wVG9UYXJnZXQoaml0LCBleGl0KTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KCp2bSwgJmppdCwgY29kZUJsb2NrKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwg
aml0LCBjb2RlQmxvY2spOwogICAgIGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKICAg
ICAgICAgc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6dmVyYm9zZU9TUigpIHx8
IE9wdGlvbnM6OnZlcmJvc2VGVExPU1JFeGl0KCksCiAgICAgICAgIHBhdGNoQnVmZmVyLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCmluZGV4IDlhY2M2YjIzZThjZjM5OGZh
NDJlZDA5OGYyMzE2M2U5NjM0OTEyNDEuLmYyMTk4YWQyYmJkNzJjZTc0YmIxZmY1MGM2MDg0M2Yy
MDNkZDI0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5jcHAKQEAgLTEw
MSw3ICsxMDEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgb3NyRXhpdEdlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcihWTSogdm0pCiAKICAgICBqaXQucmV0KCk7CiAgICAgCi0gICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICBwYXRjaEJ1ZmZl
ci5saW5rKGZ1bmN0aW9uQ2FsbCwgY29tcGlsZUZUTE9TUkV4aXQpOwogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkZUTCBPU1IgZXhpdCBnZW5lcmF0aW9uIHRodW5rIikp
OwogfQpAQCAtMTkyLDcgKzE5Miw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBzbG93UGF0aENh
bGxUaHVua0dlbmVyYXRvcihWTSYgdm0sIGNvbnN0IFNsb3dQYXRoQ2FsbEtleSYKICAgICAKICAg
ICBqaXQucmV0KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHZtLCAmaml0LCBHTE9C
QUxfVEhVTktfSUQpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodm0sIGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGtleS5j
YWxsVGFyZ2V0KCkpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJG
VEwgc2xvdyBwYXRoIGNhbGwgdGh1bmsgZm9yICVzIiwgdG9DU3RyaW5nKGtleSkuZGF0YSgpKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0FyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0Zh
aWxSZXR1cm5UaHVua3MuY3BwCmluZGV4IGQyNzFiNGY1NGY5ZjZmNTczYzUwYTk2OGJjMDg2NDc1
OWU3OWJiNmYuLjdlOWI3N2QyYTEwNjFlMTYzNGE5ODNlNWJhMGNkNTlkOWRmNzE5OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVu
a3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3MuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIENvZGVMb2NhdGlvbkxhYmVsKiBBcml0eUNo
ZWNrRmFpbFJldHVyblRodW5rczo6cmV0dXJuUENzRm9yKAogICAgICAgICBqaXQuanVtcChHUFJJ
bmZvOjpyZWdUMik7CiAgICAgfQogICAgIAotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwg
JmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sIGpp
dCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICAKICAgICB1bnNpZ25lZCByZXR1cm5QQ3NTaXplID0g
bnVtRXhwZWN0ZWRBcmd1bWVudHNJbmNsdWRpbmdUaGlzIC8gc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSArIDE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvZGVMb2NhdGlvbkxhYmVsW10+IHJldHVy
blBDcyA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYjVkODEyYWQ5OTYxOWU0ZmU1
ZmQwYmI2NzE0NzA4OTg5NDE0YWJiOC4uMjMwYmFmMjkwODkzMjVkZjBhZjBiM2Y0ZjU2Mjk3Mjcy
Y2Y5YWNiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtNDYsNiArNDYsNyBAQCBK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpTU0UyQ2hlY2tTdGF0ZSBKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpzX3NzZQogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRl
ICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJQcm9maWxlckRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Rvb2wuaCIK
QEAgLTU4Niw3ICs1ODcsNyBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxl
KEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBpZiAobV9kaXNhc3NlbWJsZXIpCiAg
ICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWwoKSk7CiAKLSAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jaywgZWZmb3J0KTsKKyAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgbV9jb2RlQmxvY2ssIGVmZm9y
dCk7CiAgICAgaWYgKHBhdGNoQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpCiAgICAgICAgIHJl
dHVybiBDb21waWxhdGlvbkZhaWxlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5j
cHAKaW5kZXggNDdkNGM0YmQ4YmIwYzM3ZTU3NmYwYjcwMTExNjM2MzU3MjRmNjA5My4uOWY0ZDYx
ZjcyYzBmZjA4MTA5MTQzY2ZjMTM2NjM4NjVlOTE5ZTUyYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgpAQCAtMjg2LDcgKzI4
Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlCiAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4ocmVnVDIpOwogICAgIEp1bXAgc2xvdyA9IGp1bXAoKTsKICAgICAKLSAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jayk7CisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrKTsKICAgICAKICAg
ICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGNvZGVQdHIuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZSwgY2FsbExpbmtJbmZvLT5ob3RQ
YXRoT3RoZXIubGFiZWxBdE9mZnNldCgwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwzMl82NC5jcHAKaW5kZXggMDEwMDBmYTU5ZWI5NTRjNTgxZTBmZTk1Mjk0Y2FlNDMxMDAy
NjA5YS4uOGY0YzAyNzY2MWFkM2MwZjdmNzA5MjlkMGI0NjU0NzhmMWQzNjVkNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlCiAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4ocmVnVDIpOwogICAgIEp1bXAgc2xvdyA9IGp1bXAoKTsKICAgICAKLSAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jayk7CisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrKTsKICAgICAKICAgICBwYXRj
aEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZSwgY2FsbExpbmtJbmZvLT5ob3RQYXRoT3Ro
ZXIubGFiZWxBdE9mZnNldCgwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
c2Fzc2VtYmxlci5jcHAKaW5kZXggMzUzMWVlYTQwNzhjMDZjZDQ3MzI5Y2JlNWQ2MGRmOTUzZTRj
OTdmNC4uMDRlMWI0ZDQ5ZTk3OTdhMzk0NzA4NjVkMjM5ODc5MjZjM2UzOTdiMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuaAppbmRleCBhZWRiMmNkYjEyMzE4
YmM3MGYzODY3Njc5NGJkZTZkMDVmMjM2MGUzLi42NjU1ZGU4OTMwZjhjYWRiOGQ5Y2M1YWNiZGM2
ZTcxNjU3MDU4YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERp
c2Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1i
bGVyLmgKQEAgLTI4LDE0ICsyOCwxOCBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAotI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotI2luY2x1ZGUgIlBy
b2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOwor
Y2xhc3MgTGlua0J1ZmZlcjsKKworbmFtZXNwYWNlIFByb2ZpbGVyIHsKK2NsYXNzIENvbXBpbGF0
aW9uOworfQogCiBjbGFzcyBKSVREaXNhc3NlbWJsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggMmU4
MjE4Y2QwY2ExMjRlM2RhNjI3Zjk1MTg2ODUwODRlYmMzMTE1Zi4uYjVmZDZjZTJlYTMwMDYyNjM5
OTgyYzMyNWI3ZTIyZGExZWE4Y2NkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKLSNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVn
aXN0ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKaW5kZXggYmRiOTJiNTA0YTg2MWJlYmIyMTkxNDczMGM0Y2NmMDM1Nzk5Y2ZkOC4uMzRk
NTE1MTdkYjQ5MGNhNDg5Yzk2YzY2OTYzOThmMDg2MTA5OTM1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAg
SklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKFZNKiB2bSkKICAg
ICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKICAgICBqaXQucmV0KCk7CiAgICAg
Ci0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
ICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJTdHJpbmcgZ2V0X2J5X3Zh
bCBzdHViIikpOwogfQogCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVHZXRCeVZhbChCeVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5BZAogICAgIAogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoKm1fdm0sIHRoaXMsIG1fY29kZUJsb2NrKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNo
QnVmZmVyKCptX3ZtLCAqdGhpcywgbV9jb2RlQmxvY2spOwogICAgIAogICAgIHBhdGNoQnVmZmVy
LmxpbmsoYmFkVHlwZSwgQ29kZUxvY2F0aW9uTGFiZWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpj
cmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSkubGFiZWxB
dE9mZnNldChieVZhbEluZm8tPnJldHVybkFkZHJlc3NUb1Nsb3dQYXRoKSk7CiAgICAgcGF0Y2hC
dWZmZXIubGluayhzbG93Q2FzZXMsIENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldHVybkFkZHJlc3MudmFsdWUoKSkp
LmxhYmVsQXRPZmZzZXQoYnlWYWxJbmZvLT5yZXR1cm5BZGRyZXNzVG9TbG93UGF0aCkpOwpAQCAt
MTA2NCw3ICsxMDY0LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0QnlWYWwoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWQKICAgICAKICAgICBKdW1w
IGRvbmUgPSBqdW1wKCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlz
LCBtX2NvZGVCbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMs
IG1fY29kZUJsb2NrKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGJhZFR5cGUsIENvZGVMb2NhdGlv
bkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNz
KHJldHVybkFkZHJlc3MudmFsdWUoKSkpLmxhYmVsQXRPZmZzZXQoYnlWYWxJbmZvLT5yZXR1cm5B
ZGRyZXNzVG9TbG93UGF0aCkpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBDb2Rl
TG9jYXRpb25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxl
QWRkcmVzcyhyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS5sYWJlbEF0T2Zmc2V0KGJ5VmFsSW5mby0+
cmV0dXJuQWRkcmVzc1RvU2xvd1BhdGgpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGJ5
VmFsSW5mby0+YmFkVHlwZUp1bXAubGFiZWxBdE9mZnNldChieVZhbEluZm8tPmJhZFR5cGVKdW1w
VG9Eb25lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAppbmRleCA4YTg3YzUwZTdlNzM4ZTM3Y2MxMGY2MTE2ZWFmNDFmYmJk
MzIzOTFjLi44ODk3NGYxNDJhYTJhZTEwYjYyOTRkNjMxZDcxZWNlMDcyMTIzNmYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKQEAgLTExNyw3ICsxMTcsNyBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0
dWJHZW5lcmF0b3IoVk0qIHZtKQogICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDAp
OwogICAgIGppdC5yZXQoKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwg
JmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwg
aml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCAoIlN0cmluZyBnZXRfYnlfdmFsIHN0dWIiKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFw
cGVyR2VuZXJhdG9yLmNwcAppbmRleCBhNDAxZWE2MmIxOTJjYzI5YjgzMGNkMDE2NWRlODRiNzc2
OTE0YTE1Li4wNzBiNWNiMjViOTUxMDE0MDMxNWQ0NWJhNTVhZmFiZWZmMzA0MzMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBl
ckdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclBy
ZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKFZNJiB2
bSwgRXhlY3V0YWJsZUJhc2UKICAgICBqaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1
cm4oR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGp1bXAg
PSBqaXQuanVtcCgpOwogICAgIAotICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sIGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKICAgICBsaW5rQnVmZmVyLmxpbmsoanVtcCwgQ29kZUxvY2F0aW9uTGFi
ZWwodGFyZ2V0KSk7CiAKICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUZUTFRvSlNUaHVuaygpKQpA
QCAtMjI2LDcgKzIyNiw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiByZWdpc3RlclJlc3RvcmF0
aW9uVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewogICAgIEFzc2VtYmx5SGVscGVycyBqaXQodm0s
IDApOwogICAgIGdlbmVyYXRlUmVnaXN0ZXJSZXN0b3JhdGlvbihqaXQpOwotICAgIExpbmtCdWZm
ZXIgbGlua0J1ZmZlcigqdm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZl
ciBsaW5rQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5B
TElaRV9DT0RFKGxpbmtCdWZmZXIsICgiUmVnaXN0ZXIgcmVzdG9yYXRpb24gdGh1bmsiKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDk4MGQ2MzFjZjcxYzA5
MWZkN2JiZmFkZTE0MjYwMGY1MzYzNTI0MDAuLmRiYzdkNjYxN2RkYTFmOTcwOTJhOTcwNGY0NmEz
NjRkMmVhNGViOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTY1
LDcgKzU2NSw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlQnlJZFN0dWIoCiAgICAgfQogICAgIGVt
aXRSZXN0b3JlU2NyYXRjaChzdHViSml0LCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc2NyYXRjaEdQ
Uiwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKCp2bSwgJnN0dWJKaXQsIGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgIAog
ICAgIGxpbmtSZXN0b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gs
IHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3VjY2Vzc0xhYmVsLCBzbG93Q2FzZUxhYmVs
KTsKICAgICBpZiAoa2luZCA9PSBDYWxsQ3VzdG9tR2V0dGVyIHx8IGtpbmQgPT0gQ2FsbEN1c3Rv
bVNldHRlcikgewpAQCAtNjc4LDcgKzY3OCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uCiAK
ICAgICAgICAgICAgIGVtaXRSZXN0b3JlU2NyYXRjaChzdHViSml0LCBuZWVkVG9SZXN0b3JlU2Ny
YXRjaCwgc2NyYXRjaEdQUiwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZzdHViSml0LCBj
b2RlQmxvY2spOworICAgICAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIHN0dWJK
aXQsIGNvZGVCbG9jayk7CiAKICAgICAgICAgICAgIGxpbmtSZXN0b3JlU2NyYXRjaChwYXRjaEJ1
ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN0dWJJbmZvLCBzdWNjZXNzLCBmYWlsLCBmYWls
dXJlQ2FzZXMpOwogCkBAIC03MDgsNyArNzA4LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24K
IAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7
CiAKLSAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZzdHViSml0LCBjb2RlQmxv
Y2spOworICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgY29kZUJs
b2NrKTsKIAogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9u
ZSkpOwogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nh
c2UpKTsKQEAgLTk1Myw3ICs5NTMsNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIo
CiAgICAgICAgIGZhaWx1cmUgPSBiYWRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAotICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBzdHViSml0LCBleGVjLT5jb2RlQmxvY2soKSk7
CiAgICAgcGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24ubGFiZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpKTsKICAgICBw
YXRjaEJ1ZmZlci5saW5rKGZhaWx1cmUsIGZhaWx1cmVMYWJlbCk7CiAgICAgICAgICAgICAKQEAg
LTExNDAsNyArMTE0MCw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAg
ICAgICAgc3VjY2Vzc0luU2xvd1BhdGggPSBzdHViSml0Lmp1bXAoKTsKICAgICB9CiAgICAgCi0g
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZzdHViSml0LCBleGVjLT5jb2RlQmxvY2so
KSk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIHN0dWJKaXQsIGV4ZWMtPmNvZGVC
bG9jaygpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkp
OwogICAgIGlmIChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcGF0Y2hC
dWZmZXIubGluayhmYWlsdXJlLCBmYWlsdXJlTGFiZWwpOwpAQCAtMTUxMyw3ICsxNTEzLDcgQEAg
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeVJlcGF0Y2hJbigKICAgICAgICAgCiAgICAgICAg
IGVtaXRSZXN0b3JlU2NyYXRjaChzdHViSml0LCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc2NyYXRj
aEdQUiwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzKTsKICAgICAgICAgCi0gICAgICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOwor
ICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgZXhlYy0+Y29kZUJs
b2NrKCkpOwogCiAgICAgICAgIGxpbmtSZXN0b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRv
UmVzdG9yZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3VjY2Vzc0xhYmVs
LCBzbG93Q2FzZUxhYmVsKTsKICAgICAgICAgCkBAIC0xNjc2LDcgKzE2NzYsNyBAQCB2b2lkIGxp
bmtDbG9zdXJlQ2FsbCgKICAgICBzdHViSml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0
dXJuKEdQUkluZm86OnJlZ1Q0KTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9IHN0
dWJKaXQuanVtcCgpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmc3R1
YkppdCwgY2FsbGVyQ29kZUJsb2NrKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwg
c3R1YkppdCwgY2FsbGVyQ29kZUJsb2NrKTsKICAgICAKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNh
bGwsIEZ1bmN0aW9uUHRyKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgIGlmIChK
SVRDb2RlOjppc09wdGltaXppbmdKSVQoY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAppbmRleCAx
MGM1YzNlYTBlZjAyYWYwNjg1YTNkMjNhNTEzNzdlMzdiOGFjMDdhLi45NzMyM2VlZTI5ZWU1NTQ3
NThiZGVjYTFhZTkyNDkxMjk2MjE1NTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApAQCAtMTY4LDcgKzE2OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZpbmFsaXplKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaywgY29uc3QgY2hhciogdGh1bmtLaW5kKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBH
TE9CQUxfVEhVTktfSUQpOworICAgICAgICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92
bSwgKnRoaXMsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgICAgICAgICBwYXRjaEJ1ZmZlci5saW5r
KG1fZmFpbHVyZXMsIENvZGVMb2NhdGlvbkxhYmVsKGZhbGxiYWNrKSk7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jYWxscy5zaXplKCk7IGkrKykKICAgICAgICAgICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fY2FsbHNbaV0uZmlyc3QsIG1fY2FsbHNbaV0uc2Vjb25k
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRl
eCAzMTdmYzZiYmU4YzU2Y2MwNDkwZjgxN2U2OTcwYjliMjBhM2QwNWYzLi4zYjYzMDJiY2I2NTJj
MjE5ZWIzZmMyOTI0YTlmYzQ4YTZlMjM0ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC03MSw3ICs3MSw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IoVk0qIHZtKQog
ICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIGppdC5qdW1wVG9FeGNlcHRp
b25IYW5kbGVyKCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9C
QUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlRo
cm93IGV4Y2VwdGlvbiBmcm9tIGNhbGwgc2xvdyBwYXRoIHRodW5rIikpOwogfQogCkBAIC0xMTEs
NyArMTExLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rRm9yVGh1bmtHZW5l
cmF0b3IoCiAgICAgCiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua0Zvcihr
aW5kLCByZWdpc3RlcnMpKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwg
JmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwg
aml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAogICAgICAg
ICBwYXRjaEJ1ZmZlciwKICAgICAgICAgKCJMaW5rICVzJXMgc2xvdyBwYXRoIHRodW5rIiwga2lu
ZCA9PSBDb2RlRm9yQ2FsbCA/ICJjYWxsIiA6ICJjb25zdHJ1Y3QiLCByZWdpc3RlcnMgPT0gTXVz
dFByZXNlcnZlUmVnaXN0ZXJzID8gIiB0aGF0IHByZXNlcnZlcyByZWdpc3RlcnMiIDogIiIpKTsK
QEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDbG9z
dXJlQ2FsbEZvclRodW5rR2VuZXJhdG9yKAogICAgIAogICAgIHNsb3dQYXRoRm9yKGppdCwgdm0s
IG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbEZvcihyZWdpc3RlcnMpKTsKICAgICAKLSAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxpbmsgY2xvc3VyZSBjYWxsICVzIHNsb3cg
cGF0aCB0aHVuayIsIHJlZ2lzdGVycyA9PSBNdXN0UHJlc2VydmVSZWdpc3RlcnMgPyAiIHRoYXQg
cHJlc2VydmVzIHJlZ2lzdGVycyIgOiAiIikpOwogfQogCkBAIC0yMzUsNyArMjM1LDcgQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IoCiAgICAg
CiAgICAgc2xvd1BhdGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uVmlydHVhbEZvcihraW5kLCByZWdp
c3RlcnMpKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9C
QUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1
ZmZlciwKICAgICAgICAgKCJWaXJ0dWFsICVzJXMgc2xvdyBwYXRoIHRodW5rIiwga2luZCA9PSBD
b2RlRm9yQ2FsbCA/ICJjYWxsIiA6ICJjb25zdHJ1Y3QiLCByZWdpc3RlcnMgPT0gTXVzdFByZXNl
cnZlUmVnaXN0ZXJzID8gIiB0aGF0IHByZXNlcnZlcyByZWdpc3RlcnMiIDogIiIpKTsKQEAgLTQx
NSw3ICs0MTUsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlbmVy
YXRvcihWTSogdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQgawogCiAgICAgaml0Lmp1bXBUb0V4
Y2VwdGlvbkhhbmRsZXIoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0
LCBHTE9CQUxfVEhVTktfSUQpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQs
IEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIs
ICgibmF0aXZlICVzJXMgdHJhbXBvbGluZSIsIGVudHJ5VHlwZSA9PSBFbnRlclZpYUp1bXAgPyAi
VGFpbCAiIDogIiIsIHRvQ1N0cmluZyhraW5kKS5kYXRhKCkpKTsKIH0KIApAQCAtNTMzLDcgKzUz
Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcml0eUZpeHVwKFZNKiB2bSkKICAgICBqaXQu
cmV0KCk7CiAjZW5kaWYKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBH
TE9CQUxfVEhVTktfSUQpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdM
T0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgi
Zml4dXAgYXJpdHkiKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCmluZGV4IDAwYTY0NTZmM2RiYjVkNzlhOTZkMzkzZWQxMWE1MzAzOGU2MmNmZmEu
LmU4ZjhhMTcxNGVmYTViM2ZiYzdkYTg2NmMwYzg1Y2FmZjYwZGI2MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKFZNKiB2bSwg
dm9pZCAoKnRhcmdldCkoKSwgYwogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVk
SW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdU
MCk7CiAgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKICAgICAKLSAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5r
QnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVy
biBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxMSW50ICVzIHByb2xvZ3VlIHRodW5rIiwg
dGh1bmtLaW5kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5k
ZXggMTU0NGRmMDI5MDIxMjdiMjk5ZGVkOWM3ZmM4NzQzNDY4MDcwMTg2Yi4uZTNhM2E5MzJjZTdl
ZDczOGYxOTg2YjJiZjJiNzQzZTA0MjNhM2IyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAKQEAgLTI2NTcsNyArMjY1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgYmFja3Ry
YWNrKCk7CiAKICAgICAgICAgLy8gTGluayAmIGZpbmFsaXplIHRoZSBjb2RlLgotICAgICAgICBM
aW5rQnVmZmVyIGxpbmtCdWZmZXIoKnZtLCB0aGlzLCBSRUdFWFBfQ09ERV9JRCk7CisgICAgICAg
IExpbmtCdWZmZXIgbGlua0J1ZmZlcigqdm0sICp0aGlzLCBSRUdFWFBfQ09ERV9JRCk7CiAgICAg
ICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGlua0RhdGFMYWJlbHMobGlua0J1ZmZlcik7CiAKICAg
ICAgICAgaWYgKGNvbXBpbGVNb2RlID09IE1hdGNoT25seSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IDY4MDJkOTUxZWVjMzQyZDk4YTFlMDcwNzQ0
YjRlZDk5NjcxMDlmMzcuLjQ2YzkzNDQ3MjNhMmQ0MGFlNGZhMTY5ZDgxY2JhZDVhMjA5NjEzMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKQEAgLTc0OSw3
ICs3NDksNyBAQCBpbmxpbmUgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBTZWxlY3RvckNvZGVH
ZW5lcmF0b3I6OmNvbXBpbGUoSlNDOjpWTSogdm0sIEpTQwogICAgICAgICByZXR1cm4gU2VsZWN0
b3JDb21waWxhdGlvblN0YXR1czo6Q2Fubm90Q29tcGlsZTsKICAgICB9CiAKLSAgICBKU0M6Okxp
bmtCdWZmZXIgbGlua0J1ZmZlcigqdm0sICZtX2Fzc2VtYmxlciwgQ1NTX0NPREVfSUQpOworICAg
IEpTQzo6TGlua0J1ZmZlciBsaW5rQnVmZmVyKCp2bSwgbV9hc3NlbWJsZXIsIENTU19DT0RFX0lE
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9mdW5jdGlvbkNhbGxzLnNpemUoKTsg
aSsrKQogICAgICAgICBsaW5rQnVmZmVyLmxpbmsobV9mdW5jdGlvbkNhbGxzW2ldLmZpcnN0LCBt
X2Z1bmN0aW9uQ2FsbHNbaV0uc2Vjb25kKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234505</attachid>
            <date>2014-07-07 13:18:40 -0700</date>
            <delta_ts>2014-07-07 15:13:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134668-20140707131820.patch</filename>
            <type>text/plain</type>
            <size>40069</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwODUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDE0LTA3LTA3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBMaW5rQnVmZmVyIHNob3VsZCBub3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgTWFj
cm9Bc3NlbWJsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNDY2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAg
ICAgIEluIEZUTCwgdGhlIExpbmtCdWZmZXIgY2FuIG91dGxpdmUgdGhlIE1hY3JvQXNzZW1ibGVy
IHRoYXQgd2FzIHVzZWQgZm9yIGNvZGUgZ2VuZXJhdGlvbi4KKyAgICAgICAgV2hlbiB0aGF0IGhh
cHBlbiwgdGhlIHBvaW50ZXIgbV9hc3NlbWJsZXIgcG9pbnRzIHRvIHJlbGVhc2VkIG1lbW9yeS4g
VGhhdCB3YXMgbm90IGNhdXNpbmcKKyAgICAgICAgaXNzdWVzIGJlY2F1c2UgdGhlIGF0dHJpYnV0
ZSBpcyBub3QgdXNlZCBhZnRlciBsaW5raW5nLCBidXQgdGhhdCB3YXMgbm90IHBhcnRpY3VsYXJp
bHkKKyAgICAgICAgZnV0dXJlIHByb29mLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVmYWN0b3Jz
IExpbmtCdWZmZXIgdG8gYXZvaWQgYW55IGxpZmV0aW1lIHJpc2suIFRoZSBNYWNyb0Fzc2VtYmxl
ciBpcyBub3cgcGFzc2VkCisgICAgICAgIGFzIGEgcmVmZXJlbmNlLCBpdCBpcyB1c2VkIGZvciBs
aW5raW5nIGJ1dCBubyByZWZlcmVuY2UgaXMgZXZlciBzdG9yZWQgd2l0aCB0aGUgTGlua0J1ZmZl
ci4KKworICAgICAgICBXaGlsZSBmaXhpbmcgdGhlIGNhbGwgc2l0ZXMgdG8gdXNlIGEgcmVmZXJl
bmNlLCBJIGFsc28gZGlzY292ZXJlZCBMaW5rQnVmZmVyLmggd2FzIGluY2x1ZGVkCisgICAgICAg
IGV2ZXJ5d2hlcmUuIEkgcmVmYWN0b3JlZCBzb21lICNpbmNsdWRlIHRvIGF2b2lkIHRoYXQuCisK
KyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtC
dWZmZXI6OmNvcHlDb21wYWN0QW5kTGlua0NvZGUpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVy
OjpsaW5rQ29kZSk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAg
KEpTQzo6TGlua0J1ZmZlcjo6TGlua0J1ZmZlcik6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICog
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5r
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFbnRyeVRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Z2VuZXJh
dGVJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6RlRMOjpmaXhGdW5jdGlvbkJhc2VkT25TdGFj
a01hcHMpOgorICAgICAgICAqIGZ0bC9GVExKU0NhbGwuY3BwOgorICAgICAgICAqIGZ0bC9GVExK
U0NhbGwuaDoKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKiBm
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1
Yik6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6c2xvd1Bh
dGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9Bcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOjpy
ZXR1cm5QQ3NGb3IpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2Fs
bCk6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogaml0L0pJ
VERpc2Fzc2VtYmxlci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dl
dEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbCk6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgICogaml0L1JlZ2lzdGVy
UHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRl
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKToKKyAgICAgICAgKEpTQzo6cmVnaXN0ZXJSZXN0
b3JhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OmdlbmVyYXRlQnlJZFN0dWIpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5
SUQpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpl
bWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAg
ICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRo
dW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmZpbmFsaXplKToK
KyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bGlua0Zv
clRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bGlua0Nsb3N1cmVDYWxsRm9yVGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphcml0eUZpeHVw
KToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoK
KyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Y29tcGlsZSk6CisKIDIwMTQtMDct
MDcgIFRpYm9yIE1lc3phcm9zICA8dG1lc3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgQWRkIG1pc3NpbmcgRU5BQkxFKEZUTF9KSVQpIGd1YXJkcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZp
c2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNyArNzgsMTcgQEAgTGlua0J1ZmZlcjo6Q29k
ZVJlZiBMaW5rQnVmZmVyOjpmaW5hbGl6ZQogCiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9O
KQogdGVtcGxhdGUgPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KLXZvaWQgTGlua0J1ZmZlcjo6
Y29weUNvbXBhY3RBbmRMaW5rQ29kZSh2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0KQordm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKE1hY3Jv
QXNzZW1ibGVyJiBtYWNyb0Fzc2VtYmxlciwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9u
RWZmb3J0IGVmZm9ydCkKIHsKLSAgICBtX2luaXRpYWxTaXplID0gbV9hc3NlbWJsZXItPm1fYXNz
ZW1ibGVyLmNvZGVTaXplKCk7CisgICAgbV9pbml0aWFsU2l6ZSA9IG1hY3JvQXNzZW1ibGVyLm1f
YXNzZW1ibGVyLmNvZGVTaXplKCk7CiAgICAgYWxsb2NhdGUobV9pbml0aWFsU2l6ZSwgb3duZXJV
SUQsIGVmZm9ydCk7CiAgICAgaWYgKGRpZEZhaWxUb0FsbG9jYXRlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICB1aW50OF90KiBpbkRhdGEgPSAodWludDhfdCopbV9hc3NlbWJsZXItPnVubGlua2Vk
Q29kZSgpOworICAgIHVpbnQ4X3QqIGluRGF0YSA9ICh1aW50OF90KiltYWNyb0Fzc2VtYmxlci51
bmxpbmtlZENvZGUoKTsKICAgICB1aW50OF90KiBvdXREYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4obV9jb2RlKTsKICAgICBpbnQgcmVhZFB0ciA9IDA7CiAgICAgaW50IHdyaXRlUHRy
ID0gMDsKLSAgICBWZWN0b3I8TGlua1JlY29yZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBq
dW1wc1RvTGluayA9IG1fYXNzZW1ibGVyLT5qdW1wc1RvTGluaygpOworICAgIFZlY3RvcjxMaW5r
UmVjb3JkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGp1bXBzVG9MaW5rID0gbWFjcm9Bc3Nl
bWJsZXIuanVtcHNUb0xpbmsoKTsKICAgICB1bnNpZ25lZCBqdW1wQ291bnQgPSBqdW1wc1RvTGlu
ay5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGp1bXBDb3VudDsgKytpKSB7
CiAgICAgICAgIGludCBvZmZzZXQgPSByZWFkUHRyIC0gd3JpdGVQdHI7CkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKAogICAgICAgICBB
U1NFUlQoISh3cml0ZVB0ciAlIDIpKTsKICAgICAgICAgd2hpbGUgKGNvcHlTb3VyY2UgIT0gY29w
eUVuZCkKICAgICAgICAgICAgICpjb3B5RHN0KysgPSAqY29weVNvdXJjZSsrOwotICAgICAgICBt
X2Fzc2VtYmxlci0+cmVjb3JkTGlua09mZnNldHMocmVhZFB0ciwganVtcHNUb0xpbmtbaV0uZnJv
bSgpLCBvZmZzZXQpOworICAgICAgICBtYWNyb0Fzc2VtYmxlci5yZWNvcmRMaW5rT2Zmc2V0cyhy
ZWFkUHRyLCBqdW1wc1RvTGlua1tpXS5mcm9tKCksIG9mZnNldCk7CiAgICAgICAgIHJlYWRQdHIg
Kz0gcmVnaW9uU2l6ZTsKICAgICAgICAgd3JpdGVQdHIgKz0gcmVnaW9uU2l6ZTsKICAgICAgICAg
ICAgIApAQCAtMTE2LDI2ICsxMTYsMjYgQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFu
ZExpbmtDb2RlKAogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0YXJnZXQgPSBvdXREYXRhICsg
anVtcHNUb0xpbmtbaV0udG8oKSAtIGV4ZWN1dGFibGVPZmZzZXRGb3IoanVtcHNUb0xpbmtbaV0u
dG8oKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgSnVtcExpbmtUeXBlIGp1bXBMaW5rVHlwZSA9
IG1fYXNzZW1ibGVyLT5jb21wdXRlSnVtcFR5cGUoanVtcHNUb0xpbmtbaV0sIG91dERhdGEgKyB3
cml0ZVB0ciwgdGFyZ2V0KTsKKyAgICAgICAgSnVtcExpbmtUeXBlIGp1bXBMaW5rVHlwZSA9IG1h
Y3JvQXNzZW1ibGVyLmNvbXB1dGVKdW1wVHlwZShqdW1wc1RvTGlua1tpXSwgb3V0RGF0YSArIHdy
aXRlUHRyLCB0YXJnZXQpOwogICAgICAgICAvLyBDb21wYWN0IGJyYW5jaCBpZiB3ZSBjYW4uLi4K
LSAgICAgICAgaWYgKG1fYXNzZW1ibGVyLT5jYW5Db21wYWN0KGp1bXBzVG9MaW5rW2ldLnR5cGUo
KSkpIHsKKyAgICAgICAgaWYgKG1hY3JvQXNzZW1ibGVyLmNhbkNvbXBhY3QoanVtcHNUb0xpbmtb
aV0udHlwZSgpKSkgewogICAgICAgICAgICAgLy8gU3RlcCBiYWNrIGluIHRoZSB3cml0ZSBzdHJl
YW0KLSAgICAgICAgICAgIGludDMyX3QgZGVsdGEgPSBtX2Fzc2VtYmxlci0+anVtcFNpemVEZWx0
YShqdW1wc1RvTGlua1tpXS50eXBlKCksIGp1bXBMaW5rVHlwZSk7CisgICAgICAgICAgICBpbnQz
Ml90IGRlbHRhID0gbWFjcm9Bc3NlbWJsZXIuanVtcFNpemVEZWx0YShqdW1wc1RvTGlua1tpXS50
eXBlKCksIGp1bXBMaW5rVHlwZSk7CiAgICAgICAgICAgICBpZiAoZGVsdGEpIHsKICAgICAgICAg
ICAgICAgICB3cml0ZVB0ciAtPSBkZWx0YTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci0+
cmVjb3JkTGlua09mZnNldHMoanVtcHNUb0xpbmtbaV0uZnJvbSgpIC0gZGVsdGEsIHJlYWRQdHIs
IHJlYWRQdHIgLSB3cml0ZVB0cik7CisgICAgICAgICAgICAgICAgbWFjcm9Bc3NlbWJsZXIucmVj
b3JkTGlua09mZnNldHMoanVtcHNUb0xpbmtbaV0uZnJvbSgpIC0gZGVsdGEsIHJlYWRQdHIsIHJl
YWRQdHIgLSB3cml0ZVB0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAganVt
cHNUb0xpbmtbaV0uc2V0RnJvbSh3cml0ZVB0cik7CiAgICAgfQogICAgIC8vIENvcHkgZXZlcnl0
aGluZyBhZnRlciB0aGUgbGFzdCBqdW1wCiAgICAgbWVtY3B5KG91dERhdGEgKyB3cml0ZVB0ciwg
aW5EYXRhICsgcmVhZFB0ciwgbV9pbml0aWFsU2l6ZSAtIHJlYWRQdHIpOwotICAgIG1fYXNzZW1i
bGVyLT5yZWNvcmRMaW5rT2Zmc2V0cyhyZWFkUHRyLCBtX2luaXRpYWxTaXplLCByZWFkUHRyIC0g
d3JpdGVQdHIpOworICAgIG1hY3JvQXNzZW1ibGVyLnJlY29yZExpbmtPZmZzZXRzKHJlYWRQdHIs
IG1faW5pdGlhbFNpemUsIHJlYWRQdHIgLSB3cml0ZVB0cik7CiAgICAgICAgIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBqdW1wQ291bnQ7ICsraSkgewogICAgICAgICB1aW50OF90KiBs
b2NhdGlvbiA9IG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS5mcm9tKCk7CiAgICAgICAgIHVpbnQ4
X3QqIHRhcmdldCA9IG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS50bygpIC0gZXhlY3V0YWJsZU9m
ZnNldEZvcihqdW1wc1RvTGlua1tpXS50bygpKTsKLSAgICAgICAgbV9hc3NlbWJsZXItPmxpbmso
anVtcHNUb0xpbmtbaV0sIGxvY2F0aW9uLCB0YXJnZXQpOworICAgICAgICBtYWNyb0Fzc2VtYmxl
ci5saW5rKGp1bXBzVG9MaW5rW2ldLCBsb2NhdGlvbiwgdGFyZ2V0KTsKICAgICB9CiAKICAgICBq
dW1wc1RvTGluay5jbGVhcigpOwpAQCAtMTUxLDIzICsxNTEsMjMgQEAgdm9pZCBMaW5rQnVmZmVy
Ojpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKAogI2VuZGlmCiAKIAotdm9pZCBMaW5rQnVmZmVyOjps
aW5rQ29kZSh2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQordm9p
ZCBMaW5rQnVmZmVyOjpsaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZv
aWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAjaWYgIUVOQUJM
RShCUkFOQ0hfQ09NUEFDVElPTikKICNpZiBkZWZpbmVkKEFTU0VNQkxFUl9IQVNfQ09OU1RBTlRf
UE9PTCkgJiYgQVNTRU1CTEVSX0hBU19DT05TVEFOVF9QT09MCi0gICAgbV9hc3NlbWJsZXItPm1f
YXNzZW1ibGVyLmJ1ZmZlcigpLmZsdXNoQ29uc3RhbnRQb29sKGZhbHNlKTsKKyAgICBtYWNyb0Fz
c2VtYmxlci5tX2Fzc2VtYmxlci5idWZmZXIoKS5mbHVzaENvbnN0YW50UG9vbChmYWxzZSk7CiAj
ZW5kaWYKLSAgICBBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlciA9IG1fYXNzZW1ibGVyLT5tX2Fzc2Vt
Ymxlci5idWZmZXIoKTsKKyAgICBBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlciA9IG1hY3JvQXNzZW1i
bGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpOwogICAgIGFsbG9jYXRlKGJ1ZmZlci5jb2RlU2l6ZSgp
LCBvd25lclVJRCwgZWZmb3J0KTsKICAgICBpZiAoIW1fZGlkQWxsb2NhdGUpCiAgICAgICAgIHJl
dHVybjsKICAgICBBU1NFUlQobV9jb2RlKTsKICNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQotICAg
IG1fYXNzZW1ibGVyLT5tX2Fzc2VtYmxlci5wcmVwYXJlRXhlY3V0YWJsZUNvcHkobV9jb2RlKTsK
KyAgICBtYWNyb0Fzc2VtYmxlci5tX2Fzc2VtYmxlci5wcmVwYXJlRXhlY3V0YWJsZUNvcHkobV9j
b2RlKTsKICNlbmRpZgogICAgIG1lbWNweShtX2NvZGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5j
b2RlU2l6ZSgpKTsKICNpZiBDUFUoTUlQUykKLSAgICBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIu
cmVsb2NhdGVKdW1wcyhidWZmZXIuZGF0YSgpLCBtX2NvZGUpOworICAgIG1hY3JvQXNzZW1ibGVy
Lm1fYXNzZW1ibGVyLnJlbG9jYXRlSnVtcHMoYnVmZmVyLmRhdGEoKSwgbV9jb2RlKTsKICNlbmRp
ZgogI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgY29weUNvbXBhY3RBbmRMaW5rQ29kZTx1aW50
MTZfdD4ob3duZXJVSUQsIGVmZm9ydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDM4
ICs4MCwzNiBAQCBjbGFzcyBMaW5rQnVmZmVyIHsKICNlbmRpZgogCiBwdWJsaWM6Ci0gICAgTGlu
a0J1ZmZlcihWTSYgdm0sIE1hY3JvQXNzZW1ibGVyKiBtYXNtLCB2b2lkKiBvd25lclVJRCwgSklU
Q29tcGlsYXRpb25FZmZvcnQgZWZmb3J0ID0gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkKKyAg
ICBMaW5rQnVmZmVyKFZNJiB2bSwgTWFjcm9Bc3NlbWJsZXImIG1hY3JvQXNzZW1ibGVyLCB2b2lk
KiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0ID0gSklUQ29tcGlsYXRpb25N
dXN0U3VjY2VlZCkKICAgICAgICAgOiBtX3NpemUoMCkKICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBB
Q1RJT04pCiAgICAgICAgICwgbV9pbml0aWFsU2l6ZSgwKQogI2VuZGlmCiAgICAgICAgICwgbV9k
aWRBbGxvY2F0ZShmYWxzZSkKICAgICAgICAgLCBtX2NvZGUoMCkKLSAgICAgICAgLCBtX3N0b3Jh
Z2UobWFzbS0+bV9hc3NlbWJsZXIuYnVmZmVyKCkuc3RvcmFnZSgpKQotICAgICAgICAsIG1fYXNz
ZW1ibGVyKG1hc20pCisgICAgICAgICwgbV9zdG9yYWdlKG1hY3JvQXNzZW1ibGVyLm1fYXNzZW1i
bGVyLmJ1ZmZlcigpLnN0b3JhZ2UoKSkKICAgICAgICAgLCBtX3ZtKCZ2bSkKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgICwgbV9jb21wbGV0ZWQoZmFsc2UpCiAjZW5kaWYKICAgICB7Ci0gICAgICAg
IGxpbmtDb2RlKG93bmVyVUlELCBlZmZvcnQpOworICAgICAgICBsaW5rQ29kZShtYWNyb0Fzc2Vt
Ymxlciwgb3duZXJVSUQsIGVmZm9ydCk7CiAgICAgfQogCi0gICAgTGlua0J1ZmZlcihWTSYgdm0s
IE1hY3JvQXNzZW1ibGVyKiBtYXNtLCB2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKKyAgICBMaW5r
QnVmZmVyKFZNJiB2bSwgTWFjcm9Bc3NlbWJsZXImIG1hY3JvQXNzZW1ibGVyLCB2b2lkKiBjb2Rl
LCBzaXplX3Qgc2l6ZSkKICAgICAgICAgOiBtX3NpemUoc2l6ZSkKICNpZiBFTkFCTEUoQlJBTkNI
X0NPTVBBQ1RJT04pCiAgICAgICAgICwgbV9pbml0aWFsU2l6ZSgwKQogI2VuZGlmCiAgICAgICAg
ICwgbV9kaWRBbGxvY2F0ZShmYWxzZSkKICAgICAgICAgLCBtX2NvZGUoY29kZSkKLSAgICAgICAg
LCBtX3N0b3JhZ2UobWFzbS0+bV9hc3NlbWJsZXIuYnVmZmVyKCkuc3RvcmFnZSgpKQotICAgICAg
ICAsIG1fYXNzZW1ibGVyKG1hc20pCisgICAgICAgICwgbV9zdG9yYWdlKG1hY3JvQXNzZW1ibGVy
Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLnN0b3JhZ2UoKSkKICAgICAgICAgLCBtX3ZtKCZ2bSkKICNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgICwgbV9jb21wbGV0ZWQoZmFsc2UpCiAjZW5kaWYKICAgICB7
Ci0gICAgICAgIGxpbmtDb2RlKDAsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgIGxp
bmtDb2RlKG1hY3JvQXNzZW1ibGVyLCAwLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIH0K
IAogICAgIH5MaW5rQnVmZmVyKCkKQEAgLTI4NSwxMCArMjgzLDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhbGxvY2F0ZShzaXplX3QgaW5pdGlhbFNpemUsIHZvaWQqIG93bmVyVUlELCBKSVRDb21w
aWxhdGlvbkVmZm9ydCk7CiAgICAgdm9pZCBzaHJpbmsoc2l6ZV90IG5ld1NpemUpOwogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsaW5rQ29kZSh2b2lkKiBvd25lclVJRCwgSklUQ29tcGls
YXRpb25FZmZvcnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbGlua0NvZGUoTWFjcm9B
c3NlbWJsZXImLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQpOwogI2lmIEVO
QUJMRShCUkFOQ0hfQ09NUEFDVElPTikKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5zdHJ1Y3Rp
b25UeXBlPgotICAgIHZvaWQgY29weUNvbXBhY3RBbmRMaW5rQ29kZSh2b2lkKiBvd25lclVJRCwg
SklUQ29tcGlsYXRpb25FZmZvcnQpOworICAgIHZvaWQgY29weUNvbXBhY3RBbmRMaW5rQ29kZShN
YWNyb0Fzc2VtYmxlciYsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCk7CiAj
ZW5kaWYKIAogICAgIHZvaWQgcGVyZm9ybUZpbmFsaXphdGlvbigpOwpAQCAtMzA5LDcgKzMwNyw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZEFsbG9jYXRlOwogICAgIHZvaWQqIG1fY29kZTsK
ICAgICBSZWZQdHI8QXNzZW1ibGVyRGF0YT4gbV9zdG9yYWdlOwotICAgIE1hY3JvQXNzZW1ibGVy
KiBtX2Fzc2VtYmxlcjsKICAgICBWTSogbV92bTsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBt
X2NvbXBsZXRlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBv
aW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9XYXRjaHBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKIAotI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRpb25UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuaAko
cmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTQgKzMwLDE3IEBACiAKICNpbmNsdWRlICJE
RkdDb21tb24uaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgotI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotI2luY2x1ZGUgIlByb2ZpbGVyRGF0
YWJhc2UuaCIKKyNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBMaW5rQnVmZmVyOworCituYW1lc3BhY2UgREZHIHsKIAogY2xh
c3MgR3JhcGg7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKCkKIHsK
LSAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVm
ZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKSk7Cisg
ICAgT3duUHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZl
cigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpKTsKICAg
ICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBtX2dyYXBo
Lm1fcGxhbi5maW5hbGl6ZXIgPSBhZG9wdFB0cihuZXcgRmFpbGVkRmluYWxpemVyKG1fZ3JhcGgu
bV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogdm9pZCBKSVRDb21waWxlcjo6bGlua0Z1bmN0aW9u
KCkKIHsKICAgICAvLyA9PT0gTGluayA9PT0KLSAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1
ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jaywg
SklUQ29tcGlsYXRpb25DYW5GYWlsKSk7CisgICAgT3duUHRyPExpbmtCdWZmZXI+IGxpbmtCdWZm
ZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrLCBK
SVRDb21waWxhdGlvbkNhbkZhaWwpKTsKICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxs
b2NhdGUoKSkgewogICAgICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBhZG9wdFB0cihu
ZXcgRmFpbGVkRmluYWxpemVyKG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIGNv
bXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgCiAgICAgICAgIGV4aXRDb21w
aWxlci5jb21waWxlRXhpdChleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwogICAgICAgICAKLSAg
ICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIGNvZGVCbG9jayk7CisgICAg
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIGNvZGVCbG9jayk7CiAgICAgICAg
IGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKICAgICAgICAgICAgIHNob3VsZFNob3dE
aXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKICAgICAgICAgICAgIHBhdGNo
QnVmZmVyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lv
biAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSw4ICs2NSw5IEBACiAjaW5jbHVkZSAiREZHVmlydHVhbFJlZ2lzdGVy
QWxsb2NhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCi0jaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgor
I2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KIAogI2lmIEVOQUJMRShGVExfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmNwcAkocmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAgICAKICAgICBqaXQuanVtcChN
YWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZ2bS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlv
bikpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxf
VEhVTktfSUQpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CiAgICAgCiAgICAgcGF0Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIGNvbXBp
bGVPU1JFeGl0KTsKICAgICAKQEAgLTEzMSw3ICsxMzEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgb3NyRW50cnlUaHVua0dlbmVyCiAgICAgb2subGluaygmaml0KTsKICAgICBqaXQuanVtcChH
UFJJbmZvOjpyZWdUMSk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGpp
dCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgKCJERkcgT1NSIGVudHJ5IHRodW5rIikpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIGdlbmVyYXRlSUNGYXN0UGF0aCgKICAgICAgICAgY2hhciogc3RhcnRPZklD
ID0KICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsg
cmVjb3JkLmluc3RydWN0aW9uT2Zmc2V0OwogICAgICAgICAKLSAgICAgICAgTGlua0J1ZmZlciBs
aW5rQnVmZmVyKHZtLCAmZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMpOworICAgICAg
ICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVP
ZklDKTsKICAgICAgICAgLy8gTm90ZTogd2UgY291bGQgaGFuZGxlIHRoZSAhaXNWYWxpZCgpIGNh
c2UuIFdlIGp1c3QgZG9uJ3QgYXBwZWFyIHRvIGhhdmUgYQogICAgICAgICAvLyByZWFzb24gdG8g
ZG8gc28sIHlldC4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkp
OwpAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNr
TWFwcygKICAgICAgICAgY2hlY2tKSVQuanVtcChleGNlcHRpb25Db250aW51ZUFyZzFTZXQpOwog
CiAgICAgICAgIE93blB0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3IExp
bmtCdWZmZXIoCi0gICAgICAgICAgICB2bSwgJmNoZWNrSklULCBjb2RlQmxvY2ssIEpJVENvbXBp
bGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAgICAgICAgIHZtLCBjaGVja0pJVCwgY29kZUJsb2Nr
LCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKSk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHIobG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwogICAgICAgICAKICAg
ICAgICAgc3RhdGUuZmluYWxpemVyLT5oYW5kbGVFeGNlcHRpb25zTGlua0J1ZmZlciA9IGxpbmtC
dWZmZXIucmVsZWFzZSgpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0
aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkU2VlVW53aW5k
SW5mbyk7CiAgICAgICAgIAogICAgICAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciA9
IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKAotICAgICAgICAgICAgdm0sICZleGl0VGh1bmtHZW5l
cmF0b3IsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOworICAgICAgICAg
ICAgdm0sIGV4aXRUaHVua0dlbmVyYXRvciwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RT
dWNjZWVkKSk7CiAgICAgICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0ZS5maW5hbGl6
ZXItPm9zckV4aXQuc2l6ZSgpID09IHN0YXRlLmppdENvZGUtPm9zckV4aXQuc2l6ZSgpKTsKICAg
ICAgICAgCkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9u
U3RhY2tNYXBzKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBleGNlcHRpb25KdW1wID0g
c2xvd1BhdGhKSVQuanVtcCgpOwogICAgICAgICAKICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5z
aWRlQ29kZUxpbmtCdWZmZXIgPSBhZG9wdFB0cigKLSAgICAgICAgICAgIG5ldyBMaW5rQnVmZmVy
KHZtLCAmc2xvd1BhdGhKSVQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkp
OworICAgICAgICAgICAgbmV3IExpbmtCdWZmZXIodm0sIHNsb3dQYXRoSklULCBjb2RlQmxvY2ss
IEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5z
aWRlQ29kZUxpbmtCdWZmZXItPmxpbmsoCiAgICAgICAgICAgICBleGNlcHRpb25KdW1wLCBzdGF0
ZS5maW5hbGl6ZXItPmhhbmRsZUV4Y2VwdGlvbnNMaW5rQnVmZmVyLT5lbnRyeXBvaW50KCkpOwog
ICAgICAgICAKQEAgLTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2Vk
T25TdGFja01hcHMoCiAgICAgICAgIAogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPSBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIGNhbGwubV9pbnN0cnVjdGlvbk9mZnNl
dDsKICAgICAgICAgCi0gICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmZhc3RQYXRo
SklULCBzdGFydE9mSUMsIHNpemVPZkNhbGwoKSk7CisgICAgICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcih2bSwgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mQ2FsbCgpKTsKICAgICAgICAg
aWYgKCFsaW5rQnVmZmVyLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgZGF0YUxvZygiRmFpbGVk
IHRvIGluc2VydCBpbmxpbmUgY2FjaGUgZm9yIGNhbGwgYmVjYXVzZSB3ZSB0aG91Z2h0IHRoZSBz
aXplIHdvdWxkIGJlICIsIHNpemVPZkNhbGwoKSwgIiBidXQgaXQgZW5kZWQgdXAgYmVpbmcgIiwg
ZmFzdFBhdGhKSVQubV9hc3NlbWJsZXIuY29kZVNpemUoKSwgIiBwcmlvciB0byBjb21wYWN0aW9u
LlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsLmNwcAkocmV2aXNpb24gMTcwODUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKICNpbmNsdWRlICJERkdO
b2RlLmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuaAkocmV2
aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDExIEBACiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJz
LmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgot
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIExpbmtC
dWZmZXI7CisKIG5hbWVzcGFjZSBERkcgewogc3RydWN0IE5vZGU7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsx
NzYsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7CiAK
LSAgICAgICAgbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCAmaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAgICAgbGlua0J1ZmZl
ciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25NdXN0U3VjY2VlZCkpOwogICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNo
ZWNrLCBjb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5
Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXAp
KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBsaW5rQnVmZmVyLT5saW5r
KG1haW5QYXRoSnVtcHMsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3Rh
dGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBsaW5rKFN0
YXRlJiBzdGF0ZSkKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAK
LSAgICAgICAgbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCAmaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAgICAgbGlua0J1ZmZl
ciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25NdXN0U3VjY2VlZCkpOwogICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRG
dW5jdGlvbikpKTsKIAogICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0Zv
ckNhbGwobGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3MDg1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAj
aW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKLSNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAko
cmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0
Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMsNyArMzYzLDcgQEAgc3RhdGljIHZv
aWQgY29tcGlsZVN0dWIoCiAgICAgCiAgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KGppdCwgZXhp
dCk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIGNvZGVCbG9j
ayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgY29kZUJsb2NrKTsKICAg
ICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYoCiAgICAgICAgIHNob3VsZFNob3dEaXNh
c3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRpb25zOjp2ZXJib3NlRlRM
T1NSRXhpdCgpLAogICAgICAgICBwYXRjaEJ1ZmZlciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFRodW5rcy5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKIAogICAgIGppdC5y
ZXQoKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxf
VEhVTktfSUQpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBjb21waWxlRlRM
T1NSRXhpdCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiRlRMIE9T
UiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKSk7CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHNsb3dQYXRoQ2FsbFRodW5rRwogICAgIAogICAgIGppdC5yZXQoKTsK
IAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwog
ICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHIoa2V5LmNhbGxUYXJnZXQoKSkp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkZUTCBzbG93IHBhdGgg
Y2FsbCB0aHVuayBmb3IgJXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3MuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcs
NyArOTcsNyBAQCBDb2RlTG9jYXRpb25MYWJlbCogQXJpdHlDaGVja0ZhaWxSZXR1cm5UCiAgICAg
ICAgIGppdC5qdW1wKEdQUkluZm86OnJlZ1QyKTsKICAgICB9CiAgICAgCi0gICAgTGlua0J1ZmZl
ciBsaW5rQnVmZmVyKHZtLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIExpbmtCdWZmZXIg
bGlua0J1ZmZlcih2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIAogICAgIHVuc2lnbmVk
IHJldHVyblBDc1NpemUgPSBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMgLyBzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpICsgMTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29kZUxvY2F0
aW9uTGFiZWxbXT4gcmV0dXJuUENzID0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJ
KHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpTU0UyQ2hlY2tTCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAj
aW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgpAQCAtNTg2
LDcgKzU4Nyw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAg
ICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNv
ZGUobGFiZWwoKSk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBt
X2NvZGVCbG9jaywgZWZmb3J0KTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAq
dGhpcywgbV9jb2RlQmxvY2ssIGVmZm9ydCk7CiAgICAgaWYgKHBhdGNoQnVmZmVyLmRpZEZhaWxU
b0FsbG9jYXRlKCkpCiAgICAgICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTcw
ODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRU
eXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCkBAIC0zNzcsNyArMzc4LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIHJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKHJlZ1QyKTsKICAgICBKdW1wIHNsb3cgPSBqdW1wKCk7CiAgICAg
Ci0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgdGhpcywgbV9jb2RlQmxvY2spOwor
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBtX2NvZGVCbG9jayk7CiAg
ICAgCiAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cihjb2RlUHRyLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5m
by0+aG90UGF0aE90aGVyLmxhYmVsQXRPZmZzZXQoMCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJSZXBh
dGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5n
VG9vbC5oIgpAQCAtMjg2LDcgKzI4Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1
cmVDYWxsKENhbGwKICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMik7
CiAgICAgSnVtcCBzbG93ID0ganVtcCgpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKm1fdm0sIHRoaXMsIG1fY29kZUJsb2NrKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KCptX3ZtLCAqdGhpcywgbV9jb2RlQmxvY2spOwogICAgIAogICAgIHBhdGNoQnVmZmVyLmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHIoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgcGF0
Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8tPmhvdFBhdGhPdGhlci5sYWJlbEF0T2Zm
c2V0KDApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2Vt
Ymxlci5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmgJKHJldmlzaW9uIDE3MDg1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDE0ICsyOCwxOCBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAotI2luY2x1ZGUgIkxp
bmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotI2luY2x1ZGUgIlByb2Zp
bGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xh
c3MgTGlua0J1ZmZlcjsKKworbmFtZXNwYWNlIFByb2ZpbGVyIHsKK2NsYXNzIENvbXBpbGF0aW9u
OworfQogCiBjbGFzcyBKSVREaXNhc3NlbWJsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZp
c2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKLSNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJWaXJ0
dWFsUmVnaXN0ZXIuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTcwODUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFs
U3R1YkdlbmUKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKICAgICBqaXQu
cmV0KCk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIEdMT0JB
TF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJTdHJp
bmcgZ2V0X2J5X3ZhbCBzdHViIikpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTcwODUzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg2LDcgKzg2LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHVi
R2VuZQogICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIGppdC5yZXQo
KTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFMX1RI
VU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhV
TktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIlN0cmluZyBn
ZXRfYnlfdmFsIHN0dWIiKSk7CiB9CiAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZUdldEJ5VmFsKEJ5VmFsSW4KICAgICAKICAgICBKdW1wIGRvbmUgPSBqdW1w
KCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9j
ayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2Nr
KTsKICAgICAKICAgICBwYXRjaEJ1ZmZlci5saW5rKGJhZFR5cGUsIENvZGVMb2NhdGlvbkxhYmVs
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldHVy
bkFkZHJlc3MudmFsdWUoKSkpLmxhYmVsQXRPZmZzZXQoYnlWYWxJbmZvLT5yZXR1cm5BZGRyZXNz
VG9TbG93UGF0aCkpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBDb2RlTG9jYXRp
b25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS5sYWJlbEF0T2Zmc2V0KGJ5VmFsSW5mby0+cmV0dXJu
QWRkcmVzc1RvU2xvd1BhdGgpKTsKQEAgLTEwNjQsNyArMTA2NCw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVB1dEJ5VmFsKEJ5VmFsSW4KICAgICAKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7
CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jayk7
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrKTsK
ICAgICBwYXRjaEJ1ZmZlci5saW5rKGJhZFR5cGUsIENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHJldHVybkFkZHJlc3Mu
dmFsdWUoKSkpLmxhYmVsQXRPZmZzZXQoYnlWYWxJbmZvLT5yZXR1cm5BZGRyZXNzVG9TbG93UGF0
aCkpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBDb2RlTG9jYXRpb25MYWJlbChN
YWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhyZXR1cm5B
ZGRyZXNzLnZhbHVlKCkpKS5sYWJlbEF0T2Zmc2V0KGJ5VmFsSW5mby0+cmV0dXJuQWRkcmVzc1Rv
U2xvd1BhdGgpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGJ5VmFsSW5mby0+YmFkVHlw
ZUp1bXAubGFiZWxBdE9mZnNldChieVZhbEluZm8tPmJhZFR5cGVKdW1wVG9Eb25lKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdp
c3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdl
bmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclByCiAgICAgaml0LnJlc3RvcmVSZXR1cm5BZGRy
ZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIEFzc2VtYmx5SGVscGVy
czo6SnVtcCBqdW1wID0gaml0Lmp1bXAoKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIodm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVy
KHZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgbGlua0J1ZmZlci5saW5rKGp1bXAsIENv
ZGVMb2NhdGlvbkxhYmVsKHRhcmdldCkpOwogCiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VGVExU
b0pTVGh1bmsoKSkKQEAgLTIyNiw3ICsyMjYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcmVn
aXN0ZXJSZXN0b3JhdGlvCiB7CiAgICAgQXNzZW1ibHlIZWxwZXJzIGppdCh2bSwgMCk7CiAgICAg
Z2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKGppdCk7Ci0gICAgTGlua0J1ZmZlciBsaW5rQnVm
ZmVyKCp2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUo
bGlua0J1ZmZlciwgKCJSZWdpc3RlciByZXN0b3JhdGlvbiB0aHVuayIpKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NjUsNyArNTY1LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1YigKICAgICB9CiAgICAg
ZW1pdFJlc3RvcmVTY3JhdGNoKHN0dWJKaXQsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzY3JhdGNo
R1BSLCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMpOwogICAgIAotICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBzdHViSml0LCBleGVjLT5jb2RlQmxvY2soKSk7CiAgICAg
CiAgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBhdGNoQnVmZmVyLCBuZWVkVG9SZXN0b3JlU2NyYXRj
aCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzLCBzdWNjZXNzTGFiZWwsIHNsb3dDYXNlTGFi
ZWwpOwogICAgIGlmIChraW5kID09IENhbGxDdXN0b21HZXR0ZXIgfHwga2luZCA9PSBDYWxsQ3Vz
dG9tU2V0dGVyKSB7CkBAIC02NzgsNyArNjc4LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlR2V0QnlJRAogCiAgICAgICAgICAgICBlbWl0UmVzdG9yZVNjcmF0Y2goc3R1Ykpp
dCwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHNjcmF0Y2hHUFIsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1
cmVDYXNlcyk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKnZtLCAmc3R1YkppdCwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoKnZtLCBzdHViSml0LCBjb2RlQmxvY2spOwogCiAgICAgICAgICAgICBsaW5rUmVz
dG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3JhdGNoLCBzdHViSW5mbywg
c3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzKTsKIApAQCAtNzA4LDcgKzcwOCw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKIAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7CiAKLSAgICAgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqdm0sICZzdHViSml0LCBjb2RlQmxvY2spOworICAgICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgY29kZUJsb2NrKTsKIAogICAgICAgICBwYXRj
aEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0
T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkpOwogICAgICAgICBwYXRjaEJ1
ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsKQEAgLTk1Myw3ICs5NTMs
NyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgICAgIGZhaWx1cmUgPSBi
YWRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZt
LCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKnZtLCBzdHViSml0LCBleGVjLT5jb2RlQmxvY2soKSk7CiAgICAgcGF0Y2hCdWZmZXIubGlu
ayhzdWNjZXNzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1
cmUsIGZhaWx1cmVMYWJlbCk7CiAgICAgICAgICAgICAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgc3VjY2Vzc0luU2xvd1Bh
dGggPSBzdHViSml0Lmp1bXAoKTsKICAgICB9CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1
ZmZlcigqdm0sICZzdHViSml0LCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcigqdm0sIHN0dWJKaXQsIGV4ZWMtPmNvZGVCbG9jaygpKTsKICAgICBwYXRjaEJ1
ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zm
c2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkpOwogICAgIGlmIChhbGxvY2F0b3Iu
ZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhmYWlsdXJlLCBm
YWlsdXJlTGFiZWwpOwpAQCAtMTUxMyw3ICsxNTEzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeVJlcGF0Y2hJbigKICAgICAgICAgCiAgICAgICAgIGVtaXRSZXN0b3JlU2NyYXRjaChz
dHViSml0LCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc2NyYXRjaEdQUiwgc3VjY2VzcywgZmFpbCwg
ZmFpbHVyZUNhc2VzKTsKICAgICAgICAgCi0gICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
KnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOwogCiAgICAgICAgIGxp
bmtSZXN0b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHN1Y2Nl
c3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3VjY2Vzc0xhYmVsLCBzbG93Q2FzZUxhYmVsKTsKICAg
ICAgICAgCkBAIC0xNjc2LDcgKzE2NzYsNyBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbCgKICAgICBz
dHViSml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86OnJlZ1Q0KTsK
ICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9IHN0dWJKaXQuanVtcCgpOwogICAgIAot
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgY2FsbGVyQ29kZUJsb2Nr
KTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgY2FsbGVyQ29kZUJs
b2NrKTsKICAgICAKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGNvZGVQ
dHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdK
SVQoY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDE3MDg1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmluYWxpemUoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGZhbGxiYWNrLCBjb25zdCBjaGFyKiB0aHVua0tpbmQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sIHRoaXMsIEdMT0JBTF9USFVOS19JRCk7Cisg
ICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAqdGhpcywgR0xPQkFMX1RI
VU5LX0lEKTsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9mYWlsdXJlcywgQ29kZUxv
Y2F0aW9uTGFiZWwoZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2NhbGxzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxp
bmsobV9jYWxsc1tpXS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTcwODUz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB0aHJvd0V4
Y2VwdGlvbkZyb20KICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICBqaXQu
anVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigq
dm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigq
dm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgKCJUaHJvdyBleGNlcHRpb24gZnJvbSBjYWxsIHNsb3cgcGF0aCB0aHVuayIpKTsK
IH0KIApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlu
a0ZvclRodW4KICAgICAKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rRm9y
KGtpbmQsIHJlZ2lzdGVycykpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZt
LCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZt
LCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUoCiAgICAg
ICAgIHBhdGNoQnVmZmVyLAogICAgICAgICAoIkxpbmsgJXMlcyBzbG93IHBhdGggdGh1bmsiLCBr
aW5kID09IENvZGVGb3JDYWxsID8gImNhbGwiIDogImNvbnN0cnVjdCIsIHJlZ2lzdGVycyA9PSBN
dXN0UHJlc2VydmVSZWdpc3RlcnMgPyAiIHRoYXQgcHJlc2VydmVzIHJlZ2lzdGVycyIgOiAiIikp
OwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0Ns
b3N1cmUKICAgICAKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rQ2xvc3Vy
ZUNhbGxGb3IocmVnaXN0ZXJzKSk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigq
dm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigq
dm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgKCJMaW5rIGNsb3N1cmUgY2FsbCAlcyBzbG93IHBhdGggdGh1bmsiLCByZWdpc3Rl
cnMgPT0gTXVzdFByZXNlcnZlUmVnaXN0ZXJzID8gIiB0aGF0IHByZXNlcnZlcyByZWdpc3RlcnMi
IDogIiIpKTsKIH0KIApAQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgdmlydHVhbEZvclQKICAgICAKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRp
b25WaXJ0dWFsRm9yKGtpbmQsIHJlZ2lzdGVycykpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFMSVpF
X0NPREUoCiAgICAgICAgIHBhdGNoQnVmZmVyLAogICAgICAgICAoIlZpcnR1YWwgJXMlcyBzbG93
IHBhdGggdGh1bmsiLCBraW5kID09IENvZGVGb3JDYWxsID8gImNhbGwiIDogImNvbnN0cnVjdCIs
IHJlZ2lzdGVycyA9PSBNdXN0UHJlc2VydmVSZWdpc3RlcnMgPyAiIHRoYXQgcHJlc2VydmVzIHJl
Z2lzdGVycyIgOiAiIikpOwpAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbmF0aXZlRm9yR2UKIAogICAgIGppdC5qdW1wVG9FeGNlcHRpb25IYW5kbGVyKCk7
CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIm5hdGl2ZSAlcyVzIHRy
YW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wID8gIlRhaWwgIiA6ICIiLCB0b0NT
dHJpbmcoa2luZCkuZGF0YSgpKSk7CiB9CiAKQEAgLTUzMyw3ICs1MzMsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgYXJpdHlGaXh1cChWTSogdm0pCiAgICAgaml0LnJldCgpOwogI2VuZGlmCiAK
LSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwog
ICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoImZpeHVwIGFyaXR5IikpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJ
KHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodQogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpU
cnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklU
OjpyZWdUMCk7CiAgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKICAgICAKLSAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAg
IHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxMSW50ICVzIHByb2xvZ3VlIHRo
dW5rIiwgdGh1bmtLaW5kKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1Nyw3ICsyNjU3LDcgQEAgcHVibGlj
OgogICAgICAgICBiYWNrdHJhY2soKTsKIAogICAgICAgICAvLyBMaW5rICYgZmluYWxpemUgdGhl
IGNvZGUuCi0gICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqdm0sIHRoaXMsIFJFR0VYUF9D
T0RFX0lEKTsKKyAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCp2bSwgKnRoaXMsIFJFR0VY
UF9DT0RFX0lEKTsKICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5saW5rRGF0YUxhYmVscyhs
aW5rQnVmZmVyKTsKIAogICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0gTWF0Y2hPbmx5KSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wNy0wNyAgQmVuamFtaW4g
UG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTGlua0J1ZmZlciBzaG91
bGQgbm90IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIE1hY3JvQXNzZW1ibGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ2NjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAqIGNzc2ppdC9TZWxlY3RvckNv
bXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Y29tcGlsZSk6CisKIDIwMTQtMDctMDcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbaU9TIFdlYkdMXSBGaXggY3Jh
c2ggd2l0aCB0b28gbWFueSBuZXN0ZWQgZ2xzbCBmdW5jdGlvbnMuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc0OSw3ICs3NDksNyBAQCBpbmxpbmUgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBTZWxl
Y3RvCiAgICAgICAgIHJldHVybiBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpDYW5ub3RDb21w
aWxlOwogICAgIH0KIAotICAgIEpTQzo6TGlua0J1ZmZlciBsaW5rQnVmZmVyKCp2bSwgJm1fYXNz
ZW1ibGVyLCBDU1NfQ09ERV9JRCk7CisgICAgSlNDOjpMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKnZt
LCBtX2Fzc2VtYmxlciwgQ1NTX0NPREVfSUQpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2Z1bmN0aW9uQ2FsbHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGxpbmtCdWZmZXIubGluayht
X2Z1bmN0aW9uQ2FsbHNbaV0uZmlyc3QsIG1fZnVuY3Rpb25DYWxsc1tpXS5zZWNvbmQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234517</attachid>
            <date>2014-07-07 15:13:50 -0700</date>
            <delta_ts>2014-07-07 15:13:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134668-20140707151329.patch</filename>
            <type>text/plain</type>
            <size>40768</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcwODUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkxIEBA
CisyMDE0LTA3LTA3ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBMaW5rQnVmZmVyIHNob3VsZCBub3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgTWFj
cm9Bc3NlbWJsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNDY2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAg
ICAgIEluIEZUTCwgdGhlIExpbmtCdWZmZXIgY2FuIG91dGxpdmUgdGhlIE1hY3JvQXNzZW1ibGVy
IHRoYXQgd2FzIHVzZWQgZm9yIGNvZGUgZ2VuZXJhdGlvbi4KKyAgICAgICAgV2hlbiB0aGF0IGhh
cHBlbiwgdGhlIHBvaW50ZXIgbV9hc3NlbWJsZXIgcG9pbnRzIHRvIHJlbGVhc2VkIG1lbW9yeS4g
VGhhdCB3YXMgbm90IGNhdXNpbmcKKyAgICAgICAgaXNzdWVzIGJlY2F1c2UgdGhlIGF0dHJpYnV0
ZSBpcyBub3QgdXNlZCBhZnRlciBsaW5raW5nLCBidXQgdGhhdCB3YXMgbm90IHBhcnRpY3VsYXJp
bHkKKyAgICAgICAgZnV0dXJlIHByb29mLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVmYWN0b3Jz
IExpbmtCdWZmZXIgdG8gYXZvaWQgYW55IGxpZmV0aW1lIHJpc2suIFRoZSBNYWNyb0Fzc2VtYmxl
ciBpcyBub3cgcGFzc2VkCisgICAgICAgIGFzIGEgcmVmZXJlbmNlLCBpdCBpcyB1c2VkIGZvciBs
aW5raW5nIGJ1dCBubyByZWZlcmVuY2UgaXMgZXZlciBzdG9yZWQgd2l0aCB0aGUgTGlua0J1ZmZl
ci4KKworICAgICAgICBXaGlsZSBmaXhpbmcgdGhlIGNhbGwgc2l0ZXMgdG8gdXNlIGEgcmVmZXJl
bmNlLCBJIGFsc28gZGlzY292ZXJlZCBMaW5rQnVmZmVyLmggd2FzIGluY2x1ZGVkCisgICAgICAg
IGV2ZXJ5d2hlcmUuIEkgcmVmYWN0b3JlZCBzb21lICNpbmNsdWRlIHRvIGF2b2lkIHRoYXQuCisK
KyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtC
dWZmZXI6OmNvcHlDb21wYWN0QW5kTGlua0NvZGUpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVy
OjpsaW5rQ29kZSk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAg
KEpTQzo6TGlua0J1ZmZlcjo6TGlua0J1ZmZlcik6CisgICAgICAgICogYnl0ZWNvZGUvV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgICogZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICog
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpsaW5rRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFeGl0R2VuZXJhdGlvblRodW5r
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFbnRyeVRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Z2VuZXJh
dGVJQ0Zhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6RlRMOjpmaXhGdW5jdGlvbkJhc2VkT25TdGFj
a01hcHMpOgorICAgICAgICAqIGZ0bC9GVExKU0NhbGwuY3BwOgorICAgICAgICAqIGZ0bC9GVExK
U0NhbGwuaDoKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKiBm
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1
Yik6CisgICAgICAgICogZnRsL0ZUTFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6b3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkZUTDo6c2xvd1Bh
dGhDYWxsVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9Bcml0eUNoZWNrRmFpbFJldHVy
blRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzOjpy
ZXR1cm5QQ3NGb3IpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaml0L0pJVENh
bGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2Fs
bCk6CisgICAgICAgICogaml0L0pJVERpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogaml0L0pJ
VERpc2Fzc2VtYmxlci5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnN0cmluZ0dl
dEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbCk6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgICogaml0L1JlZ2lzdGVy
UHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRl
UmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyKToKKyAgICAgICAgKEpTQzo6cmVnaXN0ZXJSZXN0
b3JhdGlvblRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OmdlbmVyYXRlQnlJZFN0dWIpOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5
SUQpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpl
bWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAg
ICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRo
dW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmZpbmFsaXplKToK
KyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bGlua0Zv
clRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bGlua0Nsb3N1cmVDYWxsRm9yVGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphcml0eUZpeHVw
KToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAgICAgICogeWFyci9ZYXJySklULmNwcDoK
KyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Y29tcGlsZSk6CisKIDIwMTQtMDct
MDcgIFRpYm9yIE1lc3phcm9zICA8dG1lc3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgQWRkIG1pc3NpbmcgRU5BQkxFKEZUTF9KSVQpIGd1YXJkcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZp
c2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNyArNzgsMTcgQEAgTGlua0J1ZmZlcjo6Q29k
ZVJlZiBMaW5rQnVmZmVyOjpmaW5hbGl6ZQogCiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9O
KQogdGVtcGxhdGUgPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KLXZvaWQgTGlua0J1ZmZlcjo6
Y29weUNvbXBhY3RBbmRMaW5rQ29kZSh2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZv
cnQgZWZmb3J0KQordm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKE1hY3Jv
QXNzZW1ibGVyJiBtYWNyb0Fzc2VtYmxlciwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9u
RWZmb3J0IGVmZm9ydCkKIHsKLSAgICBtX2luaXRpYWxTaXplID0gbV9hc3NlbWJsZXItPm1fYXNz
ZW1ibGVyLmNvZGVTaXplKCk7CisgICAgbV9pbml0aWFsU2l6ZSA9IG1hY3JvQXNzZW1ibGVyLm1f
YXNzZW1ibGVyLmNvZGVTaXplKCk7CiAgICAgYWxsb2NhdGUobV9pbml0aWFsU2l6ZSwgb3duZXJV
SUQsIGVmZm9ydCk7CiAgICAgaWYgKGRpZEZhaWxUb0FsbG9jYXRlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICB1aW50OF90KiBpbkRhdGEgPSAodWludDhfdCopbV9hc3NlbWJsZXItPnVubGlua2Vk
Q29kZSgpOworICAgIHVpbnQ4X3QqIGluRGF0YSA9ICh1aW50OF90KiltYWNyb0Fzc2VtYmxlci51
bmxpbmtlZENvZGUoKTsKICAgICB1aW50OF90KiBvdXREYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4obV9jb2RlKTsKICAgICBpbnQgcmVhZFB0ciA9IDA7CiAgICAgaW50IHdyaXRlUHRy
ID0gMDsKLSAgICBWZWN0b3I8TGlua1JlY29yZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBq
dW1wc1RvTGluayA9IG1fYXNzZW1ibGVyLT5qdW1wc1RvTGluaygpOworICAgIFZlY3RvcjxMaW5r
UmVjb3JkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGp1bXBzVG9MaW5rID0gbWFjcm9Bc3Nl
bWJsZXIuanVtcHNUb0xpbmsoKTsKICAgICB1bnNpZ25lZCBqdW1wQ291bnQgPSBqdW1wc1RvTGlu
ay5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGp1bXBDb3VudDsgKytpKSB7
CiAgICAgICAgIGludCBvZmZzZXQgPSByZWFkUHRyIC0gd3JpdGVQdHI7CkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKAogICAgICAgICBB
U1NFUlQoISh3cml0ZVB0ciAlIDIpKTsKICAgICAgICAgd2hpbGUgKGNvcHlTb3VyY2UgIT0gY29w
eUVuZCkKICAgICAgICAgICAgICpjb3B5RHN0KysgPSAqY29weVNvdXJjZSsrOwotICAgICAgICBt
X2Fzc2VtYmxlci0+cmVjb3JkTGlua09mZnNldHMocmVhZFB0ciwganVtcHNUb0xpbmtbaV0uZnJv
bSgpLCBvZmZzZXQpOworICAgICAgICBtYWNyb0Fzc2VtYmxlci5yZWNvcmRMaW5rT2Zmc2V0cyhy
ZWFkUHRyLCBqdW1wc1RvTGlua1tpXS5mcm9tKCksIG9mZnNldCk7CiAgICAgICAgIHJlYWRQdHIg
Kz0gcmVnaW9uU2l6ZTsKICAgICAgICAgd3JpdGVQdHIgKz0gcmVnaW9uU2l6ZTsKICAgICAgICAg
ICAgIApAQCAtMTE2LDI2ICsxMTYsMjYgQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFu
ZExpbmtDb2RlKAogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0YXJnZXQgPSBvdXREYXRhICsg
anVtcHNUb0xpbmtbaV0udG8oKSAtIGV4ZWN1dGFibGVPZmZzZXRGb3IoanVtcHNUb0xpbmtbaV0u
dG8oKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgSnVtcExpbmtUeXBlIGp1bXBMaW5rVHlwZSA9
IG1fYXNzZW1ibGVyLT5jb21wdXRlSnVtcFR5cGUoanVtcHNUb0xpbmtbaV0sIG91dERhdGEgKyB3
cml0ZVB0ciwgdGFyZ2V0KTsKKyAgICAgICAgSnVtcExpbmtUeXBlIGp1bXBMaW5rVHlwZSA9IG1h
Y3JvQXNzZW1ibGVyLmNvbXB1dGVKdW1wVHlwZShqdW1wc1RvTGlua1tpXSwgb3V0RGF0YSArIHdy
aXRlUHRyLCB0YXJnZXQpOwogICAgICAgICAvLyBDb21wYWN0IGJyYW5jaCBpZiB3ZSBjYW4uLi4K
LSAgICAgICAgaWYgKG1fYXNzZW1ibGVyLT5jYW5Db21wYWN0KGp1bXBzVG9MaW5rW2ldLnR5cGUo
KSkpIHsKKyAgICAgICAgaWYgKG1hY3JvQXNzZW1ibGVyLmNhbkNvbXBhY3QoanVtcHNUb0xpbmtb
aV0udHlwZSgpKSkgewogICAgICAgICAgICAgLy8gU3RlcCBiYWNrIGluIHRoZSB3cml0ZSBzdHJl
YW0KLSAgICAgICAgICAgIGludDMyX3QgZGVsdGEgPSBtX2Fzc2VtYmxlci0+anVtcFNpemVEZWx0
YShqdW1wc1RvTGlua1tpXS50eXBlKCksIGp1bXBMaW5rVHlwZSk7CisgICAgICAgICAgICBpbnQz
Ml90IGRlbHRhID0gbWFjcm9Bc3NlbWJsZXIuanVtcFNpemVEZWx0YShqdW1wc1RvTGlua1tpXS50
eXBlKCksIGp1bXBMaW5rVHlwZSk7CiAgICAgICAgICAgICBpZiAoZGVsdGEpIHsKICAgICAgICAg
ICAgICAgICB3cml0ZVB0ciAtPSBkZWx0YTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci0+
cmVjb3JkTGlua09mZnNldHMoanVtcHNUb0xpbmtbaV0uZnJvbSgpIC0gZGVsdGEsIHJlYWRQdHIs
IHJlYWRQdHIgLSB3cml0ZVB0cik7CisgICAgICAgICAgICAgICAgbWFjcm9Bc3NlbWJsZXIucmVj
b3JkTGlua09mZnNldHMoanVtcHNUb0xpbmtbaV0uZnJvbSgpIC0gZGVsdGEsIHJlYWRQdHIsIHJl
YWRQdHIgLSB3cml0ZVB0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAganVt
cHNUb0xpbmtbaV0uc2V0RnJvbSh3cml0ZVB0cik7CiAgICAgfQogICAgIC8vIENvcHkgZXZlcnl0
aGluZyBhZnRlciB0aGUgbGFzdCBqdW1wCiAgICAgbWVtY3B5KG91dERhdGEgKyB3cml0ZVB0ciwg
aW5EYXRhICsgcmVhZFB0ciwgbV9pbml0aWFsU2l6ZSAtIHJlYWRQdHIpOwotICAgIG1fYXNzZW1i
bGVyLT5yZWNvcmRMaW5rT2Zmc2V0cyhyZWFkUHRyLCBtX2luaXRpYWxTaXplLCByZWFkUHRyIC0g
d3JpdGVQdHIpOworICAgIG1hY3JvQXNzZW1ibGVyLnJlY29yZExpbmtPZmZzZXRzKHJlYWRQdHIs
IG1faW5pdGlhbFNpemUsIHJlYWRQdHIgLSB3cml0ZVB0cik7CiAgICAgICAgIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBqdW1wQ291bnQ7ICsraSkgewogICAgICAgICB1aW50OF90KiBs
b2NhdGlvbiA9IG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS5mcm9tKCk7CiAgICAgICAgIHVpbnQ4
X3QqIHRhcmdldCA9IG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS50bygpIC0gZXhlY3V0YWJsZU9m
ZnNldEZvcihqdW1wc1RvTGlua1tpXS50bygpKTsKLSAgICAgICAgbV9hc3NlbWJsZXItPmxpbmso
anVtcHNUb0xpbmtbaV0sIGxvY2F0aW9uLCB0YXJnZXQpOworICAgICAgICBtYWNyb0Fzc2VtYmxl
ci5saW5rKGp1bXBzVG9MaW5rW2ldLCBsb2NhdGlvbiwgdGFyZ2V0KTsKICAgICB9CiAKICAgICBq
dW1wc1RvTGluay5jbGVhcigpOwpAQCAtMTUxLDIzICsxNTEsMjMgQEAgdm9pZCBMaW5rQnVmZmVy
Ojpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKAogI2VuZGlmCiAKIAotdm9pZCBMaW5rQnVmZmVyOjps
aW5rQ29kZSh2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQordm9p
ZCBMaW5rQnVmZmVyOjpsaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZv
aWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAjaWYgIUVOQUJM
RShCUkFOQ0hfQ09NUEFDVElPTikKICNpZiBkZWZpbmVkKEFTU0VNQkxFUl9IQVNfQ09OU1RBTlRf
UE9PTCkgJiYgQVNTRU1CTEVSX0hBU19DT05TVEFOVF9QT09MCi0gICAgbV9hc3NlbWJsZXItPm1f
YXNzZW1ibGVyLmJ1ZmZlcigpLmZsdXNoQ29uc3RhbnRQb29sKGZhbHNlKTsKKyAgICBtYWNyb0Fz
c2VtYmxlci5tX2Fzc2VtYmxlci5idWZmZXIoKS5mbHVzaENvbnN0YW50UG9vbChmYWxzZSk7CiAj
ZW5kaWYKLSAgICBBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlciA9IG1fYXNzZW1ibGVyLT5tX2Fzc2Vt
Ymxlci5idWZmZXIoKTsKKyAgICBBc3NlbWJsZXJCdWZmZXImIGJ1ZmZlciA9IG1hY3JvQXNzZW1i
bGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpOwogICAgIGFsbG9jYXRlKGJ1ZmZlci5jb2RlU2l6ZSgp
LCBvd25lclVJRCwgZWZmb3J0KTsKICAgICBpZiAoIW1fZGlkQWxsb2NhdGUpCiAgICAgICAgIHJl
dHVybjsKICAgICBBU1NFUlQobV9jb2RlKTsKICNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQotICAg
IG1fYXNzZW1ibGVyLT5tX2Fzc2VtYmxlci5wcmVwYXJlRXhlY3V0YWJsZUNvcHkobV9jb2RlKTsK
KyAgICBtYWNyb0Fzc2VtYmxlci5tX2Fzc2VtYmxlci5wcmVwYXJlRXhlY3V0YWJsZUNvcHkobV9j
b2RlKTsKICNlbmRpZgogICAgIG1lbWNweShtX2NvZGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5j
b2RlU2l6ZSgpKTsKICNpZiBDUFUoTUlQUykKLSAgICBtX2Fzc2VtYmxlci0+bV9hc3NlbWJsZXIu
cmVsb2NhdGVKdW1wcyhidWZmZXIuZGF0YSgpLCBtX2NvZGUpOworICAgIG1hY3JvQXNzZW1ibGVy
Lm1fYXNzZW1ibGVyLnJlbG9jYXRlSnVtcHMoYnVmZmVyLmRhdGEoKSwgbV9jb2RlKTsKICNlbmRp
ZgogI2VsaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgY29weUNvbXBhY3RBbmRMaW5rQ29kZTx1aW50
MTZfdD4ob3duZXJVSUQsIGVmZm9ydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDM4
ICs4MCwzNiBAQCBjbGFzcyBMaW5rQnVmZmVyIHsKICNlbmRpZgogCiBwdWJsaWM6Ci0gICAgTGlu
a0J1ZmZlcihWTSYgdm0sIE1hY3JvQXNzZW1ibGVyKiBtYXNtLCB2b2lkKiBvd25lclVJRCwgSklU
Q29tcGlsYXRpb25FZmZvcnQgZWZmb3J0ID0gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkKKyAg
ICBMaW5rQnVmZmVyKFZNJiB2bSwgTWFjcm9Bc3NlbWJsZXImIG1hY3JvQXNzZW1ibGVyLCB2b2lk
KiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0ID0gSklUQ29tcGlsYXRpb25N
dXN0U3VjY2VlZCkKICAgICAgICAgOiBtX3NpemUoMCkKICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBB
Q1RJT04pCiAgICAgICAgICwgbV9pbml0aWFsU2l6ZSgwKQogI2VuZGlmCiAgICAgICAgICwgbV9k
aWRBbGxvY2F0ZShmYWxzZSkKICAgICAgICAgLCBtX2NvZGUoMCkKLSAgICAgICAgLCBtX3N0b3Jh
Z2UobWFzbS0+bV9hc3NlbWJsZXIuYnVmZmVyKCkuc3RvcmFnZSgpKQotICAgICAgICAsIG1fYXNz
ZW1ibGVyKG1hc20pCisgICAgICAgICwgbV9zdG9yYWdlKG1hY3JvQXNzZW1ibGVyLm1fYXNzZW1i
bGVyLmJ1ZmZlcigpLnN0b3JhZ2UoKSkKICAgICAgICAgLCBtX3ZtKCZ2bSkKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgICwgbV9jb21wbGV0ZWQoZmFsc2UpCiAjZW5kaWYKICAgICB7Ci0gICAgICAg
IGxpbmtDb2RlKG93bmVyVUlELCBlZmZvcnQpOworICAgICAgICBsaW5rQ29kZShtYWNyb0Fzc2Vt
Ymxlciwgb3duZXJVSUQsIGVmZm9ydCk7CiAgICAgfQogCi0gICAgTGlua0J1ZmZlcihWTSYgdm0s
IE1hY3JvQXNzZW1ibGVyKiBtYXNtLCB2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKKyAgICBMaW5r
QnVmZmVyKFZNJiB2bSwgTWFjcm9Bc3NlbWJsZXImIG1hY3JvQXNzZW1ibGVyLCB2b2lkKiBjb2Rl
LCBzaXplX3Qgc2l6ZSkKICAgICAgICAgOiBtX3NpemUoc2l6ZSkKICNpZiBFTkFCTEUoQlJBTkNI
X0NPTVBBQ1RJT04pCiAgICAgICAgICwgbV9pbml0aWFsU2l6ZSgwKQogI2VuZGlmCiAgICAgICAg
ICwgbV9kaWRBbGxvY2F0ZShmYWxzZSkKICAgICAgICAgLCBtX2NvZGUoY29kZSkKLSAgICAgICAg
LCBtX3N0b3JhZ2UobWFzbS0+bV9hc3NlbWJsZXIuYnVmZmVyKCkuc3RvcmFnZSgpKQotICAgICAg
ICAsIG1fYXNzZW1ibGVyKG1hc20pCisgICAgICAgICwgbV9zdG9yYWdlKG1hY3JvQXNzZW1ibGVy
Lm1fYXNzZW1ibGVyLmJ1ZmZlcigpLnN0b3JhZ2UoKSkKICAgICAgICAgLCBtX3ZtKCZ2bSkKICNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgICwgbV9jb21wbGV0ZWQoZmFsc2UpCiAjZW5kaWYKICAgICB7
Ci0gICAgICAgIGxpbmtDb2RlKDAsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgIGxp
bmtDb2RlKG1hY3JvQXNzZW1ibGVyLCAwLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIH0K
IAogICAgIH5MaW5rQnVmZmVyKCkKQEAgLTI4NSwxMCArMjgzLDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhbGxvY2F0ZShzaXplX3QgaW5pdGlhbFNpemUsIHZvaWQqIG93bmVyVUlELCBKSVRDb21w
aWxhdGlvbkVmZm9ydCk7CiAgICAgdm9pZCBzaHJpbmsoc2l6ZV90IG5ld1NpemUpOwogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBsaW5rQ29kZSh2b2lkKiBvd25lclVJRCwgSklUQ29tcGls
YXRpb25FZmZvcnQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgbGlua0NvZGUoTWFjcm9B
c3NlbWJsZXImLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQpOwogI2lmIEVO
QUJMRShCUkFOQ0hfQ09NUEFDVElPTikKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5zdHJ1Y3Rp
b25UeXBlPgotICAgIHZvaWQgY29weUNvbXBhY3RBbmRMaW5rQ29kZSh2b2lkKiBvd25lclVJRCwg
SklUQ29tcGlsYXRpb25FZmZvcnQpOworICAgIHZvaWQgY29weUNvbXBhY3RBbmRMaW5rQ29kZShN
YWNyb0Fzc2VtYmxlciYsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCk7CiAj
ZW5kaWYKIAogICAgIHZvaWQgcGVyZm9ybUZpbmFsaXphdGlvbigpOwpAQCAtMzA5LDcgKzMwNyw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZEFsbG9jYXRlOwogICAgIHZvaWQqIG1fY29kZTsK
ICAgICBSZWZQdHI8QXNzZW1ibGVyRGF0YT4gbV9zdG9yYWdlOwotICAgIE1hY3JvQXNzZW1ibGVy
KiBtX2Fzc2VtYmxlcjsKICAgICBWTSogbV92bTsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBt
X2NvbXBsZXRlZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBv
aW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0
Y2hwb2ludC5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9XYXRjaHBvaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKIAotI2luY2x1ZGUg
IkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGlsYXRpb25UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuaAko
cmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTQgKzMwLDE3IEBACiAKICNpbmNsdWRlICJE
RkdDb21tb24uaCIKICNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgotI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotI2luY2x1ZGUgIlByb2ZpbGVyRGF0
YWJhc2UuaCIKKyNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBMaW5rQnVmZmVyOworCituYW1lc3BhY2UgREZHIHsKIAogY2xh
c3MgR3JhcGg7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKCkKIHsK
LSAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVm
ZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jaywgSklUQ29tcGlsYXRpb25DYW5GYWlsKSk7Cisg
ICAgT3duUHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZl
cigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpKTsKICAg
ICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxsb2NhdGUoKSkgewogICAgICAgICBtX2dyYXBo
Lm1fcGxhbi5maW5hbGl6ZXIgPSBhZG9wdFB0cihuZXcgRmFpbGVkRmluYWxpemVyKG1fZ3JhcGgu
bV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogdm9pZCBKSVRDb21waWxlcjo6bGlua0Z1bmN0aW9u
KCkKIHsKICAgICAvLyA9PT0gTGluayA9PT0KLSAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1
ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jaywg
SklUQ29tcGlsYXRpb25DYW5GYWlsKSk7CisgICAgT3duUHRyPExpbmtCdWZmZXI+IGxpbmtCdWZm
ZXIgPSBhZG9wdFB0cihuZXcgTGlua0J1ZmZlcigqbV92bSwgKnRoaXMsIG1fY29kZUJsb2NrLCBK
SVRDb21waWxhdGlvbkNhbkZhaWwpKTsKICAgICBpZiAobGlua0J1ZmZlci0+ZGlkRmFpbFRvQWxs
b2NhdGUoKSkgewogICAgICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBhZG9wdFB0cihu
ZXcgRmFpbGVkRmluYWxpemVyKG1fZ3JhcGgubV9wbGFuKSk7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIGNv
bXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgCiAgICAgICAgIGV4aXRDb21w
aWxlci5jb21waWxlRXhpdChleGl0LCBvcGVyYW5kcywgcmVjb3ZlcnkpOwogICAgICAgICAKLSAg
ICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIGNvZGVCbG9jayk7CisgICAg
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIGNvZGVCbG9jayk7CiAgICAgICAg
IGV4aXQubV9jb2RlID0gRklOQUxJWkVfQ09ERV9JRigKICAgICAgICAgICAgIHNob3VsZFNob3dE
aXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKICAgICAgICAgICAgIHBhdGNo
QnVmZmVyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lv
biAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSw4ICs2NSw5IEBACiAjaW5jbHVkZSAiREZHVmlydHVhbFJlZ2lzdGVy
QWxsb2NhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCi0jaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgor
I2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KIAogI2lmIEVOQUJMRShGVExfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGh1bmtzLmNwcAkocmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKICAgICAKICAgICBqaXQuanVtcChN
YWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKCZ2bS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlv
bikpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxf
VEhVTktfSUQpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CiAgICAgCiAgICAgcGF0Y2hCdWZmZXIubGluayhmdW5jdGlvbkNhbGwsIGNvbXBp
bGVPU1JFeGl0KTsKICAgICAKQEAgLTEzMSw3ICsxMzEsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgb3NyRW50cnlUaHVua0dlbmVyCiAgICAgb2subGluaygmaml0KTsKICAgICBqaXQuanVtcChH
UFJJbmZvOjpyZWdUMSk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGpp
dCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZl
ciwgKCJERkcgT1NSIGVudHJ5IHRodW5rIikpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIGdlbmVyYXRlSUNGYXN0UGF0aCgKICAgICAgICAgY2hhciogc3RhcnRPZklD
ID0KICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsg
cmVjb3JkLmluc3RydWN0aW9uT2Zmc2V0OwogICAgICAgICAKLSAgICAgICAgTGlua0J1ZmZlciBs
aW5rQnVmZmVyKHZtLCAmZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMpOworICAgICAg
ICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVP
ZklDKTsKICAgICAgICAgLy8gTm90ZTogd2UgY291bGQgaGFuZGxlIHRoZSAhaXNWYWxpZCgpIGNh
c2UuIFdlIGp1c3QgZG9uJ3QgYXBwZWFyIHRvIGhhdmUgYQogICAgICAgICAvLyByZWFzb24gdG8g
ZG8gc28sIHlldC4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkp
OwpAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNr
TWFwcygKICAgICAgICAgY2hlY2tKSVQuanVtcChleGNlcHRpb25Db250aW51ZUFyZzFTZXQpOwog
CiAgICAgICAgIE93blB0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyID0gYWRvcHRQdHIobmV3IExp
bmtCdWZmZXIoCi0gICAgICAgICAgICB2bSwgJmNoZWNrSklULCBjb2RlQmxvY2ssIEpJVENvbXBp
bGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAgICAgICAgIHZtLCBjaGVja0pJVCwgY29kZUJsb2Nr
LCBKSVRDb21waWxhdGlvbk11c3RTdWNjZWVkKSk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHIobG9va3VwRXhjZXB0aW9uSGFuZGxlcikpOwogICAgICAgICAKICAg
ICAgICAgc3RhdGUuZmluYWxpemVyLT5oYW5kbGVFeGNlcHRpb25zTGlua0J1ZmZlciA9IGxpbmtC
dWZmZXIucmVsZWFzZSgpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0
aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZGlkU2VlVW53aW5k
SW5mbyk7CiAgICAgICAgIAogICAgICAgICBPd25QdHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciA9
IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKAotICAgICAgICAgICAgdm0sICZleGl0VGh1bmtHZW5l
cmF0b3IsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkpOworICAgICAgICAg
ICAgdm0sIGV4aXRUaHVua0dlbmVyYXRvciwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11c3RT
dWNjZWVkKSk7CiAgICAgICAgIAogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0ZS5maW5hbGl6
ZXItPm9zckV4aXQuc2l6ZSgpID09IHN0YXRlLmppdENvZGUtPm9zckV4aXQuc2l6ZSgpKTsKICAg
ICAgICAgCkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9u
U3RhY2tNYXBzKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBleGNlcHRpb25KdW1wID0g
c2xvd1BhdGhKSVQuanVtcCgpOwogICAgICAgICAKICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5z
aWRlQ29kZUxpbmtCdWZmZXIgPSBhZG9wdFB0cigKLSAgICAgICAgICAgIG5ldyBMaW5rQnVmZmVy
KHZtLCAmc2xvd1BhdGhKSVQsIGNvZGVCbG9jaywgSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkp
OworICAgICAgICAgICAgbmV3IExpbmtCdWZmZXIodm0sIHNsb3dQYXRoSklULCBjb2RlQmxvY2ss
IEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5z
aWRlQ29kZUxpbmtCdWZmZXItPmxpbmsoCiAgICAgICAgICAgICBleGNlcHRpb25KdW1wLCBzdGF0
ZS5maW5hbGl6ZXItPmhhbmRsZUV4Y2VwdGlvbnNMaW5rQnVmZmVyLT5lbnRyeXBvaW50KCkpOwog
ICAgICAgICAKQEAgLTQxOCw3ICs0MTgsNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2Vk
T25TdGFja01hcHMoCiAgICAgICAgIAogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPSBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIGNhbGwubV9pbnN0cnVjdGlvbk9mZnNl
dDsKICAgICAgICAgCi0gICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgJmZhc3RQYXRo
SklULCBzdGFydE9mSUMsIHNpemVPZkNhbGwoKSk7CisgICAgICAgIExpbmtCdWZmZXIgbGlua0J1
ZmZlcih2bSwgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mQ2FsbCgpKTsKICAgICAgICAg
aWYgKCFsaW5rQnVmZmVyLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgZGF0YUxvZygiRmFpbGVk
IHRvIGluc2VydCBpbmxpbmUgY2FjaGUgZm9yIGNhbGwgYmVjYXVzZSB3ZSB0aG91Z2h0IHRoZSBz
aXplIHdvdWxkIGJlICIsIHNpemVPZkNhbGwoKSwgIiBidXQgaXQgZW5kZWQgdXAgYmVpbmcgIiwg
ZmFzdFBhdGhKSVQubV9hc3NlbWJsZXIuY29kZVNpemUoKSwgIiBwcmlvciB0byBjb21wYWN0aW9u
LlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsLmNwcAkocmV2aXNpb24gMTcwODUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKICNpbmNsdWRlICJERkdO
b2RlLmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEZUTCB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSlNDYWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuaAkocmV2
aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKU0NhbGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDExIEBACiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJz
LmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgot
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIExpbmtC
dWZmZXI7CisKIG5hbWVzcGFjZSBERkcgewogc3RydWN0IE5vZGU7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsx
NzYsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKICAgICAgICAgbWFpblBhdGhKdW1wcy5hcHBlbmQoaml0Lmp1bXAoKSk7CiAK
LSAgICAgICAgbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCAmaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAgICAgbGlua0J1ZmZl
ciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25NdXN0U3VjY2VlZCkpOwogICAgICAgICBsaW5rQnVmZmVyLT5saW5rKGNhbGxBcml0eUNo
ZWNrLCBjb2RlQmxvY2stPm1faXNDb25zdHJ1Y3RvciA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5
Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayk7CiAgICAgICAgIGxpbmtCdWZmZXItPmxp
bmsoY2FsbEFyaXR5Rml4dXAsIEZ1bmN0aW9uUHRyKCh2bS5nZXRDVElTdHViKGFyaXR5Rml4dXAp
KS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgICAgICBsaW5rQnVmZmVyLT5saW5r
KG1haW5QYXRoSnVtcHMsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3Rh
dGUuZ2VuZXJhdGVkRnVuY3Rpb24pKSk7CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBsaW5rKFN0
YXRlJiBzdGF0ZSkKICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCBtYWluUGF0aEp1bXAgPSBqaXQuanVtcCgpOwogICAgICAgICAK
LSAgICAgICAgbGlua0J1ZmZlciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCAmaml0LCBj
b2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpKTsKKyAgICAgICAgbGlua0J1ZmZl
ciA9IGFkb3B0UHRyKG5ldyBMaW5rQnVmZmVyKHZtLCBqaXQsIGNvZGVCbG9jaywgSklUQ29tcGls
YXRpb25NdXN0U3VjY2VlZCkpOwogICAgICAgICBsaW5rQnVmZmVyLT5saW5rKG1haW5QYXRoSnVt
cCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0ZS5nZW5lcmF0ZWRG
dW5jdGlvbikpKTsKIAogICAgICAgICBzdGF0ZS5qaXRDb2RlLT5pbml0aWFsaXplQWRkcmVzc0Zv
ckNhbGwobGlua0J1ZmZlci0+bG9jYXRpb25PZihzdGFydCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3MDg1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiRlRMT3V0cHV0LmgiCiAj
aW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKLSNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAko
cmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0
Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMsNyArMzYzLDcgQEAgc3RhdGljIHZv
aWQgY29tcGlsZVN0dWIoCiAgICAgCiAgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KGppdCwgZXhp
dCk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIGNvZGVCbG9j
ayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgY29kZUJsb2NrKTsKICAg
ICBleGl0Lm1fY29kZSA9IEZJTkFMSVpFX0NPREVfSUYoCiAgICAgICAgIHNob3VsZFNob3dEaXNh
c3NlbWJseSgpIHx8IE9wdGlvbnM6OnZlcmJvc2VPU1IoKSB8fCBPcHRpb25zOjp2ZXJib3NlRlRM
T1NSRXhpdCgpLAogICAgICAgICBwYXRjaEJ1ZmZlciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTFRodW5rcy5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3
IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBvc3JFeGl0R2VuZXJhdGlvblQKIAogICAgIGppdC5y
ZXQoKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxf
VEhVTktfSUQpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoZnVuY3Rpb25DYWxsLCBjb21waWxlRlRM
T1NSRXhpdCk7CiAgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiRlRMIE9T
UiBleGl0IGdlbmVyYXRpb24gdGh1bmsiKSk7CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHNsb3dQYXRoQ2FsbFRodW5rRwogICAgIAogICAgIGppdC5yZXQoKTsK
IAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwog
ICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwgRnVuY3Rpb25QdHIoa2V5LmNhbGxUYXJnZXQoKSkp
OwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkZUTCBzbG93IHBhdGgg
Y2FsbCB0aHVuayBmb3IgJXMiLCB0b0NTdHJpbmcoa2V5KS5kYXRhKCkpKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXJpdHlDaGVja0ZhaWxSZXR1
cm5UaHVua3MuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0FyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcs
NyArOTcsNyBAQCBDb2RlTG9jYXRpb25MYWJlbCogQXJpdHlDaGVja0ZhaWxSZXR1cm5UCiAgICAg
ICAgIGppdC5qdW1wKEdQUkluZm86OnJlZ1QyKTsKICAgICB9CiAgICAgCi0gICAgTGlua0J1ZmZl
ciBsaW5rQnVmZmVyKHZtLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIExpbmtCdWZmZXIg
bGlua0J1ZmZlcih2bSwgaml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIAogICAgIHVuc2lnbmVk
IHJldHVyblBDc1NpemUgPSBudW1FeHBlY3RlZEFyZ3VtZW50c0luY2x1ZGluZ1RoaXMgLyBzdGFj
a0FsaWdubWVudFJlZ2lzdGVycygpICsgMTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29kZUxvY2F0
aW9uTGFiZWxbXT4gcmV0dXJuUENzID0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJ
KHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uOjpTU0UyQ2hlY2tTCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAj
aW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5nVG9vbC5oIgpAQCAtNTg2
LDcgKzU4Nyw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAg
ICBpZiAobV9kaXNhc3NlbWJsZXIpCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNv
ZGUobGFiZWwoKSk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBt
X2NvZGVCbG9jaywgZWZmb3J0KTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAq
dGhpcywgbV9jb2RlQmxvY2ssIGVmZm9ydCk7CiAgICAgaWYgKHBhdGNoQnVmZmVyLmRpZEZhaWxU
b0FsbG9jYXRlKCkpCiAgICAgICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTcw
ODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJSZXN1bHRU
eXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdUb29sLmgiCkBAIC0zNzcsNyArMzc4LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIHJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKHJlZ1QyKTsKICAgICBKdW1wIHNsb3cgPSBqdW1wKCk7CiAgICAg
Ci0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgdGhpcywgbV9jb2RlQmxvY2spOwor
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBtX2NvZGVCbG9jayk7CiAg
ICAgCiAgICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cihjb2RlUHRyLmV4ZWN1
dGFibGVBZGRyZXNzKCkpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5m
by0+aG90UGF0aE90aGVyLmxhYmVsQXRPZmZzZXQoMCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJSZXBh
dGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlNhbXBsaW5n
VG9vbC5oIgpAQCAtMjg2LDcgKzI4Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1
cmVDYWxsKENhbGwKICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMik7
CiAgICAgSnVtcCBzbG93ID0ganVtcCgpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKm1fdm0sIHRoaXMsIG1fY29kZUJsb2NrKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KCptX3ZtLCAqdGhpcywgbV9jb2RlQmxvY2spOwogICAgIAogICAgIHBhdGNoQnVmZmVyLmxpbmso
Y2FsbCwgRnVuY3Rpb25QdHIoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgcGF0
Y2hCdWZmZXIubGluayhkb25lLCBjYWxsTGlua0luZm8tPmhvdFBhdGhPdGhlci5sYWJlbEF0T2Zm
c2V0KDApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2Vt
Ymxlci5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmgJKHJldmlzaW9uIDE3MDg1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDE0ICsyOCwxOCBAQAogCiAjaWYgRU5BQkxFKEpJVCkKIAotI2luY2x1ZGUgIkxp
bmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgotI2luY2x1ZGUgIlByb2Zp
bGVyRGF0YWJhc2UuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xh
c3MgTGlua0J1ZmZlcjsKKworbmFtZXNwYWNlIFByb2ZpbGVyIHsKK2NsYXNzIENvbXBpbGF0aW9u
OworfQogCiBjbGFzcyBKSVREaXNhc3NlbWJsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkocmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgSklUOjpD
b2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdgogICAgIGp1bXBUb0V4Y2VwdGlvbkhh
bmRsZXIoKTsKIAogICAgIC8vIEFsbCB0cmFtcG9saW5lcyBjb25zdHJ1Y3RlZCEgY29weSB0aGUg
Y29kZSwgbGluayB1cCBjYWxscywgYW5kIHNldCB0aGUgcG9pbnRlcnMgb24gdGhlIE1hY2hpbmUg
b2JqZWN0LgotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sIHRoaXMsIEdMT0JBTF9U
SFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMsIEdMT0JB
TF9USFVOS19JRCk7CiAKICAgICBwYXRjaEJ1ZmZlci5saW5rKG5hdGl2ZUNhbGwsIEZ1bmN0aW9u
UHRyKGZ1bmMpKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJKSVQg
Q1RJIG5hdGl2ZSBjYWxsIikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKLSNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWF4
RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKICNpbmNsdWRlICJTbG93UGF0aENhbGwuaCIK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTcw
ODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6
OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmUKICAgICBqaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJl
Z1QwKTsKICAgICBqaXQucmV0KCk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigq
dm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigq
dm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgKCJTdHJpbmcgZ2V0X2J5X3ZhbCBzdHViIikpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24g
MTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3Ry
aW5nR2V0QnlWYWxTdHViR2VuZQogICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDAp
OwogICAgIGppdC5yZXQoKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwg
JmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwg
aml0LCBHTE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVm
ZmVyLCAoIlN0cmluZyBnZXRfYnlfdmFsIHN0dWIiKSk7CiB9CiAKQEAgLTEwMDcsNyArMTAwNyw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5VmFsKEJ5VmFsSW4KICAgICAKICAgICBK
dW1wIGRvbmUgPSBqdW1wKCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0
aGlzLCBtX2NvZGVCbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRo
aXMsIG1fY29kZUJsb2NrKTsKICAgICAKICAgICBwYXRjaEJ1ZmZlci5saW5rKGJhZFR5cGUsIENv
ZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFi
bGVBZGRyZXNzKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLmxhYmVsQXRPZmZzZXQoYnlWYWxJbmZv
LT5yZXR1cm5BZGRyZXNzVG9TbG93UGF0aCkpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nh
c2VzLCBDb2RlTG9jYXRpb25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21F
eGVjdXRhYmxlQWRkcmVzcyhyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS5sYWJlbEF0T2Zmc2V0KGJ5
VmFsSW5mby0+cmV0dXJuQWRkcmVzc1RvU2xvd1BhdGgpKTsKQEAgLTEwNjQsNyArMTA2NCw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5VmFsKEJ5VmFsSW4KICAgICAKICAgICBKdW1w
IGRvbmUgPSBqdW1wKCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCB0aGlz
LCBtX2NvZGVCbG9jayk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV92bSwgKnRoaXMs
IG1fY29kZUJsb2NrKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGJhZFR5cGUsIENvZGVMb2NhdGlv
bkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNz
KHJldHVybkFkZHJlc3MudmFsdWUoKSkpLmxhYmVsQXRPZmZzZXQoYnlWYWxJbmZvLT5yZXR1cm5B
ZGRyZXNzVG9TbG93UGF0aCkpOwogICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvd0Nhc2VzLCBDb2Rl
TG9jYXRpb25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxl
QWRkcmVzcyhyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS5sYWJlbEF0T2Zmc2V0KGJ5VmFsSW5mby0+
cmV0dXJuQWRkcmVzc1RvU2xvd1BhdGgpKTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGJ5
VmFsSW5mby0+YmFkVHlwZUp1bXAubGFiZWxBdE9mZnNldChieVZhbEluZm8tPmJhZFR5cGVKdW1w
VG9Eb25lKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2Vy
dmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwCShyZXZp
c2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2Vy
dmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVSZWdpc3RlclByCiAgICAgaml0LnJl
c3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAg
IEFzc2VtYmx5SGVscGVyczo6SnVtcCBqdW1wID0gaml0Lmp1bXAoKTsKICAgICAKLSAgICBMaW5r
QnVmZmVyIGxpbmtCdWZmZXIodm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1
ZmZlciBsaW5rQnVmZmVyKHZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgbGlua0J1ZmZl
ci5saW5rKGp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKHRhcmdldCkpOwogCiAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VGVExUb0pTVGh1bmsoKSkKQEAgLTIyNiw3ICsyMjYsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgcmVnaXN0ZXJSZXN0b3JhdGlvCiB7CiAgICAgQXNzZW1ibHlIZWxwZXJzIGpp
dCh2bSwgMCk7CiAgICAgZ2VuZXJhdGVSZWdpc3RlclJlc3RvcmF0aW9uKGppdCk7Ci0gICAgTGlu
a0J1ZmZlciBsaW5rQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5r
QnVmZmVyIGxpbmtCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJu
IEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJSZWdpc3RlciByZXN0b3JhdGlvbiB0aHVuayIp
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lv
biAxNzA4NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NjUsNyArNTY1LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVCeUlkU3R1
YigKICAgICB9CiAgICAgZW1pdFJlc3RvcmVTY3JhdGNoKHN0dWJKaXQsIG5lZWRUb1Jlc3RvcmVT
Y3JhdGNoLCBzY3JhdGNoR1BSLCBzdWNjZXNzLCBmYWlsLCBmYWlsdXJlQ2FzZXMpOwogICAgIAot
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2Nr
KCkpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBzdHViSml0LCBleGVjLT5jb2Rl
QmxvY2soKSk7CiAgICAgCiAgICAgbGlua1Jlc3RvcmVTY3JhdGNoKHBhdGNoQnVmZmVyLCBuZWVk
VG9SZXN0b3JlU2NyYXRjaCwgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzLCBzdWNjZXNzTGFi
ZWwsIHNsb3dDYXNlTGFiZWwpOwogICAgIGlmIChraW5kID09IENhbGxDdXN0b21HZXR0ZXIgfHwg
a2luZCA9PSBDYWxsQ3VzdG9tU2V0dGVyKSB7CkBAIC02NzgsNyArNjc4LDcgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogCiAgICAgICAgICAgICBlbWl0UmVzdG9y
ZVNjcmF0Y2goc3R1YkppdCwgbmVlZFRvUmVzdG9yZVNjcmF0Y2gsIHNjcmF0Y2hHUFIsIHN1Y2Nl
c3MsIGZhaWwsIGZhaWx1cmVDYXNlcyk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgY29kZUJsb2NrKTsKKyAgICAgICAgICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBzdHViSml0LCBjb2RlQmxvY2spOwogCiAgICAg
ICAgICAgICBsaW5rUmVzdG9yZVNjcmF0Y2gocGF0Y2hCdWZmZXIsIG5lZWRUb1Jlc3RvcmVTY3Jh
dGNoLCBzdHViSW5mbywgc3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzKTsKIApAQCAtNzA4LDcg
KzcwOCw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzdWNjZXNzID0gc3R1YkppdC5qdW1wKCk7CiAKLSAg
ICAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZzdHViSml0LCBjb2RlQmxvY2spOwor
ICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgY29kZUJsb2NrKTsK
IAogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkpOwog
ICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKGZhaWx1cmUsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU2xvd0Nhc2UpKTsK
QEAgLTk1Myw3ICs5NTMsNyBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAg
ICAgIGZhaWx1cmUgPSBiYWRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAotICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBzdHViSml0LCBleGVjLT5jb2RlQmxvY2soKSk7CiAgICAg
cGF0Y2hCdWZmZXIubGluayhzdWNjZXNzLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFi
ZWxBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpKTsKICAgICBwYXRjaEJ1
ZmZlci5saW5rKGZhaWx1cmUsIGZhaWx1cmVMYWJlbCk7CiAgICAgICAgICAgICAKQEAgLTExNDAs
NyArMTE0MCw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAg
c3VjY2Vzc0luU2xvd1BhdGggPSBzdHViSml0Lmp1bXAoKTsKICAgICB9CiAgICAgCi0gICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sICZzdHViSml0LCBleGVjLT5jb2RlQmxvY2soKSk7Cisg
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIHN0dWJKaXQsIGV4ZWMtPmNvZGVCbG9jaygp
KTsKICAgICBwYXRjaEJ1ZmZlci5saW5rKHN1Y2Nlc3MsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbi5sYWJlbEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSkpOwogICAg
IGlmIChhbGxvY2F0b3IuZGlkUmV1c2VSZWdpc3RlcnMoKSkKICAgICAgICAgcGF0Y2hCdWZmZXIu
bGluayhmYWlsdXJlLCBmYWlsdXJlTGFiZWwpOwpAQCAtMTUxMyw3ICsxNTEzLDcgQEAgc3RhdGlj
IElubGluZUNhY2hlQWN0aW9uIHRyeVJlcGF0Y2hJbigKICAgICAgICAgCiAgICAgICAgIGVtaXRS
ZXN0b3JlU2NyYXRjaChzdHViSml0LCBuZWVkVG9SZXN0b3JlU2NyYXRjaCwgc2NyYXRjaEdQUiwg
c3VjY2VzcywgZmFpbCwgZmFpbHVyZUNhc2VzKTsKICAgICAgICAgCi0gICAgICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1YkppdCwgZXhlYy0+Y29kZUJsb2NrKCkp
OwogCiAgICAgICAgIGxpbmtSZXN0b3JlU2NyYXRjaChwYXRjaEJ1ZmZlciwgbmVlZFRvUmVzdG9y
ZVNjcmF0Y2gsIHN1Y2Nlc3MsIGZhaWwsIGZhaWx1cmVDYXNlcywgc3VjY2Vzc0xhYmVsLCBzbG93
Q2FzZUxhYmVsKTsKICAgICAgICAgCkBAIC0xNjc2LDcgKzE2NzYsNyBAQCB2b2lkIGxpbmtDbG9z
dXJlQ2FsbCgKICAgICBzdHViSml0LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQ
UkluZm86OnJlZ1Q0KTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgc2xvdyA9IHN0dWJKaXQu
anVtcCgpOwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmc3R1YkppdCwg
Y2FsbGVyQ29kZUJsb2NrKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgc3R1Ykpp
dCwgY2FsbGVyQ29kZUJsb2NrKTsKICAgICAKICAgICBwYXRjaEJ1ZmZlci5saW5rKGNhbGwsIEZ1
bmN0aW9uUHRyKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwogICAgIGlmIChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlz
aW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVu
a0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZmluYWxpemUoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGZhbGxiYWNrLCBjb25zdCBjaGFyKiB0aHVua0tpbmQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sIHRoaXMsIEdMT0JB
TF9USFVOS19JRCk7CisgICAgICAgICAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX3ZtLCAq
dGhpcywgR0xPQkFMX1RIVU5LX0lEKTsKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9m
YWlsdXJlcywgQ29kZUxvY2F0aW9uTGFiZWwoZmFsbGJhY2spKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxzLnNpemUoKTsgaSsrKQogICAgICAgICAgICAgICAg
IHBhdGNoQnVmZmVyLmxpbmsobV9jYWxsc1tpXS5maXJzdCwgbV9jYWxsc1tpXS5zZWNvbmQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAko
cmV2aXNpb24gMTcwODUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiB0aHJvd0V4Y2VwdGlvbkZyb20KICAgICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdH
UFIwKTsKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcigpOwogCi0gICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJUaHJvdyBleGNlcHRpb24gZnJvbSBjYWxsIHNsb3cg
cGF0aCB0aHVuayIpKTsKIH0KIApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgbGlua0ZvclRodW4KICAgICAKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBv
cGVyYXRpb25MaW5rRm9yKGtpbmQsIHJlZ2lzdGVycykpOwogICAgIAotICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAgcmV0dXJuIEZJTkFM
SVpFX0NPREUoCiAgICAgICAgIHBhdGNoQnVmZmVyLAogICAgICAgICAoIkxpbmsgJXMlcyBzbG93
IHBhdGggdGh1bmsiLCBraW5kID09IENvZGVGb3JDYWxsID8gImNhbGwiIDogImNvbnN0cnVjdCIs
IHJlZ2lzdGVycyA9PSBNdXN0UHJlc2VydmVSZWdpc3RlcnMgPyAiIHRoYXQgcHJlc2VydmVzIHJl
Z2lzdGVycyIgOiAiIikpOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgbGlua0Nsb3N1cmUKICAgICAKICAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVy
YXRpb25MaW5rQ2xvc3VyZUNhbGxGb3IocmVnaXN0ZXJzKSk7CiAgICAgCi0gICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqdm0sICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xPQkFMX1RIVU5LX0lEKTsKICAgICByZXR1cm4gRklO
QUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJMaW5rIGNsb3N1cmUgY2FsbCAlcyBzbG93IHBhdGgg
dGh1bmsiLCByZWdpc3RlcnMgPT0gTXVzdFByZXNlcnZlUmVnaXN0ZXJzID8gIiB0aGF0IHByZXNl
cnZlcyByZWdpc3RlcnMiIDogIiIpKTsKIH0KIApAQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVhbEZvclQKICAgICAKICAgICBzbG93UGF0aEZvcihq
aXQsIHZtLCBvcGVyYXRpb25WaXJ0dWFsRm9yKGtpbmQsIHJlZ2lzdGVycykpOwogICAgIAotICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBqaXQsIEdMT0JBTF9USFVOS19JRCk7CiAgICAg
cmV0dXJuIEZJTkFMSVpFX0NPREUoCiAgICAgICAgIHBhdGNoQnVmZmVyLAogICAgICAgICAoIlZp
cnR1YWwgJXMlcyBzbG93IHBhdGggdGh1bmsiLCBraW5kID09IENvZGVGb3JDYWxsID8gImNhbGwi
IDogImNvbnN0cnVjdCIsIHJlZ2lzdGVycyA9PSBNdXN0UHJlc2VydmVSZWdpc3RlcnMgPyAiIHRo
YXQgcHJlc2VydmVzIHJlZ2lzdGVycyIgOiAiIikpOwpAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKIAogICAgIGppdC5qdW1wVG9FeGNl
cHRpb25IYW5kbGVyKCk7CiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBH
TE9CQUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAo
Im5hdGl2ZSAlcyVzIHRyYW1wb2xpbmUiLCBlbnRyeVR5cGUgPT0gRW50ZXJWaWFKdW1wID8gIlRh
aWwgIiA6ICIiLCB0b0NTdHJpbmcoa2luZCkuZGF0YSgpKSk7CiB9CiAKQEAgLTUzMyw3ICs1MzMs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJpdHlGaXh1cChWTSogdm0pCiAgICAgaml0LnJl
dCgpOwogI2VuZGlmCiAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9C
QUxfVEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoImZp
eHVwIGFyaXR5IikpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5jcHAJKHJldmlzaW9uIDE3MDg1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFRodW5rcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodQogICAgIGppdC5tb3ZlKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSks
IEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CiAgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgJmppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCp2bSwgaml0LCBHTE9CQUxf
VEhVTktfSUQpOwogICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCAoIkxMSW50
ICVzIHByb2xvZ3VlIHRodW5rIiwgdGh1bmtLaW5kKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1Nyw3ICsy
NjU3LDcgQEAgcHVibGljOgogICAgICAgICBiYWNrdHJhY2soKTsKIAogICAgICAgICAvLyBMaW5r
ICYgZmluYWxpemUgdGhlIGNvZGUuCi0gICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigqdm0s
IHRoaXMsIFJFR0VYUF9DT0RFX0lEKTsKKyAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCp2
bSwgKnRoaXMsIFJFR0VYUF9DT0RFX0lEKTsKICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5s
aW5rRGF0YUxhYmVscyhsaW5rQnVmZmVyKTsKIAogICAgICAgICBpZiAoY29tcGlsZU1vZGUgPT0g
TWF0Y2hPbmx5KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzA4NTMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0w
Ny0wNyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
TGlua0J1ZmZlciBzaG91bGQgbm90IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIE1hY3JvQXNzZW1i
bGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ2
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAqIGNz
c2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29t
cGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Y29tcGlsZSk6CisKIDIwMTQtMDctMDcgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbaU9T
IFdlYkdMXSBGaXggY3Jhc2ggd2l0aCB0b28gbWFueSBuZXN0ZWQgZ2xzbCBmdW5jdGlvbnMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCShyZXZpc2lv
biAxNzA4NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc0OSw3ICs3NDksNyBAQCBpbmxpbmUgU2VsZWN0b3JDb21waWxh
dGlvblN0YXR1cyBTZWxlY3RvCiAgICAgICAgIHJldHVybiBTZWxlY3RvckNvbXBpbGF0aW9uU3Rh
dHVzOjpDYW5ub3RDb21waWxlOwogICAgIH0KIAotICAgIEpTQzo6TGlua0J1ZmZlciBsaW5rQnVm
ZmVyKCp2bSwgJm1fYXNzZW1ibGVyLCBDU1NfQ09ERV9JRCk7CisgICAgSlNDOjpMaW5rQnVmZmVy
IGxpbmtCdWZmZXIoKnZtLCBtX2Fzc2VtYmxlciwgQ1NTX0NPREVfSUQpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uQ2FsbHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIGxp
bmtCdWZmZXIubGluayhtX2Z1bmN0aW9uQ2FsbHNbaV0uZmlyc3QsIG1fZnVuY3Rpb25DYWxsc1tp
XS5zZWNvbmQpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>