<?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>212687</bug_id>
          
          <creation_ts>2020-06-02 23:02:58 -0700</creation_ts>
          <short_desc>DFGSSAConversionPhase.cpp needs to #include OperandsInlines.h.</short_desc>
          <delta_ts>2020-06-03 12:59:16 -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>JavaScriptCore</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>212680</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1658629</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 23:02:58 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658632</commentid>
    <comment_count>1</comment_count>
      <attachid>400901</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 23:10:54 -0700</bug_when>
    <thetext>Created attachment 400901
test for Windows Bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658645</commentid>
    <comment_count>2</comment_count>
      <attachid>400904</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 00:41:23 -0700</bug_when>
    <thetext>Created attachment 400904
test patch w/ non-unified build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658646</commentid>
    <comment_count>3</comment_count>
      <attachid>400905</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 00:47:00 -0700</bug_when>
    <thetext>Created attachment 400905
test for Windows bot w/ non-unified fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658791</commentid>
    <comment_count>4</comment_count>
      <attachid>400943</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 10:51:20 -0700</bug_when>
    <thetext>Created attachment 400943
test for Windows bot w/ DFGSSAConversionPhase.cpp #include</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658794</commentid>
    <comment_count>5</comment_count>
      <attachid>400944</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 10:54:27 -0700</bug_when>
    <thetext>Created attachment 400944
test for Windows bot w/ DFGSSAConversionPhase.cpp #include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658844</commentid>
    <comment_count>6</comment_count>
      <attachid>400959</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 12:48:54 -0700</bug_when>
    <thetext>Created attachment 400959
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658846</commentid>
    <comment_count>7</comment_count>
      <attachid>400959</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-06-03 12:50:54 -0700</bug_when>
    <thetext>Comment on attachment 400959
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658851</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 12:58:58 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r262510: &lt;http://trac.webkit.org/r262510&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658853</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-03 12:59:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/63940606&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400901</attachid>
            <date>2020-06-02 23:10:54 -0700</date>
            <delta_ts>2020-06-03 00:37:04 -0700</delta_ts>
            <desc>test for Windows Bot.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>595</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hlY2suY3BwCShy
ZXZpc2lvbiAyNjI0NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0No
ZWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIERvZXNHQ0NoZWNrOjp2ZXJpCiAKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSB2bS50b3BDYWxsRnJhbWU7CiAgICAgICAgIGlmIChjYWxsRnJhbWUpIHsKKyNlcnJvciBUaGlz
IHNob3VsZCBvbmx5IGJlIGJ1aWx0IG9uIGEgRGVidWcgYnVpbGQuCiAgICAgICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAgICAgICBk
YXRhTG9nTG4oIiBpbiAiLCBjb2RlQmxvY2spOwogICAgICAgICAgICAgVk1JbnNwZWN0b3I6OmR1
bXBTdGFjaygmdm0sIGNhbGxGcmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400904</attachid>
            <date>2020-06-03 00:41:23 -0700</date>
            <delta_ts>2020-06-03 00:45:29 -0700</delta_ts>
            <desc>test patch w/ non-unified build fixes.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>42422</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBEb2VzR0MgdmVyaWZpY2F0aW9uIHRvIHByaW50IG1vcmUgdXNlZnVsIGluZm8gd2hl
biB2ZXJpZmljYXRpb24gZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI2ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIERvZXNHQyB2ZXJpZmljYXRpb24gZmFpbHMsIHRoZSBmaXJzdCBz
dGVwIG9mIGRlYnVnZ2luZyBpdCB3b3VsZCBiZSB0byBmaW5kCisgICAgICAgIG91dCB3aGF0IGFu
ZCB3aGljaCBERkcgbm9kZSByZXN1bHRlZCBpbiB0aGUgZmFpbGVkIHZlcmlmaWNhdGlvbi4gIElu
IHByZS1leGlzdGluZworICAgICAgICBjb2RlLCBhbGwgd2UgZ2V0IGlzIGFuIGFzc2VydGlvbiBm
YWlsdXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgdmVyaWZp
ZXIgd2lsbCBkdW1wIHVzZWZ1bCBpbmZvLiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKKyAgICAgICAg
ICAgIEVycm9yOiBEb2VzR0MgZmFpbGVkIEAgREAzNCBEYXRlR2V0SW50MzJPck5hTiBpbiAjRHRD
SE16OlsweDExMzViZDFkMC0+MHgxMTM1YmNhYjAtPjB4MTEzNWU1YzgwLCBERkdGdW5jdGlvbkNh
bGwsIDE1MCAoRGlkVHJ5VG9FbnRlckluTG9vcCldCisgICAgICAgICAgICAgICAgWzBdIGZyYW1l
IDB4N2ZmZWU4Mjg1NjYwIHsKKyAgICAgICAgICAgICAgICAgIG5hbWU6IAorICAgICAgICAgICAg
ICAgICAgc291cmNlVVJMOiAKKyAgICAgICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxz
ZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVmNjgyMAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuUEM6IDB4NTBjZTYxMjQ4YWU2CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFt
ZTogMHg3ZmZlZTgyODU2ZjAKKyAgICAgICAgICAgICAgICAgIHJhd0xvY2F0aW9uQml0czogNSAw
eDUKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmQxZDAgI0R0Q0hNejpbMHgx
MTM1YmQxZDAtPjB4MTEzNWJjYWIwLT4weDExMzVlNWM4MCwgREZHRnVuY3Rpb25DYWxsLCAxNTAg
KERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAgICAgICAgICBoYXNDb2RlT3JpZ2lu
czogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0ZUluZGV4OiA1IG9mIDEzCisgICAg
ICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDIwMjAwIHN0YXJ0IDB4NTBjZTYxMjE0YzYw
IGVuZCAweDUwY2U2MTIxOWIwMAorICAgICAgICAgICAgICAgICAgICBsaW5lOiAxCisgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbjogNjAKKyAgICAgICAgICAgICAgICAgIEVudHJ5RnJhbWU6IDB4
N2ZmZWU4Mjg1ODYwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFsxXSBmcmFt
ZSAweDdmZmVlODI4NTZmMCB7CisgICAgICAgICAgICAgICAgICBuYW1lOiAKKyAgICAgICAgICAg
ICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAgICAgICAgICAgICAg
IGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVm
NjVhMAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4NTBjZTYxMjI3ZTk5CisgICAgICAg
ICAgICAgICAgICBjYWxsZXJGcmFtZTogMHg3ZmZlZTgyODU3NzAKKyAgICAgICAgICAgICAgICAg
IHJhd0xvY2F0aW9uQml0czogNCAweDQKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmQwYTAgI0JVNlpjZDpbMHgxMTM1YmQwYTAtPjB4MTEzNWJjMjYwLT4weDExMzVlNTE4MCwg
REZHRnVuY3Rpb25DYWxsLCAxMTIgKERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAg
ICAgICAgICBoYXNDb2RlT3JpZ2luczogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0
ZUluZGV4OiA0IG9mIDEyCisgICAgICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDA0MDAw
IHN0YXJ0IDB4NTBjZTYxMjEyYzYwIGVuZCAweDUwY2U2MTIxNDk2MAorICAgICAgICAgICAgICAg
ICAgICBsaW5lOiAyNgorICAgICAgICAgICAgICAgICAgICBjb2x1bW46IDIyCisgICAgICAgICAg
ICAgICAgICBFbnRyeUZyYW1lOiAweDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBbMl0gZnJhbWUgMHg3ZmZlZTgyODU3NzAgeworICAgICAgICAgICAgICAg
ICAgbmFtZTogCisgICAgICAgICAgICAgICAgICBzb3VyY2VVUkw6IGRhdGUtZm9ybWF0LXhwYXJi
LmpzCisgICAgICAgICAgICAgICAgICBpc0lubGluZWRGcmFtZTogZmFsc2UKKyAgICAgICAgICAg
ICAgICAgIGNhbGxlZTogMHgxMTM1ZjY0ZTAKKyAgICAgICAgICAgICAgICAgIHJldHVyblBDOiAw
eDEwODA1OGViMQorICAgICAgICAgICAgICAgICAgY2FsbGVyRnJhbWU6IDB4N2ZmZWU4Mjg1N2Uw
CisgICAgICAgICAgICAgICAgICByYXdMb2NhdGlvbkJpdHM6IDEwMDEgMHgzZTkKKyAgICAgICAg
ICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmMxMzAgI0RBUzl4ZTpbMHgxMTM1YmMxMzAtPjB4
MTEzNWU1MTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbCwgMTE0OV0KKyAgICAgICAgICAgICAgICAg
ICAgYmMjMTAwMSBvZiAxMTQ5CisgICAgICAgICAgICAgICAgICAgIGxpbmU6IDQxNworICAgICAg
ICAgICAgICAgICAgICBjb2x1bW46IDM4CisgICAgICAgICAgICAgICAgICBFbnRyeUZyYW1lOiAw
eDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbM10gZnJh
bWUgMHg3ZmZlZTgyODU3ZTAgeworICAgICAgICAgICAgICAgICAgbmFtZTogZ2xvYmFsIGNvZGUK
KyAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAg
ICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2Fs
bGVlOiAweDExMzBmOTdiOAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4MTA4MDM5MDQz
CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZTogMHgwCisgICAgICAgICAgICAgICAgICBy
YXdMb2NhdGlvbkJpdHM6IDIzIDB4MTcKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmMwMDAgPGdsb2JhbD4jQ3VrWHZ0OlsweDExMzViYzAwMC0+MHgxMTMwY2Q3NjgsIExMSW50
R2xvYmFsLCA4MV0KKyAgICAgICAgICAgICAgICAgICAgYmMjMjMgb2YgODEKKyAgICAgICAgICAg
ICAgICAgICAgbGluZTogNDI1CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogMworICAgICAg
ICAgICAgICAgICAgRW50cnlGcmFtZTogMHg3ZmZlZTgyODU4NjAKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGV4cGVjdERvZXNHQygpCisKKyAgICAg
ICAgVGhlIGVycm9yIG1lc3NhZ2Ugbm93IGNvbWVzIHdpdGggdGhlIG5vZGUgaW5kZXgsIE5vZGVU
eXBlLCBjb2RlQmxvY2sgd2hpY2ggdGhpcworICAgICAgICBmYWlsdXJlIHdhcyBmb3VuZCBpbiwg
YW5kIHRoZSBKUyBjYWxsIHN0YWNrIHRoYXQgbGVkIHRvIHRoZSBmYWlsdXJlLgorCisgICAgICAg
IENoYW5nZXMgbWFkZToKKworICAgICAgICAxLiBJbnRyb2R1Y2VkIGEgRG9lc0dDQ2hlY2sgdmFs
dWUgdGhhdCBpcyB1c2VkIHRvIGVuY29kZSBzb21lIG9mIHRoZSBhYm92ZSBkYXRhLgorCisgICAg
ICAgICAgIFByZXZpb3VzbHksIHdlIG9ubHkgcmVjb3JkZWQgd2hldGhlciBkb2VzR0MoKSByZXR1
cm5zIHRydWUgb3IgZmFsc2UgZm9yIHRoZQorICAgICAgICAgICBOb2RlLiAgTm93LCB3ZSByZWNv
cmQgdGhlIG5vZGVJbmRleCBhbmQgbm9kZU9wIGFzIHdlbGwuCisKKyAgICAgICAgICAgTm90ZSB0
aGF0IHdlIGFsc28gc2V0IERvZXNHQyBleHBlY3RhdGlvbnMgZm9yIE9TUiBleGl0cy4gIFNvLCBE
b2VzR0NDaGVjaworICAgICAgICAgICBpbmNsdWRlcyBTcGVjaWFsIGNhc2VzIGZvciB0aG9zZS4K
KworICAgICAgICAyLiBBZGRlZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIGNvbnN0IHZvaWQq
IGFkZHJlc3MpIGVtaXR0ZXJzIGZvciBYODZfNjQgYW5kIEFSTTY0LgorICAgICAgICAgICBBbHNv
IGFkZGVkIGEgdGVzdCBmb3IgdGhpcyBuZXcgZW1pdHRlciBpbiB0ZXN0bWFzbS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6c3RvcmU2NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTY0KToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0U3RvcmU2NElt
bTY0QWRkcmVzc1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpydW4pOgorICAgICAgICAqIGRmZy9E
RkdEb2VzR0NDaGVjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNr
Ojp2ZXJpZnlDYW5HQyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQ0NoZWNrLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpEb2VzR0NDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6RG9lc0dDQ2hlY2s6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6RG9lc0dD
Q2hlY2s6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6RG9lc0dDQ2hlY2s6OmV4cGVjdERvZXNH
Qyk6CisgICAgICAgIChKU0M6OkRGRzo6RG9lc0dDQ2hlY2s6OnNwZWNpYWwpOgorICAgICAgICAo
SlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpub2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkRv
ZXNHQ0NoZWNrOjpub2RlT3ApOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjppc1Nw
ZWNpYWwpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpzcGVjaWFsSW5kZXgpOgor
ICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpiaXRzKToKKyAgICAgICAgKiBkZmcvREZH
R3JhcGguY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpvcGVyYXRpb25Db21waWxlT1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhp
dDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgIChKU0M6OkZUTDo6
b3BlcmF0aW9uQ29tcGlsZUZUTE9TUkV4aXQpOgorICAgICAgICAqIGhlYXAvQ29tcGxldGVTdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xv
dyk6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnJlYWxsb2NhdGVQcmVjaXNlQWxs
b2NhdGlvbk5vblZpcnR1YWwpOgorICAgICAgICAqIGhlYXAvQ29tcGxldGVTdWJzcGFjZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFs
KToKKyAgICAgICAgKiBoZWFwL0RlZmVyR0MuaDoKKyAgICAgICAgKEpTQzo6RGVmZXJHQzo6fkRl
ZmVyR0MpOgorICAgICAgICAqIGhlYXAvR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkdDRGVmZXJyYWxDb250ZXh0Ojp+R0NEZWZlcnJhbENvbnRleHQpOgorICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3ROb3cpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QXN5bmMpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0U3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6OnN0b3BJZk5lY2Vzc2FyeVNsb3cpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkcmVzc09mRG9lc0dDKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2V0RG9lc0dDRXhwZWN0YXRpb24pOgorICAgICAgICAoSlNDOjpIZWFw
Ojp2ZXJpZnlDYW5HQyk6CisgICAgICAgIChKU0M6OkhlYXA6OmV4cGVjdERvZXNHQyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OnNldEV4cGVjdERvZXNHQyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkhlYXA6OmFkZHJlc3NPZkV4cGVjdERvZXNHQyk6IERlbGV0ZWQuCisg
ICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjphY3F1aXJl
QWNjZXNzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RvcElmTmVjZXNzYXJ5KToKKyAgICAgICAg
KiBoZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFsbG9j
YXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpQcmVjaXNlQWxsb2NhdGlvbjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6UHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcik6CisgICAgICAgICogcnVu
dGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6
CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b0F0b21TdHJpbmcgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6dG9FeGlzdGluZ0F0b21TdHJpbmcgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dHJ5R2V0
VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnVuc2FmZVZpZXcgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp1bnNhZmVWaWV3IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAoSlNDOjpjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXkpOgorCiAyMDIwLTA2LTAyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsaW5nIG91dCByMjYyNDc1IHRvIHVuYnJlYWsgV2lu
ZG93cyBib3QuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTU2NCw2ICs1NjQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBCiAKICAgICBkZmcvREZHQ29tbW9uLmgKICAgICBkZmcvREZHQ29tcGlsYXRp
b25Nb2RlLmgKKyAgICBkZmcvREZHRG9lc0dDQ2hlY2suaAogICAgIGRmZy9ERkdNaW5pZmllZElE
LmgKIAogICAgIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsNiArMzQ3LDcgQEAgZGZnL0RGR0Rl
c2lyZWRXYXRjaHBvaW50cy5jcHAKIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCiBk
ZmcvREZHRGlzYXNzZW1ibGVyLmNwcAogZGZnL0RGR0RvZXNHQy5jcHAKK2RmZy9ERkdEb2VzR0ND
aGVjay5jcHAKIGRmZy9ERkdEcml2ZXIuY3BwCiBkZmcvREZHRWRnZS5jcHAKIGRmZy9ERkdFcG9j
aC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjI0Nzgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkzNiw2ICsxOTM2LDcgQEAKIAkJRkVCNTFG
NkMxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI1MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyog
UmVncmVzczE0MTgwOS5tbSAqLzsgfTsKIAkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVy
cm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQzE2
MDMyMjMzOUU5RjkwMEEwNENCOCAvKiBDZWxsU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDMTYwMzEyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxT
aXplLmggKi87IH07CisJCUZFQzNBM0ExMjQ4NzM1Q0EwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDM0Ez
QTAyNDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDNTc5NzMyMzEwNUI1MTAwQkNBODNG
IC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVDNTc5NzIyMzEwNUI0ODAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5s
aW5lcy5oICovOyB9OwogCQlGRUM1Nzk3NjIzMTA1RjRFMDBCQ0E4M0YgLyogSW50ZWdyaXR5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM1Nzk3NTIz
MTA1RjQzMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDNTc5NzgyMzEwOTU0QzAwQkNBODNGIC8qIEludGVn
cml0eUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFQzU3OTc3MjMxMDk1NEIwMEJDQTgzRiAvKiBJbnRlZ3JpdHlJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUyMzIsNiArNTIz
Myw4IEBACiAJCUZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JIYW5kbGluZ1Nj
b3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNThDMTMxODdCOEIxNjAw
OThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVDMTYwMzEyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENlbGxTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFQzNBMzlGMjQ4NzM1QkMwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdEb2VzR0NDaGVjay5jcHA7IHBhdGggPSBkZmcvREZHRG9lc0dDQ2hl
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUMzQTNBMDI0ODczNUJDMDAz
OTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRG9lc0dDQ2hlY2su
aDsgcGF0aCA9IGRmZy9ERkdEb2VzR0NDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRUM1Nzk3MjIzMTA1QjQ4MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5zcGVjdG9ySW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUM1Nzk3NDIzMTA1RjQyMDBCQ0E4M0YgLyogSW50
ZWdyaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVncml0
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3OTc1MjMxMDVGNDMwMEJD
QTgzRiAvKiBJbnRlZ3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
ZWdyaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODk2LDYgKzc4OTksOCBA
QAogCQkJCTBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuaCAqLywK
IAkJCQkwRjVBMTI3MTE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmNwcCAqLywKIAkJCQkw
RjVBMTI3MjE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmggKi8sCisJCQkJRkVDM0EzOUYy
NDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmNwcCAqLywKKwkJCQlGRUMzQTNBMDI0
ODczNUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLywKIAkJCQkwRkQ4MUFEMDE1NEZC
NEVCMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oICovLAogCQkJCTBGMUUzQTQ0MTUzNENCQUQw
MDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oICovLAogCQkJCTBGRDNDODIwMTQxMTVD
RjgwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwICovLApAQCAtMTAxOTYsNiArMTAyMDEsNyBAQAog
CQkJCTc5RDVDRDVCMUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVk
QXJndW1lbnRzVGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQzNBM0ExMjQ4NzM1Q0EwMDM5
NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5
MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1
MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFk
ZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDU5LDYgKzE0NTksMTcgQEAgcHVibGljOgogICAgICAgICBzdG9yZTw2ND4oc3JjLCBh
ZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwgY29u
c3Qgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUpIHsKKyAg
ICAgICAgICAgIHN0b3JlNjQoQVJNNjRSZWdpc3RlcnM6OnpyLCBhZGRyZXNzKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhpbW0sIGRh
dGFNZW1vcnlUZW1wUmVnaXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoZGF0YVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcyk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW0zMiBpbW0s
IEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmU2NChUcnVzdGVk
SW1tNjQoaW1tLm1fdmFsdWUpLCBhZGRyZXNzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9u
IDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtOTc3LDYgKzk3NywxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisg
ICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIHZvaWQqIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBhdXRvIHNyYyA9IHNjcmF0Y2hSZWdpc3RlcigpOworICAgICAgICBtb3ZlKGltbSwg
c3JjKTsKKyAgICAgICAgc3dhcChzcmMsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92cV9FQVhtKGFkZHJlc3MpOworICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0
ZXJzOjplYXgpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQgaW1tLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRF
TkRfMzJfNjQoaW1tLm1fdmFsdWUpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1OCw2
ICs2NTgsMzEgQEAgdm9pZCB0ZXN0Q291bnRUcmFpbGluZ1plcm9zNjRXaXRob3V0TnVsbAogICAg
IGJvb2wgd29yZENhbkJlWmVybyA9IGZhbHNlOwogICAgIHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2
NEltcGwod29yZENhbkJlWmVybyk7CiB9CisKK3ZvaWQgdGVzdFN0b3JlNjRJbW02NEFkZHJlc3NQ
b2ludGVyKCkKK3sKKyAgICBhdXRvIGRvVGVzdCA9IFtdIChpbnQ2NF90IHZhbHVlKSB7CisgICAg
ICAgIGludDY0X3QgZGVzdDsKKyAgICAgICAgdm9pZCogZGVzdEFkZHJlc3MgPSAmZGVzdDsKKwor
ICAgICAgICBhdXRvIHRlc3QgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSksIGRlc3RBZGRyZXNzKTsKKyAg
ICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICBqaXQucmV0
KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGludm9rZTxzaXplX3Q+KHRlc3QpOworICAgICAg
ICBDSEVDS19FUShkZXN0LCB2YWx1ZSk7CisgICAgfTsKKyAgICAKKyAgICBmb3IgKGF1dG8gdmFs
dWUgOiBpbnQ2NE9wZXJhbmRzKCkpCisgICAgICAgIGRvVGVzdCh2YWx1ZSk7CisKKyAgICBkb1Rl
c3QoMHg5ODc2NTU1NUFBQUE0MzIxKTsKKyAgICBkb1Rlc3QoMHhBQUFBNDMyMTk4NzY1NTU1KTsK
K30KKwogI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKIAogdm9pZCB0ZXN0Q29t
cGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKQEAg
LTI0OTksNiArMjUyNCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4o
dGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkpOwogICAgIFJVTih0ZXN0Q291bnRUcmFp
bGluZ1plcm9zNjQoKSk7CiAgICAgUlVOKHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2NFdpdGhvdXRO
dWxsQ2hlY2soKSk7CisgICAgUlVOKHRlc3RTdG9yZTY0SW1tNjRBZGRyZXNzUG9pbnRlcigpKTsK
ICNlbmRpZgogCiAjaWYgQ1BVKEFSTTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBkdW1wT1NSQXZh
aWxhYmlsaXR5RGF0YSA9IGZhbHNlOwogCiAvLyBDcmVhdGVzIGFuIGFycmF5IG9mIHN0cmluZ2l6
ZWQgbmFtZXMuCi1zdGF0aWMgY29uc3QgY2hhciogZGZnT3BOYW1lc1tdID0geworY29uc3QgY2hh
ciogZGZnT3BOYW1lc1tdID0gewogI2RlZmluZSBTVFJJTkdJWkVfREZHX09QX0VOVU0ob3Bjb2Rl
LCBmbGFncykgI29wY29kZSAsCiAgICAgRk9SX0VBQ0hfREZHX09QKFNUUklOR0laRV9ERkdfT1Bf
RU5VTSkKICN1bmRlZiBTVFJJTkdJWkVfREZHX09QX0VOVU0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcg
KzE0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21waWxlT1NSRXgKICAgICBp
ZiAodmFsaWRhdGVERkdEb2VzR0MpIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gZXhpdCBv
cHRpbWl6ZWQgY29kZS4gU28sIHRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBvcHRpbWl6ZWQKICAgICAg
ICAgLy8gY29kZSBydW5uaW5nIHRoYXQgZXhwZWN0cyBubyBHQy4KLSAgICAgICAgdm0uaGVhcC5z
ZXRFeHBlY3REb2VzR0ModHJ1ZSk7CisgICAgICAgIHZtLmhlYXAuc2V0RG9lc0dDRXhwZWN0YXRp
b24odHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkRGR09TUkV4aXQpOwogICAgIH0KIAogICAg
IGlmICh2bS5jYWxsRnJhbWVGb3JDYXRjaCkKQEAgLTU1NSwxMSArNTU1LDExIEBAIHZvaWQgT1NS
RXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgLy8gY29kZSBydW5uaW5n
IHRoYXQgZXhwZWN0cyBubyBHQy4gV2UgbmVlZCB0byBzZXQgdGhpcyBiZWZvcmUgYXJndW1lbnRz
CiAgICAgICAgIC8vIG1hdGVyaWFsaXphdGlvbiBiZWxvdyAoc2VlIGVtaXRSZXN0b3JlQXJndW1l
bnRzKCkpLgogCi0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjptX2V4cGVjdERv
ZXNHQyBpbiBjb21waWxlT1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKKyAgICAgICAgLy8gRXZlbiB0
aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZG9lc0dDIGluIGNvbXBpbGVPU1JFeGl0KCksIHdlIGFsc28g
bmVlZAogICAgICAgICAvLyB0byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVPU1JFeGl0KCkg
aXMgb25seSBjYWxsZWQgb24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9t
IHRoaXMgc2l0ZSwgYnV0IGFsbCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBp
bGVkCiAgICAgICAgIC8vIHJhbXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVPU1JFeGl0KCkgZmly
c3QuCi0gICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSks
IHZtLmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2NChD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNH
Q0NoZWNrOjpTcGVjaWFsOjpERkdPU1JFeGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkp
OwogICAgIH0KIAogICAgIC8vIE5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YWNrIHBvaW50ZXIg
YWNjb3VudHMgZm9yIHRoZSB3b3JzdC1jYXNlIHN0YWNrIHVzYWdlIGF0IGV4aXQuIFRoaXMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw3ICsyMTM4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKSB7CiAgICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0gZG9lc0dDKG1faml0
LmdyYXBoKCksIG5vZGUpOwotICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKGV4cGVj
dERvZXNHQyksIHZtKCkuaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CisgICAgICAgIG1f
aml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUoZXhwZWN0RG9lc0dD
LCBub2RlLT5pbmRleCgpLCBub2RlLT5vcCgpKSksIHZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0Mo
KSk7CiAgICAgfQogCiAjaWYgRU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJ
T04pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNCw3ICs3MDQsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAgICAgYm9vbCBl
eHBlY3REb2VzR0MgPSBkb2VzR0MobV9ncmFwaCwgbV9ub2RlKTsKLSAgICAgICAgICAgIG1fb3V0
LnN0b3JlKG1fb3V0LmNvbnN0Qm9vbChleHBlY3REb2VzR0MpLCBtX291dC5hYnNvbHV0ZSh2bSgp
LmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3Jl
KG1fb3V0LmNvbnN0SW50NjQoRG9lc0dDQ2hlY2s6OmVuY29kZShleHBlY3REb2VzR0MsIG1fbm9k
ZS0+aW5kZXgoKSwgbV9ub2RlLT5vcCgpKSksIG1fb3V0LmFic29sdXRlKHZtKCkuaGVhcC5hZGRy
ZXNzT2ZEb2VzR0MoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9w
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRD
b21waWxlci5jcHAJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEs
MTEgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZAogICAgICAgICAv
LyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLiBXZSBuZWVkIHRvIHNldCB0aGlzIGJl
Zm9yZSBvYmplY3QKICAgICAgICAgLy8gbWF0ZXJpYWxpemF0aW9uIGJlbG93LgogCi0gICAgICAg
IC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjptX2V4cGVjdERvZXNHQyBpbiBjb21waWxlRlRM
T1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKKyAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhl
YXA6Om1fZG9lc0dDIGluIGNvbXBpbGVGVExPU1JFeGl0KCksIHdlIGFsc28gbmVlZAogICAgICAg
ICAvLyB0byBzZXQgaXQgaGVyZSBiZWNhdXNlIGNvbXBpbGVGVExPU1JFeGl0KCkgaXMgb25seSBj
YWxsZWQgb24gdGhlIGZpcnN0IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIHRoaXMgc2l0
ZSwgYnV0IGFsbCBzdWJzZXF1ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBpbGVkCiAgICAg
ICAgIC8vIHJhbXAgd2l0aG91dCBjYWxsaW5nIGNvbXBpbGVGVExPU1JFeGl0KCkgZmlyc3QuCi0g
ICAgICAgIGppdC5zdG9yZTgoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZtLmhl
YXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2NChDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNHQ0NoZWNr
OjpTcGVjaWFsOjpGVExPU1JFeGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpOwogICAg
IH0KIAogICAgIC8vIEJyaW5nIHRoZSBzdGFjayBiYWNrIGludG8gYSBzYW5lIGZvcm0gYW5kIGFz
c2VydCB0aGF0IGl0J3Mgc2FuZS4KQEAgLTU0OCw3ICs1NDgsNyBAQCBleHRlcm4gIkMiIEpJVF9P
UEVSQVRJT04gdm9pZCogb3BlcmF0aW9uCiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAg
ICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGV4aXQgb3B0aW1pemVkIGNvZGUuIFNvLCB0aGVyZSdz
IG5vIGxvbmdlciBhbnkgb3B0aW1pemVkCiAgICAgICAgIC8vIGNvZGUgcnVubmluZyB0aGF0IGV4
cGVjdHMgbm8gR0MuCi0gICAgICAgIHZtLmhlYXAuc2V0RXhwZWN0RG9lc0dDKHRydWUpOworICAg
ICAgICB2bS5oZWFwLnNldERvZXNHQ0V4cGVjdGF0aW9uKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVj
aWFsOjpGVExPU1JFeGl0KTsKICAgICB9CiAKICAgICBpZiAodm0uY2FsbEZyYW1lRm9yQ2F0Y2gp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29t
cGxldGVTdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9p
ZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVTbG93KFZNJgogdm9pZCogQ29tcGxldGVTdWJz
cGFjZTo6dHJ5QWxsb2NhdGVTbG93KFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250
ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0u
aGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAK
QEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNs
b3coCiB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25O
b25WaXJ0dWFsKFZNJiB2bSwgSGVhcENlbGwqIG9sZENlbGwsIHNpemVfdCBzaXplLCBHQ0RlZmVy
cmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVy
ZU1vZGUpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FT
U0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5H
QygpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQgaW4gQnV0dGVy
Zmx5IGZvciBleGFtcGxlLgogICAgIEFTU0VSVChvbGRDZWxsLT5pc1ByZWNpc2VBbGxvY2F0aW9u
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0
ZVN1YnNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgdm9pZCogQ29tcGxl
dGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVm
ZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWls
dXJlTW9kZSkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNh
bkdDKCk7CiAKICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZp
cnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQogICAgICAg
ICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFp
bHVyZU1vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkocmV2aXNp
b24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfkRlZmVyR0MoKQogICAg
IHsKICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgICAgIG1faGVhcC52ZXJpZnlD
YW5HQygpOwogICAgICAgICBtX2hlYXAuZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVk
ZWQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJy
YWxDb250ZXh0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5oCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0RlZmVycmFsQ29udGV4dElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDcgKzM4LDcgQEAgQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4
dDo6R0NEZWZlcgogQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6fkdDRGVmZXJyYWxD
b250ZXh0KCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1faGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIG1faGVhcC52ZXJpZnlDYW5H
QygpOwogCiAgICAgaWYgKFVOTElLRUxZKG1fc2hvdWxkR0MpKQogICAgICAgICBtX2hlYXAuY29s
bGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENv
cHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC0xMDY0LDcgKzEwNjQsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3luY2hyb25vdXNu
ZXNzIHN5bmNoCiB2b2lkIEhlYXA6OmNvbGxlY3ROb3coU3luY2hyb25vdXNuZXNzIHN5bmNocm9u
b3VzbmVzcywgR0NSZXF1ZXN0IHJlcXVlc3QpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dD
KQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlm
eUNhbkdDKCk7CiAKICAgICBzd2l0Y2ggKHN5bmNocm9ub3VzbmVzcykgewogICAgIGNhc2UgQXN5
bmM6IHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdE5vdyhTeW5jaHJv
bm91c25lc3Mgc3kKIHZvaWQgSGVhcDo6Y29sbGVjdEFzeW5jKEdDUmVxdWVzdCByZXF1ZXN0KQog
ewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKCFtX2lzU2Fm
ZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBI
ZWFwOjpjb2xsZWN0QXN5bmMoR0NSZXF1ZXN0IHJlcXVlcwogdm9pZCBIZWFwOjpjb2xsZWN0U3lu
YyhHQ1JlcXVlc3QgcmVxdWVzdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0Mo
KTsKIAogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKQEAgLTE3
ODQsNyArMTc4NCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OnJlc3VtZVRoZU11dGF0b3IK
IHZvaWQgSGVhcDo6c3RvcElmTmVjZXNzYXJ5U2xvdygpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZH
RG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAg
IHZlcmlmeUNhbkdDKCk7CiAKICAgICB3aGlsZSAoc3RvcElmTmVjZXNzYXJ5U2xvdyhtX3dvcmxk
U3RhdGUubG9hZCgpKSkgeyB9CiAgICAgCkBAIC0xNzk5LDcgKzE3OTksNyBAQCB2b2lkIEhlYXA6
OnN0b3BJZk5lY2Vzc2FyeVNsb3coKQogYm9vbCBIZWFwOjpzdG9wSWZOZWNlc3NhcnlTbG93KHVu
c2lnbmVkIG9sZFN0YXRlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwog
CiAgICAgUkVMRUFTRV9BU1NFUlQob2xkU3RhdGUgJiBoYXNBY2Nlc3NCaXQpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCEob2xkU3RhdGUgJiBzdG9wcGVkQml0KSk7CkBAIC0yNjAxLDcgKzI2MDEsNyBA
QCB2b2lkIEhlYXA6OmNvbGxlY3RJZk5lY2Vzc2FyeU9yRGVmZXIoR0NECiB7CiAgICAgQVNTRVJU
KGRlZmVycmFsQ29udGV4dCB8fCBpc0RlZmVycmVkKCkgfHwgIURpc2FsbG93R0M6OmlzSW5FZmZl
Y3RPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7
CiAKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJD
ZWxsU3RhdGUuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb2xs
ZWN0b3JQaGFzZS5oIgorI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVs
ZXRlQWxsQ29kZUVmZm9ydC5oIgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVkZSAi
R0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQuaCIKQEAgLTMwMywxMyArMzA0LDE1IEBAIHB1YmxpYzoK
ICAgICBjb25zdCB1bnNpZ25lZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsg
cmV0dXJuICZtX2JhcnJpZXJUaHJlc2hvbGQ7IH0KIAogI2lmIEVOQUJMRShERkdfRE9FU19HQ19W
QUxJREFUSU9OKQotICAgIGJvb2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyByZXR1cm4gbV9leHBl
Y3REb2VzR0M7IH0KLSAgICB2b2lkIHNldEV4cGVjdERvZXNHQyhib29sIHZhbHVlKSB7IG1fZXhw
ZWN0RG9lc0dDID0gdmFsdWU7IH0KLSAgICBib29sKiBhZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSB7
IHJldHVybiAmbV9leHBlY3REb2VzR0M7IH0KKyAgICBEb2VzR0NDaGVjayogYWRkcmVzc09mRG9l
c0dDKCkgeyByZXR1cm4gJm1fZG9lc0dDOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlv
bihib29sIGV4cGVjdERvZXNHQywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3Ap
IHsgbV9kb2VzR0Muc2V0KGV4cGVjdERvZXNHQywgbm9kZUluZGV4LCBub2RlT3ApOyB9CisgICAg
dm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sIGV4cGVjdERvZXNHQywgRG9lc0dDQ2hlY2s6
OlNwZWNpYWwgc3BlY2lhbCkgeyBtX2RvZXNHQy5zZXQoZXhwZWN0RG9lc0dDLCBzcGVjaWFsKTsg
fQorICAgIHZvaWQgdmVyaWZ5Q2FuR0MoKSB7IG1fZG9lc0dDLnZlcmlmeUNhbkdDKHZtKCkpOyB9
CiAjZWxzZQotICAgIGJvb2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldEV4cGVjdERvZXNHQyhib29s
KSB7IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOyB9Ci0gICAgYm9vbCogYWRkcmVzc09mRXhw
ZWN0RG9lc0dDKCkgeyBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJuIG51bGxwdHI7
IH0KKyAgICBEb2VzR0NDaGVjayogYWRkcmVzc09mRG9lc0dDKCkgeyBVTlJFQUNIQUJMRV9GT1Jf
UExBVEZPUk0oKTsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIHNldERvZXNHQ0V4cGVjdGF0
aW9uKGJvb2wsIHVuc2lnbmVkLCB1bnNpZ25lZCkgeyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBl
Y3RhdGlvbihib29sLCBEb2VzR0NDaGVjazo6U3BlY2lhbCkgeyB9CisgICAgdm9pZCB2ZXJpZnlD
YW5HQygpIHsgfQogI2VuZGlmCiAKICAgICAvLyBJZiB0cnVlLCB0aGUgR0MgYmVsaWV2ZXMgdGhh
dCB0aGUgbXV0YXRvciBpcyBjdXJyZW50bHkgbWVzc2luZyB3aXRoIHRoZSBoZWFwLiBXZSBjYWxs
IHRoaXMKQEAgLTYwNiw3ICs2MDksNyBAQCBwcml2YXRlOgogICAgIE1hcmthYmxlPENvbGxlY3Rp
b25TY29wZSwgRW51bU1hcmthYmxlVHJhaXRzPENvbGxlY3Rpb25TY29wZT4+IG1fbGFzdENvbGxl
Y3Rpb25TY29wZTsKICAgICBMb2NrIG1fcmFjZU1hcmtTdGFja0xvY2s7CiAjaWYgRU5BQkxFKERG
R19ET0VTX0dDX1ZBTElEQVRJT04pCi0gICAgYm9vbCBtX2V4cGVjdERvZXNHQyB7IHRydWUgfTsK
KyAgICBEb2VzR0NDaGVjayBtX2RvZXNHQzsKICNlbmRpZgogCiAgICAgU3RydWN0dXJlSURUYWJs
ZSBtX3N0cnVjdHVyZUlEVGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBJbmxpbmVzLmgJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBpbmxp
bmUgdm9pZCBIZWFwOjpkZXByZWNhdGVkUmVwb3J0RXh0cmFNCiBpbmxpbmUgdm9pZCBIZWFwOjph
Y3F1aXJlQWNjZXNzKCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAog
ICAgIGlmIChtX3dvcmxkU3RhdGUuY29tcGFyZUV4Y2hhbmdlV2VhaygwLCBoYXNBY2Nlc3NCaXQp
KQogICAgICAgICByZXR1cm47CkBAIC0yNjMsNyArMjYzLDcgQEAgaW5saW5lIGJvb2wgSGVhcDo6
bWF5TmVlZFRvU3RvcCgpCiBpbmxpbmUgdm9pZCBIZWFwOjpzdG9wSWZOZWNlc3NhcnkoKQogewog
ICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0
RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKG1heU5lZWRUb1N0
b3AoKSkKICAgICAgICAgc3RvcElmTmVjZXNzYXJ5U2xvdygpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgJKHJldmlzaW9u
IDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
QUxXQVlTX0lOTElORSB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUoSGVhcCYgaGVhcCwg
R0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
IGZhaWx1cmVNb2RlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIGhlYXAudmVyaWZ5Q2Fu
R0MoKTsKICAgICByZXR1cm4gbV9mcmVlTGlzdC5hbGxvY2F0ZSgKICAgICAgICAgWyZdICgpIC0+
IEhlYXBDZWxsKiB7CiAgICAgICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oaGVhcC52bSgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlv
bi5jcHAJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1By
ZWNpc2VBbGxvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNBbGlnbmVkRm9yUHJlY2lzZUFsCiBQcmVjaXNlQWxsb2NhdGlvbiog
UHJlY2lzZUFsbG9jYXRpb246OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSwgU3Vi
c3BhY2UqIHN1YnNwYWNlLCB1bnNpZ25lZCBpbmRleEluU3BhY2UpCiB7CiAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygp
KTsKKyAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2l6ZV90IGFkanVzdGVkQWxp
Z25tZW50QWxsb2NhdGlvblNpemUgPSBoZWFkZXJTaXplKCkgKyBzaXplICsgaGFsZkFsaWdubWVu
dDsKICAgICBzdGF0aWNfYXNzZXJ0KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldlIGFzc3VtZSB0aGF0
IG1lbW9yeSByZXR1cm5lZCBieSBtYWxsb2MgaGFzIGFsaWdubWVudCA+PSA4LiIpOwpAQCAtMTIz
LDcgKzEyMyw3IEBAIFByZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6dHIKIFBy
ZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKEhl
YXAmIGhlYXAsIHNpemVfdCBzaXplLCBTdWJzcGFjZSogc3Vic3BhY2UsIHVpbnQ4X3QgbG93ZXJU
aWVySW5kZXgpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNF
X0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygp
OwogCiAgICAgc2l6ZV90IGFkanVzdGVkQWxpZ25tZW50QWxsb2NhdGlvblNpemUgPSBoZWFkZXJT
aXplKCkgKyBzaXplICsgaGFsZkFsaWdubWVudDsKICAgICBzdGF0aWNfYXNzZXJ0KGhhbGZBbGln
bm1lbnQgPT0gOCwgIldlIGFzc3VtZSB0aGF0IG1lbW9yeSByZXR1cm5lZCBieSBtYWxsb2MgaGFz
IGFsaWdubWVudCA+PSA4LiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MzMsNyArNzMzLDcgQEAgaW5saW5l
IEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKFZNJiB2bSkKIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcq
IGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKFZNJiB2bSwgVUNoYXIgYykKIHsKICAgICBpZiAodmFs
aWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9l
c0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGMgPD0gbWF4
U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZyhjKTsKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwg
U3RyaW5nSW1wbDo6Y3JlYXRlKCZjLCAxKSk7CkBAIC03NjMsNyArNzYzLDcgQEAgQUxXQVlTX0lO
TElORSBJZGVudGlmaWVyIEpTU3RyaW5nOjp0b0lkZQogQUxXQVlTX0lOTElORSBBdG9tU3RyaW5n
IEpTU3RyaW5nOjp0b0F0b21TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5H
QygpOwogICAgIGlmIChpc1JvcGUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9wZVRvQXRvbVN0cmluZyhnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiBBdG9tU3RyaW5nKHZhbHVlSW50ZXJuYWwoKSk7CkBAIC03NzIsNyAr
NzcyLDcgQEAgQUxXQVlTX0lOTElORSBBdG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0bwogQUxXQVlT
X0lOTElORSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpTU3RyaW5nOjp0b0V4aXN0aW5nQXRvbVN0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxp
ZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERv
ZXNHQygpKTsKKyAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzUm9w
ZSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhp
cyktPnJlc29sdmVSb3BlVG9FeGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBp
ZiAodmFsdWVJbnRlcm5hbCgpLmltcGwoKS0+aXNBdG9tKCkpCkBAIC03ODMsNyArNzgzLDcgQEAg
QUxXQVlTX0lOTElORSBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEpTUwogaW5saW5lIGNvbnN0IFN0
cmluZyYgSlNTdHJpbmc6OnZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2
bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0Mo
KTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBK
U1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1
cm4gdmFsdWVJbnRlcm5hbCgpOwpAQCAtNzkzLDcgKzc5Myw3IEBAIGlubGluZSBjb25zdCBTdHJp
bmcmIEpTU3RyaW5nOjp0cnlHZXRWYWwKIHsKICAgICBpZiAoYWxsb2NhdGlvbkFsbG93ZWQpIHsK
ICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgICAgIHZtKCkuaGVhcC52ZXJp
ZnlDYW5HQygpOwogICAgICAgICBpZiAoaXNSb3BlKCkpIHsKICAgICAgICAgICAgIC8vIFBhc3Mg
bnVsbHB0ciBmb3IgdGhlIEpTR2xvYmFsT2JqZWN0IHNvIHRoYXQgcmVzb2x2ZVJvcGUgZG9lcyBu
b3QgdGhyb3cgaW4gdGhlIGV2ZW50IG9mIGFuIE9PTSBlcnJvci4KICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUobnVs
bHB0cik7CkBAIC05ODMsNyArOTgzLDcgQEAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVl
IHYpCiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgSlNSb3BlU3RyaW5nOjp1bnNhZmVWaWV3KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZH
RG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkp
OworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNTdWJzdHJpbmco
KSkgewogICAgICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1ZUludGVybmFs
KCk7CiAgICAgICAgIGlmIChiYXNlLmlzOEJpdCgpKQpAQCAtOTk2LDcgKzk5Niw3IEBAIEFMV0FZ
U19JTkxJTkUgU3RyaW5nVmlldyBKU1JvcGVTdHJpbmc6OnUKIEFMV0FZU19JTkxJTkUgU3RyaW5n
Vmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nIEpTUm9wZVN0cmluZzo6dmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0
RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNT
dWJzdHJpbmcoKSkgewogICAgICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1
ZUludGVybmFsKCk7CiAgICAgICAgIGlmIChiYXNlLmlzOEJpdCgpKQpAQCAtMTAxMCw3ICsxMDEw
LDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdAogQUxXQVlTX0lO
TElORSBTdHJpbmdWaWV3IEpTU3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBS
RUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhl
YXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+dW5zYWZlVmlldyhnbG9iYWxPYmpl
Y3QpOwogICAgIHJldHVybiB2YWx1ZUludGVybmFsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMjYy
NDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5
KiBjcmVhdGVSZWdFeHBNYXRjaAogICAgIFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgTWF0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0Mp
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAg
ICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVy
blJlc3VsdHM7CiAgICAgaW50IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGluZShnbG9iYWxP
YmplY3QsIHZtLCBpbnB1dFZhbHVlLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc21JQ0NhbGxlZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc21JQ0Nh
bGxlZS5jcHAJKHJldmlzaW9uIDI2MjQ3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTVG9XYXNtSUNDYWxsZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw3IEBA
CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0
aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2MjQ3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0j
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU09iamVjdElubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvci5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJXZWJB
c3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlD
b21waWxlRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJv
clByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2MjQ3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksOSArMjksNyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1
ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKLSNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiAjaW5jbHVkZSAiV2ViQXNzZW1i
bHlDb21waWxlRXJyb3JQcm90b3R5cGUubHV0LmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI2MjQ3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAg
KzMxLDggQEAKICNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKLSNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCi0j
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5R2xvYmFsUHJvdG9GdW5jVmFs
dWVPZihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNl
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjI0NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0jaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNl
LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBlLmgiCiAK
ICNpbmNsdWRlICJXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IubHV0LmgiCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlUHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUluc3RhbmNlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjYyNDc1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlJbnN0YW5jZVByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDExICsyOSw5IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
CiAjaW5jbHVkZSAiQXV4aWxpYXJ5QmFycmllcklubGluZXMuaCIKLSNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5oIgotI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseUluc3RhbmNlUHJvdG9GdW5jRXhwb3J0cyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDI2MjQ3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TGlua0Vycm9yQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsOCBA
QAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKLSNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUxpbmtFcnJvci5oIgotI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5o
IgogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2MjQ3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksNyBAQAogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKIAogI2luY2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKLSNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiAjaW5j
bHVkZSAiV2ViQXNzZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUubHV0LmgiCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2MjQ3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksOSArMjksNyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUg
IkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKLSNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUubHV0LmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjI0NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTAgKzI4LDggQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1l
RXJyb3IuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5UnVu
dGltZUVycm9yQ29uc3RydWN0b3IubHV0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNjI0NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDggKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRl
ICJBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oIgotI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5o
IgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JQcm90b3R5cGUubHV0LmgiCiAKIG5h
bWVzcGFjZSBKU0Mgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400905</attachid>
            <date>2020-06-03 00:47:00 -0700</date>
            <delta_ts>2020-06-03 10:51:20 -0700</delta_ts>
            <desc>test for Windows bot w/ non-unified fixes.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>49450</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAyMC0wNi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5oYW5jZSBEb2VzR0MgdmVyaWZpY2F0aW9uIHRvIHByaW50IG1vcmUgdXNlZnVsIGluZm8gd2hl
biB2ZXJpZmljYXRpb24gZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTI2ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXaGVuIERvZXNHQyB2ZXJpZmljYXRpb24gZmFpbHMsIHRoZSBmaXJzdCBz
dGVwIG9mIGRlYnVnZ2luZyBpdCB3b3VsZCBiZSB0byBmaW5kCisgICAgICAgIG91dCB3aGF0IGFu
ZCB3aGljaCBERkcgbm9kZSByZXN1bHRlZCBpbiB0aGUgZmFpbGVkIHZlcmlmaWNhdGlvbi4gIElu
IHByZS1leGlzdGluZworICAgICAgICBjb2RlLCBhbGwgd2UgZ2V0IGlzIGFuIGFzc2VydGlvbiBm
YWlsdXJlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB0aGUgdmVyaWZp
ZXIgd2lsbCBkdW1wIHVzZWZ1bCBpbmZvLiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKKyAgICAgICAg
ICAgIEVycm9yOiBEb2VzR0MgZmFpbGVkIEAgREAzNCBEYXRlR2V0SW50MzJPck5hTiBpbiAjRHRD
SE16OlsweDExMzViZDFkMC0+MHgxMTM1YmNhYjAtPjB4MTEzNWU1YzgwLCBERkdGdW5jdGlvbkNh
bGwsIDE1MCAoRGlkVHJ5VG9FbnRlckluTG9vcCldCisgICAgICAgICAgICAgICAgWzBdIGZyYW1l
IDB4N2ZmZWU4Mjg1NjYwIHsKKyAgICAgICAgICAgICAgICAgIG5hbWU6IAorICAgICAgICAgICAg
ICAgICAgc291cmNlVVJMOiAKKyAgICAgICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxz
ZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVmNjgyMAorICAgICAgICAgICAgICAg
ICAgcmV0dXJuUEM6IDB4NTBjZTYxMjQ4YWU2CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFt
ZTogMHg3ZmZlZTgyODU2ZjAKKyAgICAgICAgICAgICAgICAgIHJhd0xvY2F0aW9uQml0czogNSAw
eDUKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmQxZDAgI0R0Q0hNejpbMHgx
MTM1YmQxZDAtPjB4MTEzNWJjYWIwLT4weDExMzVlNWM4MCwgREZHRnVuY3Rpb25DYWxsLCAxNTAg
KERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAgICAgICAgICBoYXNDb2RlT3JpZ2lu
czogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0ZUluZGV4OiA1IG9mIDEzCisgICAg
ICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDIwMjAwIHN0YXJ0IDB4NTBjZTYxMjE0YzYw
IGVuZCAweDUwY2U2MTIxOWIwMAorICAgICAgICAgICAgICAgICAgICBsaW5lOiAxCisgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbjogNjAKKyAgICAgICAgICAgICAgICAgIEVudHJ5RnJhbWU6IDB4
N2ZmZWU4Mjg1ODYwCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFsxXSBmcmFt
ZSAweDdmZmVlODI4NTZmMCB7CisgICAgICAgICAgICAgICAgICBuYW1lOiAKKyAgICAgICAgICAg
ICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAgICAgICAgICAgICAg
IGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2FsbGVlOiAweDExMzVm
NjVhMAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4NTBjZTYxMjI3ZTk5CisgICAgICAg
ICAgICAgICAgICBjYWxsZXJGcmFtZTogMHg3ZmZlZTgyODU3NzAKKyAgICAgICAgICAgICAgICAg
IHJhd0xvY2F0aW9uQml0czogNCAweDQKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmQwYTAgI0JVNlpjZDpbMHgxMTM1YmQwYTAtPjB4MTEzNWJjMjYwLT4weDExMzVlNTE4MCwg
REZHRnVuY3Rpb25DYWxsLCAxMTIgKERpZFRyeVRvRW50ZXJJbkxvb3ApXQorICAgICAgICAgICAg
ICAgICAgICBoYXNDb2RlT3JpZ2luczogdHJ1ZQorICAgICAgICAgICAgICAgICAgICBjYWxsU2l0
ZUluZGV4OiA0IG9mIDEyCisgICAgICAgICAgICAgICAgICAgIGppdENvZGU6IDB4MTEzMDA0MDAw
IHN0YXJ0IDB4NTBjZTYxMjEyYzYwIGVuZCAweDUwY2U2MTIxNDk2MAorICAgICAgICAgICAgICAg
ICAgICBsaW5lOiAyNgorICAgICAgICAgICAgICAgICAgICBjb2x1bW46IDIyCisgICAgICAgICAg
ICAgICAgICBFbnRyeUZyYW1lOiAweDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBbMl0gZnJhbWUgMHg3ZmZlZTgyODU3NzAgeworICAgICAgICAgICAgICAg
ICAgbmFtZTogCisgICAgICAgICAgICAgICAgICBzb3VyY2VVUkw6IGRhdGUtZm9ybWF0LXhwYXJi
LmpzCisgICAgICAgICAgICAgICAgICBpc0lubGluZWRGcmFtZTogZmFsc2UKKyAgICAgICAgICAg
ICAgICAgIGNhbGxlZTogMHgxMTM1ZjY0ZTAKKyAgICAgICAgICAgICAgICAgIHJldHVyblBDOiAw
eDEwODA1OGViMQorICAgICAgICAgICAgICAgICAgY2FsbGVyRnJhbWU6IDB4N2ZmZWU4Mjg1N2Uw
CisgICAgICAgICAgICAgICAgICByYXdMb2NhdGlvbkJpdHM6IDEwMDEgMHgzZTkKKyAgICAgICAg
ICAgICAgICAgIGNvZGVCbG9jazogMHgxMTM1YmMxMzAgI0RBUzl4ZTpbMHgxMTM1YmMxMzAtPjB4
MTEzNWU1MTAwLCBCYXNlbGluZUZ1bmN0aW9uQ2FsbCwgMTE0OV0KKyAgICAgICAgICAgICAgICAg
ICAgYmMjMTAwMSBvZiAxMTQ5CisgICAgICAgICAgICAgICAgICAgIGxpbmU6IDQxNworICAgICAg
ICAgICAgICAgICAgICBjb2x1bW46IDM4CisgICAgICAgICAgICAgICAgICBFbnRyeUZyYW1lOiAw
eDdmZmVlODI4NTg2MAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBbM10gZnJh
bWUgMHg3ZmZlZTgyODU3ZTAgeworICAgICAgICAgICAgICAgICAgbmFtZTogZ2xvYmFsIGNvZGUK
KyAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTDogZGF0ZS1mb3JtYXQteHBhcmIuanMKKyAgICAg
ICAgICAgICAgICAgIGlzSW5saW5lZEZyYW1lOiBmYWxzZQorICAgICAgICAgICAgICAgICAgY2Fs
bGVlOiAweDExMzBmOTdiOAorICAgICAgICAgICAgICAgICAgcmV0dXJuUEM6IDB4MTA4MDM5MDQz
CisgICAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZTogMHgwCisgICAgICAgICAgICAgICAgICBy
YXdMb2NhdGlvbkJpdHM6IDIzIDB4MTcKKyAgICAgICAgICAgICAgICAgIGNvZGVCbG9jazogMHgx
MTM1YmMwMDAgPGdsb2JhbD4jQ3VrWHZ0OlsweDExMzViYzAwMC0+MHgxMTMwY2Q3NjgsIExMSW50
R2xvYmFsLCA4MV0KKyAgICAgICAgICAgICAgICAgICAgYmMjMjMgb2YgODEKKyAgICAgICAgICAg
ICAgICAgICAgbGluZTogNDI1CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbjogMworICAgICAg
ICAgICAgICAgICAgRW50cnlGcmFtZTogMHg3ZmZlZTgyODU4NjAKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGV4cGVjdERvZXNHQygpCisKKyAgICAg
ICAgVGhlIGVycm9yIG1lc3NhZ2Ugbm93IGNvbWVzIHdpdGggdGhlIG5vZGUgaW5kZXgsIE5vZGVU
eXBlLCBjb2RlQmxvY2sgd2hpY2ggdGhpcworICAgICAgICBmYWlsdXJlIHdhcyBmb3VuZCBpbiwg
YW5kIHRoZSBKUyBjYWxsIHN0YWNrIHRoYXQgbGVkIHRvIHRoZSBmYWlsdXJlLgorCisgICAgICAg
IENoYW5nZXMgbWFkZToKKworICAgICAgICAxLiBJbnRyb2R1Y2VkIGEgRG9lc0dDQ2hlY2sgdmFs
dWUgdGhhdCBpcyB1c2VkIHRvIGVuY29kZSBzb21lIG9mIHRoZSBhYm92ZSBkYXRhLgorCisgICAg
ICAgICAgIFByZXZpb3VzbHksIHdlIG9ubHkgcmVjb3JkZWQgd2hldGhlciBkb2VzR0MoKSByZXR1
cm5zIHRydWUgb3IgZmFsc2UgZm9yIHRoZQorICAgICAgICAgICBOb2RlLiAgTm93LCB3ZSByZWNv
cmQgdGhlIG5vZGVJbmRleCBhbmQgbm9kZU9wIGFzIHdlbGwuCisKKyAgICAgICAgICAgTm90ZSB0
aGF0IHdlIGFsc28gc2V0IERvZXNHQyBleHBlY3RhdGlvbnMgZm9yIE9TUiBleGl0cy4gIFNvLCBE
b2VzR0NDaGVjaworICAgICAgICAgICBpbmNsdWRlcyBTcGVjaWFsIGNhc2VzIGZvciB0aG9zZS4K
KworICAgICAgICAyLiBBZGRlZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIGNvbnN0IHZvaWQq
IGFkZHJlc3MpIGVtaXR0ZXJzIGZvciBYODZfNjQgYW5kIEFSTTY0LgorICAgICAgICAgICBBbHNv
IGFkZGVkIGEgdGVzdCBmb3IgdGhpcyBuZXcgZW1pdHRlciBpbiB0ZXN0bWFzbS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk02NDo6c3RvcmU2NCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTY0KToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0U3RvcmU2NElt
bTY0QWRkcmVzc1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpydW4pOgorICAgICAgICAqIGRmZy9E
RkdEb2VzR0NDaGVjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNr
Ojp2ZXJpZnlDYW5HQyk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQ0NoZWNrLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpEb2VzR0NDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6RG9lc0dDQ2hlY2s6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6RG9lc0dD
Q2hlY2s6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6RG9lc0dDQ2hlY2s6OmV4cGVjdERvZXNH
Qyk6CisgICAgICAgIChKU0M6OkRGRzo6RG9lc0dDQ2hlY2s6OnNwZWNpYWwpOgorICAgICAgICAo
SlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpub2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkRv
ZXNHQ0NoZWNrOjpub2RlT3ApOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjppc1Nw
ZWNpYWwpOgorICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpzcGVjaWFsSW5kZXgpOgor
ICAgICAgICAoSlNDOjpERkc6OkRvZXNHQ0NoZWNrOjpiaXRzKToKKyAgICAgICAgKiBkZmcvREZH
R3JhcGguY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpvcGVyYXRpb25Db21waWxlT1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhp
dDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgIChKU0M6OkZUTDo6
b3BlcmF0aW9uQ29tcGlsZUZUTE9TUkV4aXQpOgorICAgICAgICAqIGhlYXAvQ29tcGxldGVTdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xv
dyk6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnJlYWxsb2NhdGVQcmVjaXNlQWxs
b2NhdGlvbk5vblZpcnR1YWwpOgorICAgICAgICAqIGhlYXAvQ29tcGxldGVTdWJzcGFjZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFs
KToKKyAgICAgICAgKiBoZWFwL0RlZmVyR0MuaDoKKyAgICAgICAgKEpTQzo6RGVmZXJHQzo6fkRl
ZmVyR0MpOgorICAgICAgICAqIGhlYXAvR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkdDRGVmZXJyYWxDb250ZXh0Ojp+R0NEZWZlcnJhbENvbnRleHQpOgorICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3ROb3cpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QXN5bmMpOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0U3luYyk6CisgICAgICAgIChKU0M6OkhlYXA6OnN0b3BJZk5lY2Vzc2FyeVNsb3cpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkcmVzc09mRG9lc0dDKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2V0RG9lc0dDRXhwZWN0YXRpb24pOgorICAgICAgICAoSlNDOjpIZWFw
Ojp2ZXJpZnlDYW5HQyk6CisgICAgICAgIChKU0M6OkhlYXA6OmV4cGVjdERvZXNHQyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkhlYXA6OnNldEV4cGVjdERvZXNHQyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkhlYXA6OmFkZHJlc3NPZkV4cGVjdERvZXNHQyk6IERlbGV0ZWQuCisg
ICAgICAgICogaGVhcC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjphY3F1aXJl
QWNjZXNzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RvcElmTmVjZXNzYXJ5KToKKyAgICAgICAg
KiBoZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFsbG9j
YXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpQcmVjaXNlQWxsb2NhdGlvbjo6dHJ5Q3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6UHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcik6CisgICAgICAgICogcnVu
dGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpqc1NpbmdsZUNoYXJhY3RlclN0cmluZyk6
CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0b0F0b21TdHJpbmcgY29uc3QpOgorICAgICAgICAo
SlNDOjpKU1N0cmluZzo6dG9FeGlzdGluZ0F0b21TdHJpbmcgY29uc3QpOgorICAgICAgICAoSlND
OjpKU1N0cmluZzo6dmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dHJ5R2V0
VmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnVuc2FmZVZpZXcgY29u
c3QpOgorICAgICAgICAoSlNDOjpKU1JvcGVTdHJpbmc6OnZpZXdXaXRoVW5kZXJseWluZ1N0cmlu
ZyBjb25zdCk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp1bnNhZmVWaWV3IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oOgorICAgICAgICAoSlNDOjpjcmVh
dGVSZWdFeHBNYXRjaGVzQXJyYXkpOgorCiAyMDIwLTA2LTAyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsaW5nIG91dCByMjYyNDc1IHRvIHVuYnJlYWsgV2lu
ZG93cyBib3QuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTU2NCw2ICs1NjQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBCiAKICAgICBkZmcvREZHQ29tbW9uLmgKICAgICBkZmcvREZHQ29tcGlsYXRp
b25Nb2RlLmgKKyAgICBkZmcvREZHRG9lc0dDQ2hlY2suaAogICAgIGRmZy9ERkdNaW5pZmllZElE
LmgKIAogICAgIGRvbWppdC9ET01KSVRBYnN0cmFjdEhlYXAuaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsNiArMzQ3LDcgQEAgZGZnL0RGR0Rl
c2lyZWRXYXRjaHBvaW50cy5jcHAKIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCiBk
ZmcvREZHRGlzYXNzZW1ibGVyLmNwcAogZGZnL0RGR0RvZXNHQy5jcHAKK2RmZy9ERkdEb2VzR0ND
aGVjay5jcHAKIGRmZy9ERkdEcml2ZXIuY3BwCiBkZmcvREZHRWRnZS5jcHAKIGRmZy9ERkdFcG9j
aC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjI0Nzgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkzNiw2ICsxOTM2LDcgQEAKIAkJRkVCNTFG
NkMxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI1MUY2QjFBOTdCNjg4MDAxRjkyMUMgLyog
UmVncmVzczE0MTgwOS5tbSAqLzsgfTsKIAkJRkVCNThDMTUxODdCOEIxNjAwOThFRjBCIC8qIEVy
cm9ySGFuZGxpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVCNThDMTMxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQzE2
MDMyMjMzOUU5RjkwMEEwNENCOCAvKiBDZWxsU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDMTYwMzEyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxT
aXplLmggKi87IH07CisJCUZFQzNBM0ExMjQ4NzM1Q0EwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDM0Ez
QTAyNDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDNTc5NzMyMzEwNUI1MTAwQkNBODNG
IC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVDNTc5NzIyMzEwNUI0ODAwQkNBODNGIC8qIFZNSW5zcGVjdG9ySW5s
aW5lcy5oICovOyB9OwogCQlGRUM1Nzk3NjIzMTA1RjRFMDBCQ0E4M0YgLyogSW50ZWdyaXR5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM1Nzk3NTIz
MTA1RjQzMDBCQ0E4M0YgLyogSW50ZWdyaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDNTc5NzgyMzEwOTU0QzAwQkNBODNGIC8qIEludGVn
cml0eUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFQzU3OTc3MjMxMDk1NEIwMEJDQTgzRiAvKiBJbnRlZ3JpdHlJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUyMzIsNiArNTIz
Myw4IEBACiAJCUZFQjU4QzEyMTg3QjhCMTYwMDk4RUYwQiAvKiBFcnJvckhhbmRsaW5nU2NvcGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXJyb3JIYW5kbGluZ1Nj
b3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNThDMTMxODdCOEIxNjAw
OThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVDMTYwMzEyMzM5RTlGOTAwQTA0Q0I4IC8qIENlbGxTaXplLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENlbGxTaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFQzNBMzlGMjQ4NzM1QkMwMDM5NUI1NCAvKiBERkdEb2VzR0NDaGVjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdEb2VzR0NDaGVjay5jcHA7IHBhdGggPSBkZmcvREZHRG9lc0dDQ2hl
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUMzQTNBMDI0ODczNUJDMDAz
OTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRG9lc0dDQ2hlY2su
aDsgcGF0aCA9IGRmZy9ERkdEb2VzR0NDaGVjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRUM1Nzk3MjIzMTA1QjQ4MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5zcGVjdG9ySW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUM1Nzk3NDIzMTA1RjQyMDBCQ0E4M0YgLyogSW50
ZWdyaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVncml0
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3OTc1MjMxMDVGNDMwMEJD
QTgzRiAvKiBJbnRlZ3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
ZWdyaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODk2LDYgKzc4OTksOCBA
QAogCQkJCTBGRjQyNzYyMTU5MUExQzkwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuaCAqLywK
IAkJCQkwRjVBMTI3MTE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmNwcCAqLywKIAkJCQkw
RjVBMTI3MjE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmggKi8sCisJCQkJRkVDM0EzOUYy
NDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmNwcCAqLywKKwkJCQlGRUMzQTNBMDI0
ODczNUJDMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLywKIAkJCQkwRkQ4MUFEMDE1NEZC
NEVCMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oICovLAogCQkJCTBGMUUzQTQ0MTUzNENCQUQw
MDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oICovLAogCQkJCTBGRDNDODIwMTQxMTVD
RjgwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwICovLApAQCAtMTAxOTYsNiArMTAyMDEsNyBAQAog
CQkJCTc5RDVDRDVCMUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkUwNTAyODFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVk
QXJndW1lbnRzVGFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFQzNBM0ExMjQ4NzM1Q0EwMDM5
NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5
MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1
MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFk
ZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDU5LDYgKzE0NTksMTcgQEAgcHVibGljOgogICAgICAgICBzdG9yZTw2ND4oc3JjLCBh
ZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwgY29u
c3Qgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUpIHsKKyAg
ICAgICAgICAgIHN0b3JlNjQoQVJNNjRSZWdpc3RlcnM6OnpyLCBhZGRyZXNzKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1vdmVUb0NhY2hlZFJlZyhpbW0sIGRh
dGFNZW1vcnlUZW1wUmVnaXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoZGF0YVRlbXBSZWdpc3Rl
ciwgYWRkcmVzcyk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW0zMiBpbW0s
IEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgc3RvcmU2NChUcnVzdGVk
SW1tNjQoaW1tLm1fdmFsdWUpLCBhZGRyZXNzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9u
IDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtOTc3LDYgKzk3NywxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTMybShpbW0ubV92YWx1ZSwgYWRkcmVzcy5vZmZzZXQs
IGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisg
ICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIHZvaWQqIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBhdXRvIHNyYyA9IHNjcmF0Y2hSZWdpc3RlcigpOworICAgICAgICBtb3ZlKGltbSwg
c3JjKTsKKyAgICAgICAgc3dhcChzcmMsIFg4NlJlZ2lzdGVyczo6ZWF4KTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92cV9FQVhtKGFkZHJlc3MpOworICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0
ZXJzOjplYXgpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQgaW1tLCBJ
bXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRF
TkRfMzJfNjQoaW1tLm1fdmFsdWUpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1OCw2
ICs2NTgsMzEgQEAgdm9pZCB0ZXN0Q291bnRUcmFpbGluZ1plcm9zNjRXaXRob3V0TnVsbAogICAg
IGJvb2wgd29yZENhbkJlWmVybyA9IGZhbHNlOwogICAgIHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2
NEltcGwod29yZENhbkJlWmVybyk7CiB9CisKK3ZvaWQgdGVzdFN0b3JlNjRJbW02NEFkZHJlc3NQ
b2ludGVyKCkKK3sKKyAgICBhdXRvIGRvVGVzdCA9IFtdIChpbnQ2NF90IHZhbHVlKSB7CisgICAg
ICAgIGludDY0X3QgZGVzdDsKKyAgICAgICAgdm9pZCogZGVzdEFkZHJlc3MgPSAmZGVzdDsKKwor
ICAgICAgICBhdXRvIHRlc3QgPSBjb21waWxlKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQpIHsKKyAg
ICAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKGppdCk7CisgICAgICAgICAgICBqaXQuc3Rv
cmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NCh2YWx1ZSksIGRlc3RBZGRyZXNzKTsKKyAg
ICAgICAgICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKGppdCk7CisgICAgICAgICAgICBqaXQucmV0
KCk7CisgICAgICAgIH0pOworCisgICAgICAgIGludm9rZTxzaXplX3Q+KHRlc3QpOworICAgICAg
ICBDSEVDS19FUShkZXN0LCB2YWx1ZSk7CisgICAgfTsKKyAgICAKKyAgICBmb3IgKGF1dG8gdmFs
dWUgOiBpbnQ2NE9wZXJhbmRzKCkpCisgICAgICAgIGRvVGVzdCh2YWx1ZSk7CisKKyAgICBkb1Rl
c3QoMHg5ODc2NTU1NUFBQUE0MzIxKTsKKyAgICBkb1Rlc3QoMHhBQUFBNDMyMTk4NzY1NTU1KTsK
K30KKwogI2VuZGlmIC8vIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKIAogdm9pZCB0ZXN0Q29t
cGFyZURvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uIGNvbmRpdGlvbikKQEAg
LTI0OTksNiArMjUyNCw3IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4o
dGVzdENsZWFyQml0czY0V2l0aE1hc2tUZXJuYXJ5KCkpOwogICAgIFJVTih0ZXN0Q291bnRUcmFp
bGluZ1plcm9zNjQoKSk7CiAgICAgUlVOKHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2NFdpdGhvdXRO
dWxsQ2hlY2soKSk7CisgICAgUlVOKHRlc3RTdG9yZTY0SW1tNjRBZGRyZXNzUG9pbnRlcigpKTsK
ICNlbmRpZgogCiAjaWYgQ1BVKEFSTTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0NDaGVjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0NDaGVjay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0NDaGVjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJERkdEb2VzR0NDaGVjay5oIgorCisjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSGVhcC5oIgor
I2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgREZHIHsKKworI2lmIEVOQUJMRShERkdfRE9FU19HQ19W
QUxJREFUSU9OKQorCitleHRlcm4gY29uc3QgY2hhciogZGZnT3BOYW1lc1tdOworCitKU19FWFBP
UlRfUFJJVkFURSB2b2lkIERvZXNHQ0NoZWNrOjp2ZXJpZnlDYW5HQyhWTSYgdm0pCit7CisgICAg
aWYgKCFleHBlY3REb2VzR0MoKSkgeworICAgICAgICBkYXRhTG9nKCJFcnJvcjogRG9lc0dDIGZh
aWxlZCIpOworICAgICAgICBpZiAoaXNTcGVjaWFsKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
c3BlY2lhbCgpKSB7CisgICAgICAgICAgICBjYXNlIFNwZWNpYWw6OlVuaW5pdGlhbGl6ZWQ6Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNpYWw6OkRGR09TUkV4
aXQ6CisgICAgICAgICAgICAgICAgZGF0YUxvZygiIEAgREZHIG9zciBleGl0Iik7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNpYWw6OkZUTE9TUkV4aXQ6Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZygiIEAgRlRMIG9zciBleGl0Iik7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNwZWNpYWw6OlJlc2VydmVkVW51c2VkOgorICAg
ICAgICAgICAgY2FzZSBTcGVjaWFsOjpOdW1iZXJPZlNwZWNpYWxzOgorICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgZGF0YUxvZygiIEAgREAiLCBub2RlSW5kZXgoKSwgIiAiLCBERkc6
OmRmZ09wTmFtZXNbbm9kZU9wKCldKTsKKworICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IHZtLnRvcENhbGxGcmFtZTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZSkgeworICAgICAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAg
ICAgZGF0YUxvZ0xuKCIgaW4gIiwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIFZNSW5zcGVjdG9y
OjpkdW1wU3RhY2soJnZtLCBjYWxsRnJhbWUpOworICAgICAgICB9CisgICAgICAgIGRhdGFMb2dM
bigpOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7Cit9CisjZW5k
aWYgLy8gRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04pCisKK30gLy8gbmFtZXNwYWNlIERG
RworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDQ2hlY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQ0NoZWNrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0NDaGVjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBWTTsKKworbmFtZXNwYWNlIERGRyB7CisKK3N0cnVjdCBE
b2VzR0NDaGVjayB7CisgICAgZW51bSBjbGFzcyBTcGVjaWFsIHsKKyAgICAgICAgUmVzZXJ2ZWRV
bnVzZWQsIC8vIHNvIHRoYXQgc3BlY2lhbHMgc3RhcnQgd2l0aCAxLiBpc1NwZWNpYWwoKSByZWxp
ZXMgb24gdGhpcy4KKyAgICAgICAgVW5pbml0aWFsaXplZCwKKyAgICAgICAgREZHT1NSRXhpdCwK
KyAgICAgICAgRlRMT1NSRXhpdCwKKyAgICAgICAgTnVtYmVyT2ZTcGVjaWFscworICAgIH07CisK
KyAgICBEb2VzR0NDaGVjaygpCisgICAgICAgIDogbV92YWx1ZShlbmNvZGUodHJ1ZSwgU3BlY2lh
bDo6VW5pbml0aWFsaXplZCkpCisgICAgeyB9CisKKyAgICBzdGF0aWMgdWludDY0X3QgZW5jb2Rl
KGJvb2wgZXhwZWN0RG9lc0dDLCB1bnNpZ25lZCBub2RlSW5kZXgsIHVuc2lnbmVkIG5vZGVPcCkK
KyAgICB7CisgICAgICAgIHVpbnQ2NF90IHJlc3VsdCA9IGJpdHMobm9kZUluZGV4KSA8PCBub2Rl
SW5kZXhTaGlmdDsKKyAgICAgICAgcmVzdWx0IHw9IGJpdHMobm9kZU9wKSA8PCBub2RlT3BTaGlm
dDsKKyAgICAgICAgcmVzdWx0IHw9IGJpdHMoZXhwZWN0RG9lc0dDKSA8PCBleHBlY3REb2VzR0NT
aGlmdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgdWludDY0
X3QgZW5jb2RlKGJvb2wgZXhwZWN0RG9lc0dDLCBTcGVjaWFsIHNwZWNpYWwpCisgICAgeworICAg
ICAgICBBU1NFUlQoYml0cyhzcGVjaWFsKSA8IG51bWJlck9mU3BlY2lhbHMpOworICAgICAgICB1
aW50NjRfdCByZXN1bHQgPSBiaXRzKHNwZWNpYWwpIDw8IHNwZWNpYWxTaGlmdDsKKyAgICAgICAg
cmVzdWx0IHw9IGJpdHMoZXhwZWN0RG9lc0dDKSA8PCBleHBlY3REb2VzR0NTaGlmdDsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkIHNldChib29sIGV4cGVjdERvZXNH
QywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApCisgICAgeworICAgICAgICBt
X3ZhbHVlID0gZW5jb2RlKGV4cGVjdERvZXNHQywgbm9kZUluZGV4LCBub2RlT3ApOworICAgIH0K
KworICAgIHZvaWQgc2V0KGJvb2wgZXhwZWN0RG9lc0dDLCBTcGVjaWFsIHNwZWNpYWwpCisgICAg
eworICAgICAgICBtX3ZhbHVlID0gZW5jb2RlKGV4cGVjdERvZXNHQywgc3BlY2lhbCk7CisgICAg
fQorCisgICAgYm9vbCBleHBlY3REb2VzR0MoKSB7IHJldHVybiBtX3ZhbHVlICYgZXhwZWN0RG9l
c0dDTWFzazsgfQorICAgIFNwZWNpYWwgc3BlY2lhbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNw
ZWNpYWw+KHNwZWNpYWxJbmRleCgpKTsgfQorICAgIHVuc2lnbmVkIG5vZGVJbmRleCgpIHsgcmV0
dXJuIG1fdmFsdWUgPj4gbm9kZUluZGV4U2hpZnQ7IH0KKyAgICB1bnNpZ25lZCBub2RlT3AoKSB7
IHJldHVybiAobV92YWx1ZSA+PiBub2RlT3BTaGlmdCkgJiBub2RlT3BNYXNrOyB9CisKKyAgICBi
b29sIGlzU3BlY2lhbCgpIHsgcmV0dXJuIHNwZWNpYWxJbmRleCgpOyB9CisKKyAgICB2b2lkIHZl
cmlmeUNhbkdDKFZNJik7CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgc3BlY2lhbEluZGV4KCkg
eyByZXR1cm4gKG1fdmFsdWUgPj4gc3BlY2lhbFNoaWZ0KSAmIHNwZWNpYWxNYXNrOyB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdWludDY0X3QgYml0cyhUIHZhbHVlKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmFsdWUpOyB9CisKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnQ2NF90IG51bWJlck9mU3BlY2lhbHMgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oU3Bl
Y2lhbDo6TnVtYmVyT2ZTcGVjaWFscyk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IGV4cGVjdERvZXNHQ1NoaWZ0ID0gMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNw
ZWNpYWxTaGlmdCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBub2RlT3BTaGlm
dCA9IDE2OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9kZUluZGV4U2hpZnQgPSAz
MjsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZXhwZWN0RG9lc0dDTWFzayA9IDB4
MTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNwZWNpYWxNYXNrID0gMHg3ZmZmOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9kZU9wTWFzayA9IDB4ZmZmZjsKKworICAg
IHVpbnQ2NF90IG1fdmFsdWUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBERkcKKwordXNp
bmcgREZHOjpEb2VzR0NDaGVjazsKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcg
KzYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogc3RhdGljIGNvbnN0ZXhw
ciBib29sIGR1bXBPU1JBdmFpbGFiaWxpdHlEYXRhID0gZmFsc2U7CiAKIC8vIENyZWF0ZXMgYW4g
YXJyYXkgb2Ygc3RyaW5naXplZCBuYW1lcy4KLXN0YXRpYyBjb25zdCBjaGFyKiBkZmdPcE5hbWVz
W10gPSB7Citjb25zdCBjaGFyKiBkZmdPcE5hbWVzW10gPSB7CiAjZGVmaW5lIFNUUklOR0laRV9E
RkdfT1BfRU5VTShvcGNvZGUsIGZsYWdzKSAjb3Bjb2RlICwKICAgICBGT1JfRUFDSF9ERkdfT1Ao
U1RSSU5HSVpFX0RGR19PUF9FTlVNKQogI3VuZGVmIFNUUklOR0laRV9ERkdfT1BfRU5VTQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyNjI0
NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBpbGVPU1JFeAogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAvLyBXZSdy
ZSBhYm91dCB0byBleGl0IG9wdGltaXplZCBjb2RlLiBTbywgdGhlcmUncyBubyBsb25nZXIgYW55
IG9wdGltaXplZAogICAgICAgICAvLyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLgot
ICAgICAgICB2bS5oZWFwLnNldEV4cGVjdERvZXNHQyh0cnVlKTsKKyAgICAgICAgdm0uaGVhcC5z
ZXREb2VzR0NFeHBlY3RhdGlvbih0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lhbDo6REZHT1NSRXhp
dCk7CiAgICAgfQogCiAgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNhdGNoKQpAQCAtNTU1LDExICs1
NTUsMTEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAg
ICAvLyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLiBXZSBuZWVkIHRvIHNldCB0aGlz
IGJlZm9yZSBhcmd1bWVudHMKICAgICAgICAgLy8gbWF0ZXJpYWxpemF0aW9uIGJlbG93IChzZWUg
ZW1pdFJlc3RvcmVBcmd1bWVudHMoKSkuCiAKLSAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0
IEhlYXA6Om1fZXhwZWN0RG9lc0dDIGluIGNvbXBpbGVPU1JFeGl0KCksIHdlIGFsc28gbmVlZAor
ICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBzZXQgSGVhcDo6bV9kb2VzR0MgaW4gY29tcGlsZU9T
UkV4aXQoKSwgd2UgYWxzbyBuZWVkCiAgICAgICAgIC8vIHRvIHNldCBpdCBoZXJlIGJlY2F1c2Ug
Y29tcGlsZU9TUkV4aXQoKSBpcyBvbmx5IGNhbGxlZCBvbiB0aGUgZmlyc3QgdGltZQogICAgICAg
ICAvLyB3ZSBleGl0IGZyb20gdGhpcyBzaXRlLCBidXQgYWxsIHN1YnNlcXVlbnQgZXhpdHMgd2ls
bCB0YWtlIHRoaXMgY29tcGlsZWQKICAgICAgICAgLy8gcmFtcCB3aXRob3V0IGNhbGxpbmcgY29t
cGlsZU9TUkV4aXQoKSBmaXJzdC4KLSAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMih0cnVlKSwgdm0uaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CisgICAg
ICAgIGppdC5zdG9yZTY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KERvZXNHQ0NoZWNrOjpl
bmNvZGUodHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkRGR09TUkV4aXQpKSwgdm0uaGVhcC5h
ZGRyZXNzT2ZEb2VzR0MoKSk7CiAgICAgfQogCiAgICAgLy8gTmVlZCB0byBlbnN1cmUgdGhhdCB0
aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sgdXNhZ2Ug
YXQgZXhpdC4gVGhpcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTM4LDcgKzIxMzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpIHsKICAgICAgICAgYm9vbCBleHBlY3REb2Vz
R0MgPSBkb2VzR0MobV9qaXQuZ3JhcGgoKSwgbm9kZSk7Ci0gICAgICAgIG1faml0LnN0b3JlOChU
cnVzdGVkSW1tMzIoZXhwZWN0RG9lc0dDKSwgdm0oKS5oZWFwLmFkZHJlc3NPZkV4cGVjdERvZXNH
QygpKTsKKyAgICAgICAgbV9qaXQuc3RvcmU2NChUcnVzdGVkSW1tNjQoRG9lc0dDQ2hlY2s6OmVu
Y29kZShleHBlY3REb2VzR0MsIG5vZGUtPmluZGV4KCksIG5vZGUtPm9wKCkpKSwgdm0oKS5oZWFw
LmFkZHJlc3NPZkRvZXNHQygpKTsKICAgICB9CiAKICNpZiBFTkFCTEUoREZHX1JFR0lTVEVSX0FM
TE9DQVRJT05fVkFMSURBVElPTikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA0LDcg
KzcwNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAg
ICAgICAgICAgICBib29sIGV4cGVjdERvZXNHQyA9IGRvZXNHQyhtX2dyYXBoLCBtX25vZGUpOwot
ICAgICAgICAgICAgbV9vdXQuc3RvcmUobV9vdXQuY29uc3RCb29sKGV4cGVjdERvZXNHQyksIG1f
b3V0LmFic29sdXRlKHZtKCkuaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSkpOworICAgICAg
ICAgICAgbV9vdXQuc3RvcmUobV9vdXQuY29uc3RJbnQ2NChEb2VzR0NDaGVjazo6ZW5jb2RlKGV4
cGVjdERvZXNHQywgbV9ub2RlLT5pbmRleCgpLCBtX25vZGUtPm9wKCkpKSwgbV9vdXQuYWJzb2x1
dGUodm0oKS5oZWFwLmFkZHJlc3NPZkRvZXNHQygpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBz
d2l0Y2ggKG1fbm9kZS0+b3AoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YihWTSYgdm0sIHVu
c2lnbmVkCiAgICAgICAgIC8vIGNvZGUgcnVubmluZyB0aGF0IGV4cGVjdHMgbm8gR0MuIFdlIG5l
ZWQgdG8gc2V0IHRoaXMgYmVmb3JlIG9iamVjdAogICAgICAgICAvLyBtYXRlcmlhbGl6YXRpb24g
YmVsb3cuCiAKLSAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZXhwZWN0RG9l
c0dDIGluIGNvbXBpbGVGVExPU1JFeGl0KCksIHdlIGFsc28gbmVlZAorICAgICAgICAvLyBFdmVu
IHRob3VnaCB3ZSBzZXQgSGVhcDo6bV9kb2VzR0MgaW4gY29tcGlsZUZUTE9TUkV4aXQoKSwgd2Ug
YWxzbyBuZWVkCiAgICAgICAgIC8vIHRvIHNldCBpdCBoZXJlIGJlY2F1c2UgY29tcGlsZUZUTE9T
UkV4aXQoKSBpcyBvbmx5IGNhbGxlZCBvbiB0aGUgZmlyc3QgdGltZQogICAgICAgICAvLyB3ZSBl
eGl0IGZyb20gdGhpcyBzaXRlLCBidXQgYWxsIHN1YnNlcXVlbnQgZXhpdHMgd2lsbCB0YWtlIHRo
aXMgY29tcGlsZWQKICAgICAgICAgLy8gcmFtcCB3aXRob3V0IGNhbGxpbmcgY29tcGlsZUZUTE9T
UkV4aXQoKSBmaXJzdC4KLSAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMih0cnVlKSwgdm0uaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CisgICAgICAgIGpp
dC5zdG9yZTY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUo
dHJ1ZSwgRG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkZUTE9TUkV4aXQpKSwgdm0uaGVhcC5hZGRyZXNz
T2ZEb2VzR0MoKSk7CiAgICAgfQogCiAgICAgLy8gQnJpbmcgdGhlIHN0YWNrIGJhY2sgaW50byBh
IHNhbmUgZm9ybSBhbmQgYXNzZXJ0IHRoYXQgaXQncyBzYW5lLgpAQCAtNTQ4LDcgKzU0OCw3IEBA
IGV4dGVybiAiQyIgSklUX09QRVJBVElPTiB2b2lkKiBvcGVyYXRpb24KICAgICBpZiAodmFsaWRh
dGVERkdEb2VzR0MpIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gZXhpdCBvcHRpbWl6ZWQg
Y29kZS4gU28sIHRoZXJlJ3Mgbm8gbG9uZ2VyIGFueSBvcHRpbWl6ZWQKICAgICAgICAgLy8gY29k
ZSBydW5uaW5nIHRoYXQgZXhwZWN0cyBubyBHQy4KLSAgICAgICAgdm0uaGVhcC5zZXRFeHBlY3RE
b2VzR0ModHJ1ZSk7CisgICAgICAgIHZtLmhlYXAuc2V0RG9lc0dDRXhwZWN0YXRpb24odHJ1ZSwg
RG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkZUTE9TUkV4aXQpOwogICAgIH0KIAogICAgIGlmICh2bS5j
YWxsRnJhbWVGb3JDYXRjaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBs
ZXRlU3Vic3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2UuY3BwCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEy
MCw3ICsxMjAsNyBAQCB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0ZVNsb3coVk0mCiB2
b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3coVk0mIHZtLCBzaXplX3Qgc2l6
ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkKIHsKICAgICBpZiAodmFsaWRh
dGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dD
KCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBzYW5pdGl6ZVN0YWNr
Rm9yVk0odm0pOwogICAgIApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQqIENvbXBsZXRlU3Vic3Bh
Y2U6OnRyeUFsbG9jYXRlU2xvdygKIHZvaWQqIENvbXBsZXRlU3Vic3BhY2U6OnJlYWxsb2NhdGVQ
cmVjaXNlQWxsb2NhdGlvbk5vblZpcnR1YWwoVk0mIHZtLCBIZWFwQ2VsbCogb2xkQ2VsbCwgc2l6
ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2
bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIG1ldCBpbiBCdXR0ZXJmbHkgZm9yIGV4YW1wbGUuCiAgICAgQVNTRVJUKG9sZENlbGwtPmlz
UHJlY2lzZUFsbG9jYXRpb24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgJKHJldmlzaW9uIDI2MjQ3OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogQUxXQVlTX0lO
TElORSB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mIHZtLCBz
aXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAg
IHZtLmhlYXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0g
YWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJ
ZkV4aXN0cykpCiAgICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVm
ZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9EZWZlckdDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
RGVmZXJHQy5oCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9EZWZlckdDLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICB+RGVmZXJHQygpCiAgICAgewogICAgICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2hlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICAg
ICAgbV9oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgICAgIG1faGVhcC5kZWNyZW1lbnREZWZlcnJh
bERlcHRoQW5kR0NJZk5lZWRlZCgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmgJKHJldmlzaW9u
IDI2MjQ3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250ZXh0
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNyArMzgsNyBAQCBBTFdBWVNfSU5MSU5F
IEdDRGVmZXJyYWxDb250ZXh0OjpHQ0RlZmVyCiBBTFdBWVNfSU5MSU5FIEdDRGVmZXJyYWxDb250
ZXh0Ojp+R0NEZWZlcnJhbENvbnRleHQoKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAg
bV9oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAoVU5MSUtFTFkobV9zaG91bGRHQykpCiAg
ICAgICAgIG1faGVhcC5jb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtp
dC5vcmc+CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEwNjQsNyArMTA2NCw3IEBAIHZvaWQgSGVhcDo6Y29s
bGVjdChTeW5jaHJvbm91c25lc3Mgc3luY2gKIHZvaWQgSGVhcDo6Y29sbGVjdE5vdyhTeW5jaHJv
bm91c25lc3Mgc3luY2hyb25vdXNuZXNzLCBHQ1JlcXVlc3QgcmVxdWVzdCkKIHsKICAgICBpZiAo
dmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygp
KTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIHN3aXRjaCAoc3luY2hyb25vdXNuZXNz
KSB7CiAgICAgY2FzZSBBc3luYzogewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBIZWFwOjpj
b2xsZWN0Tm93KFN5bmNocm9ub3VzbmVzcyBzeQogdm9pZCBIZWFwOjpjb2xsZWN0QXN5bmMoR0NS
ZXF1ZXN0IHJlcXVlc3QpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBS
RUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAK
ICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkBAIC0xMTIxLDcg
KzExMjEsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBc3luYyhHQ1JlcXVlc3QgcmVxdWVzCiB2b2lk
IEhlYXA6OmNvbGxlY3RTeW5jKEdDUmVxdWVzdCByZXF1ZXN0KQogewogICAgIGlmICh2YWxpZGF0
ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAg
ICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVjdCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTc4NCw3ICsxNzg0LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6
cmVzdW1lVGhlTXV0YXRvcgogdm9pZCBIZWFwOjpzdG9wSWZOZWNlc3NhcnlTbG93KCkKIHsKICAg
ICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERv
ZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIHdoaWxlIChzdG9wSWZOZWNl
c3NhcnlTbG93KG1fd29ybGRTdGF0ZS5sb2FkKCkpKSB7IH0KICAgICAKQEAgLTE3OTksNyArMTc5
OSw3IEBAIHZvaWQgSGVhcDo6c3RvcElmTmVjZXNzYXJ5U2xvdygpCiBib29sIEhlYXA6OnN0b3BJ
Zk5lY2Vzc2FyeVNsb3codW5zaWduZWQgb2xkU3RhdGUpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZH
RG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAg
IHZlcmlmeUNhbkdDKCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChvbGRTdGF0ZSAmIGhhc0FjY2Vz
c0JpdCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIShvbGRTdGF0ZSAmIHN0b3BwZWRCaXQpKTsKQEAg
LTI2MDEsNyArMjYwMSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcihH
Q0QKIHsKICAgICBBU1NFUlQoZGVmZXJyYWxDb250ZXh0IHx8IGlzRGVmZXJyZWQoKSB8fCAhRGlz
YWxsb3dHQzo6aXNJbkVmZmVjdE9uQ3VycmVudFRocmVhZCgpKTsKICAgICBpZiAodmFsaWRhdGVE
RkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAg
ICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDI2MjQ3
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkg
KHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjUs
NyBAQAogI2luY2x1ZGUgIkNlbGxTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rpb25TY29wZS5o
IgogI2luY2x1ZGUgIkNvbGxlY3RvclBoYXNlLmgiCisjaW5jbHVkZSAiREZHRG9lc0dDQ2hlY2su
aCIKICNpbmNsdWRlICJEZWxldGVBbGxDb2RlRWZmb3J0LmgiCiAjaW5jbHVkZSAiR0NDb25kdWN0
b3IuaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIgpAQCAtMzAzLDEzICsz
MDQsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IHVuc2lnbmVkKiBhZGRyZXNzT2ZCYXJyaWVyVGhy
ZXNob2xkKCkgY29uc3QgeyByZXR1cm4gJm1fYmFycmllclRocmVzaG9sZDsgfQogCiAjaWYgRU5B
QkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04pCi0gICAgYm9vbCBleHBlY3REb2VzR0MoKSBjb25z
dCB7IHJldHVybiBtX2V4cGVjdERvZXNHQzsgfQotICAgIHZvaWQgc2V0RXhwZWN0RG9lc0dDKGJv
b2wgdmFsdWUpIHsgbV9leHBlY3REb2VzR0MgPSB2YWx1ZTsgfQotICAgIGJvb2wqIGFkZHJlc3NP
ZkV4cGVjdERvZXNHQygpIHsgcmV0dXJuICZtX2V4cGVjdERvZXNHQzsgfQorICAgIERvZXNHQ0No
ZWNrKiBhZGRyZXNzT2ZEb2VzR0MoKSB7IHJldHVybiAmbV9kb2VzR0M7IH0KKyAgICB2b2lkIHNl
dERvZXNHQ0V4cGVjdGF0aW9uKGJvb2wgZXhwZWN0RG9lc0dDLCB1bnNpZ25lZCBub2RlSW5kZXgs
IHVuc2lnbmVkIG5vZGVPcCkgeyBtX2RvZXNHQy5zZXQoZXhwZWN0RG9lc0dDLCBub2RlSW5kZXgs
IG5vZGVPcCk7IH0KKyAgICB2b2lkIHNldERvZXNHQ0V4cGVjdGF0aW9uKGJvb2wgZXhwZWN0RG9l
c0dDLCBEb2VzR0NDaGVjazo6U3BlY2lhbCBzcGVjaWFsKSB7IG1fZG9lc0dDLnNldChleHBlY3RE
b2VzR0MsIHNwZWNpYWwpOyB9CisgICAgdm9pZCB2ZXJpZnlDYW5HQygpIHsgbV9kb2VzR0MudmVy
aWZ5Q2FuR0Modm0oKSk7IH0KICNlbHNlCi0gICAgYm9vbCBleHBlY3REb2VzR0MoKSBjb25zdCB7
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0
RXhwZWN0RG9lc0dDKGJvb2wpIHsgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7IH0KLSAgICBi
b29sKiBhZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSB7IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OyByZXR1cm4gbnVsbHB0cjsgfQorICAgIERvZXNHQ0NoZWNrKiBhZGRyZXNzT2ZEb2VzR0MoKSB7
IFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZvaWQg
c2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCwgdW5zaWduZWQsIHVuc2lnbmVkKSB7IH0KKyAgICB2
b2lkIHNldERvZXNHQ0V4cGVjdGF0aW9uKGJvb2wsIERvZXNHQ0NoZWNrOjpTcGVjaWFsKSB7IH0K
KyAgICB2b2lkIHZlcmlmeUNhbkdDKCkgeyB9CiAjZW5kaWYKIAogICAgIC8vIElmIHRydWUsIHRo
ZSBHQyBiZWxpZXZlcyB0aGF0IHRoZSBtdXRhdG9yIGlzIGN1cnJlbnRseSBtZXNzaW5nIHdpdGgg
dGhlIGhlYXAuIFdlIGNhbGwgdGhpcwpAQCAtNjA2LDcgKzYwOSw3IEBAIHByaXZhdGU6CiAgICAg
TWFya2FibGU8Q29sbGVjdGlvblNjb3BlLCBFbnVtTWFya2FibGVUcmFpdHM8Q29sbGVjdGlvblNj
b3BlPj4gbV9sYXN0Q29sbGVjdGlvblNjb3BlOwogICAgIExvY2sgbV9yYWNlTWFya1N0YWNrTG9j
azsKICNpZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikKLSAgICBib29sIG1fZXhwZWN0
RG9lc0dDIHsgdHJ1ZSB9OworICAgIERvZXNHQ0NoZWNrIG1fZG9lc0dDOwogI2VuZGlmCiAKICAg
ICBTdHJ1Y3R1cmVJRFRhYmxlIG1fc3RydWN0dXJlSURUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM2
LDcgKzIzNiw3IEBAIGlubGluZSB2b2lkIEhlYXA6OmRlcHJlY2F0ZWRSZXBvcnRFeHRyYU0KIGlu
bGluZSB2b2lkIEhlYXA6OmFjcXVpcmVBY2Nlc3MoKQogewogICAgIGlmICh2YWxpZGF0ZURGR0Rv
ZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2
ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKG1fd29ybGRTdGF0ZS5jb21wYXJlRXhjaGFuZ2VXZWFr
KDAsIGhhc0FjY2Vzc0JpdCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2Myw3ICsyNjMsNyBAQCBp
bmxpbmUgYm9vbCBIZWFwOjptYXlOZWVkVG9TdG9wKCkKIGlubGluZSB2b2lkIEhlYXA6OnN0b3BJ
Zk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxF
QVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAg
ICBpZiAobWF5TmVlZFRvU3RvcCgpKQogICAgICAgICBzdG9wSWZOZWNlc3NhcnlTbG93KCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklu
bGluZXMuaAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiBBTFdBWVNfSU5MSU5FIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxv
Y2F0ZShIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxv
Y2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9l
c0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAg
ICAgaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIHJldHVybiBtX2ZyZWVMaXN0LmFsbG9jYXRlKAog
ICAgICAgICBbJl0gKCkgLT4gSGVhcENlbGwqIHsKICAgICAgICAgICAgIHNhbml0aXplU3RhY2tG
b3JWTShoZWFwLnZtKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lz
ZUFsbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1ByZWNpc2VBbGxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjYyNDc4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FsaWduZWRGb3JQcmVjaXNlQWwKIFBy
ZWNpc2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6dHJ5Q3JlYXRlKEhlYXAmIGhlYXAs
IHNpemVfdCBzaXplLCBTdWJzcGFjZSogc3Vic3BhY2UsIHVuc2lnbmVkIGluZGV4SW5TcGFjZSkK
IHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGhl
YXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICBoZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBz
aXplX3QgYWRqdXN0ZWRBbGlnbm1lbnRBbGxvY2F0aW9uU2l6ZSA9IGhlYWRlclNpemUoKSArIHNp
emUgKyBoYWxmQWxpZ25tZW50OwogICAgIHN0YXRpY19hc3NlcnQoaGFsZkFsaWdubWVudCA9PSA4
LCAiV2UgYXNzdW1lIHRoYXQgbWVtb3J5IHJldHVybmVkIGJ5IG1hbGxvYyBoYXMgYWxpZ25tZW50
ID49IDguIik7CkBAIC0xMjMsNyArMTIzLDcgQEAgUHJlY2lzZUFsbG9jYXRpb24qIFByZWNpc2VB
bGxvY2F0aW9uOjp0cgogUHJlY2lzZUFsbG9jYXRpb24qIFByZWNpc2VBbGxvY2F0aW9uOjpjcmVh
dGVGb3JMb3dlclRpZXIoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUsIFN1YnNwYWNlKiBzdWJzcGFj
ZSwgdWludDhfdCBsb3dlclRpZXJJbmRleCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0Mp
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICBo
ZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBzaXplX3QgYWRqdXN0ZWRBbGlnbm1lbnRBbGxvY2F0
aW9uU2l6ZSA9IGhlYWRlclNpemUoKSArIHNpemUgKyBoYWxmQWxpZ25tZW50OwogICAgIHN0YXRp
Y19hc3NlcnQoaGFsZkFsaWdubWVudCA9PSA4LCAiV2UgYXNzdW1lIHRoYXQgbWVtb3J5IHJldHVy
bmVkIGJ5IG1hbGxvYyBoYXMgYWxpZ25tZW50ID49IDguIik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDI2MjQ3OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTczMyw3
ICs3MzMsNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoVk0mIHZtKQogQUxXQVlT
X0lOTElORSBKU1N0cmluZyoganNTaW5nbGVDaGFyYWN0ZXJTdHJpbmcoVk0mIHZtLCBVQ2hhciBj
KQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
dm0uaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtLmhlYXAudmVyaWZ5Q2FuR0MoKTsK
ICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCiAgICAgICAgIHJldHVybiB2
bS5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpOwogICAgIHJldHVybiBKU1N0
cmluZzo6Y3JlYXRlKHZtLCBTdHJpbmdJbXBsOjpjcmVhdGUoJmMsIDEpKTsKQEAgLTc2Myw3ICs3
NjMsNyBAQCBBTFdBWVNfSU5MSU5FIElkZW50aWZpZXIgSlNTdHJpbmc6OnRvSWRlCiBBTFdBWVNf
SU5MSU5FIEF0b21TdHJpbmcgSlNTdHJpbmc6OnRvQXRvbVN0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0o
KS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3BlVG9BdG9t
U3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIEF0b21TdHJpbmcodmFsdWVJbnRlcm5h
bCgpKTsKQEAgLTc3Miw3ICs3NzIsNyBAQCBBTFdBWVNfSU5MSU5FIEF0b21TdHJpbmcgSlNTdHJp
bmc6OnRvQXRvCiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gSlNTdHJpbmc6
OnRvRXhpc3RpbmdBdG9tU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0
CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2
bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0Mo
KTsKICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBK
U1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGVUb0V4aXN0aW5nQXRvbVN0cmluZyhnbG9i
YWxPYmplY3QpOwogICAgIGlmICh2YWx1ZUludGVybmFsKCkuaW1wbCgpLT5pc0F0b20oKSkKQEAg
LTc4Myw3ICs3ODMsNyBAQCBBTFdBWVNfSU5MSU5FIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gSlNT
CiBpbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6dmFsdWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtKCku
aGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1JvcGUoKSkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9wZShnbG9iYWxP
YmplY3QpOwogICAgIHJldHVybiB2YWx1ZUludGVybmFsKCk7CkBAIC03OTMsNyArNzkzLDcgQEAg
aW5saW5lIGNvbnN0IFN0cmluZyYgSlNTdHJpbmc6OnRyeUdldFZhbAogewogICAgIGlmIChhbGxv
Y2F0aW9uQWxsb3dlZCkgewogICAgICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICAg
ICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgICAgIGlmIChpc1JvcGUoKSkgewogICAg
ICAgICAgICAgLy8gUGFzcyBudWxscHRyIGZvciB0aGUgSlNHbG9iYWxPYmplY3Qgc28gdGhhdCBy
ZXNvbHZlUm9wZSBkb2VzIG5vdCB0aHJvdyBpbiB0aGUgZXZlbnQgb2YgYW4gT09NIGVycm9yLgog
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMp
LT5yZXNvbHZlUm9wZShudWxscHRyKTsKQEAgLTk4Myw3ICs5ODMsNyBAQCBpbmxpbmUgYm9vbCBp
c0pTU3RyaW5nKEpTVmFsdWUgdikKIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyBKU1JvcGVTdHJp
bmc6OnVuc2FmZVZpZXcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAg
ICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVh
cC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAg
IGlmIChpc1N1YnN0cmluZygpKSB7CiAgICAgICAgIGF1dG8mIGJhc2UgPSBzdWJzdHJpbmdCYXNl
KCktPnZhbHVlSW50ZXJuYWwoKTsKICAgICAgICAgaWYgKGJhc2UuaXM4Qml0KCkpCkBAIC05OTYs
NyArOTk2LDcgQEAgQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IEpTUm9wZVN0cmluZzo6dQogQUxX
QVlTX0lOTElORSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcgSlNSb3BlU3RyaW5nOjp2
aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5H
QygpOwogICAgIGlmIChpc1N1YnN0cmluZygpKSB7CiAgICAgICAgIGF1dG8mIGJhc2UgPSBzdWJz
dHJpbmdCYXNlKCktPnZhbHVlSW50ZXJuYWwoKTsKICAgICAgICAgaWYgKGJhc2UuaXM4Qml0KCkp
CkBAIC0xMDEwLDcgKzEwMTAsNyBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXdXaXRoVW5kZXJs
eWluZ1N0CiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXcgSlNTdHJpbmc6OnVuc2FmZVZpZXcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdE
b2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7
CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1JvcGUoKSkKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT51bnNh
ZmVWaWV3KGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHZhbHVlSW50ZXJuYWwoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJh
eS5oCShyZXZpc2lvbiAyNjI0NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBBTFdB
WVNfSU5MSU5FIEpTQXJyYXkqIGNyZWF0ZVJlZ0V4cE1hdGNoCiAgICAgUmVnRXhwKiByZWdFeHAs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlmICh2
YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5leHBlY3RE
b2VzR0MoKSk7CisgICAgICAgIHZtLmhlYXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIFZlY3Rvcjxp
bnQsIDMyPiBzdWJwYXR0ZXJuUmVzdWx0czsKICAgICBpbnQgcG9zaXRpb24gPSByZWdFeHAtPm1h
dGNoSW5saW5lKGdsb2JhbE9iamVjdCwgdm0sIGlucHV0VmFsdWUsIHN0YXJ0T2Zmc2V0LCBzdWJw
YXR0ZXJuUmVzdWx0cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1Rv
V2FzbUlDQ2FsbGVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1RvV2FzbUlDQ2FsbGVlLmNwcAkocmV2aXNpb24gMjYyNDc1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc21JQ0NhbGxlZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDkgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKLSNpbmNsdWRl
ICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjYyNDc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw4IEBACiAKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUg
IkpTT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5Q29tcGlsZUVycm9yLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgogI2luY2x1ZGUgIldlYkFzc2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmgiCiAKICNpbmNs
dWRlICJXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5Q29tcGlsZUVycm9yUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjYyNDc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlDb21waWxlRXJyb3JQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5QmFycmllcklubGluZXMuaCIKLSNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgotI2lu
Y2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKICNp
bmNsdWRlICJXZWJBc3NlbWJseUNvbXBpbGVFcnJvclByb3RvdHlwZS5sdXQuaCIKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5R2xvYmFsUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjYyNDc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSwxMCArMzEsOCBAQAogI2luY2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZWdyaXR5SW5s
aW5lcy5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNPYmpl
Y3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlHbG9iYWwuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0Mgewogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlH
bG9iYWxQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNlQ29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2MjQ3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDExICsyOCw5IEBACiAKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAKLSNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpT
T2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCi0j
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFu
Y2VQcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5sdXQuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
SW5zdGFuY2VQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5SW5zdGFuY2VQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNjI0
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUluc3RhbmNl
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDkgQEAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oIgot
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNPYmplY3RJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCi0jaW5jbHVkZSAi
U3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFuY2VQcm90b0Z1bmNFeHBvcnRzKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMjYyNDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlMaW5rRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDEwICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TGlua0Vycm9yLmgi
Ci0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldlYkFzc2VtYmx5TGlu
a0Vycm9yUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0
cnVjdG9yLmx1dC5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlMaW5rRXJyb3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TGlua0Vycm9yUHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjYyNDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlM
aW5rRXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw3IEBACiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5QmFycmllcklubGlu
ZXMuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTT2JqZWN0
SW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAKICNpbmNsdWRlICJXZWJBc3NlbWJseUxpbmtFcnJvclByb3RvdHlwZS5sdXQu
aCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjYyNDc1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogCiAjaW5jbHVkZSAiQXV4aWxpYXJ5QmFycmllcklubGluZXMuaCIKLSNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgotI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKICNpbmNs
dWRlICJXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5sdXQuaCIKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2MjQ3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yQ29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJK
U09iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNX
ZWJBc3NlbWJseVJ1bnRpbWVFcnJvci5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
ICNpbmNsdWRlICJXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5oIgogCiAjaW5jbHVk
ZSAiV2ViQXNzZW1ibHlSdW50aW1lRXJyb3JDb25zdHJ1Y3Rvci5sdXQuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseVJ1bnRpbWVFcnJvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI2MjQ3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksNyBAQAogI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKIAogI2luY2x1ZGUgIkF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
SlNPYmplY3RJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseVJ1bnRpbWVFcnJvclByb3Rv
dHlwZS5sdXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400943</attachid>
            <date>2020-06-03 10:51:20 -0700</date>
            <delta_ts>2020-06-03 10:53:33 -0700</delta_ts>
            <desc>test for Windows bot w/ DFGSSAConversionPhase.cpp #include</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>35891</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MjQ5MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNTY0LDYgKzU2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKIAogICAgIGRmZy9ERkdDb21tb24uaAogICAgIGRmZy9ERkdDb21waWxhdGlvbk1vZGUuaAor
ICAgIGRmZy9ERkdEb2VzR0NDaGVjay5oCiAgICAgZGZnL0RGR01pbmlmaWVkSUQuaAogCiAgICAg
ZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsNyBAQCBkZmcvREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmNwcAogZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAKIGRmZy9ERkdEaXNh
c3NlbWJsZXIuY3BwCiBkZmcvREZHRG9lc0dDLmNwcAorZGZnL0RGR0RvZXNHQ0NoZWNrLmNwcAog
ZGZnL0RGR0RyaXZlci5jcHAKIGRmZy9ERkdFZGdlLmNwcAogZGZnL0RGR0Vwb2NoLmNwcApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjQ5MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTM2LDYgKzE5MzYsNyBAQAogCQlGRUI1MUY2QzFBOTdCNjg4
MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQx
ODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGlu
Z1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDMTYwMzIyMzM5RTlG
OTAwQTA0Q0I4IC8qIENlbGxTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRUMxNjAzMTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAqLzsg
fTsKKwkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMzQTNBMDI0ODczNUJD
MDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUM1Nzk3MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNw
ZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUM1Nzk3MjIzMTA1QjQ4MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggKi87
IH07CiAJCUZFQzU3OTc2MjMxMDVGNEUwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzU3OTc1MjMxMDVGNDMwMEJD
QTgzRiAvKiBJbnRlZ3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUM1Nzk3ODIzMTA5NTRDMDBCQ0E4M0YgLyogSW50ZWdyaXR5SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDNTc5
NzcyMzEwOTU0QjAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTIzMiw2ICs1MjMzLDggQEAKIAkJ
RkVCNThDMTIxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyog
RXJyb3JIYW5kbGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVy
cm9ySGFuZGxpbmdTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUMxNjAz
MTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2VsbFNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVDM0Ez
OUYyNDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0RvZXNHQ0NoZWNrLmNwcDsgcGF0aCA9IGRmZy9ERkdEb2VzR0NDaGVjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQzNBM0EwMjQ4NzM1QkMwMDM5NUI1NCAvKiBE
RkdEb2VzR0NDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEb2VzR0NDaGVjay5oOyBwYXRoID0g
ZGZnL0RGR0RvZXNHQ0NoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3
OTcyMjMxMDVCNDgwMEJDQTgzRiAvKiBWTUluc3BlY3RvcklubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFQzU3OTc0MjMxMDVGNDIwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZWdyaXR5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDNTc5NzUyMzEwNUY0MzAwQkNBODNGIC8qIElu
dGVncml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ3JpdHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4OTYsNiArNzg5OSw4IEBACiAJCQkJMEZG
NDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oICovLAogCQkJCTBGNUEx
MjcxMTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuY3BwICovLAogCQkJCTBGNUExMjcyMTky
RDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuaCAqLywKKwkJCQlGRUMzQTM5RjI0ODczNUJDMDAz
OTVCNTQgLyogREZHRG9lc0dDQ2hlY2suY3BwICovLAorCQkJCUZFQzNBM0EwMjQ4NzM1QkMwMDM5
NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oICovLAogCQkJCTBGRDgxQUQwMTU0RkI0RUIwMDk4M0U3
MiAvKiBERkdEb21pbmF0b3JzLmggKi8sCiAJCQkJMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2IC8q
IERGR0RvdWJsZUZvcm1hdFN0YXRlLmggKi8sCiAJCQkJMEZEM0M4MjAxNDExNUNGODAwRkQ4MUNC
IC8qIERGR0RyaXZlci5jcHAgKi8sCkBAIC0xMDE5Niw2ICsxMDIwMSw3IEBACiAJCQkJNzlENUNE
NUIxQzExMDZBOTAwQ0VDQTA3IC8qIFNhbXBsaW5nUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNU
YWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERG
R0RvZXNHQ0NoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkw
MEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NTks
NiArMTQ1OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlPDY0PihzcmMsIGFkZHJlc3MpOwog
ICAgIH0KIAorICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkgeworICAgICAgICAgICAg
c3RvcmU2NChBUk02NFJlZ2lzdGVyczo6enIsIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKGltbSwgZGF0YU1lbW9yeVRl
bXBSZWdpc3RlcigpKTsKKyAgICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
KTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChpbW0u
bV92YWx1ZSksIGFkZHJlc3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjYyNDkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NzcsNiArOTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0
b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF1
dG8gc3JjID0gc2NyYXRjaFJlZ2lzdGVyKCk7CisgICAgICAgIG1vdmUoaW1tLCBzcmMpOworICAg
ICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZxX0VBWG0oYWRkcmVzcyk7CisgICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVheCk7
CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF8zMl82NChp
bW0ubV92YWx1ZSkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVz
dG1hc20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
dGVzdG1hc20uY3BwCShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU4LDYgKzY1OCwzMSBA
QCB2b2lkIHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2NFdpdGhvdXROdWxsCiAgICAgYm9vbCB3b3Jk
Q2FuQmVaZXJvID0gZmFsc2U7CiAgICAgdGVzdENvdW50VHJhaWxpbmdaZXJvczY0SW1wbCh3b3Jk
Q2FuQmVaZXJvKTsKIH0KKwordm9pZCB0ZXN0U3RvcmU2NEltbTY0QWRkcmVzc1BvaW50ZXIoKQor
eworICAgIGF1dG8gZG9UZXN0ID0gW10gKGludDY0X3QgdmFsdWUpIHsKKyAgICAgICAgaW50NjRf
dCBkZXN0OworICAgICAgICB2b2lkKiBkZXN0QWRkcmVzcyA9ICZkZXN0OworCisgICAgICAgIGF1
dG8gdGVzdCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KHZhbHVlKSwgZGVzdEFkZHJlc3MpOworICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaW52b2tlPHNpemVfdD4odGVzdCk7CisgICAgICAgIENIRUNLX0VR
KGRlc3QsIHZhbHVlKTsKKyAgICB9OworICAgIAorICAgIGZvciAoYXV0byB2YWx1ZSA6IGludDY0
T3BlcmFuZHMoKSkKKyAgICAgICAgZG9UZXN0KHZhbHVlKTsKKworICAgIGRvVGVzdCgweDk4NzY1
NTU1QUFBQTQzMjEpOworICAgIGRvVGVzdCgweEFBQUE0MzIxOTg3NjU1NTUpOworfQorCiAjZW5k
aWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogCiB2b2lkIHRlc3RDb21wYXJlRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9uKQpAQCAtMjQ5OSw2ICsy
NTI0LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Q2xlYXJC
aXRzNjRXaXRoTWFza1Rlcm5hcnkoKSk7CiAgICAgUlVOKHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2
NCgpKTsKICAgICBSVU4odGVzdENvdW50VHJhaWxpbmdaZXJvczY0V2l0aG91dE51bGxDaGVjaygp
KTsKKyAgICBSVU4odGVzdFN0b3JlNjRJbW02NEFkZHJlc3NQb2ludGVyKCkpOwogI2VuZGlmCiAK
ICNpZiBDUFUoQVJNNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Q0NoZWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQ0NoZWNrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQ0NoZWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAi
Vk1JbnNwZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorCituYW1lc3BhY2UgSlND
IHsKK25hbWVzcGFjZSBERkcgeworCisjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04p
CisKK2V4dGVybiBjb25zdCBjaGFyKiBkZmdPcE5hbWVzW107CisKK0pTX0VYUE9SVF9QUklWQVRF
IHZvaWQgRG9lc0dDQ2hlY2s6OnZlcmlmeUNhbkdDKFZNJiB2bSkKK3sKKyAgICBpZiAoIWV4cGVj
dERvZXNHQygpKSB7CisgICAgICAgIGRhdGFMb2coIkVycm9yOiBEb2VzR0MgZmFpbGVkIik7Cisg
ICAgICAgIGlmIChpc1NwZWNpYWwoKSkgeworICAgICAgICAgICAgc3dpdGNoIChzcGVjaWFsKCkp
IHsKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6REZHT1NSRXhpdDoKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgQCBERkcgb3NyIGV4aXQiKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6RlRMT1NSRXhpdDoKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgQCBGVEwgb3NyIGV4aXQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6UmVzZXJ2ZWRVbnVzZWQ6CisgICAgICAgICAgICBj
YXNlIFNwZWNpYWw6Ok51bWJlck9mU3BlY2lhbHM6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBkYXRhTG9nKCIgQCBEQCIsIG5vZGVJbmRleCgpLCAiICIsIERGRzo6ZGZnT3BOYW1l
c1tub2RlT3AoKV0pOworCisgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gdm0udG9wQ2Fs
bEZyYW1lOworICAgICAgICBpZiAoY2FsbEZyYW1lKSB7CisgICAgICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBkYXRhTG9n
TG4oIiBpbiAiLCBjb2RlQmxvY2spOworICAgICAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBTdGFj
aygmdm0sIGNhbGxGcmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZ0xuKCk7CisgICAg
fQorICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKK30KKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikKKworfSAvLyBuYW1lc3BhY2UgREZHCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hl
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0No
ZWNrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0NDaGVjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxjc3RkaW50PgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBWTTsKKworbmFtZXNwYWNlIERGRyB7CisKK3N0cnVjdCBEb2VzR0NDaGVjayB7
CisgICAgZW51bSBjbGFzcyBTcGVjaWFsIHsKKyAgICAgICAgUmVzZXJ2ZWRVbnVzZWQsIC8vIHNv
IHRoYXQgc3BlY2lhbHMgc3RhcnQgd2l0aCAxLiBpc1NwZWNpYWwoKSByZWxpZXMgb24gdGhpcy4K
KyAgICAgICAgVW5pbml0aWFsaXplZCwKKyAgICAgICAgREZHT1NSRXhpdCwKKyAgICAgICAgRlRM
T1NSRXhpdCwKKyAgICAgICAgTnVtYmVyT2ZTcGVjaWFscworICAgIH07CisKKyAgICBEb2VzR0ND
aGVjaygpCisgICAgICAgIDogbV92YWx1ZShlbmNvZGUodHJ1ZSwgU3BlY2lhbDo6VW5pbml0aWFs
aXplZCkpCisgICAgeyB9CisKKyAgICBzdGF0aWMgdWludDY0X3QgZW5jb2RlKGJvb2wgZXhwZWN0
RG9lc0dDLCB1bnNpZ25lZCBub2RlSW5kZXgsIHVuc2lnbmVkIG5vZGVPcCkKKyAgICB7CisgICAg
ICAgIHVpbnQ2NF90IHJlc3VsdCA9IGJpdHMobm9kZUluZGV4KSA8PCBub2RlSW5kZXhTaGlmdDsK
KyAgICAgICAgcmVzdWx0IHw9IGJpdHMobm9kZU9wKSA8PCBub2RlT3BTaGlmdDsKKyAgICAgICAg
cmVzdWx0IHw9IGJpdHMoZXhwZWN0RG9lc0dDKSA8PCBleHBlY3REb2VzR0NTaGlmdDsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgdWludDY0X3QgZW5jb2RlKGJv
b2wgZXhwZWN0RG9lc0dDLCBTcGVjaWFsIHNwZWNpYWwpCisgICAgeworICAgICAgICBBU1NFUlQo
Yml0cyhzcGVjaWFsKSA8IG51bWJlck9mU3BlY2lhbHMpOworICAgICAgICB1aW50NjRfdCByZXN1
bHQgPSBiaXRzKHNwZWNpYWwpIDw8IHNwZWNpYWxTaGlmdDsKKyAgICAgICAgcmVzdWx0IHw9IGJp
dHMoZXhwZWN0RG9lc0dDKSA8PCBleHBlY3REb2VzR0NTaGlmdDsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2b2lkIHNldChib29sIGV4cGVjdERvZXNHQywgdW5zaWduZWQg
bm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApCisgICAgeworICAgICAgICBtX3ZhbHVlID0gZW5j
b2RlKGV4cGVjdERvZXNHQywgbm9kZUluZGV4LCBub2RlT3ApOworICAgIH0KKworICAgIHZvaWQg
c2V0KGJvb2wgZXhwZWN0RG9lc0dDLCBTcGVjaWFsIHNwZWNpYWwpCisgICAgeworICAgICAgICBt
X3ZhbHVlID0gZW5jb2RlKGV4cGVjdERvZXNHQywgc3BlY2lhbCk7CisgICAgfQorCisgICAgYm9v
bCBleHBlY3REb2VzR0MoKSB7IHJldHVybiBtX3ZhbHVlICYgZXhwZWN0RG9lc0dDTWFzazsgfQor
ICAgIFNwZWNpYWwgc3BlY2lhbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNwZWNpYWw+KHNwZWNp
YWxJbmRleCgpKTsgfQorICAgIHVuc2lnbmVkIG5vZGVJbmRleCgpIHsgcmV0dXJuIG1fdmFsdWUg
Pj4gbm9kZUluZGV4U2hpZnQ7IH0KKyAgICB1bnNpZ25lZCBub2RlT3AoKSB7IHJldHVybiAobV92
YWx1ZSA+PiBub2RlT3BTaGlmdCkgJiBub2RlT3BNYXNrOyB9CisKKyAgICBib29sIGlzU3BlY2lh
bCgpIHsgcmV0dXJuIHNwZWNpYWxJbmRleCgpOyB9CisKKyAgICB2b2lkIHZlcmlmeUNhbkdDKFZN
Jik7CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgc3BlY2lhbEluZGV4KCkgeyByZXR1cm4gKG1f
dmFsdWUgPj4gc3BlY2lhbFNoaWZ0KSAmIHNwZWNpYWxNYXNrOyB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdGF0aWMgdWludDY0X3QgYml0cyhUIHZhbHVlKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odmFsdWUpOyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90
IG51bWJlck9mU3BlY2lhbHMgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oU3BlY2lhbDo6TnVtYmVy
T2ZTcGVjaWFscyk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGV4cGVjdERvZXNH
Q1NoaWZ0ID0gMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNwZWNpYWxTaGlmdCA9
IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBub2RlT3BTaGlmdCA9IDE2OworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9kZUluZGV4U2hpZnQgPSAzMjsKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZXhwZWN0RG9lc0dDTWFzayA9IDB4MTsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHNwZWNpYWxNYXNrID0gMHg3ZmZmOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbm9kZU9wTWFzayA9IDB4ZmZmZjsKKworICAgIHVpbnQ2NF90IG1f
dmFsdWUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBERkcKKwordXNpbmcgREZHOjpEb2Vz
R0NDaGVjazsKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBP
U1JBdmFpbGFiaWxpdHlEYXRhID0gZmFsc2U7CiAKIC8vIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc3Ry
aW5naXplZCBuYW1lcy4KLXN0YXRpYyBjb25zdCBjaGFyKiBkZmdPcE5hbWVzW10gPSB7Citjb25z
dCBjaGFyKiBkZmdPcE5hbWVzW10gPSB7CiAjZGVmaW5lIFNUUklOR0laRV9ERkdfT1BfRU5VTShv
cGNvZGUsIGZsYWdzKSAjb3Bjb2RlICwKICAgICBGT1JfRUFDSF9ERkdfT1AoU1RSSU5HSVpFX0RG
R19PUF9FTlVNKQogI3VuZGVmIFNUUklOR0laRV9ERkdfT1BfRU5VTQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDYsNyArMTQ2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVPU1JFeAog
ICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAvLyBXZSdyZSBhYm91dCB0byBl
eGl0IG9wdGltaXplZCBjb2RlLiBTbywgdGhlcmUncyBubyBsb25nZXIgYW55IG9wdGltaXplZAog
ICAgICAgICAvLyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLgotICAgICAgICB2bS5o
ZWFwLnNldEV4cGVjdERvZXNHQyh0cnVlKTsKKyAgICAgICAgdm0uaGVhcC5zZXREb2VzR0NFeHBl
Y3RhdGlvbih0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lhbDo6REZHT1NSRXhpdCk7CiAgICAgfQog
CiAgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNhdGNoKQpAQCAtNTU1LDExICs1NTUsMTEgQEAgdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAvLyBjb2RlIHJ1
bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLiBXZSBuZWVkIHRvIHNldCB0aGlzIGJlZm9yZSBhcmd1
bWVudHMKICAgICAgICAgLy8gbWF0ZXJpYWxpemF0aW9uIGJlbG93IChzZWUgZW1pdFJlc3RvcmVB
cmd1bWVudHMoKSkuCiAKLSAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZXhw
ZWN0RG9lc0dDIGluIGNvbXBpbGVPU1JFeGl0KCksIHdlIGFsc28gbmVlZAorICAgICAgICAvLyBF
dmVuIHRob3VnaCB3ZSBzZXQgSGVhcDo6bV9kb2VzR0MgaW4gY29tcGlsZU9TUkV4aXQoKSwgd2Ug
YWxzbyBuZWVkCiAgICAgICAgIC8vIHRvIHNldCBpdCBoZXJlIGJlY2F1c2UgY29tcGlsZU9TUkV4
aXQoKSBpcyBvbmx5IGNhbGxlZCBvbiB0aGUgZmlyc3QgdGltZQogICAgICAgICAvLyB3ZSBleGl0
IGZyb20gdGhpcyBzaXRlLCBidXQgYWxsIHN1YnNlcXVlbnQgZXhpdHMgd2lsbCB0YWtlIHRoaXMg
Y29tcGlsZWQKICAgICAgICAgLy8gcmFtcCB3aXRob3V0IGNhbGxpbmcgY29tcGlsZU9TUkV4aXQo
KSBmaXJzdC4KLSAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0
cnVlKSwgdm0uaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CisgICAgICAgIGppdC5zdG9y
ZTY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUodHJ1ZSwg
RG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkRGR09TUkV4aXQpKSwgdm0uaGVhcC5hZGRyZXNzT2ZEb2Vz
R0MoKSk7CiAgICAgfQogCiAgICAgLy8gTmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3RhY2sgcG9p
bnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sgdXNhZ2UgYXQgZXhpdC4gVGhp
cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkRGR1NTQUNhbGN1bGF0b3IuaCIKICNpbmNsdWRlICJERkdWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNp
bmNsdWRlICJPcGVyYW5kSW5saW5lcy5oIgogCiAjdW5kZWYgUkVMRUFTRV9BU1NFUlQKICNkZWZp
bmUgUkVMRUFTRV9BU1NFUlQoYXNzZXJ0aW9uKSBkbyB7IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjYy
NDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw3ICsyMTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAg
ICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0gZG9lc0dDKG1faml0LmdyYXBoKCksIG5vZGUpOwot
ICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKGV4cGVjdERvZXNHQyksIHZtKCkuaGVh
cC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CisgICAgICAgIG1faml0LnN0b3JlNjQoVHJ1c3Rl
ZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUoZXhwZWN0RG9lc0dDLCBub2RlLT5pbmRleCgpLCBu
b2RlLT5vcCgpKSksIHZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSk7CiAgICAgfQogCiAjaWYg
RU5BQkxFKERGR19SRUdJU1RFUl9BTExPQ0FUSU9OX1ZBTElEQVRJT04pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNjI0
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcwNCw3ICs3MDQsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlmICh2
YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAgICAgYm9vbCBleHBlY3REb2VzR0MgPSBkb2Vz
R0MobV9ncmFwaCwgbV9ub2RlKTsKLSAgICAgICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNvbnN0
Qm9vbChleHBlY3REb2VzR0MpLCBtX291dC5hYnNvbHV0ZSh2bSgpLmhlYXAuYWRkcmVzc09mRXhw
ZWN0RG9lc0dDKCkpKTsKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNvbnN0SW50NjQo
RG9lc0dDQ2hlY2s6OmVuY29kZShleHBlY3REb2VzR0MsIG1fbm9kZS0+aW5kZXgoKSwgbV9ub2Rl
LT5vcCgpKSksIG1fb3V0LmFic29sdXRlKHZtKCkuaGVhcC5hZGRyZXNzT2ZEb2VzR0MoKSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlz
aW9uIDI2MjQ5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDExICsyMTEsMTEgQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVN0dWIoVk0mIHZtLCB1bnNpZ25lZAogICAgICAgICAvLyBjb2RlIHJ1bm5pbmcgdGhh
dCBleHBlY3RzIG5vIEdDLiBXZSBuZWVkIHRvIHNldCB0aGlzIGJlZm9yZSBvYmplY3QKICAgICAg
ICAgLy8gbWF0ZXJpYWxpemF0aW9uIGJlbG93LgogCi0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdl
IHNldCBIZWFwOjptX2V4cGVjdERvZXNHQyBpbiBjb21waWxlRlRMT1NSRXhpdCgpLCB3ZSBhbHNv
IG5lZWQKKyAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZG9lc0dDIGluIGNv
bXBpbGVGVExPU1JFeGl0KCksIHdlIGFsc28gbmVlZAogICAgICAgICAvLyB0byBzZXQgaXQgaGVy
ZSBiZWNhdXNlIGNvbXBpbGVGVExPU1JFeGl0KCkgaXMgb25seSBjYWxsZWQgb24gdGhlIGZpcnN0
IHRpbWUKICAgICAgICAgLy8gd2UgZXhpdCBmcm9tIHRoaXMgc2l0ZSwgYnV0IGFsbCBzdWJzZXF1
ZW50IGV4aXRzIHdpbGwgdGFrZSB0aGlzIGNvbXBpbGVkCiAgICAgICAgIC8vIHJhbXAgd2l0aG91
dCBjYWxsaW5nIGNvbXBpbGVGVExPU1JFeGl0KCkgZmlyc3QuCi0gICAgICAgIGppdC5zdG9yZTgo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIodHJ1ZSksIHZtLmhlYXAuYWRkcmVzc09mRXhwZWN0
RG9lc0dDKCkpOworICAgICAgICBqaXQuc3RvcmU2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02
NChEb2VzR0NDaGVjazo6ZW5jb2RlKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpGVExPU1JF
eGl0KSksIHZtLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpOwogICAgIH0KIAogICAgIC8vIEJyaW5n
IHRoZSBzdGFjayBiYWNrIGludG8gYSBzYW5lIGZvcm0gYW5kIGFzc2VydCB0aGF0IGl0J3Mgc2Fu
ZS4KQEAgLTU0OCw3ICs1NDgsNyBAQCBleHRlcm4gIkMiIEpJVF9PUEVSQVRJT04gdm9pZCogb3Bl
cmF0aW9uCiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAgICAgIC8vIFdlJ3JlIGFi
b3V0IHRvIGV4aXQgb3B0aW1pemVkIGNvZGUuIFNvLCB0aGVyZSdzIG5vIGxvbmdlciBhbnkgb3B0
aW1pemVkCiAgICAgICAgIC8vIGNvZGUgcnVubmluZyB0aGF0IGV4cGVjdHMgbm8gR0MuCi0gICAg
ICAgIHZtLmhlYXAuc2V0RXhwZWN0RG9lc0dDKHRydWUpOworICAgICAgICB2bS5oZWFwLnNldERv
ZXNHQ0V4cGVjdGF0aW9uKHRydWUsIERvZXNHQ0NoZWNrOjpTcGVjaWFsOjpGVExPU1JFeGl0KTsK
ICAgICB9CiAKICAgICBpZiAodm0uY2FsbEZyYW1lRm9yQ2F0Y2gpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjYy
NDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCogQ29tcGxldGVTdWJzcGFj
ZTo6YWxsb2NhdGVTbG93KFZNJgogdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVT
bG93KFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRl
eHQpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VS
VCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5HQygp
OwogCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAKQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3coCiB2b2lkKiBDb21wbGV0
ZVN1YnNwYWNlOjpyZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKFZNJiB2bSwg
SGVhcENlbGwqIG9sZENlbGwsIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJy
YWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgaWYg
KHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgLy8gVGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQgaW4gQnV0dGVyZmx5IGZvciBleGFtcGxlLgog
ICAgIEFTU0VSVChvbGRDZWxsLT5pc1ByZWNpc2VBbGxvY2F0aW9uKCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5o
CShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0
ZVN1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNyArMzMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2Nh
dGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZl
cnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBp
ZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAo
QWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2Nh
dG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQogICAgICAgICByZXR1cm4gYWxsb2NhdG9y
LmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkocmV2aXNpb24gMjYyNDkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgfkRlZmVyR0MoKQogICAgIHsKICAgICAgICAgaWYgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9oZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgICAgIG1faGVhcC52ZXJpZnlDYW5HQygpOwogICAgICAgICBt
X2hlYXAuZGVjcmVtZW50RGVmZXJyYWxEZXB0aEFuZEdDSWZOZWVkZWQoKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250ZXh0SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDRGVmZXJyYWxDb250
ZXh0SW5saW5lcy5oCShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0RlZmVycmFsQ29udGV4dElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcg
KzM4LDcgQEAgQUxXQVlTX0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6R0NEZWZlcgogQUxXQVlT
X0lOTElORSBHQ0RlZmVycmFsQ29udGV4dDo6fkdDRGVmZXJyYWxDb250ZXh0KCkKIHsKICAgICBp
ZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5leHBl
Y3REb2VzR0MoKSk7CisgICAgICAgIG1faGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKFVO
TElLRUxZKG1fc2hvdWxkR0MpKQogICAgICAgICBtX2hlYXAuY29sbGVjdElmTmVjZXNzYXJ5T3JE
ZWZlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDI2
MjQ5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMDY0LDcgKzEw
NjQsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3luY2hyb25vdXNuZXNzIHN5bmNoCiB2b2lkIEhl
YXA6OmNvbGxlY3ROb3coU3luY2hyb25vdXNuZXNzIHN5bmNocm9ub3VzbmVzcywgR0NSZXF1ZXN0
IHJlcXVlc3QpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNF
X0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBz
d2l0Y2ggKHN5bmNocm9ub3VzbmVzcykgewogICAgIGNhc2UgQXN5bmM6IHsKQEAgLTEwOTcsNyAr
MTA5Nyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdE5vdyhTeW5jaHJvbm91c25lc3Mgc3kKIHZvaWQg
SGVhcDo6Y29sbGVjdEFzeW5jKEdDUmVxdWVzdCByZXF1ZXN0KQogewogICAgIGlmICh2YWxpZGF0
ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAg
ICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVjdCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QXN5bmMo
R0NSZXF1ZXN0IHJlcXVlcwogdm9pZCBIZWFwOjpjb2xsZWN0U3luYyhHQ1JlcXVlc3QgcmVxdWVz
dCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmICghbV9p
c1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKQEAgLTE3ODQsNyArMTc4NCw3IEBAIE5F
VkVSX0lOTElORSB2b2lkIEhlYXA6OnJlc3VtZVRoZU11dGF0b3IKIHZvaWQgSGVhcDo6c3RvcElm
TmVjZXNzYXJ5U2xvdygpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBS
RUxFQVNFX0FTU0VSVChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAK
ICAgICB3aGlsZSAoc3RvcElmTmVjZXNzYXJ5U2xvdyhtX3dvcmxkU3RhdGUubG9hZCgpKSkgeyB9
CiAgICAgCkBAIC0xNzk5LDcgKzE3OTksNyBAQCB2b2lkIEhlYXA6OnN0b3BJZk5lY2Vzc2FyeVNs
b3coKQogYm9vbCBIZWFwOjpzdG9wSWZOZWNlc3NhcnlTbG93KHVuc2lnbmVkIG9sZFN0YXRlKQog
ewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgUkVMRUFTRV9BU1NF
UlQob2xkU3RhdGUgJiBoYXNBY2Nlc3NCaXQpOwogICAgIFJFTEVBU0VfQVNTRVJUKCEob2xkU3Rh
dGUgJiBzdG9wcGVkQml0KSk7CkBAIC0yNjAxLDcgKzI2MDEsNyBAQCB2b2lkIEhlYXA6OmNvbGxl
Y3RJZk5lY2Vzc2FyeU9yRGVmZXIoR0NECiB7CiAgICAgQVNTRVJUKGRlZmVycmFsQ29udGV4dCB8
fCBpc0RlZmVycmVkKCkgfHwgIURpc2FsbG93R0M6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQo
KSk7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChl
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAoIW1faXNT
YWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJDZWxsU3RhdGUuaCIKICNpbmNs
dWRlICJDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb2xsZWN0b3JQaGFzZS5oIgorI2lu
Y2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCiAjaW5jbHVkZSAiRGVsZXRlQWxsQ29kZUVmZm9ydC5o
IgogI2luY2x1ZGUgIkdDQ29uZHVjdG9yLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50
ZWRTZXQuaCIKQEAgLTMwMywxMyArMzA0LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCB1bnNpZ25l
ZCogYWRkcmVzc09mQmFycmllclRocmVzaG9sZCgpIGNvbnN0IHsgcmV0dXJuICZtX2JhcnJpZXJU
aHJlc2hvbGQ7IH0KIAogI2lmIEVOQUJMRShERkdfRE9FU19HQ19WQUxJREFUSU9OKQotICAgIGJv
b2wgZXhwZWN0RG9lc0dDKCkgY29uc3QgeyByZXR1cm4gbV9leHBlY3REb2VzR0M7IH0KLSAgICB2
b2lkIHNldEV4cGVjdERvZXNHQyhib29sIHZhbHVlKSB7IG1fZXhwZWN0RG9lc0dDID0gdmFsdWU7
IH0KLSAgICBib29sKiBhZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSB7IHJldHVybiAmbV9leHBlY3RE
b2VzR0M7IH0KKyAgICBEb2VzR0NDaGVjayogYWRkcmVzc09mRG9lc0dDKCkgeyByZXR1cm4gJm1f
ZG9lc0dDOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sIGV4cGVjdERvZXNH
QywgdW5zaWduZWQgbm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApIHsgbV9kb2VzR0Muc2V0KGV4
cGVjdERvZXNHQywgbm9kZUluZGV4LCBub2RlT3ApOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBl
Y3RhdGlvbihib29sIGV4cGVjdERvZXNHQywgRG9lc0dDQ2hlY2s6OlNwZWNpYWwgc3BlY2lhbCkg
eyBtX2RvZXNHQy5zZXQoZXhwZWN0RG9lc0dDLCBzcGVjaWFsKTsgfQorICAgIHZvaWQgdmVyaWZ5
Q2FuR0MoKSB7IG1fZG9lc0dDLnZlcmlmeUNhbkdDKHZtKCkpOyB9CiAjZWxzZQotICAgIGJvb2wg
ZXhwZWN0RG9lc0dDKCkgY29uc3QgeyBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJu
IHRydWU7IH0KLSAgICB2b2lkIHNldEV4cGVjdERvZXNHQyhib29sKSB7IFVOUkVBQ0hBQkxFX0ZP
Ul9QTEFURk9STSgpOyB9Ci0gICAgYm9vbCogYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkgeyBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBEb2VzR0NDaGVj
ayogYWRkcmVzc09mRG9lc0dDKCkgeyBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2b2lkIHNldERvZXNHQ0V4cGVjdGF0aW9uKGJvb2wsIHVuc2lnbmVk
LCB1bnNpZ25lZCkgeyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sLCBEb2Vz
R0NDaGVjazo6U3BlY2lhbCkgeyB9CisgICAgdm9pZCB2ZXJpZnlDYW5HQygpIHsgfQogI2VuZGlm
CiAKICAgICAvLyBJZiB0cnVlLCB0aGUgR0MgYmVsaWV2ZXMgdGhhdCB0aGUgbXV0YXRvciBpcyBj
dXJyZW50bHkgbWVzc2luZyB3aXRoIHRoZSBoZWFwLiBXZSBjYWxsIHRoaXMKQEAgLTYwNiw3ICs2
MDksNyBAQCBwcml2YXRlOgogICAgIE1hcmthYmxlPENvbGxlY3Rpb25TY29wZSwgRW51bU1hcmth
YmxlVHJhaXRzPENvbGxlY3Rpb25TY29wZT4+IG1fbGFzdENvbGxlY3Rpb25TY29wZTsKICAgICBM
b2NrIG1fcmFjZU1hcmtTdGFja0xvY2s7CiAjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJ
T04pCi0gICAgYm9vbCBtX2V4cGVjdERvZXNHQyB7IHRydWUgfTsKKyAgICBEb2VzR0NDaGVjayBt
X2RvZXNHQzsKICNlbmRpZgogCiAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFi
bGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJKHJldmlz
aW9uIDI2MjQ5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjpkZXBy
ZWNhdGVkUmVwb3J0RXh0cmFNCiBpbmxpbmUgdm9pZCBIZWFwOjphY3F1aXJlQWNjZXNzKCkKIHsK
ICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmIChtX3dvcmxkU3Rh
dGUuY29tcGFyZUV4Y2hhbmdlV2VhaygwLCBoYXNBY2Nlc3NCaXQpKQogICAgICAgICByZXR1cm47
CkBAIC0yNjMsNyArMjYzLDcgQEAgaW5saW5lIGJvb2wgSGVhcDo6bWF5TmVlZFRvU3RvcCgpCiBp
bmxpbmUgdm9pZCBIZWFwOjpzdG9wSWZOZWNlc3NhcnkoKQogewogICAgIGlmICh2YWxpZGF0ZURG
R0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAg
ICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKG1heU5lZWRUb1N0b3AoKSkKICAgICAgICAgc3Rv
cElmTmVjZXNzYXJ5U2xvdygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9j
YWxBbGxvY2F0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDI2MjQ5MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogQUxXQVlTX0lOTElORSB2b2lk
KiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQq
IGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewog
ICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGVhcC5l
eHBlY3REb2VzR0MoKSk7CisgICAgICAgIGhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICByZXR1cm4g
bV9mcmVlTGlzdC5hbGxvY2F0ZSgKICAgICAgICAgWyZdICgpIC0+IEhlYXBDZWxsKiB7CiAgICAg
ICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oaGVhcC52bSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAJKHJldmlzaW9uIDI2
MjQ5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNB
bGlnbmVkRm9yUHJlY2lzZUFsCiBQcmVjaXNlQWxsb2NhdGlvbiogUHJlY2lzZUFsbG9jYXRpb246
OnRyeUNyZWF0ZShIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSwgU3Vic3BhY2UqIHN1YnNwYWNlLCB1
bnNpZ25lZCBpbmRleEluU3BhY2UpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52
ZXJpZnlDYW5HQygpOwogCiAgICAgc2l6ZV90IGFkanVzdGVkQWxpZ25tZW50QWxsb2NhdGlvblNp
emUgPSBoZWFkZXJTaXplKCkgKyBzaXplICsgaGFsZkFsaWdubWVudDsKICAgICBzdGF0aWNfYXNz
ZXJ0KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldlIGFzc3VtZSB0aGF0IG1lbW9yeSByZXR1cm5lZCBi
eSBtYWxsb2MgaGFzIGFsaWdubWVudCA+PSA4LiIpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIFByZWNp
c2VBbGxvY2F0aW9uKiBQcmVjaXNlQWxsb2NhdGlvbjo6dHIKIFByZWNpc2VBbGxvY2F0aW9uKiBQ
cmVjaXNlQWxsb2NhdGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKEhlYXAmIGhlYXAsIHNpemVfdCBz
aXplLCBTdWJzcGFjZSogc3Vic3BhY2UsIHVpbnQ4X3QgbG93ZXJUaWVySW5kZXgpCiB7CiAgICAg
aWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgc2l6ZV90IGFk
anVzdGVkQWxpZ25tZW50QWxsb2NhdGlvblNpemUgPSBoZWFkZXJTaXplKCkgKyBzaXplICsgaGFs
ZkFsaWdubWVudDsKICAgICBzdGF0aWNfYXNzZXJ0KGhhbGZBbGlnbm1lbnQgPT0gOCwgIldlIGFz
c3VtZSB0aGF0IG1lbW9yeSByZXR1cm5lZCBieSBtYWxsb2MgaGFzIGFsaWdubWVudCA+PSA4LiIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lv
biAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MzMsNyArNzMzLDcgQEAgaW5saW5lIEpTU3RyaW5nKiBqc0VtcHR5
U3RyaW5nKFZNJiB2bSkKIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKFZNJiB2bSwgVUNoYXIgYykKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2
bS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKQogICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmlu
ZyhjKTsKICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0ZSh2bSwgU3RyaW5nSW1wbDo6Y3JlYXRl
KCZjLCAxKSk7CkBAIC03NjMsNyArNzYzLDcgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIEpT
U3RyaW5nOjp0b0lkZQogQUxXQVlTX0lOTElORSBBdG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0b21T
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAodmFs
aWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3RE
b2VzR0MoKSk7CisgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1Jv
cGUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRo
aXMpLT5yZXNvbHZlUm9wZVRvQXRvbVN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBB
dG9tU3RyaW5nKHZhbHVlSW50ZXJuYWwoKSk7CkBAIC03NzIsNyArNzcyLDcgQEAgQUxXQVlTX0lO
TElORSBBdG9tU3RyaW5nIEpTU3RyaW5nOjp0b0F0bwogQUxXQVlTX0lOTElORSBSZWZQdHI8QXRv
bVN0cmluZ0ltcGw+IEpTU3RyaW5nOjp0b0V4aXN0aW5nQXRvbVN0cmluZyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAg
dm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3BlVG9F
eGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAodmFsdWVJbnRlcm5hbCgp
LmltcGwoKS0+aXNBdG9tKCkpCkBAIC03ODMsNyArNzgzLDcgQEAgQUxXQVlTX0lOTElORSBSZWZQ
dHI8QXRvbVN0cmluZ0ltcGw+IEpTUwogaW5saW5lIGNvbnN0IFN0cmluZyYgSlNTdHJpbmc6OnZh
bHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9l
c0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNSb3Bl
KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0aGlz
KS0+cmVzb2x2ZVJvcGUoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gdmFsdWVJbnRlcm5hbCgp
OwpAQCAtNzkzLDcgKzc5Myw3IEBAIGlubGluZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5nOjp0cnlH
ZXRWYWwKIHsKICAgICBpZiAoYWxsb2NhdGlvbkFsbG93ZWQpIHsKICAgICAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgICAgIHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgICAg
ICBpZiAoaXNSb3BlKCkpIHsKICAgICAgICAgICAgIC8vIFBhc3MgbnVsbHB0ciBmb3IgdGhlIEpT
R2xvYmFsT2JqZWN0IHNvIHRoYXQgcmVzb2x2ZVJvcGUgZG9lcyBub3QgdGhyb3cgaW4gdGhlIGV2
ZW50IG9mIGFuIE9PTSBlcnJvci4KICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU1JvcGVTdHJpbmcqPih0aGlzKS0+cmVzb2x2ZVJvcGUobnVsbHB0cik7CkBAIC05ODMsNyAr
OTgzLDcgQEAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpCiBBTFdBWVNfSU5MSU5F
IFN0cmluZ1ZpZXcgSlNSb3BlU3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBS
RUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhl
YXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNTdWJzdHJpbmcoKSkgewogICAgICAgICBhdXRv
JiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1ZUludGVybmFsKCk7CiAgICAgICAgIGlmIChi
YXNlLmlzOEJpdCgpKQpAQCAtOTk2LDcgKzk5Niw3IEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nVmll
dyBKU1JvcGVTdHJpbmc6OnUKIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nIEpTUm9wZVN0cmluZzo6dmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAg
ICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNTdWJzdHJpbmcoKSkgewogICAg
ICAgICBhdXRvJiBiYXNlID0gc3Vic3RyaW5nQmFzZSgpLT52YWx1ZUludGVybmFsKCk7CiAgICAg
ICAgIGlmIChiYXNlLmlzOEJpdCgpKQpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgQUxXQVlTX0lOTElO
RSBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdAogQUxXQVlTX0lOTElORSBTdHJpbmdWaWV3IEpT
U3RyaW5nOjp1bnNhZmVWaWV3KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7
CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgp
LmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsK
ICAgICBpZiAoaXNSb3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1Jv
cGVTdHJpbmcqPih0aGlzKS0+dW5zYWZlVmlldyhnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiB2
YWx1ZUludGVybmFsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDcgKzY0LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiBjcmVhdGVSZWdFeHBNYXRj
aAogICAgIFJlZ0V4cCogcmVnRXhwLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgTWF0Y2hSZXN1bHQm
IHJlc3VsdCkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2bS5oZWFwLnZlcmlmeUNh
bkdDKCk7CiAKICAgICBWZWN0b3I8aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7CiAgICAgaW50
IHBvc2l0aW9uID0gcmVnRXhwLT5tYXRjaElubGluZShnbG9iYWxPYmplY3QsIHZtLCBpbnB1dFZh
bHVlLCBzdGFydE9mZnNldCwgc3VicGF0dGVyblJlc3VsdHMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400944</attachid>
            <date>2020-06-03 10:54:27 -0700</date>
            <delta_ts>2020-06-03 12:41:18 -0700</delta_ts>
            <desc>test for Windows bot w/ DFGSSAConversionPhase.cpp #include.</desc>
            <filename>temp.patch</filename>
            <type>text/plain</type>
            <size>35892</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MjQ5MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNTY0LDYgKzU2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKIAogICAgIGRmZy9ERkdDb21tb24uaAogICAgIGRmZy9ERkdDb21waWxhdGlvbk1vZGUuaAor
ICAgIGRmZy9ERkdEb2VzR0NDaGVjay5oCiAgICAgZGZnL0RGR01pbmlmaWVkSUQuaAogCiAgICAg
ZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcC5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsNyBAQCBkZmcvREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmNwcAogZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAKIGRmZy9ERkdEaXNh
c3NlbWJsZXIuY3BwCiBkZmcvREZHRG9lc0dDLmNwcAorZGZnL0RGR0RvZXNHQ0NoZWNrLmNwcAog
ZGZnL0RGR0RyaXZlci5jcHAKIGRmZy9ERkdFZGdlLmNwcAogZGZnL0RGR0Vwb2NoLmNwcApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjQ5MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTM2LDYgKzE5MzYsNyBAQAogCQlGRUI1MUY2QzFBOTdCNjg4
MDAxRjkyMUMgLyogUmVncmVzczE0MTgwOS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFQjUxRjZCMUE5N0I2ODgwMDFGOTIxQyAvKiBSZWdyZXNzMTQx
ODA5Lm1tICovOyB9OwogCQlGRUI1OEMxNTE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGlu
Z1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyogRXJyb3JIYW5kbGluZ1Njb3BlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVDMTYwMzIyMzM5RTlG
OTAwQTA0Q0I4IC8qIENlbGxTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRUMxNjAzMTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAqLzsg
fTsKKwkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMzQTNBMDI0ODczNUJD
MDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUM1Nzk3MzIzMTA1QjUxMDBCQ0E4M0YgLyogVk1JbnNw
ZWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUM1Nzk3MjIzMTA1QjQ4MDBCQ0E4M0YgLyogVk1JbnNwZWN0b3JJbmxpbmVzLmggKi87
IH07CiAJCUZFQzU3OTc2MjMxMDVGNEUwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzU3OTc1MjMxMDVGNDMwMEJD
QTgzRiAvKiBJbnRlZ3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUM1Nzk3ODIzMTA5NTRDMDBCQ0E4M0YgLyogSW50ZWdyaXR5SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDNTc5
NzcyMzEwOTU0QjAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTIzMiw2ICs1MjMzLDggQEAKIAkJ
RkVCNThDMTIxODdCOEIxNjAwOThFRjBCIC8qIEVycm9ySGFuZGxpbmdTY29wZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvckhhbmRsaW5nU2NvcGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI1OEMxMzE4N0I4QjE2MDA5OEVGMEIgLyog
RXJyb3JIYW5kbGluZ1Njb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVy
cm9ySGFuZGxpbmdTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUMxNjAz
MTIzMzlFOUY5MDBBMDRDQjggLyogQ2VsbFNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2VsbFNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVDM0Ez
OUYyNDg3MzVCQzAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR0RvZXNHQ0NoZWNrLmNwcDsgcGF0aCA9IGRmZy9ERkdEb2VzR0NDaGVjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQzNBM0EwMjQ4NzM1QkMwMDM5NUI1NCAvKiBE
RkdEb2VzR0NDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdEb2VzR0NDaGVjay5oOyBwYXRoID0g
ZGZnL0RGR0RvZXNHQ0NoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzU3
OTcyMjMxMDVCNDgwMEJDQTgzRiAvKiBWTUluc3BlY3RvcklubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVk1JbnNwZWN0b3JJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFQzU3OTc0MjMxMDVGNDIwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZWdyaXR5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDNTc5NzUyMzEwNUY0MzAwQkNBODNGIC8qIElu
dGVncml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlZ3JpdHkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4OTYsNiArNzg5OSw4IEBACiAJCQkJMEZG
NDI3NjIxNTkxQTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oICovLAogCQkJCTBGNUEx
MjcxMTkyRDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuY3BwICovLAogCQkJCTBGNUExMjcyMTky
RDlGREYwMDg3NjRBMyAvKiBERkdEb2VzR0MuaCAqLywKKwkJCQlGRUMzQTM5RjI0ODczNUJDMDAz
OTVCNTQgLyogREZHRG9lc0dDQ2hlY2suY3BwICovLAorCQkJCUZFQzNBM0EwMjQ4NzM1QkMwMDM5
NUI1NCAvKiBERkdEb2VzR0NDaGVjay5oICovLAogCQkJCTBGRDgxQUQwMTU0RkI0RUIwMDk4M0U3
MiAvKiBERkdEb21pbmF0b3JzLmggKi8sCiAJCQkJMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2IC8q
IERGR0RvdWJsZUZvcm1hdFN0YXRlLmggKi8sCiAJCQkJMEZEM0M4MjAxNDExNUNGODAwRkQ4MUNC
IC8qIERGR0RyaXZlci5jcHAgKi8sCkBAIC0xMDE5Niw2ICsxMDIwMSw3IEBACiAJCQkJNzlENUNE
NUIxQzExMDZBOTAwQ0VDQTA3IC8qIFNhbXBsaW5nUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNU
YWJsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVDM0EzQTEyNDg3MzVDQTAwMzk1QjU0IC8qIERG
R0RvZXNHQ0NoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkw
MEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NTks
NiArMTQ1OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlPDY0PihzcmMsIGFkZHJlc3MpOwog
ICAgIH0KIAorICAgIHZvaWQgc3RvcmU2NChUcnVzdGVkSW1tNjQgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkgeworICAgICAgICAgICAg
c3RvcmU2NChBUk02NFJlZ2lzdGVyczo6enIsIGFkZHJlc3MpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgbW92ZVRvQ2FjaGVkUmVnKGltbSwgZGF0YU1lbW9yeVRl
bXBSZWdpc3RlcigpKTsKKyAgICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
KTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlNjQoVHJ1c3RlZEltbTMyIGltbSwgSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChpbW0u
bV92YWx1ZSksIGFkZHJlc3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMjYyNDkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NzcsNiArOTc3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIubW92cV9pMzJtKGltbS5tX3ZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0
b3JlNjQoVHJ1c3RlZEltbTY0IGltbSwgdm9pZCogYWRkcmVzcykKKyAgICB7CisgICAgICAgIGF1
dG8gc3JjID0gc2NyYXRjaFJlZ2lzdGVyKCk7CisgICAgICAgIG1vdmUoaW1tLCBzcmMpOworICAg
ICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZxX0VBWG0oYWRkcmVzcyk7CisgICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVheCk7
CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTY0KFRydXN0ZWRJbW02NCBpbW0sIEltcGxpY2l0QWRk
cmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgaWYgKENBTl9TSUdOX0VYVEVORF8zMl82NChp
bW0ubV92YWx1ZSkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvdGVz
dG1hc20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
dGVzdG1hc20uY3BwCShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU4LDYgKzY1OCwzMSBA
QCB2b2lkIHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2NFdpdGhvdXROdWxsCiAgICAgYm9vbCB3b3Jk
Q2FuQmVaZXJvID0gZmFsc2U7CiAgICAgdGVzdENvdW50VHJhaWxpbmdaZXJvczY0SW1wbCh3b3Jk
Q2FuQmVaZXJvKTsKIH0KKwordm9pZCB0ZXN0U3RvcmU2NEltbTY0QWRkcmVzc1BvaW50ZXIoKQor
eworICAgIGF1dG8gZG9UZXN0ID0gW10gKGludDY0X3QgdmFsdWUpIHsKKyAgICAgICAgaW50NjRf
dCBkZXN0OworICAgICAgICB2b2lkKiBkZXN0QWRkcmVzcyA9ICZkZXN0OworCisgICAgICAgIGF1
dG8gdGVzdCA9IGNvbXBpbGUoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCkgeworICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uUHJvbG9ndWUoaml0KTsKKyAgICAgICAgICAgIGppdC5zdG9yZTY0KENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KHZhbHVlKSwgZGVzdEFkZHJlc3MpOworICAgICAgICAgICAg
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoaml0KTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgaW52b2tlPHNpemVfdD4odGVzdCk7CisgICAgICAgIENIRUNLX0VR
KGRlc3QsIHZhbHVlKTsKKyAgICB9OworICAgIAorICAgIGZvciAoYXV0byB2YWx1ZSA6IGludDY0
T3BlcmFuZHMoKSkKKyAgICAgICAgZG9UZXN0KHZhbHVlKTsKKworICAgIGRvVGVzdCgweDk4NzY1
NTU1QUFBQTQzMjEpOworICAgIGRvVGVzdCgweEFBQUE0MzIxOTg3NjU1NTUpOworfQorCiAjZW5k
aWYgLy8gQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogCiB2b2lkIHRlc3RDb21wYXJlRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0aW9uKQpAQCAtMjQ5OSw2ICsy
NTI0LDcgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0Q2xlYXJC
aXRzNjRXaXRoTWFza1Rlcm5hcnkoKSk7CiAgICAgUlVOKHRlc3RDb3VudFRyYWlsaW5nWmVyb3M2
NCgpKTsKICAgICBSVU4odGVzdENvdW50VHJhaWxpbmdaZXJvczY0V2l0aG91dE51bGxDaGVjaygp
KTsKKyAgICBSVU4odGVzdFN0b3JlNjRJbW02NEFkZHJlc3NQb2ludGVyKCkpOwogI2VuZGlmCiAK
ICNpZiBDUFUoQVJNNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Q0NoZWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQ0NoZWNrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQ0NoZWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkRGR0RvZXNHQ0NoZWNrLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAi
Vk1JbnNwZWN0b3IuaCIKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorCituYW1lc3BhY2UgSlND
IHsKK25hbWVzcGFjZSBERkcgeworCisjaWYgRU5BQkxFKERGR19ET0VTX0dDX1ZBTElEQVRJT04p
CisKK2V4dGVybiBjb25zdCBjaGFyKiBkZmdPcE5hbWVzW107CisKK0pTX0VYUE9SVF9QUklWQVRF
IHZvaWQgRG9lc0dDQ2hlY2s6OnZlcmlmeUNhbkdDKFZNJiB2bSkKK3sKKyAgICBpZiAoIWV4cGVj
dERvZXNHQygpKSB7CisgICAgICAgIGRhdGFMb2coIkVycm9yOiBEb2VzR0MgZmFpbGVkIik7Cisg
ICAgICAgIGlmIChpc1NwZWNpYWwoKSkgeworICAgICAgICAgICAgc3dpdGNoIChzcGVjaWFsKCkp
IHsKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6VW5pbml0aWFsaXplZDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6REZHT1NSRXhpdDoKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgQCBERkcgb3NyIGV4aXQiKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6RlRMT1NSRXhpdDoKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgQCBGVEwgb3NyIGV4aXQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgU3BlY2lhbDo6UmVzZXJ2ZWRVbnVzZWQ6CisgICAgICAgICAgICBj
YXNlIFNwZWNpYWw6Ok51bWJlck9mU3BlY2lhbHM6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBkYXRhTG9nKCIgQCBEQCIsIG5vZGVJbmRleCgpLCAiICIsIERGRzo6ZGZnT3BOYW1l
c1tub2RlT3AoKV0pOworCisgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gdm0udG9wQ2Fs
bEZyYW1lOworICAgICAgICBpZiAoY2FsbEZyYW1lKSB7CisgICAgICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBkYXRhTG9n
TG4oIiBpbiAiLCBjb2RlQmxvY2spOworICAgICAgICAgICAgVk1JbnNwZWN0b3I6OmR1bXBTdGFj
aygmdm0sIGNhbGxGcmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZ0xuKCk7CisgICAg
fQorICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKK30KKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikKKworfSAvLyBuYW1lc3BhY2UgREZHCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDQ2hl
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQ0No
ZWNrLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0NDaGVjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxjc3RkaW50PgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBWTTsKKworbmFtZXNwYWNlIERGRyB7CisKK3N0cnVjdCBEb2VzR0NDaGVjayB7
CisgICAgZW51bSBjbGFzcyBTcGVjaWFsIHsKKyAgICAgICAgUmVzZXJ2ZWRVbnVzZWQsIC8vIHNv
IHRoYXQgc3BlY2lhbHMgc3RhcnQgd2l0aCAxLiBpc1NwZWNpYWwoKSByZWxpZXMgb24gdGhpcy4K
KyAgICAgICAgVW5pbml0aWFsaXplZCwKKyAgICAgICAgREZHT1NSRXhpdCwKKyAgICAgICAgRlRM
T1NSRXhpdCwKKyAgICAgICAgTnVtYmVyT2ZTcGVjaWFscworICAgIH07CisKKyAgICBEb2VzR0ND
aGVjaygpCisgICAgICAgIDogbV92YWx1ZShlbmNvZGUodHJ1ZSwgU3BlY2lhbDo6VW5pbml0aWFs
aXplZCkpCisgICAgeyB9CisKKyAgICBzdGF0aWMgdWludDY0X3QgZW5jb2RlKGJvb2wgZXhwZWN0
RG9lc0dDLCB1bnNpZ25lZCBub2RlSW5kZXgsIHVuc2lnbmVkIG5vZGVPcCkKKyAgICB7CisgICAg
ICAgIHVpbnQ2NF90IHJlc3VsdCA9IGJpdHMobm9kZUluZGV4KSA8PCBub2RlSW5kZXhTaGlmdDsK
KyAgICAgICAgcmVzdWx0IHw9IGJpdHMobm9kZU9wKSA8PCBub2RlT3BTaGlmdDsKKyAgICAgICAg
cmVzdWx0IHw9IGJpdHMoZXhwZWN0RG9lc0dDKSA8PCBleHBlY3REb2VzR0NTaGlmdDsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgdWludDY0X3QgZW5jb2RlKGJv
b2wgZXhwZWN0RG9lc0dDLCBTcGVjaWFsIHNwZWNpYWwpCisgICAgeworICAgICAgICBBU1NFUlQo
Yml0cyhzcGVjaWFsKSA8IG51bWJlck9mU3BlY2lhbHMpOworICAgICAgICB1aW50NjRfdCByZXN1
bHQgPSBiaXRzKHNwZWNpYWwpIDw8IHNwZWNpYWxTaGlmdDsKKyAgICAgICAgcmVzdWx0IHw9IGJp
dHMoZXhwZWN0RG9lc0dDKSA8PCBleHBlY3REb2VzR0NTaGlmdDsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICB2b2lkIHNldChib29sIGV4cGVjdERvZXNHQywgdW5zaWduZWQg
bm9kZUluZGV4LCB1bnNpZ25lZCBub2RlT3ApCisgICAgeworICAgICAgICBtX3ZhbHVlID0gZW5j
b2RlKGV4cGVjdERvZXNHQywgbm9kZUluZGV4LCBub2RlT3ApOworICAgIH0KKworICAgIHZvaWQg
c2V0KGJvb2wgZXhwZWN0RG9lc0dDLCBTcGVjaWFsIHNwZWNpYWwpCisgICAgeworICAgICAgICBt
X3ZhbHVlID0gZW5jb2RlKGV4cGVjdERvZXNHQywgc3BlY2lhbCk7CisgICAgfQorCisgICAgYm9v
bCBleHBlY3REb2VzR0MoKSB7IHJldHVybiBtX3ZhbHVlICYgZXhwZWN0RG9lc0dDTWFzazsgfQor
ICAgIFNwZWNpYWwgc3BlY2lhbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFNwZWNpYWw+KHNwZWNp
YWxJbmRleCgpKTsgfQorICAgIHVuc2lnbmVkIG5vZGVJbmRleCgpIHsgcmV0dXJuIG1fdmFsdWUg
Pj4gbm9kZUluZGV4U2hpZnQ7IH0KKyAgICB1bnNpZ25lZCBub2RlT3AoKSB7IHJldHVybiAobV92
YWx1ZSA+PiBub2RlT3BTaGlmdCkgJiBub2RlT3BNYXNrOyB9CisKKyAgICBib29sIGlzU3BlY2lh
bCgpIHsgcmV0dXJuIHNwZWNpYWxJbmRleCgpOyB9CisKKyAgICB2b2lkIHZlcmlmeUNhbkdDKFZN
Jik7CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgc3BlY2lhbEluZGV4KCkgeyByZXR1cm4gKG1f
dmFsdWUgPj4gc3BlY2lhbFNoaWZ0KSAmIHNwZWNpYWxNYXNrOyB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdGF0aWMgdWludDY0X3QgYml0cyhUIHZhbHVlKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odmFsdWUpOyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90
IG51bWJlck9mU3BlY2lhbHMgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oU3BlY2lhbDo6TnVtYmVy
T2ZTcGVjaWFscyk7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGV4cGVjdERvZXNH
Q1NoaWZ0ID0gMDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNwZWNpYWxTaGlmdCA9
IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBub2RlT3BTaGlmdCA9IDE2OworICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbm9kZUluZGV4U2hpZnQgPSAzMjsKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZXhwZWN0RG9lc0dDTWFzayA9IDB4MTsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHNwZWNpYWxNYXNrID0gMHg3ZmZmOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbm9kZU9wTWFzayA9IDB4ZmZmZjsKKworICAgIHVpbnQ2NF90IG1f
dmFsdWUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBERkcKKwordXNpbmcgREZHOjpEb2Vz
R0NDaGVjazsKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogc3RhdGljIGNvbnN0ZXhwciBib29sIGR1bXBP
U1JBdmFpbGFiaWxpdHlEYXRhID0gZmFsc2U7CiAKIC8vIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc3Ry
aW5naXplZCBuYW1lcy4KLXN0YXRpYyBjb25zdCBjaGFyKiBkZmdPcE5hbWVzW10gPSB7Citjb25z
dCBjaGFyKiBkZmdPcE5hbWVzW10gPSB7CiAjZGVmaW5lIFNUUklOR0laRV9ERkdfT1BfRU5VTShv
cGNvZGUsIGZsYWdzKSAjb3Bjb2RlICwKICAgICBGT1JfRUFDSF9ERkdfT1AoU1RSSU5HSVpFX0RG
R19PUF9FTlVNKQogI3VuZGVmIFNUUklOR0laRV9ERkdfT1BfRU5VTQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDYsNyArMTQ2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVPU1JFeAog
ICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAvLyBXZSdyZSBhYm91dCB0byBl
eGl0IG9wdGltaXplZCBjb2RlLiBTbywgdGhlcmUncyBubyBsb25nZXIgYW55IG9wdGltaXplZAog
ICAgICAgICAvLyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLgotICAgICAgICB2bS5o
ZWFwLnNldEV4cGVjdERvZXNHQyh0cnVlKTsKKyAgICAgICAgdm0uaGVhcC5zZXREb2VzR0NFeHBl
Y3RhdGlvbih0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lhbDo6REZHT1NSRXhpdCk7CiAgICAgfQog
CiAgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNhdGNoKQpAQCAtNTU1LDExICs1NTUsMTEgQEAgdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAvLyBjb2RlIHJ1
bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLiBXZSBuZWVkIHRvIHNldCB0aGlzIGJlZm9yZSBhcmd1
bWVudHMKICAgICAgICAgLy8gbWF0ZXJpYWxpemF0aW9uIGJlbG93IChzZWUgZW1pdFJlc3RvcmVB
cmd1bWVudHMoKSkuCiAKLSAgICAgICAgLy8gRXZlbiB0aG91Z2ggd2Ugc2V0IEhlYXA6Om1fZXhw
ZWN0RG9lc0dDIGluIGNvbXBpbGVPU1JFeGl0KCksIHdlIGFsc28gbmVlZAorICAgICAgICAvLyBF
dmVuIHRob3VnaCB3ZSBzZXQgSGVhcDo6bV9kb2VzR0MgaW4gY29tcGlsZU9TUkV4aXQoKSwgd2Ug
YWxzbyBuZWVkCiAgICAgICAgIC8vIHRvIHNldCBpdCBoZXJlIGJlY2F1c2UgY29tcGlsZU9TUkV4
aXQoKSBpcyBvbmx5IGNhbGxlZCBvbiB0aGUgZmlyc3QgdGltZQogICAgICAgICAvLyB3ZSBleGl0
IGZyb20gdGhpcyBzaXRlLCBidXQgYWxsIHN1YnNlcXVlbnQgZXhpdHMgd2lsbCB0YWtlIHRoaXMg
Y29tcGlsZWQKICAgICAgICAgLy8gcmFtcCB3aXRob3V0IGNhbGxpbmcgY29tcGlsZU9TUkV4aXQo
KSBmaXJzdC4KLSAgICAgICAgaml0LnN0b3JlOChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMih0
cnVlKSwgdm0uaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSk7CisgICAgICAgIGppdC5zdG9y
ZTY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KERvZXNHQ0NoZWNrOjplbmNvZGUodHJ1ZSwg
RG9lc0dDQ2hlY2s6OlNwZWNpYWw6OkRGR09TUkV4aXQpKSwgdm0uaGVhcC5hZGRyZXNzT2ZEb2Vz
R0MoKSk7CiAgICAgfQogCiAgICAgLy8gTmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgc3RhY2sgcG9p
bnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sgdXNhZ2UgYXQgZXhpdC4gVGhp
cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkRGR1NTQUNhbGN1bGF0b3IuaCIKICNpbmNsdWRlICJERkdWYXJp
YWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNp
bmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKIAogI3VuZGVmIFJFTEVBU0VfQVNTRVJUCiAjZGVm
aW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDI2
MjQ5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzgsNyArMjEzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewog
ICAgICAgICBib29sIGV4cGVjdERvZXNHQyA9IGRvZXNHQyhtX2ppdC5ncmFwaCgpLCBub2RlKTsK
LSAgICAgICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihleHBlY3REb2VzR0MpLCB2bSgpLmhl
YXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpOworICAgICAgICBtX2ppdC5zdG9yZTY0KFRydXN0
ZWRJbW02NChEb2VzR0NDaGVjazo6ZW5jb2RlKGV4cGVjdERvZXNHQywgbm9kZS0+aW5kZXgoKSwg
bm9kZS0+b3AoKSkpLCB2bSgpLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpOwogICAgIH0KIAogI2lm
IEVOQUJMRShERkdfUkVHSVNURVJfQUxMT0NBVElPTl9WQUxJREFUSU9OKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjYy
NDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MDQsNyArNzA0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBpZiAo
dmFsaWRhdGVERkdEb2VzR0MpIHsKICAgICAgICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0gZG9l
c0dDKG1fZ3JhcGgsIG1fbm9kZSk7Ci0gICAgICAgICAgICBtX291dC5zdG9yZShtX291dC5jb25z
dEJvb2woZXhwZWN0RG9lc0dDKSwgbV9vdXQuYWJzb2x1dGUodm0oKS5oZWFwLmFkZHJlc3NPZkV4
cGVjdERvZXNHQygpKSk7CisgICAgICAgICAgICBtX291dC5zdG9yZShtX291dC5jb25zdEludDY0
KERvZXNHQ0NoZWNrOjplbmNvZGUoZXhwZWN0RG9lc0dDLCBtX25vZGUtPmluZGV4KCksIG1fbm9k
ZS0+b3AoKSkpLCBtX291dC5hYnNvbHV0ZSh2bSgpLmhlYXAuYWRkcmVzc09mRG9lc0dDKCkpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5vcCgpKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZp
c2lvbiAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSwxMSArMjExLDExIEBAIHN0YXRpYyB2b2lk
IGNvbXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQKICAgICAgICAgLy8gY29kZSBydW5uaW5nIHRo
YXQgZXhwZWN0cyBubyBHQy4gV2UgbmVlZCB0byBzZXQgdGhpcyBiZWZvcmUgb2JqZWN0CiAgICAg
ICAgIC8vIG1hdGVyaWFsaXphdGlvbiBiZWxvdy4KIAotICAgICAgICAvLyBFdmVuIHRob3VnaCB3
ZSBzZXQgSGVhcDo6bV9leHBlY3REb2VzR0MgaW4gY29tcGlsZUZUTE9TUkV4aXQoKSwgd2UgYWxz
byBuZWVkCisgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIHNldCBIZWFwOjptX2RvZXNHQyBpbiBj
b21waWxlRlRMT1NSRXhpdCgpLCB3ZSBhbHNvIG5lZWQKICAgICAgICAgLy8gdG8gc2V0IGl0IGhl
cmUgYmVjYXVzZSBjb21waWxlRlRMT1NSRXhpdCgpIGlzIG9ubHkgY2FsbGVkIG9uIHRoZSBmaXJz
dCB0aW1lCiAgICAgICAgIC8vIHdlIGV4aXQgZnJvbSB0aGlzIHNpdGUsIGJ1dCBhbGwgc3Vic2Vx
dWVudCBleGl0cyB3aWxsIHRha2UgdGhpcyBjb21waWxlZAogICAgICAgICAvLyByYW1wIHdpdGhv
dXQgY2FsbGluZyBjb21waWxlRlRMT1NSRXhpdCgpIGZpcnN0LgotICAgICAgICBqaXQuc3RvcmU4
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHRydWUpLCB2bS5oZWFwLmFkZHJlc3NPZkV4cGVj
dERvZXNHQygpKTsKKyAgICAgICAgaml0LnN0b3JlNjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoRG9lc0dDQ2hlY2s6OmVuY29kZSh0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lhbDo6RlRMT1NS
RXhpdCkpLCB2bS5oZWFwLmFkZHJlc3NPZkRvZXNHQygpKTsKICAgICB9CiAKICAgICAvLyBCcmlu
ZyB0aGUgc3RhY2sgYmFjayBpbnRvIGEgc2FuZSBmb3JtIGFuZCBhc3NlcnQgdGhhdCBpdCdzIHNh
bmUuCkBAIC01NDgsNyArNTQ4LDcgQEAgZXh0ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQqIG9w
ZXJhdGlvbgogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAvLyBXZSdyZSBh
Ym91dCB0byBleGl0IG9wdGltaXplZCBjb2RlLiBTbywgdGhlcmUncyBubyBsb25nZXIgYW55IG9w
dGltaXplZAogICAgICAgICAvLyBjb2RlIHJ1bm5pbmcgdGhhdCBleHBlY3RzIG5vIEdDLgotICAg
ICAgICB2bS5oZWFwLnNldEV4cGVjdERvZXNHQyh0cnVlKTsKKyAgICAgICAgdm0uaGVhcC5zZXRE
b2VzR0NFeHBlY3RhdGlvbih0cnVlLCBEb2VzR0NDaGVjazo6U3BlY2lhbDo6RlRMT1NSRXhpdCk7
CiAgICAgfQogCiAgICAgaWYgKHZtLmNhbGxGcmFtZUZvckNhdGNoKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAJKHJldmlzaW9uIDI2
MjQ5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ny0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQqIENvbXBsZXRlU3Vic3Bh
Y2U6OmFsbG9jYXRlU2xvdyhWTSYKIHZvaWQqIENvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRl
U2xvdyhWTSYgdm0sIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250
ZXh0KQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlQodm0uaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZtLmhlYXAudmVyaWZ5Q2FuR0Mo
KTsKIAogICAgIHNhbml0aXplU3RhY2tGb3JWTSh2bSk7CiAgICAgCkBAIC0xNTYsNyArMTU2LDcg
QEAgdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KAogdm9pZCogQ29tcGxl
dGVTdWJzcGFjZTo6cmVhbGxvY2F0ZVByZWNpc2VBbGxvY2F0aW9uTm9uVmlydHVhbChWTSYgdm0s
IEhlYXBDZWxsKiBvbGRDZWxsLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVy
cmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIGlm
ICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5leHBl
Y3REb2VzR0MoKSk7CisgICAgICAgIHZtLmhlYXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0IGluIEJ1dHRlcmZseSBmb3IgZXhhbXBsZS4K
ICAgICBBU1NFUlQob2xkQ2VsbC0+aXNQcmVjaXNlQWxsb2NhdGlvbigpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMu
aAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxl
dGVTdWJzcGFjZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBBTFdBWVNfSU5MSU5FIHZvaWQqIENvbXBsZXRlU3Vic3BhY2U6OmFsbG9j
YXRlTm9uVmlydHVhbChWTSYgdm0sIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVm
ZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAg
aWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4
cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlDYW5HQygpOwogCiAgICAgaWYg
KEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9j
YXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkKICAgICAgICAgcmV0dXJuIGFsbG9jYXRv
ci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmgJKHJldmlzaW9uIDI2MjQ5MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0RlZmVyR0MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIH5EZWZlckdDKCkKICAgICB7CiAgICAgICAgIGlmICh2
YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faGVhcC5leHBl
Y3REb2VzR0MoKSk7CisgICAgICAgICAgICBtX2hlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICAgICAg
bV9oZWFwLmRlY3JlbWVudERlZmVycmFsRGVwdGhBbmRHQ0lmTmVlZGVkKCk7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0RlZmVycmFsQ29udGV4dElubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0RlZmVycmFsQ29u
dGV4dElubGluZXMuaAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3
ICszOCw3IEBAIEFMV0FZU19JTkxJTkUgR0NEZWZlcnJhbENvbnRleHQ6OkdDRGVmZXIKIEFMV0FZ
U19JTkxJTkUgR0NEZWZlcnJhbENvbnRleHQ6On5HQ0RlZmVycmFsQ29udGV4dCgpCiB7CiAgICAg
aWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2hlYXAuZXhw
ZWN0RG9lc0dDKCkpOworICAgICAgICBtX2hlYXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmIChV
TkxJS0VMWShtX3Nob3VsZEdDKSkKICAgICAgICAgbV9oZWFwLmNvbGxlY3RJZk5lY2Vzc2FyeU9y
RGVmZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAy
NjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTA2NCw3ICsx
MDY0LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN5bmNocm9ub3VzbmVzcyBzeW5jaAogdm9pZCBI
ZWFwOjpjb2xsZWN0Tm93KFN5bmNocm9ub3VzbmVzcyBzeW5jaHJvbm91c25lc3MsIEdDUmVxdWVz
dCByZXF1ZXN0KQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAg
c3dpdGNoIChzeW5jaHJvbm91c25lc3MpIHsKICAgICBjYXNlIEFzeW5jOiB7CkBAIC0xMDk3LDcg
KzEwOTcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3ROb3coU3luY2hyb25vdXNuZXNzIHN5CiB2b2lk
IEhlYXA6OmNvbGxlY3RBc3luYyhHQ1JlcXVlc3QgcmVxdWVzdCkKIHsKICAgICBpZiAodmFsaWRh
dGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAg
ICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAg
ICAgIHJldHVybjsKQEAgLTExMjEsNyArMTEyMSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFzeW5j
KEdDUmVxdWVzdCByZXF1ZXMKIHZvaWQgSGVhcDo6Y29sbGVjdFN5bmMoR0NSZXF1ZXN0IHJlcXVl
c3QpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VS
VChleHBlY3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAoIW1f
aXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CkBAIC0xNzg0LDcgKzE3ODQsNyBAQCBO
RVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpyZXN1bWVUaGVNdXRhdG9yCiB2b2lkIEhlYXA6OnN0b3BJ
Zk5lY2Vzc2FyeVNsb3coKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwog
CiAgICAgd2hpbGUgKHN0b3BJZk5lY2Vzc2FyeVNsb3cobV93b3JsZFN0YXRlLmxvYWQoKSkpIHsg
fQogICAgIApAQCAtMTc5OSw3ICsxNzk5LDcgQEAgdm9pZCBIZWFwOjpzdG9wSWZOZWNlc3NhcnlT
bG93KCkKIGJvb2wgSGVhcDo6c3RvcElmTmVjZXNzYXJ5U2xvdyh1bnNpZ25lZCBvbGRTdGF0ZSkK
IHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4
cGVjdERvZXNHQygpKTsKKyAgICAgICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIFJFTEVBU0VfQVNT
RVJUKG9sZFN0YXRlICYgaGFzQWNjZXNzQml0KTsKICAgICBSRUxFQVNFX0FTU0VSVCghKG9sZFN0
YXRlICYgc3RvcHBlZEJpdCkpOwpAQCAtMjYwMSw3ICsyNjAxLDcgQEAgdm9pZCBIZWFwOjpjb2xs
ZWN0SWZOZWNlc3NhcnlPckRlZmVyKEdDRAogewogICAgIEFTU0VSVChkZWZlcnJhbENvbnRleHQg
fHwgaXNEZWZlcnJlZCgpIHx8ICFEaXNhbGxvd0dDOjppc0luRWZmZWN0T25DdXJyZW50VGhyZWFk
KCkpOwogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZXhwZWN0RG9lc0dDKCkpOworICAgICAgICB2ZXJpZnlDYW5HQygpOwogCiAgICAgaWYgKCFtX2lz
U2FmZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkocmV2aXNpb24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdo
dCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykg
MjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ2VsbFN0YXRlLmgiCiAjaW5j
bHVkZSAiQ29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiQ29sbGVjdG9yUGhhc2UuaCIKKyNp
bmNsdWRlICJERkdEb2VzR0NDaGVjay5oIgogI2luY2x1ZGUgIkRlbGV0ZUFsbENvZGVFZmZvcnQu
aCIKICNpbmNsdWRlICJHQ0NvbmR1Y3Rvci5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3Vu
dGVkU2V0LmgiCkBAIC0zMDMsMTMgKzMwNCwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgdW5zaWdu
ZWQqIGFkZHJlc3NPZkJhcnJpZXJUaHJlc2hvbGQoKSBjb25zdCB7IHJldHVybiAmbV9iYXJyaWVy
VGhyZXNob2xkOyB9CiAKICNpZiBFTkFCTEUoREZHX0RPRVNfR0NfVkFMSURBVElPTikKLSAgICBi
b29sIGV4cGVjdERvZXNHQygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0RG9lc0dDOyB9Ci0gICAg
dm9pZCBzZXRFeHBlY3REb2VzR0MoYm9vbCB2YWx1ZSkgeyBtX2V4cGVjdERvZXNHQyA9IHZhbHVl
OyB9Ci0gICAgYm9vbCogYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkgeyByZXR1cm4gJm1fZXhwZWN0
RG9lc0dDOyB9CisgICAgRG9lc0dDQ2hlY2sqIGFkZHJlc3NPZkRvZXNHQygpIHsgcmV0dXJuICZt
X2RvZXNHQzsgfQorICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCBleHBlY3REb2Vz
R0MsIHVuc2lnbmVkIG5vZGVJbmRleCwgdW5zaWduZWQgbm9kZU9wKSB7IG1fZG9lc0dDLnNldChl
eHBlY3REb2VzR0MsIG5vZGVJbmRleCwgbm9kZU9wKTsgfQorICAgIHZvaWQgc2V0RG9lc0dDRXhw
ZWN0YXRpb24oYm9vbCBleHBlY3REb2VzR0MsIERvZXNHQ0NoZWNrOjpTcGVjaWFsIHNwZWNpYWwp
IHsgbV9kb2VzR0Muc2V0KGV4cGVjdERvZXNHQywgc3BlY2lhbCk7IH0KKyAgICB2b2lkIHZlcmlm
eUNhbkdDKCkgeyBtX2RvZXNHQy52ZXJpZnlDYW5HQyh2bSgpKTsgfQogI2Vsc2UKLSAgICBib29s
IGV4cGVjdERvZXNHQygpIGNvbnN0IHsgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7IHJldHVy
biB0cnVlOyB9Ci0gICAgdm9pZCBzZXRFeHBlY3REb2VzR0MoYm9vbCkgeyBVTlJFQUNIQUJMRV9G
T1JfUExBVEZPUk0oKTsgfQotICAgIGJvb2wqIGFkZHJlc3NPZkV4cGVjdERvZXNHQygpIHsgVU5S
RUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7IHJldHVybiBudWxscHRyOyB9CisgICAgRG9lc0dDQ2hl
Y2sqIGFkZHJlc3NPZkRvZXNHQygpIHsgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7IHJldHVy
biBudWxscHRyOyB9CisgICAgdm9pZCBzZXREb2VzR0NFeHBlY3RhdGlvbihib29sLCB1bnNpZ25l
ZCwgdW5zaWduZWQpIHsgfQorICAgIHZvaWQgc2V0RG9lc0dDRXhwZWN0YXRpb24oYm9vbCwgRG9l
c0dDQ2hlY2s6OlNwZWNpYWwpIHsgfQorICAgIHZvaWQgdmVyaWZ5Q2FuR0MoKSB7IH0KICNlbmRp
ZgogCiAgICAgLy8gSWYgdHJ1ZSwgdGhlIEdDIGJlbGlldmVzIHRoYXQgdGhlIG11dGF0b3IgaXMg
Y3VycmVudGx5IG1lc3Npbmcgd2l0aCB0aGUgaGVhcC4gV2UgY2FsbCB0aGlzCkBAIC02MDYsNyAr
NjA5LDcgQEAgcHJpdmF0ZToKICAgICBNYXJrYWJsZTxDb2xsZWN0aW9uU2NvcGUsIEVudW1NYXJr
YWJsZVRyYWl0czxDb2xsZWN0aW9uU2NvcGU+PiBtX2xhc3RDb2xsZWN0aW9uU2NvcGU7CiAgICAg
TG9jayBtX3JhY2VNYXJrU3RhY2tMb2NrOwogI2lmIEVOQUJMRShERkdfRE9FU19HQ19WQUxJREFU
SU9OKQotICAgIGJvb2wgbV9leHBlY3REb2VzR0MgeyB0cnVlIH07CisgICAgRG9lc0dDQ2hlY2sg
bV9kb2VzR0M7CiAjZW5kaWYKIAogICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRh
YmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCShyZXZp
c2lvbiAyNjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAgaW5saW5lIHZvaWQgSGVhcDo6ZGVw
cmVjYXRlZFJlcG9ydEV4dHJhTQogaW5saW5lIHZvaWQgSGVhcDo6YWNxdWlyZUFjY2VzcygpCiB7
CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChleHBl
Y3REb2VzR0MoKSk7CisgICAgICAgIHZlcmlmeUNhbkdDKCk7CiAKICAgICBpZiAobV93b3JsZFN0
YXRlLmNvbXBhcmVFeGNoYW5nZVdlYWsoMCwgaGFzQWNjZXNzQml0KSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjYzLDcgKzI2Myw3IEBAIGlubGluZSBib29sIEhlYXA6Om1heU5lZWRUb1N0b3AoKQog
aW5saW5lIHZvaWQgSGVhcDo6c3RvcElmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAodmFsaWRhdGVE
RkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGV4cGVjdERvZXNHQygpKTsKKyAgICAg
ICAgdmVyaWZ5Q2FuR0MoKTsKIAogICAgIGlmIChtYXlOZWVkVG9TdG9wKCkpCiAgICAgICAgIHN0
b3BJZk5lY2Vzc2FyeVNsb3coKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xv
Y2FsQWxsb2NhdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCShyZXZpc2lvbiAyNjI0OTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIEFMV0FZU19JTkxJTkUgdm9p
ZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0
KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsK
ICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAu
ZXhwZWN0RG9lc0dDKCkpOworICAgICAgICBoZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgcmV0dXJu
IG1fZnJlZUxpc3QuYWxsb2NhdGUoCiAgICAgICAgIFsmXSAoKSAtPiBIZWFwQ2VsbCogewogICAg
ICAgICAgICAgc2FuaXRpemVTdGFja0ZvclZNKGhlYXAudm0oKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCShyZXZpc2lvbiAy
NjI0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
QWxpZ25lZEZvclByZWNpc2VBbAogUHJlY2lzZUFsbG9jYXRpb24qIFByZWNpc2VBbGxvY2F0aW9u
Ojp0cnlDcmVhdGUoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUsIFN1YnNwYWNlKiBzdWJzcGFjZSwg
dW5zaWduZWQgaW5kZXhJblNwYWNlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIGhlYXAu
dmVyaWZ5Q2FuR0MoKTsKIAogICAgIHNpemVfdCBhZGp1c3RlZEFsaWdubWVudEFsbG9jYXRpb25T
aXplID0gaGVhZGVyU2l6ZSgpICsgc2l6ZSArIGhhbGZBbGlnbm1lbnQ7CiAgICAgc3RhdGljX2Fz
c2VydChoYWxmQWxpZ25tZW50ID09IDgsICJXZSBhc3N1bWUgdGhhdCBtZW1vcnkgcmV0dXJuZWQg
YnkgbWFsbG9jIGhhcyBhbGlnbm1lbnQgPj0gOC4iKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBQcmVj
aXNlQWxsb2NhdGlvbiogUHJlY2lzZUFsbG9jYXRpb246OnRyCiBQcmVjaXNlQWxsb2NhdGlvbiog
UHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcihIZWFwJiBoZWFwLCBzaXplX3Qg
c2l6ZSwgU3Vic3BhY2UqIHN1YnNwYWNlLCB1aW50OF90IGxvd2VyVGllckluZGV4KQogewogICAg
IGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGVhcC5leHBl
Y3REb2VzR0MoKSk7CisgICAgICAgIGhlYXAudmVyaWZ5Q2FuR0MoKTsKIAogICAgIHNpemVfdCBh
ZGp1c3RlZEFsaWdubWVudEFsbG9jYXRpb25TaXplID0gaGVhZGVyU2l6ZSgpICsgc2l6ZSArIGhh
bGZBbGlnbm1lbnQ7CiAgICAgc3RhdGljX2Fzc2VydChoYWxmQWxpZ25tZW50ID09IDgsICJXZSBh
c3N1bWUgdGhhdCBtZW1vcnkgcmV0dXJuZWQgYnkgbWFsbG9jIGhhcyBhbGlnbm1lbnQgPj0gOC4i
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNp
b24gMjYyNDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtNzMzLDcgKzczMyw3IEBAIGlubGluZSBKU1N0cmluZyoganNFbXB0
eVN0cmluZyhWTSYgdm0pCiBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBqc1NpbmdsZUNoYXJhY3Rl
clN0cmluZyhWTSYgdm0sIFVDaGFyIGMpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAg
dm0uaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJhY3RlclN0
cmluZykKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJp
bmcoYyk7CiAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUodm0sIFN0cmluZ0ltcGw6OmNyZWF0
ZSgmYywgMSkpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIEFMV0FZU19JTkxJTkUgSWRlbnRpZmllciBK
U1N0cmluZzo6dG9JZGUKIEFMV0FZU19JTkxJTkUgQXRvbVN0cmluZyBKU1N0cmluZzo6dG9BdG9t
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CiAgICAgaWYgKHZh
bGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLmhlYXAuZXhwZWN0
RG9lc0dDKCkpOworICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICBpZiAoaXNS
b3BlKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU1JvcGVTdHJpbmcqPih0
aGlzKS0+cmVzb2x2ZVJvcGVUb0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
QXRvbVN0cmluZyh2YWx1ZUludGVybmFsKCkpOwpAQCAtNzcyLDcgKzc3Miw3IEBAIEFMV0FZU19J
TkxJTkUgQXRvbVN0cmluZyBKU1N0cmluZzo6dG9BdG8KIEFMV0FZU19JTkxJTkUgUmVmUHRyPEF0
b21TdHJpbmdJbXBsPiBKU1N0cmluZzo6dG9FeGlzdGluZ0F0b21TdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBlY3REb2VzR0MoKSk7CisgICAgICAg
IHZtKCkuaGVhcC52ZXJpZnlDYW5HQygpOwogICAgIGlmIChpc1JvcGUoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTUm9wZVN0cmluZyo+KHRoaXMpLT5yZXNvbHZlUm9wZVRv
RXhpc3RpbmdBdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHZhbHVlSW50ZXJuYWwo
KS5pbXBsKCktPmlzQXRvbSgpKQpAQCAtNzgzLDcgKzc4Myw3IEBAIEFMV0FZU19JTkxJTkUgUmVm
UHRyPEF0b21TdHJpbmdJbXBsPiBKU1MKIGlubGluZSBjb25zdCBTdHJpbmcmIEpTU3RyaW5nOjp2
YWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxp
ZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERv
ZXNHQygpKTsKKyAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzUm9w
ZSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNSb3BlU3RyaW5nKj4odGhp
cyktPnJlc29sdmVSb3BlKGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIHZhbHVlSW50ZXJuYWwo
KTsKQEAgLTc5Myw3ICs3OTMsNyBAQCBpbmxpbmUgY29uc3QgU3RyaW5nJiBKU1N0cmluZzo6dHJ5
R2V0VmFsCiB7CiAgICAgaWYgKGFsbG9jYXRpb25BbGxvd2VkKSB7CiAgICAgICAgIGlmICh2YWxp
ZGF0ZURGR0RvZXNHQykKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCkuaGVhcC5leHBl
Y3REb2VzR0MoKSk7CisgICAgICAgICAgICB2bSgpLmhlYXAudmVyaWZ5Q2FuR0MoKTsKICAgICAg
ICAgaWYgKGlzUm9wZSgpKSB7CiAgICAgICAgICAgICAvLyBQYXNzIG51bGxwdHIgZm9yIHRoZSBK
U0dsb2JhbE9iamVjdCBzbyB0aGF0IHJlc29sdmVSb3BlIGRvZXMgbm90IHRocm93IGluIHRoZSBl
dmVudCBvZiBhbiBPT00gZXJyb3IuCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNSb3BlU3RyaW5nKj4odGhpcyktPnJlc29sdmVSb3BlKG51bGxwdHIpOwpAQCAtOTgzLDcg
Kzk4Myw3IEBAIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KQogQUxXQVlTX0lOTElO
RSBTdHJpbmdWaWV3IEpTUm9wZVN0cmluZzo6dW5zYWZlVmlldyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0oKS5o
ZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKICAgICAgICAgYXV0
byYgYmFzZSA9IHN1YnN0cmluZ0Jhc2UoKS0+dmFsdWVJbnRlcm5hbCgpOwogICAgICAgICBpZiAo
YmFzZS5pczhCaXQoKSkKQEAgLTk5Niw3ICs5OTYsNyBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZ1Zp
ZXcgSlNSb3BlU3RyaW5nOjp1CiBBTFdBWVNfSU5MSU5FIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWlu
Z1N0cmluZyBKU1JvcGVTdHJpbmc6OnZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAg
ICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7CiAgICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKICAg
ICAgICAgYXV0byYgYmFzZSA9IHN1YnN0cmluZ0Jhc2UoKS0+dmFsdWVJbnRlcm5hbCgpOwogICAg
ICAgICBpZiAoYmFzZS5pczhCaXQoKSkKQEAgLTEwMTAsNyArMTAxMCw3IEBAIEFMV0FZU19JTkxJ
TkUgU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3QKIEFMV0FZU19JTkxJTkUgU3RyaW5nVmlldyBK
U1N0cmluZzo6dW5zYWZlVmlldyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAog
ewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0o
KS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0oKS5oZWFwLnZlcmlmeUNhbkdDKCk7
CiAgICAgaWYgKGlzUm9wZSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNS
b3BlU3RyaW5nKj4odGhpcyktPnVuc2FmZVZpZXcoZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4g
dmFsdWVJbnRlcm5hbCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwTWF0Y2hlc0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgJKHJldmlzaW9uIDI2MjQ5MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw3ICs2NCw3IEBAIEFMV0FZU19JTkxJTkUgSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0
Y2gKICAgICBSZWdFeHAqIHJlZ0V4cCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIE1hdGNoUmVzdWx0
JiByZXN1bHQpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNF
X0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgdm0uaGVhcC52ZXJpZnlD
YW5HQygpOwogCiAgICAgVmVjdG9yPGludCwgMzI+IHN1YnBhdHRlcm5SZXN1bHRzOwogICAgIGlu
dCBwb3NpdGlvbiA9IHJlZ0V4cC0+bWF0Y2hJbmxpbmUoZ2xvYmFsT2JqZWN0LCB2bSwgaW5wdXRW
YWx1ZSwgc3RhcnRPZmZzZXQsIHN1YnBhdHRlcm5SZXN1bHRzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400959</attachid>
            <date>2020-06-03 12:48:54 -0700</date>
            <delta_ts>2020-06-03 12:50:54 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212687.patch</filename>
            <type>text/plain</type>
            <size>1831</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDIwLTA2LTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIG5lZWRzIHRvICNpbmNsdWRlIE9wZXJhbmRzSW5saW5l
cy5oLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEy
Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0
aG91dCB0aGlzLCBzdHJhbmdlIGJ1aWxkIGZhaWx1cmVzIGNhbiBoYXBwZW4gd2l0aCB1bmlmaWVk
IGJ1aWxkcy4KKworICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIFdpbmRvd3MgYnVpbGQgc3RhcnRl
ZCBmYWlsaW5nIGR1ZSBhIGxpbmthZ2UgZXJyb3IgaW4gdGhpcyBmaWxlCisgICAgICAgIHdoZW4g
dGhlIHBhdGNoIGZyb20gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MjY4MCBsYW5kZWQuCisgICAgICAgIDIxMjY4MCBpbnRyb2R1Y2VkIGEgbmV3IC5jcHAgZmlsZSwg
YW5kIHRoYXQgcHJvYmFibHkgYnVtcGVkIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKKyAgICAg
ICAgaW50byBhbm90aGVyIHVuaWZpZWQgdW5pdCwgdGhlcmVieSBkZXByaXZpbmcgaXQgZnJvbSBz
ZWVpbmcgdGhlIE9wZXJhbmRzSW5saW5lcy5oCisgICAgICAgICNpbmNsdWRlJ2QgYnkgYW5vdGhl
ciAuY3BwLgorCisgICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisKIDIw
MjAtMDYtMDMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBu
b24tdW5pZmllZCAtLWpzYy1vbmx5IGJ1aWxkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjYyNDkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1NTQUNhbGN1
bGF0b3IuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJPcGVyYW5kc0lubGluZXMuaCIKIAog
I3VuZGVmIFJFTEVBU0VfQVNTRVJUCiAjZGVmaW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikg
ZG8geyBcCg==
</data>
<flag name="review"
          id="416343"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>