<?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>233328</bug_id>
          
          <creation_ts>2021-11-18 12:27:02 -0800</creation_ts>
          <short_desc>ANGLE Metal: The memory backing IOSurfaces of former client buffer pbuffers is leaked</short_desc>
          <delta_ts>2021-12-17 16:36:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>Other</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>234356</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>geofflang</cc>
    
    <cc>gman</cc>
    
    <cc>jonahr</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1816561</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-18 12:27:02 -0800</bug_when>
    <thetext>ANGLE Metal: The memory backing IOSurfaces of former client buffer pbuffers is leaked

This affects mainly WebGL GPU process.

To repro:
Set &quot;WebGL via Metal&quot; and &quot;GPU Process: WebGL&quot;
Navigate to https://webglsamples.org/aquarium/aquarium.html and observe GPUP memory consumption go up.

footprint $(pgrep GPU.Development)
 
GPU Process uses m_context-&gt;markDisplayBufferInUse(); to destroy each WebGL drawing buffer PBuffer before sending the IOSurface to WebContent process for compositing.
This should detach the IOSurface from the EGL pbuffer and as such the pbuffer from the GL texture.

Somehow the memory is still leaking through GPU process.

Note: 
This leaking memory is leaked as &quot;something something graphics memory&quot; (via footprint tool).

Normal IOSurfaces are marked as &quot;IOSurface&quot; by footprint.

The leak doesn&apos;t exist in OpenGL backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816566</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-18 12:32:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/85563187&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816724</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-11-18 18:49:18 -0800</bug_when>
    <thetext>Yikes. Please tell us if it looks like this leak is inside ANGLE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817616</commentid>
    <comment_count>3</comment_count>
      <attachid>445088</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-24 04:53:09 -0800</bug_when>
    <thetext>Created attachment 445088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817626</commentid>
    <comment_count>4</comment_count>
      <attachid>445092</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-24 05:50:21 -0800</bug_when>
    <thetext>Created attachment 445092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817631</commentid>
    <comment_count>5</comment_count>
      <attachid>445096</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-24 06:08:25 -0800</bug_when>
    <thetext>Created attachment 445096
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817750</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-25 00:59:06 -0800</bug_when>
    <thetext>&gt; Yikes. Please tell us if it looks like this leak is inside ANGLE.
No, this one was in WebKit, one of my added features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817751</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-25 01:17:53 -0800</bug_when>
    <thetext>Committed r286160 (244544@main): &lt;https://commits.webkit.org/244544@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445096.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445088</attachid>
            <date>2021-11-24 04:53:09 -0800</date>
            <delta_ts>2021-11-24 05:53:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233328-20211124145307.patch</filename>
            <type>text/plain</type>
            <size>24403</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA0ZmZkYjJlZjE3OTNm
ODM1ZmRmMDliN2ViODNmOTFmOTdhYWI0OS4uZTIxYzkzMTNkZjdmZWMwNjk1ZmJiNTk4NWI4NDJj
YjdlZjIxNDA0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTExLTI0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQU5HTEUgTWV0YWw6
IFRoZSBtZW1vcnkgYmFja2luZyBJT1N1cmZhY2VzIG9mIGZvcm1lciBjbGllbnQgYnVmZmVyIHBi
dWZmZXJzIGlzIGxlYWtlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTU2MzE4Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggYSBidWcgd2hl
cmUgcmVjeWNsaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGRpc3BsYXkgYnVmZmVycyB3b3Vs
ZAorICAgICAgICBsZWFrIHRoZSBzcGFyZSBidWZmZXIgcGJ1ZmZlciBoYW5kbGUuIFRoaXMgd291
bGQgaGFwcGVuIGlmIHRoZQorICAgICAgICBkaXNwbGF5IGJ1ZmZlciB3YXMgbWFya2VkIGFzICJp
biB1c2UiLCBzbyB0aGF0IHRoZSBJT1N1cmZhY2UgcmVmZXJlbmNlCisgICAgICAgIHdvdWxkIGJl
IGRyb3BwZWQgaW1tZWRpYXRlbHkgaW4gb3JkZXIgdG8gbm90IHVzZSBpdCBhcyBuZXh0IGRyYXdp
bmcgYnVmZmVyLgorICAgICAgICBIb3dldmVyLCB0aGUgSU9TdXJmYWNlIGlzIHN0aWxsIGJvdW5k
IGluIEFOR0xFIGFuZCBhcyBzdWNoLCB0aGUgcGJ1ZmZlciBoYW5kbGUKKyAgICAgICAgbXVzdCBi
ZSByZXR1cm5lZCBkdXJpbmcgYEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpy
ZWN5Y2xlQnVmZmVyYGAKKyAgICAgICAgY2FsbC4KKworICAgICAgICBBZGRzIEFQSSB0ZXN0cyBm
b3IgdGVzdGluZyB0aGUgbGVhay4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpyZWN5Y2xlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpw
cmVzZW50KToKKwogMjAyMS0xMS0xOCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIENvY29hIFdlYkdMIHNob3VsZCBzdXBwb3J0IFVJIHNpZGUgY29tcG9z
aXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGNhODQzYzMwOTE0NWZhNDc1NTJmN2I3OTBjODdi
NzdkYzljYjBjMzYuLjNjYTVlZGM4YmM0MDAzYjNmYmU4NWFjYmM3NzdiY2M3MjM4MDMzZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTI0ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQU5HTEUgTWV0YWw6IFRoZSBt
ZW1vcnkgYmFja2luZyBJT1N1cmZhY2VzIG9mIGZvcm1lciBjbGllbnQgYnVmZmVyIHBidWZmZXJz
IGlzIGxlYWtlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzMzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTU2MzE4Nz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcHJvdG90eXBlIGZvciBJ
T1N1cmZhY2VJbmNyZW1lbnRVc2VDb3VudC4KKyAgICAgICAgQ3VycmVudGx5IHVzZWQgZm9yIGEg
dGVzdCwgaW4gc2ltdWxhdGluZyBDQSBiZWhhdmlvci4KKworICAgICAgICAqIHBhbC9zcGkvY29j
b2EvSU9TdXJmYWNlU1BJLmg6CisKIDIwMjEtMTEtMTggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW01vZGVsXSBhZGQgc3VwcG9ydCBmb3IgcGF1c2luZyBh
bmQgcmVzdW1pbmcgYW5pbWF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
b2NvYS9JT1N1cmZhY2VTUEkuaAppbmRleCA0ZDE3Y2RjNjFjZjUzYWYxZmEyZjUxNTliZmNlZGVl
MTNmNDBlN2JiLi5jMWI0YjQzYWY4NTMxZTExYTdlMDMxNjJjZDNmZDAwYmY5YmUxZGY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaApAQCAt
NzEsNiArNzEsNyBAQCBzaXplX3QgSU9TdXJmYWNlR2V0SGVpZ2h0KElPU3VyZmFjZVJlZiBidWZm
ZXIpOwogc2l6ZV90IElPU3VyZmFjZUdldFByb3BlcnR5TWF4aW11bShDRlN0cmluZ1JlZiBwcm9w
ZXJ0eSk7CiBzaXplX3QgSU9TdXJmYWNlR2V0V2lkdGgoSU9TdXJmYWNlUmVmIGJ1ZmZlcik7CiBP
U1R5cGUgSU9TdXJmYWNlR2V0UGl4ZWxGb3JtYXQoSU9TdXJmYWNlUmVmIGJ1ZmZlcik7Cit2b2lk
IElPU3VyZmFjZUluY3JlbWVudFVzZUNvdW50KElPU3VyZmFjZVJlZiBidWZmZXIpOwogQm9vbGVh
biBJT1N1cmZhY2VJc0luVXNlKElPU3VyZmFjZVJlZiBidWZmZXIpOwogSU9SZXR1cm4gSU9TdXJm
YWNlTG9jayhJT1N1cmZhY2VSZWYgYnVmZmVyLCB1aW50MzJfdCBvcHRpb25zLCB1aW50MzJfdCAq
c2VlZCk7CiBJT1N1cmZhY2VSZWYgSU9TdXJmYWNlTG9va3VwRnJvbU1hY2hQb3J0KG1hY2hfcG9y
dF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENo
YWluLmNwcAppbmRleCA4ZDRjMzg4YjdmMWVjMWY1NzM3ZmZjNTNhZTAzZjcyMGVkZjkwZWRhLi40
YjIxNGZhMjA3MmU4YWM5YjlhZDc2MWVhMDExMTI5NTRmMDllY2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCkBAIC00Nyw5ICs0
Nyw4IEBAIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46CiAgICAgaWYgKG1fc3BhcmVCdWZmZXIuc3Vy
ZmFjZSkgewogICAgICAgICBpZiAobV9zcGFyZUJ1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpCiAg
ICAgICAgICAgICBtX3NwYXJlQnVmZmVyLnN1cmZhY2UucmVzZXQoKTsKLSAgICAgICAgcmV0dXJu
IFdURk1vdmUobV9zcGFyZUJ1ZmZlcik7CiAgICAgfQotICAgIHJldHVybiB7IH07CisgICAgcmV0
dXJuIHN0ZDo6ZXhjaGFuZ2UobV9zcGFyZUJ1ZmZlciwgeyB9KTsKIH0KIAogdm9pZCogR3JhcGhp
Y3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OmRldGFjaENsaWVudCgpCkBAIC02MCw2ICs1
OSw4IEBAIHZvaWQqIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpkZXRhY2hD
bGllbnQoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpwcmVz
ZW50KEJ1ZmZlciYmIGJ1ZmZlcikKIHsKKyAgICBBU1NFUlQoIW1fc3BhcmVCdWZmZXIuc3VyZmFj
ZSk7CisgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVyLmhhbmRsZSk7CiAgICAgbV9zcGFyZUJ1ZmZl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9kaXNwbGF5QnVmZmVyLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
IGlmIChtX2Rpc3BsYXlCdWZmZXJJblVzZSkgewogICAgICAgICBtX2Rpc3BsYXlCdWZmZXJJblVz
ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDI5NjM2MjVmMTM5NmU2YWE2YjY4MGNlMTY4NThlZjZjMmQ3OWRmMzAuLjFhMTFjNzJm
NjdjMmYxZjRjYTVlYTYzZWM5ZTU0MjVlNDhhMDgxMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0xMS0yNCAg
S2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIEFOR0xFIE1l
dGFsOiBUaGUgbWVtb3J5IGJhY2tpbmcgSU9TdXJmYWNlcyBvZiBmb3JtZXIgY2xpZW50IGJ1ZmZl
ciBwYnVmZmVycyBpcyBsZWFrZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzMyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODU1NjMxODc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3Rz
IHRlc3RpbmcgQ29jb2EgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgZHJhd2luZyBidWZmZXIKKyAg
ICAgICAgcmVjeWNsaW5nIGJlaGF2aW9yLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvU291cmNlcy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0ltYWdlQnVmZmVyVGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6aW1h
Z2VCdWZmZXJQaXhlbElzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om1lbW9yeUZvb3Rwcmlu
dENoYW5nZWRCeSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1Rlc3RHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y3JlYXRlRGVmYXVsdFRlc3RDb250ZXh0KToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmNoYW5nZUNvbnRleHRDb250ZW50cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RVdGlsaXRpZXMuaDogQWRkZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0VXRpbGl0aWVzLmNwcDogQWRkZWQuCisgICAg
ICAgIEFkZCBmZXcgdXNlZnVsIGZ1bmN0aW9ucyB0byBUZXN0VXRpbGl0aWVzLmggc28gdGhhdCBk
aWZmZXJlbnQKKyAgICAgICAgdGVzdHMgY2FuIHVzZSB0aGVtLgorCiAyMDIxLTExLTE4ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29jb2EgV2ViR0wg
c2hvdWxkIHN1cHBvcnQgVUkgc2lkZSBjb21wb3NpdGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCmluZGV4
IGZjODg3NjkyZjRjZmZmOWM0NmE2ZjY1ZjBiNGIzMGFiZDQ3Njc3ZTcuLjdjOTJhYjM1YWNmNDM4
YjU2MmQ5Mzg3MDM4MzE3OGYyMTUxMmUzZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKQEAgLTkzLDcg
KzkzLDcgQEAgV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHU19tYWNjYXRhbHlzdCA9IC1mcmFtZXdv
cmsgVUlLaXRNYWNIZWxwZXI7CiAKIE9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChpbmhlcml0ZWQp
IC1pc3lzdGVtICQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TeXN0ZW0uZnJh
bWV3b3JrL1ByaXZhdGVIZWFkZXJzOwogCi1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1s
Z3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlRlc3RXZWJLaXRBUEku
YSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRl
c3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Mp
ICQoV0tfQVVUSEtJVF9MREZMQUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFH
UykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1f
TERGTEFHUykgJChXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVf
TERGTEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKK09U
SEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUg
LWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAt
ZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19B
VVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdL
X09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdT
KSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdT
KSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOwogT1RIRVJfTERG
TEFHU19QTEFURk9STV8gPSAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ2FyYm9uOwogCiAv
LyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGJ1aWx0IG9uIGlPUy4gSW5zdGVhZCB3ZSBzaG91
bGQgY3JlYXRlIGFuZCB1c2UgYSBUZXN0V2ViS2l0QVBJIGFwcGxpY2F0aW9uLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
U291cmNlcy50eHQKaW5kZXggYWEzNzVmMTY0YmJjMTI2OGRjZmJjMmFlNTA3YWRjMjI5NTczYmJl
Zi4uOTI2ZDU2ZTg4YTQyYjk2MjA0NTg0MGJlYjJlM2NlYzg4MTUzMmMwMyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1NvdXJjZXMudHh0CkBAIC0yNSw0ICsyNSw1IEBAIERlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuY3Bw
CiBKYXZhU2NyaXB0VGVzdC5jcHAKIFBsYXRmb3JtVXRpbGl0aWVzLmNwcAogVGVzdHNDb250cm9s
bGVyLmNwcAorVGVzdFV0aWxpdGllcy5jcHAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0VXRpbGl0aWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFV0aWxpdGll
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjlmMmY4NzNkNjc3N2I2YjFkODNjZjgwNjRiMGJlYTk2MTUzN2Qw
OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFV0aWxpdGllcy5j
cHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZXN0VXRpbGl0aWVzLmgiCisKKyNpbXBvcnQgPHd0Zi9NZW1vcnlGb290cHJpbnQu
aD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCis6OnRlc3Rpbmc6OkFzc2VydGlvblJl
c3VsdCBtZW1vcnlGb290cHJpbnRDaGFuZ2VkQnkoc2l6ZV90JiBsYXN0Rm9vdHByaW50LCBkb3Vi
bGUgZXhwZWN0ZWRDaGFuZ2UsIGRvdWJsZSBlcnJvcikKK3sKKyAgICBXVEY6OnJlbGVhc2VGYXN0
TWFsbG9jRnJlZU1lbW9yeSgpOworICAgIHNpemVfdCBuZXdGb290cHJpbnQgPSBtZW1vcnlGb290
cHJpbnQoKTsKKyAgICBzaXplX3Qgb2xkRm9vdHByaW50ID0gc3RkOjpleGNoYW5nZShsYXN0Rm9v
dHByaW50LCBuZXdGb290cHJpbnQpOworICAgIGRvdWJsZSBjaGFuZ2UgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KG5ld0Zvb3RwcmludCkgLSBvbGRGb290cHJpbnQ7CisgICAgaWYgKGNoYW5nZSAtIGV4
cGVjdGVkQ2hhbmdlID4gZXJyb3IpCisgICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlv
bkZhaWx1cmUoKSA8PCAiRm9vdHByaW50IGNoYW5nZWQgYnkgIiA8PCBjaGFuZ2UgPDwgIi4gRXhw
ZWN0ZWQgYXQgbW9zdCAiIDw8IGV4cGVjdGVkQ2hhbmdlIDw8ICIrLSIgPDwgZXJyb3I7CisgICAg
cmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOworfQorCit9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RVdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFV0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NmE2MmIyMmNhNjA2MmU3MDk1MjAwNTNk
YjNlNTE0MmU4Y2MyMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RVdGlsaXRpZXMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCisvLyBDYWxsZXIgc2hvdWxkIGluaXRp
YWxpemUgbGFzdEZvb3RwcmludCB3aXRoIG1lbW9yeUZvb3RwcmludCgpIGZvciB0aGUgaW5pdGlh
bCBjYWxsLgorOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgbWVtb3J5Rm9vdHByaW50Q2hhbmdl
ZEJ5KHNpemVfdCYgbGFzdEZvb3RwcmludCwgZG91YmxlIGV4cGVjdGVkQ2hhbmdlLCBkb3VibGUg
ZXJyb3IpOworCit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIHN0ZDo6b3N0cmVh
bSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgdmFs
dWUpCit7CisgICAgVGV4dFN0cmVhbSBzIHsgVGV4dFN0cmVhbTo6TGluZU1vZGU6OlNpbmdsZUxp
bmUgfTsKKyAgICBzIDw8IHZhbHVlOworICAgIHJldHVybiBvcyA8PCBzLnJlbGVhc2UoKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NjVjN2U3Y2FlYTA4OGU2NWRjYTg2N2M5
NDA1YWQ4NDk4MzdkNDY1Li43NmQ4MWJiNDI0Y2U1OGE2NWJiZWRjNDRkM2RhNTM0YTgyNDAwMGI0
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM3MCw2ICsyMzcwLDggQEAKIAkJN0I3RDA5
NjkyNTE5RjhGOTAwMTdBMDc4IC8qIFdlYkdMTm9DcmFzaE9uT3RoZXJUaHJlYWRBY2Nlc3MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJHTE5vQ3Jhc2hPbk90aGVyVGhyZWFkQWNjZXNzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkEzOTM2QjI3MUVERkNBMDAxNTkxMUMg
LyogVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JBMzkzNkQyNzFFRUM1MzAwMTU5MTFD
IC8qIFdlYkNvcmVVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29yZVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI3NTRB
RjI3NEUzOUExMDBEMDBFQzEgLyogVGVzdFV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0
VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjc1NEIwMjc0RTM5
QTEwMEQwMEVDMSAvKiBUZXN0VXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RV
dGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzFBRjc5MzFFOERD
QkFCMDAyNjQ1QjkgLyogUHJlcGFyZUZvck1vdmVUb1dpbmRvdy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZXBhcmVGb3JNb3ZlVG9XaW5kb3cubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzk2NTA1MUNERDc0RjkwMDk0REJCOCAvKiBDb2xv
clRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yVGVz
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNEQjhFMjFEMTIxMjlCMDBB
RThDQzMgLyogQ29tbWFuZEJhY2tGb3J3YXJkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQ29tbWFuZEJhY2tGb3J3YXJkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzE3MSw2ICszMTczLDggQEAKIAkJCQlDMEFEQkU3QTEyRkNBNEQwMDBEMkMx
MjkgLyogSmF2YVNjcmlwdFRlc3QuY3BwICovLAogCQkJCUMwQURCRTdCMTJGQ0E0RDAwMEQyQzEy
OSAvKiBKYXZhU2NyaXB0VGVzdC5oICovLAogCQkJCUJDNTc1QkJGMTI2RjU3NTIwMDZGMEYxMiAv
KiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgKi8sCisJCQkJN0JCNzU0QjAyNzRFMzlBMTAwRDAwRUMx
IC8qIFRlc3RVdGlsaXRpZXMuY3BwICovLAorCQkJCTdCQjc1NEFGMjc0RTM5QTEwMEQwMEVDMSAv
KiBUZXN0VXRpbGl0aWVzLmggKi8sCiAJCQkJQkMxMzE4ODMxMTcxMTRBODAwQjY5NzI3IC8qIFBs
YXRmb3JtVXRpbGl0aWVzLmggKi8sCiAJCQkJQkM5MDk1MUIxMjU1MzNENzAwMDgzNzU2IC8qIFBs
YXRmb3JtV2ViVmlldy5oICovLAogCQkJCUJDQjlFN0ZBMTEyMzU5QTMwMEExMzdFMCAvKiBUZXN0
LmggKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1h
Z2VCdWZmZXJUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1h
Z2VCdWZmZXJUZXN0cy5jcHAKaW5kZXggNjczNzMwMDNjNDRiNGVjNTM3Mzk2MWNlYzY0YjVjNjVm
ZDQwZjFmYi4uYTFlNTUwNzZlZmQxNmY2YWFmMzc0NGFiNmQ2YzI0ZDZmYjgyMGY0ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ltYWdlQnVmZmVyVGVzdHMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbWFnZUJ1ZmZlclRl
c3RzLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNs
dWRlICJUZXN0VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1h
Z2VCdWZmZXIuaD4KQEAgLTM0LDE3ICszNSw2IEBACiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IG1lbW9yeUZvb3RwcmludENoYW5nZWRCeShzaXplX3QmIGxhc3RGb290cHJpbnQsIGRv
dWJsZSBleHBlY3RlZENoYW5nZSwgZG91YmxlIGVycm9yKQotewotICAgIFdURjo6cmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCk7Ci0gICAgc2l6ZV90IG5ld0Zvb3RwcmludCA9IG1lbW9yeUZv
b3RwcmludCgpOwotICAgIHNpemVfdCBvbGRGb290cHJpbnQgPSBzdGQ6OmV4Y2hhbmdlKGxhc3RG
b290cHJpbnQsIG5ld0Zvb3RwcmludCk7Ci0gICAgZG91YmxlIGNoYW5nZSA9IHN0YXRpY19jYXN0
PGRvdWJsZT4obmV3Rm9vdHByaW50KSAtIG9sZEZvb3RwcmludDsKLSAgICBpZiAoY2hhbmdlIC0g
ZXhwZWN0ZWRDaGFuZ2UgPiBlcnJvcikKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0
aW9uRmFpbHVyZSgpIDw8ICJGb290cHJpbnQgY2hhbmdlZCBieSAiIDw8IGNoYW5nZSA8PCAiLiBF
eHBlY3RlZCBhdCBtb3N0ICIgPDwgZXhwZWN0ZWRDaGFuZ2UgPDwgIistIiA8PCBlcnJvcjsKLSAg
ICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci19Ci0KIHN0YXRpYyA6OnRl
c3Rpbmc6OkFzc2VydGlvblJlc3VsdCBpbWFnZUJ1ZmZlclBpeGVsSXMoQ29sb3IgZXhwZWN0ZWQs
IEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgaW50IHgsIGludCB5KQogewogICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwpA
QCAtNTIsNyArNDIsNyBAQCBzdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgaW1hZ2VC
dWZmZXJQaXhlbElzKENvbG9yIGV4cGVjdGVkLCBJbWFnZUJ1ZmZlcgogICAgIGF1dG8mIGRhdGEg
PSBmcm9udFBpeGVsQnVmZmVyLT5kYXRhKCk7CiAgICAgYXV0byBnb3QgPSBDb2xvciB7IFNSR0JB
PHVpbnQ4X3Q+IHsgZGF0YS5pdGVtKDApLCBkYXRhLml0ZW0oMSksIGRhdGEuaXRlbSgyKSwgZGF0
YS5pdGVtKDMpIH0gfTsKICAgICBpZiAoZ290ICE9IGV4cGVjdGVkKQotICAgICAgICByZXR1cm4g
Ojp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgImNvbG9yIGlzIG5vdCBleHBlY3RlZC4i
OyAvLyBGSVhNRTogaW1wbGVtZW50IENvbG9yIDw8LgorICAgICAgICByZXR1cm4gOjp0ZXN0aW5n
OjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgImNvbG9yIGlzIG5vdCBleHBlY3RlZC4gR290OiAiIDw8
IGdvdCA8PCAiLCBleHBlY3RlZDogIiA8PCBleHBlY3RlZCA8PCAiLiI7CiAgICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Q29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggOTUxNDkwMTg1ZDdmNGMyYWY5ZGFl
YmY3NGIwYTJkOGIxM2NiYzlmNi4uNGFjMmNiOWRhOGMwYWE3NTJmNjBjYmIyZDVkNzlmYTUzNThh
MGRjYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1Rlc3RHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbQpAQCAtMjcsOSArMjcsMTMgQEAKICNpbXBvcnQgIlRlc3QuaCIKIAogI2lmIFBMQVRGT1JN
KENPQ09BKSAmJiBFTkFCTEUoV0VCR0wpCisjaW1wb3J0ICJUZXN0VXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJXZWJDb3JlVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgorI2ltcG9ydCA8d3RmL0hhc2hT
ZXQuaD4KKyNpbXBvcnQgPHd0Zi9NZW1vcnlGb290cHJpbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbG9yLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwpAQCAtNTEsNiArNTUsNDMgQEAgcHJpdmF0ZToKIH07CiB9CiAKK3N0YXRpYyBjb25z
dCBpbnQgZXhwZWN0ZWREaXNwbGF5QnVmZmVyUG9vbFNpemUgPSAzOworCitzdGF0aWMgUmVmUHRy
PFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyBhdHRyaWJ1dGVzOworICAgIGF0dHJpYnV0ZXMudXNlTWV0YWwgPSB0cnVlOworICAgIGF0dHJp
YnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CisgICAgYXR0cmlidXRlcy5kZXB0aCA9IGZhbHNlOwor
ICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IGZhbHNlOworICAgIGF0dHJpYnV0ZXMuYWxwaGEgPSB0
cnVlOworICAgIGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyID0gZmFsc2U7CisgICAg
YXV0byBjb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRy
aWJ1dGVzKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGNvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9
CisKK3N0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBjaGFuZ2VDb250ZXh0Q29udGVu
dHMoVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmIGNvbnRleHQsIGludCBpdGVyYXRpb24p
Cit7CisgICAgY29udGV4dC5tYXJrQ29udGV4dENoYW5nZWQoKTsKKyAgICBDb2xvciBleHBlY3Rl
ZCB7IGl0ZXJhdGlvbiAlIDIgPyBDb2xvcjo6Z3JlZW4gOiBDb2xvcjo6eWVsbG93IH07CisgICAg
YXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBleHBlY3RlZC5jb2xvclNwYWNlQW5kQ29t
cG9uZW50cygpOworICAgIFVOVVNFRF9WQVJJQUJMRShjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0
LmNsZWFyQ29sb3IoY29tcG9uZW50c1swXSwgY29tcG9uZW50c1sxXSwgY29tcG9uZW50c1syXSwg
Y29tcG9uZW50c1szXSk7CisgICAgY29udGV4dC5jbGVhcihHcmFwaGljc0NvbnRleHRHTDo6Q09M
T1JfQlVGRkVSX0JJVCk7CisgICAgdWludDhfdCBnb3RWYWx1ZXNbNF0gPSB7IH07CisgICAgSW50
U2l6ZSBzYW1wbGVBdCA9IGNvbnRleHQuZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKKyAg
ICBzYW1wbGVBdC5jb250cmFjdCgyLCAzKTsKKyAgICBzYW1wbGVBdC5jbGFtcE5lZ2F0aXZlVG9a
ZXJvKCk7CisgICAgY29udGV4dC5yZWFkblBpeGVscyhzYW1wbGVBdC53aWR0aCgpLCBzYW1wbGVB
dC5oZWlnaHQoKSwgMSwgMSwgR3JhcGhpY3NDb250ZXh0R0w6OlJHQkEsIEdyYXBoaWNzQ29udGV4
dEdMOjpVTlNJR05FRF9CWVRFLCBnb3RWYWx1ZXMpOworICAgIENvbG9yIGdvdCB7IFNSR0JBPHVp
bnQ4X3Q+IHsgZ290VmFsdWVzWzBdLCBnb3RWYWx1ZXNbMV0sIGdvdFZhbHVlc1syXSwgZ290VmFs
dWVzWzNdIH0gfTsKKyAgICBpZiAoZ290ICE9IGV4cGVjdGVkKQorICAgICAgICByZXR1cm4gOjp0
ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgIkZhaWxlZCB0byB2ZXJpZnkgZHJhdyB0byBj
b250ZXh0LiBHb3Q6ICIgPDwgZ290IDw8ICIsIGV4cGVjdGVkOiAiIDw8IGV4cGVjdGVkIDw8ICIu
IjsKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Cit9CisKIHN0YXRp
YyBib29sIGhhc011bHRpcGxlR1BVcygpCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpKQpAQCAtNzksMTkgKzEyMCwxMTQgQEAgVEVTVChHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hVGVzdCwgTUFZQkVfTXVsdGlwbGVHUFVzRGlmZmVyZW50UG93ZXJQcmVm
ZXJlbmMKICAgICBhdHRyaWJ1dGVzLnVzZU1ldGFsID0gdHJ1ZTsKICAgICBFWFBFQ1RfRVEoYXR0
cmlidXRlcy5wb3dlclByZWZlcmVuY2UsIEdyYXBoaWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNl
OjpEZWZhdWx0KTsKICAgICBhdXRvIGRlZmF1bHRDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzKTsKLSAgICBFWFBFQ1RfTkUoZGVmYXVsdENv
bnRleHQsIG51bGxwdHIpOworICAgIEFTU0VSVF9ORShkZWZhdWx0Q29udGV4dCwgbnVsbHB0cik7
CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IEdyYXBoaWNzQ29udGV4dEdMUG93
ZXJQcmVmZXJlbmNlOjpMb3dQb3dlcjsKICAgICBhdXRvIGxvd1Bvd2VyQ29udGV4dCA9IFRlc3Rl
ZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRlcyk7Ci0gICAgRVhQRUNU
X05FKGxvd1Bvd2VyQ29udGV4dCwgbnVsbHB0cik7CisgICAgQVNTRVJUX05FKGxvd1Bvd2VyQ29u
dGV4dCwgbnVsbHB0cik7CiAKICAgICBhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSA9IEdyYXBo
aWNzQ29udGV4dEdMUG93ZXJQcmVmZXJlbmNlOjpIaWdoUGVyZm9ybWFuY2U7CiAgICAgYXV0byBo
aWdoUGVyZm9ybWFuY2VDb250ZXh0ID0gVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZShhdHRyaWJ1dGVzKTsKLSAgICBFWFBFQ1RfTkUoaGlnaFBlcmZvcm1hbmNlQ29udGV4dCwg
bnVsbHB0cik7CisgICAgQVNTRVJUX05FKGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQsIG51bGxwdHIp
OwogCiAgICAgRVhQRUNUX05FKGxvd1Bvd2VyQ29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29u
dGV4dEdMOjpSRU5ERVJFUiksIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQtPmdldFN0cmluZyhHcmFw
aGljc0NvbnRleHRHTDo6UkVOREVSRVIpKTsKICAgICBFWFBFQ1RfRVEoZGVmYXVsdENvbnRleHQt
PmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpLCBsb3dQb3dlckNvbnRleHQt
PmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6UkVOREVSRVIpKTsKIH0KIAorVEVTVChHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hVGVzdCwgRGlzcGxheUJ1ZmZlcnNBcmVSZWN5Y2xlZCkK
K3sKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoMjAsIDIwKTsK
KyAgICBBU1NFUlRfTkUoY29udGV4dCwgbnVsbHB0cik7CisgICAgUmV0YWluUHRyPElPU3VyZmFj
ZVJlZj4gZXhwZWN0ZWREaXNwbGF5QnVmZmVyc1tleHBlY3RlZERpc3BsYXlCdWZmZXJQb29sU2l6
ZV07CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKGNoYW5nZUNvbnRleHRDb250ZW50cygqY29udGV4dCwgaSkpOworICAgICAgICBjb250ZXh0
LT5wcmVwYXJlRm9yRGlzcGxheSgpOworICAgICAgICBhdXRvKiBzdXJmYWNlID0gY29udGV4dC0+
ZGlzcGxheUJ1ZmZlcigpOworICAgICAgICBBU1NFUlRfTkUoc3VyZmFjZSwgbnVsbHB0cik7Cisg
ICAgICAgIGludCBzbG90ID0gaSAlIGV4cGVjdGVkRGlzcGxheUJ1ZmZlclBvb2xTaXplOworICAg
ICAgICBpZiAoIWV4cGVjdGVkRGlzcGxheUJ1ZmZlcnNbc2xvdF0pCisgICAgICAgICAgICBleHBl
Y3RlZERpc3BsYXlCdWZmZXJzW3Nsb3RdID0gc3VyZmFjZS0+c3VyZmFjZSgpOworICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWREaXNwbGF5QnVmZmVyc1tzbG90XS5nZXQoKSwgc3VyZmFjZS0+c3Vy
ZmFjZSgpKSA8PCAiZm9yIGk6IiA8PCBpIDw8ICIgc2xvdDogIiA8PCBzbG90OworICAgIH0KKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGV4cGVjdGVkRGlzcGxheUJ1ZmZlclBvb2xTaXplIC0gMTsg
KytpKSB7CisgICAgICAgIGZvciAoaW50IGogPSBpICsgMTsgaiA8IGV4cGVjdGVkRGlzcGxheUJ1
ZmZlclBvb2xTaXplOyArK2opCisgICAgICAgICAgICBFWFBFQ1RfTkUoZXhwZWN0ZWREaXNwbGF5
QnVmZmVyc1tpXS5nZXQoKSwgZXhwZWN0ZWREaXNwbGF5QnVmZmVyc1tqXS5nZXQoKSkgPDwgImZv
ciBpOiAiIDw8IGkgPDwgIiBqOiIgPDwgajsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhhdCBkcmF3
aW5nIGJ1ZmZlcnMgYXJlIG5vdCByZWN5Y2xlZCBpZiBgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
Om1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKWAKKy8vIGlzIGNhbGxlZC4KK1RFU1QoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYVRlc3QsIERpc3BsYXlCdWZmZXJzQXJlTm90UmVjeWNsZWRXaGVu
TWFya2VkSW5Vc2UpCit7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlRGVmYXVsdFRlc3RDb250
ZXh0KDIwLCAyMCk7CisgICAgQVNTRVJUX05FKGNvbnRleHQsIG51bGxwdHIpOworICAgIEhhc2hT
ZXQ8UmV0YWluUHRyPElPU3VyZmFjZVJlZj4+IHNlZW5TdXJmYWNlUmVmczsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoY2hhbmdlQ29udGV4
dENvbnRlbnRzKCpjb250ZXh0LCBpKSk7CisgICAgICAgIGNvbnRleHQtPnByZXBhcmVGb3JEaXNw
bGF5KCk7CisgICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZSogc3VyZmFjZSA9IGNvbnRleHQtPmRp
c3BsYXlCdWZmZXIoKTsKKyAgICAgICAgQVNTRVJUX05FKHN1cmZhY2UsIG51bGxwdHIpOworICAg
ICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZVJlZiA9IHN1cmZhY2UtPnN1cmZhY2UoKTsKKyAgICAg
ICAgRVhQRUNUX05FKHN1cmZhY2VSZWYsIG51bGxwdHIpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
c2VlblN1cmZhY2VSZWZzLmNvbnRhaW5zKHN1cmZhY2VSZWYpKTsKKyAgICAgICAgc2VlblN1cmZh
Y2VSZWZzLmFkZChzdXJmYWNlUmVmKTsKKworICAgICAgICBjb250ZXh0LT5tYXJrRGlzcGxheUJ1
ZmZlckluVXNlKCk7CisgICAgfQorICAgIEFTU0VSVF9FUShzZWVuU3VyZmFjZVJlZnMuc2l6ZSgp
LCA1MHUpOwogfQorCisvLyBUZXN0IHRoYXQgZHJhd2luZyBidWZmZXJzIGFyZSBub3QgcmVjeWNs
ZWQgaWYgdGhlIHVzZSBjb3VudCBvZiB0aGUgdW5kZXJseWluZyBJT1N1cmZhY2UKKy8vIGNoYW5n
ZXMuIFVzZSBjb3VudCBpcyBtb2RpZmllZCBmb3IgZXhhbXBsZSBieSBDb3JlQW5pbWF0aW9uIHdo
ZW4gdGhlIElPU3VyZmFjZSBpcyBhdHRhY2hlZAorLy8gdG8gdGhlIGNvbnRlbnRzLgorVEVTVChH
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hVGVzdCwgRGlzcGxheUJ1ZmZlcnNBcmVOb3RSZWN5
Y2xlZFdoZWRJblVzZSkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVEZWZhdWx0VGVzdENv
bnRleHQoMjAsIDIwKTsKKyAgICBBU1NFUlRfTkUoY29udGV4dCwgbnVsbHB0cik7CisgICAgSGFz
aFNldDxSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPj4gc2VlblN1cmZhY2VSZWZzOworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAgICBFWFBFQ1RfVFJVRShjaGFuZ2VDb250
ZXh0Q29udGVudHMoKmNvbnRleHQsIGkpKTsKKyAgICAgICAgY29udGV4dC0+cHJlcGFyZUZvckRp
c3BsYXkoKTsKKyAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlKiBzdXJmYWNlID0gY29udGV4dC0+
ZGlzcGxheUJ1ZmZlcigpOworICAgICAgICBBU1NFUlRfTkUoc3VyZmFjZSwgbnVsbHB0cik7Cisg
ICAgICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlUmVmID0gc3VyZmFjZS0+c3VyZmFjZSgpOworICAg
ICAgICBFWFBFQ1RfTkUoc3VyZmFjZVJlZiwgbnVsbHB0cik7CisgICAgICAgIEVYUEVDVF9GQUxT
RShzZWVuU3VyZmFjZVJlZnMuY29udGFpbnMoc3VyZmFjZVJlZikpOworICAgICAgICBzZWVuU3Vy
ZmFjZVJlZnMuYWRkKHN1cmZhY2VSZWYpOworCisgICAgICAgIElPU3VyZmFjZUluY3JlbWVudFVz
ZUNvdW50KHN1cmZhY2VSZWYpOworICAgIH0KKyAgICBBU1NFUlRfRVEoc2VlblN1cmZhY2VSZWZz
LnNpemUoKSwgNTB1KTsKK30KKworLy8gVGVzdCB0aGF0IGRyYXdpbmcgdG8gR3JhcGhpY3NDb250
ZXh0R0wgYW5kIG1hcmtpbmcgdGhlIGRpc3BsYXkgYnVmZmVyIGluIHVzZSBkb2VzIG5vdCBsZWFr
IGJpZworLy8gYW1vdW50cyBvZiBtZW1vcnkgZm9yIGVhY2ggZGlzcGxheWVkIGJ1ZmZlci4KK1RF
U1QoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYVRlc3QsIFVucmVjeWNsZWREaXNwbGF5QnVm
ZmVyc05vTGVha3MpCit7CisgICAgaW50IGNvbnRleHRXaWR0aCA9IDIwNDg7CisgICAgaW50IGNv
bnRleHRIZWlnaHQgPSAyMDQ4OworICAgIC8vIFRoZSB0ZXN0IGRldGVjdHMgdGhlIGxlYWsgYnkg
b2JzZXJ2aW5nIG1lbW9yeSBmb290cHJpbnQuIEhvd2V2ZXIsIHNvbWUgb2YgdGhlIGZyZWVkIElP
U3VyZmFjZQorICAgIC8vIG1lbW9yeSBzdGF5cyByZXNpZGVudCBwcmVzdW1hYmx5IGJ5IElPS2l0
IGludGVudGlvbiAoMTMwbWIpLiBUaGUgdGVzdCB3b3VsZCBvcmlnaW5hbGx5IGxlYWsKKyAgICAv
LyAyLjdnYiBzbyB0aGlzIHdvdWxkIGJlIGRldGVjdGVkIHdpdGggMTUwbWIgZXJyb3IgcmFuZ2Uu
CisgICAgc2l6ZV90IGZvb3RwcmludEVycm9yID0gMTUwICogMTAyNCAqIDEwMjQ7CisgICAgc2l6
ZV90IGZvb3RwcmludENoYW5nZSA9IDA7CisKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVEZWZh
dWx0VGVzdENvbnRleHQoY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0KTsKKyAgICBBU1NFUlRf
TkUoY29udGV4dCwgbnVsbHB0cik7CisKKyAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1l
bW9yeSgpOworICAgIGF1dG8gbGFzdEZvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgpOworCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGNo
YW5nZUNvbnRleHRDb250ZW50cygqY29udGV4dCwgaSkpOworICAgICAgICBjb250ZXh0LT5wcmVw
YXJlRm9yRGlzcGxheSgpOworICAgICAgICBFWFBFQ1RfTkUoY29udGV4dC0+ZGlzcGxheUJ1ZmZl
cigpLCBudWxscHRyKTsKKyAgICAgICAgY29udGV4dC0+bWFya0Rpc3BsYXlCdWZmZXJJblVzZSgp
OworICAgIH0KKworICAgIEVYUEVDVF9UUlVFKG1lbW9yeUZvb3RwcmludENoYW5nZWRCeShsYXN0
Rm9vdHByaW50LCBmb290cHJpbnRDaGFuZ2UsIGZvb3RwcmludEVycm9yKSk7Cit9CisKK30KKwog
I2VuZGlmCg==
</data>
<flag name="commit-queue"
          id="470221"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445092</attachid>
            <date>2021-11-24 05:50:21 -0800</date>
            <delta_ts>2021-11-24 06:15:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233328-20211124155020.patch</filename>
            <type>text/plain</type>
            <size>27093</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uODdiNWY2N2QyMGJjZDhjMDRlMzgyZTgwZjJkYWRm
YzYzYzkxNWUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTExLTI0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQU5HTEUgTWV0YWw6
IFRoZSBtZW1vcnkgYmFja2luZyBJT1N1cmZhY2VzIG9mIGZvcm1lciBjbGllbnQgYnVmZmVyIHBi
dWZmZXJzIGlzIGxlYWtlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTU2MzE4Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggYSBidWcgd2hl
cmUgcmVjeWNsaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGRpc3BsYXkgYnVmZmVycyB3b3Vs
ZAorICAgICAgICBsZWFrIHRoZSBzcGFyZSBidWZmZXIgcGJ1ZmZlciBoYW5kbGUuIFRoaXMgd291
bGQgaGFwcGVuIGlmIHRoZQorICAgICAgICBkaXNwbGF5IGJ1ZmZlciB3YXMgbWFya2VkIGFzICJp
biB1c2UiLCBzbyB0aGF0IHRoZSBJT1N1cmZhY2UgcmVmZXJlbmNlCisgICAgICAgIHdvdWxkIGJl
IGRyb3BwZWQgaW1tZWRpYXRlbHkgaW4gb3JkZXIgdG8gbm90IHVzZSBpdCBhcyBuZXh0IGRyYXdp
bmcgYnVmZmVyLgorICAgICAgICBIb3dldmVyLCB0aGUgSU9TdXJmYWNlIGlzIHN0aWxsIGJvdW5k
IGluIEFOR0xFIGFuZCBhcyBzdWNoLCB0aGUgcGJ1ZmZlciBoYW5kbGUKKyAgICAgICAgbXVzdCBi
ZSByZXR1cm5lZCBkdXJpbmcgYEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpy
ZWN5Y2xlQnVmZmVyYGAKKyAgICAgICAgY2FsbC4KKworICAgICAgICBBZGRzIEFQSSB0ZXN0cyBm
b3IgdGVzdGluZyB0aGUgbGVhay4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpyZWN5Y2xlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpw
cmVzZW50KToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5
cGVybGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwppbmRleCBjYTg0M2MzMDkxNDVmYTQ3NTUyZjdiNzkwYzg3Yjc3ZGM5Y2IwYzM2Li4zY2E1ZWRj
OGJjNDAwM2IzZmJlODVhY2JjNzc3YmNjNzIzODAzM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0xMS0yNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIEFOR0xFIE1ldGFsOiBUaGUgbWVtb3J5IGJhY2tpbmcgSU9TdXJm
YWNlcyBvZiBmb3JtZXIgY2xpZW50IGJ1ZmZlciBwYnVmZmVycyBpcyBsZWFrZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzMyOAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODU1NjMxODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHByb3RvdHlwZSBmb3IgSU9TdXJmYWNlSW5jcmVtZW50VXNl
Q291bnQuCisgICAgICAgIEN1cnJlbnRseSB1c2VkIGZvciBhIHRlc3QsIGluIHNpbXVsYXRpbmcg
Q0EgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oOgor
CiAyMDIxLTExLTE4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtNb2RlbF0gYWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPU3VyZmFj
ZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmgK
aW5kZXggNGQxN2NkYzYxY2Y1M2FmMWZhMmY1MTU5YmZjZWRlZTEzZjQwZTdiYi4uYzFiNGI0M2Fm
ODUzMWUxMWE3ZTAzMTYyY2QzZmQwMGJmOWJlMWRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmgKQEAgLTcxLDYgKzcxLDcgQEAgc2l6ZV90
IElPU3VyZmFjZUdldEhlaWdodChJT1N1cmZhY2VSZWYgYnVmZmVyKTsKIHNpemVfdCBJT1N1cmZh
Y2VHZXRQcm9wZXJ0eU1heGltdW0oQ0ZTdHJpbmdSZWYgcHJvcGVydHkpOwogc2l6ZV90IElPU3Vy
ZmFjZUdldFdpZHRoKElPU3VyZmFjZVJlZiBidWZmZXIpOwogT1NUeXBlIElPU3VyZmFjZUdldFBp
eGVsRm9ybWF0KElPU3VyZmFjZVJlZiBidWZmZXIpOwordm9pZCBJT1N1cmZhY2VJbmNyZW1lbnRV
c2VDb3VudChJT1N1cmZhY2VSZWYgYnVmZmVyKTsKIEJvb2xlYW4gSU9TdXJmYWNlSXNJblVzZShJ
T1N1cmZhY2VSZWYgYnVmZmVyKTsKIElPUmV0dXJuIElPU3VyZmFjZUxvY2soSU9TdXJmYWNlUmVm
IGJ1ZmZlciwgdWludDMyX3Qgb3B0aW9ucywgdWludDMyX3QgKnNlZWQpOwogSU9TdXJmYWNlUmVm
IElPU3VyZmFjZUxvb2t1cEZyb21NYWNoUG9ydChtYWNoX3BvcnRfdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKaW5kZXggOGQ0YzM4
OGI3ZjFlYzFmNTczN2ZmYzUzYWUwM2Y3MjBlZGY5MGVkYS4uNGIyMTRmYTIwNzJlOGFjOWI5YWQ3
NjFlYTAxMTEyOTU0ZjA5ZWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcApAQCAtNDcsOSArNDcsOCBAQCBHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluOgogICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKICAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQogICAgICAgICAgICAgbV9zcGFyZUJ1
ZmZlci5zdXJmYWNlLnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKG1fc3BhcmVCdWZm
ZXIpOwogICAgIH0KLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1f
c3BhcmVCdWZmZXIsIHsgfSk7CiB9CiAKIHZvaWQqIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluOjpkZXRhY2hDbGllbnQoKQpAQCAtNjAsNiArNTksOCBAQCB2b2lkKiBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6ZGV0YWNoQ2xpZW50KCkKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6cHJlc2VudChCdWZmZXImJiBidWZmZXIp
CiB7CisgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgIEFTU0VSVCghbV9z
cGFyZUJ1ZmZlci5oYW5kbGUpOwogICAgIG1fc3BhcmVCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1f
ZGlzcGxheUJ1ZmZlciwgV1RGTW92ZShidWZmZXIpKTsKICAgICBpZiAobV9kaXNwbGF5QnVmZmVy
SW5Vc2UpIHsKICAgICAgICAgbV9kaXNwbGF5QnVmZmVySW5Vc2UgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NjA2ZWU0NDMxMjk2
MmVhYmU3NDRhZTRiOWNmNzQ5ODc3N2I2MWI0Li4zYTU0MDljZjIyYTZlOGQ2ZDZlZDhkNWJkYmZi
YzBiODAzMjkyNzJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMTEtMjQgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBBTkdMRSBNZXRhbDogVGhlIG1lbW9yeSBiYWNr
aW5nIElPU3VyZmFjZXMgb2YgZm9ybWVyIGNsaWVudCBidWZmZXIgcGJ1ZmZlcnMgaXMgbGVha2Vk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMjgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg1NTYzMTg3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyB0ZXN0aW5nIENvY29hIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIHJlY3ljbGluZyBiZWhh
dmlvci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktp
dEFQSS54Y2NvbmZpZzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0OgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbWFnZUJ1ZmZlclRl
c3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmltYWdlQnVmZmVyUGl4ZWxJcyk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjptZW1vcnlGb290cHJpbnRDaGFuZ2VkQnkpOiBEZWxldGVk
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0
ZURlZmF1bHRUZXN0Q29udGV4dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGFuZ2VDb250
ZXh0Q29udGVudHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0VXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFV0aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICBBZGQgZmV3IHVzZWZ1bCBm
dW5jdGlvbnMgdG8gVGVzdFV0aWxpdGllcy5oIHNvIHRoYXQgZGlmZmVyZW50CisgICAgICAgIHRl
c3RzIGNhbiB1c2UgdGhlbS4KKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gW0dMSUJdIEFkZCBuZXcg
dGVzdCBjYXNlIHRvIC9qc2MvY2xhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwppbmRleCBmYzg4NzY5MmY0
Y2ZmZjljNDZhNmY2NWYwYjRiMzBhYmQ0NzY3N2U3Li43YzkyYWIzNWFjZjQzOGI1NjJkOTM4NzAz
ODMxNzhmMjE1MTJlM2VlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCkBAIC05Myw3ICs5Myw3IEBAIFdL
X1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5c3QgPSAtZnJhbWV3b3JrIFVJS2l0TWFj
SGVscGVyOwogCiBPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAk
KFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2
YXRlSGVhZGVyczsKIAotT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3Jj
ZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29y
ayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAt
ZnJhbWV3b3JrIE1ldGFsICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhL
SVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BF
TkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQo
V0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQo
T1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9MREZMQUdT
ID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIp
L2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsg
V2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJ
T1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZM
QUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERG
TEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJ
VE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChPVEhFUl9M
REZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKIE9USEVSX0xERkxBR1NfUExBVEZP
Uk1fID0gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENhcmJvbjsKIAogLy8gRklYTUU6IFRo
aXMgc2hvdWxkIG5vdCBiZSBidWlsdCBvbiBpT1MuIEluc3RlYWQgd2Ugc2hvdWxkIGNyZWF0ZSBh
bmQgdXNlIGEgVGVzdFdlYktpdEFQSSBhcHBsaWNhdGlvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvU291cmNlcy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0
CmluZGV4IGFhMzc1ZjE2NGJiYzEyNjhkY2ZiYzJhZTUwN2FkYzIyOTU3M2JiZWYuLjkyNmQ1NmU4
OGE0MmI5NjIwNDU4NDBiZWIyZTNjZWM4ODE1MzJjMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvU291cmNlcy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4
dApAQCAtMjUsNCArMjUsNSBAQCBEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmNwcAogSmF2YVNjcmlw
dFRlc3QuY3BwCiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAKIFRlc3RzQ29udHJvbGxlci5jcHAKK1Rl
c3RVdGlsaXRpZXMuY3BwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFV0
aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RVdGlsaXRpZXMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY5ZjJmODczZDY3NzdiNmIxZDgzY2Y4MDY0YjBiZWE5NjE1MzdkMDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RVdGlsaXRpZXMuY3BwCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVz
dFV0aWxpdGllcy5oIgorCisjaW1wb3J0IDx3dGYvTWVtb3J5Rm9vdHByaW50Lmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgbWVtb3J5
Rm9vdHByaW50Q2hhbmdlZEJ5KHNpemVfdCYgbGFzdEZvb3RwcmludCwgZG91YmxlIGV4cGVjdGVk
Q2hhbmdlLCBkb3VibGUgZXJyb3IpCit7CisgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVN
ZW1vcnkoKTsKKyAgICBzaXplX3QgbmV3Rm9vdHByaW50ID0gbWVtb3J5Rm9vdHByaW50KCk7Cisg
ICAgc2l6ZV90IG9sZEZvb3RwcmludCA9IHN0ZDo6ZXhjaGFuZ2UobGFzdEZvb3RwcmludCwgbmV3
Rm9vdHByaW50KTsKKyAgICBkb3VibGUgY2hhbmdlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihuZXdG
b290cHJpbnQpIC0gb2xkRm9vdHByaW50OworICAgIGlmIChjaGFuZ2UgLSBleHBlY3RlZENoYW5n
ZSA+IGVycm9yKQorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkg
PDwgIkZvb3RwcmludCBjaGFuZ2VkIGJ5ICIgPDwgY2hhbmdlIDw8ICIuIEV4cGVjdGVkIGF0IG1v
c3QgIiA8PCBleHBlY3RlZENoYW5nZSA8PCAiKy0iIDw8IGVycm9yOworICAgIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0VXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RVdGls
aXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40OTZhNjJiMjJjYTYwNjJlNzA5NTIwMDUzZGIzZTUxNDJlOGNj
MjA0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0VXRpbGl0aWVz
LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiVGVzdC5oIgorI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gQ2FsbGVyIHNob3VsZCBpbml0aWFsaXplIGxhc3RG
b290cHJpbnQgd2l0aCBtZW1vcnlGb290cHJpbnQoKSBmb3IgdGhlIGluaXRpYWwgY2FsbC4KKzo6
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG1lbW9yeUZvb3RwcmludENoYW5nZWRCeShzaXplX3Qm
IGxhc3RGb290cHJpbnQsIGRvdWJsZSBleHBlY3RlZENoYW5nZSwgZG91YmxlIGVycm9yKTsKKwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9y
PDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIHZhbHVlKQoreworICAg
IFRleHRTdHJlYW0gcyB7IFRleHRTdHJlYW06OkxpbmVNb2RlOjpTaW5nbGVMaW5lIH07CisgICAg
cyA8PCB2YWx1ZTsKKyAgICByZXR1cm4gb3MgPDwgcy5yZWxlYXNlKCk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOTY1YzdlN2NhZWEwODhlNjVkY2E4NjdjOTQwNWFkODQ5ODM3
ZDQ2NS4uZDQ1YzIyYTA2MDAzZDYwYTc0OGVjODVkZGRhMDM4NTkzNzFmNDljZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIzNzAsNiArMjM3MCw4IEBACiAJCTdCN0QwOTY5MjUxOUY4Rjkw
MDE3QTA3OCAvKiBXZWJHTE5vQ3Jhc2hPbk90aGVyVGhyZWFkQWNjZXNzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViR0xOb0NyYXNoT25PdGhlclRocmVhZEFjY2Vzcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JBMzkzNkIyNzFFREZDQTAwMTU5MTFDIC8qIFRlc3RHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQTM5MzZEMjcxRUVDNTMwMDE1OTExQyAvKiBXZWJDb3Jl
VXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVVdGls
aXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCNzU0QUYyNzRFMzlBMTAw
RDAwRUMxIC8qIFRlc3RVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdFV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI3NTRCMDI3NEUzOUExMDBEMDBFQzEg
LyogVGVzdFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0VXRpbGl0aWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxQUY3OTMxRThEQ0JBQjAwMjY0NUI5
IC8qIFByZXBhcmVGb3JNb3ZlVG9XaW5kb3cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQcmVwYXJlRm9yTW92ZVRvV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzM5NjUwNTFDREQ3NEY5MDA5NERCQjggLyogQ29sb3JUZXN0cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvclRlc3RzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzREI4RTIxRDEyMTI5QjAwQUU4Q0MzIC8qIENv
bW1hbmRCYWNrRm9yd2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IENvbW1hbmRCYWNrRm9yd2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMxNzYsNiArMzE3OCw4IEBACiAJCQkJQkNCOUU3RkExMTIzNTlBMzAwQTEzN0UwIC8qIFRlc3Qu
aCAqLywKIAkJCQlCQzEzMUFBODExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVyLmNw
cCAqLywKIAkJCQlCQ0I5RTdDNzExMjM0RTNBMDBBMTM3RTAgLyogVGVzdHNDb250cm9sbGVyLmgg
Ki8sCisJCQkJN0JCNzU0QjAyNzRFMzlBMTAwRDAwRUMxIC8qIFRlc3RVdGlsaXRpZXMuY3BwICov
LAorCQkJCTdCQjc1NEFGMjc0RTM5QTEwMEQwMEVDMSAvKiBUZXN0VXRpbGl0aWVzLmggKi8sCiAJ
CQkJN0M4M0UwMzYxRDBBNUY3MDAwRkVCQ0YzIC8qIFV0aWxpdGllcy5oICovLAogCQkJCTdCQTM5
MzZEMjcxRUVDNTMwMDE1OTExQyAvKiBXZWJDb3JlVXRpbGl0aWVzLmggKi8sCiAJCQkJN0NCRDVB
MjIyMkRFNDJBNjAwNEE5RTMyIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5j
cHAKaW5kZXggNjczNzMwMDNjNDRiNGVjNTM3Mzk2MWNlYzY0YjVjNjVmZDQwZjFmYi4uYTFlNTUw
NzZlZmQxNmY2YWFmMzc0NGFiNmQ2YzI0ZDZmYjgyMGY0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ltYWdlQnVmZmVyVGVzdHMuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbWFnZUJ1ZmZlclRlc3RzLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJUZXN0VXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1h
Z2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaD4KQEAg
LTM0LDE3ICszNSw2IEBACiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG1lbW9yeUZv
b3RwcmludENoYW5nZWRCeShzaXplX3QmIGxhc3RGb290cHJpbnQsIGRvdWJsZSBleHBlY3RlZENo
YW5nZSwgZG91YmxlIGVycm9yKQotewotICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KCk7Ci0gICAgc2l6ZV90IG5ld0Zvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgpOwotICAg
IHNpemVfdCBvbGRGb290cHJpbnQgPSBzdGQ6OmV4Y2hhbmdlKGxhc3RGb290cHJpbnQsIG5ld0Zv
b3RwcmludCk7Ci0gICAgZG91YmxlIGNoYW5nZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3Rm9v
dHByaW50KSAtIG9sZEZvb3RwcmludDsKLSAgICBpZiAoY2hhbmdlIC0gZXhwZWN0ZWRDaGFuZ2Ug
PiBlcnJvcikKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8
ICJGb290cHJpbnQgY2hhbmdlZCBieSAiIDw8IGNoYW5nZSA8PCAiLiBFeHBlY3RlZCBhdCBtb3N0
ICIgPDwgZXhwZWN0ZWRDaGFuZ2UgPDwgIistIiA8PCBlcnJvcjsKLSAgICByZXR1cm4gOjp0ZXN0
aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci19Ci0KIHN0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdCBpbWFnZUJ1ZmZlclBpeGVsSXMoQ29sb3IgZXhwZWN0ZWQsIEltYWdlQnVmZmVyJiBp
bWFnZUJ1ZmZlciwgaW50IHgsIGludCB5KQogewogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwpAQCAtNTIsNyArNDIsNyBA
QCBzdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgaW1hZ2VCdWZmZXJQaXhlbElzKENv
bG9yIGV4cGVjdGVkLCBJbWFnZUJ1ZmZlcgogICAgIGF1dG8mIGRhdGEgPSBmcm9udFBpeGVsQnVm
ZmVyLT5kYXRhKCk7CiAgICAgYXV0byBnb3QgPSBDb2xvciB7IFNSR0JBPHVpbnQ4X3Q+IHsgZGF0
YS5pdGVtKDApLCBkYXRhLml0ZW0oMSksIGRhdGEuaXRlbSgyKSwgZGF0YS5pdGVtKDMpIH0gfTsK
ICAgICBpZiAoZ290ICE9IGV4cGVjdGVkKQotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgImNvbG9yIGlzIG5vdCBleHBlY3RlZC4iOyAvLyBGSVhNRTogaW1w
bGVtZW50IENvbG9yIDw8LgorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWls
dXJlKCkgPDwgImNvbG9yIGlzIG5vdCBleHBlY3RlZC4gR290OiAiIDw8IGdvdCA8PCAiLCBleHBl
Y3RlZDogIiA8PCBleHBlY3RlZCA8PCAiLiI7CiAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0
aW9uU3VjY2VzcygpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KaW5kZXggOTE3ZDJlODE2MGE1MzJiZjY2NzRhNDIwNTU3ZTI0ZDVhYmE3
ODNmNi4uOGI3ZDlhYTFmNDFlNTMzODQ0NGM1NDQyYThhYTdjZDYzNGY1NGI3NiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMjcsMjcg
KzI3LDkyIEBACiAjaW1wb3J0ICJUZXN0LmgiCiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKFdFQkdMKQorI2ltcG9ydCAiVGVzdFV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQ29yZVV0
aWxpdGllcy5oIgogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29s
b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbXBv
cnQgPG9wdGlvbmFsPgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9NZW1v
cnlGb290cHJpbnQuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7Ci1jbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB7CisKK2NsYXNzIFRlc3Rl
ZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMpCisgICAgc3RhdGljIFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3Jl
YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAg
IHsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBUZXN0ZWRHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTChXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CiAgICAgICAgIHJldHVybiBjb250
ZXh0OwogICAgIH0KKyAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdl
dCgpOworICAgIH0KKyAgICB2b2lkIG1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQorICAgIHsKKyAg
ICAgICAgbV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworICAgIH0KIHByaXZh
dGU6Ci0gICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCi0gICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wo
V1RGTW92ZShhdHRyaWJ1dGVzKSkKKyAgICBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAg
OiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChXVEZNb3ZlKGF0dHJpYnV0ZXMpKQog
ICAgIHsKICAgICB9CiB9OworCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hVGVz
dCBmaW5hbCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZSAvLyBOT0xJTlQKKyAgICB7CisgICAgICAgIG1fc2NvcGVkUHJvY2Vzc1R5
cGUgPSBTY29wZWRTZXRBdXhpbGlhcnlQcm9jZXNzVHlwZUZvclRlc3RpbmcgeyBBdXhpbGlhcnlQ
cm9jZXNzVHlwZTo6R1BVIH07CisgICAgfQorICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSAv
LyBOT0xJTlQKKyAgICB7CisgICAgICAgIG1fc2NvcGVkUHJvY2Vzc1R5cGUgPSBzdGQ6Om51bGxv
cHQ7CisgICAgfQorcHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPFNjb3BlZFNldEF1eGlsaWFy
eVByb2Nlc3NUeXBlRm9yVGVzdGluZz4gbV9zY29wZWRQcm9jZXNzVHlwZTsKK307CisKK30KKwor
c3RhdGljIGNvbnN0IGludCBleHBlY3RlZERpc3BsYXlCdWZmZXJQb29sU2l6ZSA9IDM7CisKK3N0
YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZURlZmF1bHRU
ZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQoreworICAgIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGF0dHJpYnV0ZXMu
dXNlTWV0YWwgPSB0cnVlOworICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CisgICAg
YXR0cmlidXRlcy5kZXB0aCA9IGZhbHNlOworICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IGZhbHNl
OworICAgIGF0dHJpYnV0ZXMuYWxwaGEgPSB0cnVlOworICAgIGF0dHJpYnV0ZXMucHJlc2VydmVE
cmF3aW5nQnVmZmVyID0gZmFsc2U7CisgICAgYXV0byBjb250ZXh0ID0gVGVzdGVkR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNvbnRleHQtPnJlc2hhcGUoY29udGV4dFNpemUu
d2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBjb250ZXh0OworfQor
CitzdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRlbnRz
KFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9uKQor
eworICAgIGNvbnRleHQubWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgV2ViQ29yZTo6Q29sb3Ig
ZXhwZWN0ZWQgeyBpdGVyYXRpb24gJSAyID8gV2ViQ29yZTo6Q29sb3I6OmdyZWVuIDogV2ViQ29y
ZTo6Q29sb3I6OnllbGxvdyB9OworICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0g
ZXhwZWN0ZWQuY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
Y29sb3JTcGFjZSk7CisgICAgY29udGV4dC5jbGVhckNvbG9yKGNvbXBvbmVudHNbMF0sIGNvbXBv
bmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOworICAgIGNvbnRleHQuY2xl
YXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQpOworICAgIHVp
bnQ4X3QgZ290VmFsdWVzWzRdID0geyB9OworICAgIGF1dG8gc2FtcGxlQXQgPSBjb250ZXh0Lmdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCk7CisgICAgc2FtcGxlQXQuY29udHJhY3QoMiwgMyk7
CisgICAgc2FtcGxlQXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIGNvbnRleHQucmVhZG5Q
aXhlbHMoc2FtcGxlQXQud2lkdGgoKSwgc2FtcGxlQXQuaGVpZ2h0KCksIDEsIDEsIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpSR0JBLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6VU5T
SUdORURfQllURSwgZ290VmFsdWVzKTsKKyAgICBXZWJDb3JlOjpDb2xvciBnb3QgeyBXZWJDb3Jl
OjpTUkdCQTx1aW50OF90PiB7IGdvdFZhbHVlc1swXSwgZ290VmFsdWVzWzFdLCBnb3RWYWx1ZXNb
Ml0sIGdvdFZhbHVlc1szXSB9IH07CisgICAgaWYgKGdvdCAhPSBleHBlY3RlZCkKKyAgICAgICAg
cmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJGYWlsZWQgdG8gdmVyaWZ5
IGRyYXcgdG8gY29udGV4dC4gR290OiAiIDw8IGdvdCA8PCAiLCBleHBlY3RlZDogIiA8PCBleHBl
Y3RlZCA8PCAiLiI7CisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpOwog
fQogCiBzdGF0aWMgYm9vbCBoYXNNdWx0aXBsZUdQVXMoKQpAQCAtNjgsMjkgKzEzMywxMjEgQEAg
c3RhdGljIGJvb2wgaGFzTXVsdGlwbGVHUFVzKCkKIC8vIFRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBo
aWdoLXBlcmZvcm1hbmNlIGNvbnRleHQgd291bGQgdXNlIGxvdy1wb3dlciBHUFUgaWYgbG93LXBv
d2VyIG9yIGRlZmF1bHQKIC8vIGNvbnRleHQgd2FzIGNyZWF0ZWQgZmlyc3QuIFRlc3QgaXMgYXBw
bGljYWJsZSBvbmx5IGZvciBNZXRhbCwgc2luY2UgR1BVIHNlbGVjdGlvbiBmb3IgT3BlbkdMIGlz
CiAvLyB2ZXJ5IGRpZmZlcmVudC4KLVRFU1QoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYVRl
c3QsIE1BWUJFX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldGFsKQorVEVT
VF9GKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2FUZXN0LCBNQVlCRV9NdWx0aXBsZUdQVXNE
aWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXRhbCkKIHsKICAgICBpZiAoIWhhc011bHRpcGxlR1BV
cygpKQogICAgICAgICByZXR1cm47Ci0gICAgU2NvcGVkU2V0QXV4aWxpYXJ5UHJvY2Vzc1R5cGVG
b3JUZXN0aW5nIHNjb3BlZFByb2Nlc3NUeXBlIHsgQXV4aWxpYXJ5UHJvY2Vzc1R5cGU6OkdQVSB9
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0cmli
dXRlcy51c2VNZXRhbCA9IHRydWU7Ci0gICAgRVhQRUNUX0VRKGF0dHJpYnV0ZXMucG93ZXJQcmVm
ZXJlbmNlLCBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCk7CisgICAg
RVhQRUNUX0VRKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCk7CiAgICAgYXV0byBkZWZhdWx0Q29udGV4
dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRlcyk7Ci0g
ICAgRVhQRUNUX05FKGRlZmF1bHRDb250ZXh0LCBudWxscHRyKTsKKyAgICBBU1NFUlRfTkUoZGVm
YXVsdENvbnRleHQsIG51bGxwdHIpOwogCi0gICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2Ug
PSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI7CisgICAgYXR0cmli
dXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJl
ZmVyZW5jZTo6TG93UG93ZXI7CiAgICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0ZWRHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMpOwotICAgIEVYUEVDVF9ORShs
b3dQb3dlckNvbnRleHQsIG51bGxwdHIpOworICAgIEFTU0VSVF9ORShsb3dQb3dlckNvbnRleHQs
IG51bGxwdHIpOwogCi0gICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBHcmFwaGljc0Nv
bnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOworICAgIGF0dHJpYnV0ZXMu
cG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZlcmVu
Y2U6OkhpZ2hQZXJmb3JtYW5jZTsKICAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQgPSBU
ZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMpOwotICAgIEVY
UEVDVF9ORShoaWdoUGVyZm9ybWFuY2VDb250ZXh0LCBudWxscHRyKTsKKyAgICBBU1NFUlRfTkUo
aGlnaFBlcmZvcm1hbmNlQ29udGV4dCwgbnVsbHB0cik7CisKKyAgICBFWFBFQ1RfTkUobG93UG93
ZXJDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVS
KSwgaGlnaFBlcmZvcm1hbmNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpSRU5ERVJFUikpOworICAgIEVYUEVDVF9FUShkZWZhdWx0Q29udGV4dC0+Z2V0U3Ry
aW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGxvd1Bvd2VyQ29udGV4
dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUikpOworfQor
CitURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYVRlc3QsIERpc3BsYXlCdWZmZXJz
QXJlUmVjeWNsZWQpCit7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlRGVmYXVsdFRlc3RDb250
ZXh0KHsgMjAsIDIwIH0pOworICAgIEFTU0VSVF9ORShjb250ZXh0LCBudWxscHRyKTsKKyAgICBS
ZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBleHBlY3RlZERpc3BsYXlCdWZmZXJzW2V4cGVjdGVkRGlz
cGxheUJ1ZmZlclBvb2xTaXplXTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyArK2kpIHsK
KyAgICAgICAgRVhQRUNUX1RSVUUoY2hhbmdlQ29udGV4dENvbnRlbnRzKCpjb250ZXh0LCBpKSk7
CisgICAgICAgIGNvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIGF1dG8qIHN1
cmZhY2UgPSBjb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CisgICAgICAgIEFTU0VSVF9ORShzdXJm
YWNlLCBudWxscHRyKTsKKyAgICAgICAgaW50IHNsb3QgPSBpICUgZXhwZWN0ZWREaXNwbGF5QnVm
ZmVyUG9vbFNpemU7CisgICAgICAgIGlmICghZXhwZWN0ZWREaXNwbGF5QnVmZmVyc1tzbG90XSkK
KyAgICAgICAgICAgIGV4cGVjdGVkRGlzcGxheUJ1ZmZlcnNbc2xvdF0gPSBzdXJmYWNlLT5zdXJm
YWNlKCk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERpc3BsYXlCdWZmZXJzW3Nsb3RdLmdl
dCgpLCBzdXJmYWNlLT5zdXJmYWNlKCkpIDw8ICJmb3IgaToiIDw8IGkgPDwgIiBzbG90OiAiIDw8
IHNsb3Q7CisgICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXhwZWN0ZWREaXNwbGF5QnVm
ZmVyUG9vbFNpemUgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwg
ZXhwZWN0ZWREaXNwbGF5QnVmZmVyUG9vbFNpemU7ICsraikKKyAgICAgICAgICAgIEVYUEVDVF9O
RShleHBlY3RlZERpc3BsYXlCdWZmZXJzW2ldLmdldCgpLCBleHBlY3RlZERpc3BsYXlCdWZmZXJz
W2pdLmdldCgpKSA8PCAiZm9yIGk6ICIgPDwgaSA8PCAiIGo6IiA8PCBqOworICAgIH0KK30KIAot
ICAgIEVYUEVDVF9ORShsb3dQb3dlckNvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRH
TDo6UkVOREVSRVIpLCBoaWdoUGVyZm9ybWFuY2VDb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3ND
b250ZXh0R0w6OlJFTkRFUkVSKSk7Ci0gICAgRVhQRUNUX0VRKGRlZmF1bHRDb250ZXh0LT5nZXRT
dHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSwgbG93UG93ZXJDb250ZXh0LT5nZXRT
dHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSk7CisvLyBUZXN0IHRoYXQgZHJhd2lu
ZyBidWZmZXJzIGFyZSBub3QgcmVjeWNsZWQgaWYgYEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpt
YXJrRGlzcGxheUJ1ZmZlckluVXNlKClgCisvLyBpcyBjYWxsZWQuCitURVNUX0YoR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYVRlc3QsIERpc3BsYXlCdWZmZXJzQXJlTm90UmVjeWNsZWRXaGVu
TWFya2VkSW5Vc2UpCit7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlRGVmYXVsdFRlc3RDb250
ZXh0KHsgMjAsIDIwIH0pOworICAgIEFTU0VSVF9ORShjb250ZXh0LCBudWxscHRyKTsKKyAgICBI
YXNoU2V0PFJldGFpblB0cjxJT1N1cmZhY2VSZWY+PiBzZWVuU3VyZmFjZVJlZnM7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGNoYW5nZUNv
bnRleHRDb250ZW50cygqY29udGV4dCwgaSkpOworICAgICAgICBjb250ZXh0LT5wcmVwYXJlRm9y
RGlzcGxheSgpOworICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIHN1cmZhY2UgPSBjb250ZXh0
LT5kaXNwbGF5QnVmZmVyKCk7CisgICAgICAgIEFTU0VSVF9ORShzdXJmYWNlLCBudWxscHRyKTsK
KyAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2VSZWYgPSBzdXJmYWNlLT5zdXJmYWNlKCk7Cisg
ICAgICAgIEVYUEVDVF9ORShzdXJmYWNlUmVmLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKHNlZW5TdXJmYWNlUmVmcy5jb250YWlucyhzdXJmYWNlUmVmKSk7CisgICAgICAgIHNlZW5T
dXJmYWNlUmVmcy5hZGQoc3VyZmFjZVJlZik7CisKKyAgICAgICAgY29udGV4dC0+bWFya0Rpc3Bs
YXlCdWZmZXJJblVzZSgpOworICAgIH0KKyAgICBBU1NFUlRfRVEoc2VlblN1cmZhY2VSZWZzLnNp
emUoKSwgNTB1KTsKIH0KIAorLy8gVGVzdCB0aGF0IGRyYXdpbmcgYnVmZmVycyBhcmUgbm90IHJl
Y3ljbGVkIGlmIHRoZSB1c2UgY291bnQgb2YgdGhlIHVuZGVybHlpbmcgSU9TdXJmYWNlCisvLyBj
aGFuZ2VzLiBVc2UgY291bnQgaXMgbW9kaWZpZWQgZm9yIGV4YW1wbGUgYnkgQ29yZUFuaW1hdGlv
biB3aGVuIHRoZSBJT1N1cmZhY2UgaXMgYXR0YWNoZWQKKy8vIHRvIHRoZSBjb250ZW50cy4KK1RF
U1RfRihHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hVGVzdCwgRGlzcGxheUJ1ZmZlcnNBcmVO
b3RSZWN5Y2xlZFdoZWRJblVzZSkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVEZWZhdWx0
VGVzdENvbnRleHQoeyAyMCwgMjAgfSk7CisgICAgQVNTRVJUX05FKGNvbnRleHQsIG51bGxwdHIp
OworICAgIEhhc2hTZXQ8UmV0YWluUHRyPElPU3VyZmFjZVJlZj4+IHNlZW5TdXJmYWNlUmVmczsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUo
Y2hhbmdlQ29udGV4dENvbnRlbnRzKCpjb250ZXh0LCBpKSk7CisgICAgICAgIGNvbnRleHQtPnBy
ZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZSogc3VyZmFjZSA9
IGNvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKKyAgICAgICAgQVNTRVJUX05FKHN1cmZhY2UsIG51
bGxwdHIpOworICAgICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZVJlZiA9IHN1cmZhY2UtPnN1cmZh
Y2UoKTsKKyAgICAgICAgRVhQRUNUX05FKHN1cmZhY2VSZWYsIG51bGxwdHIpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uoc2VlblN1cmZhY2VSZWZzLmNvbnRhaW5zKHN1cmZhY2VSZWYpKTsKKyAgICAg
ICAgc2VlblN1cmZhY2VSZWZzLmFkZChzdXJmYWNlUmVmKTsKKworICAgICAgICBJT1N1cmZhY2VJ
bmNyZW1lbnRVc2VDb3VudChzdXJmYWNlUmVmKTsKKyAgICB9CisgICAgQVNTRVJUX0VRKHNlZW5T
dXJmYWNlUmVmcy5zaXplKCksIDUwdSk7CiB9CisKKy8vIFRlc3QgdGhhdCBkcmF3aW5nIHRvIEdy
YXBoaWNzQ29udGV4dEdMIGFuZCBtYXJraW5nIHRoZSBkaXNwbGF5IGJ1ZmZlciBpbiB1c2UgZG9l
cyBub3QgbGVhayBiaWcKKy8vIGFtb3VudHMgb2YgbWVtb3J5IGZvciBlYWNoIGRpc3BsYXllZCBi
dWZmZXIuCitURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYVRlc3QsIFVucmVjeWNs
ZWREaXNwbGF5QnVmZmVyc05vTGVha3MpCit7CisgICAgLy8gVGhlIHRlc3QgZGV0ZWN0cyB0aGUg
bGVhayBieSBvYnNlcnZpbmcgbWVtb3J5IGZvb3RwcmludC4gSG93ZXZlciwgc29tZSBvZiB0aGUg
ZnJlZWQgSU9TdXJmYWNlCisgICAgLy8gbWVtb3J5ICgxMzBtYikgc3RheXMgcmVzaWRlbnQsIHBy
ZXN1bWFibHkgYnkgaW50ZW50aW9uIG9mIElPS2l0LiBUaGUgdGVzdCB3b3VsZCBvcmlnaW5hbGx5
IGxlYWsKKyAgICAvLyAyLjdnYiBzbyB0aGUgaW50ZW5kZWQgYnVnIHdvdWxkIGJlIGRldGVjdGVk
IHdpdGggMTUwbWIgZXJyb3IgcmFuZ2UuCisgICAgc2l6ZV90IGZvb3RwcmludEVycm9yID0gMTUw
ICogMTAyNCAqIDEwMjQ7CisgICAgc2l6ZV90IGZvb3RwcmludENoYW5nZSA9IDA7CisKKyAgICBh
dXRvIGNvbnRleHQgPSBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoeyAyMDQ4LCAyMDQ4IH0pOwor
ICAgIEFTU0VSVF9ORShjb250ZXh0LCBudWxscHRyKTsKKworICAgIFdURjo6cmVsZWFzZUZhc3RN
YWxsb2NGcmVlTWVtb3J5KCk7CisgICAgYXV0byBsYXN0Rm9vdHByaW50ID0gbWVtb3J5Rm9vdHBy
aW50KCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoY2hhbmdlQ29udGV4dENvbnRlbnRzKCpjb250ZXh0LCBpKSk7CisgICAgICAgIGNv
bnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIEVYUEVDVF9ORShjb250ZXh0LT5k
aXNwbGF5QnVmZmVyKCksIG51bGxwdHIpOworICAgICAgICBjb250ZXh0LT5tYXJrRGlzcGxheUJ1
ZmZlckluVXNlKCk7CisgICAgfQorCisgICAgRVhQRUNUX1RSVUUobWVtb3J5Rm9vdHByaW50Q2hh
bmdlZEJ5KGxhc3RGb290cHJpbnQsIGZvb3RwcmludENoYW5nZSwgZm9vdHByaW50RXJyb3IpKTsK
K30KKworfQorCiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="470223"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445096</attachid>
            <date>2021-11-24 06:08:25 -0800</date>
            <delta_ts>2021-11-25 01:17:54 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233328-20211124160824.patch</filename>
            <type>text/plain</type>
            <size>27096</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQyNmExYzk5MTE1OGFl
YjA1YWY3M2NhOGNlYjYwN2JjMjZkODYyMC4uODE4ZjAzNDkyOGJkODFmOTcyNWFiNDZhMDExODYx
NWNiMTRlNGYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTExLTI0ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQU5HTEUgTWV0YWw6
IFRoZSBtZW1vcnkgYmFja2luZyBJT1N1cmZhY2VzIG9mIGZvcm1lciBjbGllbnQgYnVmZmVyIHBi
dWZmZXJzIGlzIGxlYWtlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMzI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTU2MzE4Nz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBGaXggYSBidWcgd2hl
cmUgcmVjeWNsaW5nIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIGRpc3BsYXkgYnVmZmVycyB3b3Vs
ZAorICAgICAgICBsZWFrIHRoZSBzcGFyZSBidWZmZXIgcGJ1ZmZlciBoYW5kbGUuIFRoaXMgd291
bGQgaGFwcGVuIGlmIHRoZQorICAgICAgICBkaXNwbGF5IGJ1ZmZlciB3YXMgbWFya2VkIGFzICJp
biB1c2UiLCBzbyB0aGF0IHRoZSBJT1N1cmZhY2UgcmVmZXJlbmNlCisgICAgICAgIHdvdWxkIGJl
IGRyb3BwZWQgaW1tZWRpYXRlbHkgaW4gb3JkZXIgdG8gbm90IHVzZSBpdCBhcyBuZXh0IGRyYXdp
bmcgYnVmZmVyLgorICAgICAgICBIb3dldmVyLCB0aGUgSU9TdXJmYWNlIGlzIHN0aWxsIGJvdW5k
IGluIEFOR0xFIGFuZCBhcyBzdWNoLCB0aGUgcGJ1ZmZlciBoYW5kbGUKKyAgICAgICAgbXVzdCBi
ZSByZXR1cm5lZCBkdXJpbmcgYEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpy
ZWN5Y2xlQnVmZmVyYGAKKyAgICAgICAgY2FsbC4KKworICAgICAgICBBZGRzIEFQSSB0ZXN0cyBm
b3IgdGVzdGluZyB0aGUgbGVhay4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpyZWN5Y2xlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpw
cmVzZW50KToKKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bYTExeV0gQWRkIGltcGxlbWVudGF0aW9uIG9mIGh5
cGVybGluayBpbnRlcmZhY2Ugd2hlbiBidWlsZGluZyB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxv
ZwppbmRleCBjYTg0M2MzMDkxNDVmYTQ3NTUyZjdiNzkwYzg3Yjc3ZGM5Y2IwYzM2Li4wODQyYzNi
YTUyZjI0YWFlZGIwNGQxNDRhYjMyNjYyZGFhNTEzYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0xMS0yNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIEFOR0xFIE1ldGFsOiBUaGUgbWVtb3J5IGJhY2tpbmcgSU9TdXJm
YWNlcyBvZiBmb3JtZXIgY2xpZW50IGJ1ZmZlciBwYnVmZmVycyBpcyBsZWFrZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzMyOAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODU1NjMxODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgQWRkIHByb3RvdHlwZSBmb3IgSU9TdXJmYWNlSW5jcmVtZW50VXNl
Q291bnQuCisgICAgICAgIEN1cnJlbnRseSB1c2VkIGZvciBhIHRlc3QsIGluIHNpbXVsYXRpbmcg
Q0EgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oOgor
CiAyMDIxLTExLTE4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtNb2RlbF0gYWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0lPU3VyZmFj
ZVNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmgK
aW5kZXggNGQxN2NkYzYxY2Y1M2FmMWZhMmY1MTU5YmZjZWRlZTEzZjQwZTdiYi4uYzFiNGI0M2Fm
ODUzMWUxMWE3ZTAzMTYyY2QzZmQwMGJmOWJlMWRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmgKQEAgLTcxLDYgKzcxLDcgQEAgc2l6ZV90
IElPU3VyZmFjZUdldEhlaWdodChJT1N1cmZhY2VSZWYgYnVmZmVyKTsKIHNpemVfdCBJT1N1cmZh
Y2VHZXRQcm9wZXJ0eU1heGltdW0oQ0ZTdHJpbmdSZWYgcHJvcGVydHkpOwogc2l6ZV90IElPU3Vy
ZmFjZUdldFdpZHRoKElPU3VyZmFjZVJlZiBidWZmZXIpOwogT1NUeXBlIElPU3VyZmFjZUdldFBp
eGVsRm9ybWF0KElPU3VyZmFjZVJlZiBidWZmZXIpOwordm9pZCBJT1N1cmZhY2VJbmNyZW1lbnRV
c2VDb3VudChJT1N1cmZhY2VSZWYgYnVmZmVyKTsKIEJvb2xlYW4gSU9TdXJmYWNlSXNJblVzZShJ
T1N1cmZhY2VSZWYgYnVmZmVyKTsKIElPUmV0dXJuIElPU3VyZmFjZUxvY2soSU9TdXJmYWNlUmVm
IGJ1ZmZlciwgdWludDMyX3Qgb3B0aW9ucywgdWludDMyX3QgKnNlZWQpOwogSU9TdXJmYWNlUmVm
IElPU3VyZmFjZUxvb2t1cEZyb21NYWNoUG9ydChtYWNoX3BvcnRfdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTElP
U3VyZmFjZVN3YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9HcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHAKaW5kZXggOGQ0YzM4
OGI3ZjFlYzFmNTczN2ZmYzUzYWUwM2Y3MjBlZGY5MGVkYS4uNGIyMTRmYTIwNzJlOGFjOWI5YWQ3
NjFlYTAxMTEyOTU0ZjA5ZWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMSU9TdXJmYWNlU3dhcENoYWluLmNwcApAQCAtNDcsOSArNDcsOCBAQCBHcmFwaGljc0NvbnRl
eHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluOgogICAgIGlmIChtX3NwYXJlQnVmZmVyLnN1cmZhY2UpIHsKICAgICAgICAgaWYg
KG1fc3BhcmVCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQogICAgICAgICAgICAgbV9zcGFyZUJ1
ZmZlci5zdXJmYWNlLnJlc2V0KCk7Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKG1fc3BhcmVCdWZm
ZXIpOwogICAgIH0KLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1f
c3BhcmVCdWZmZXIsIHsgfSk7CiB9CiAKIHZvaWQqIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNl
U3dhcENoYWluOjpkZXRhY2hDbGllbnQoKQpAQCAtNjAsNiArNTksOCBAQCB2b2lkKiBHcmFwaGlj
c0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6ZGV0YWNoQ2xpZW50KCkKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6cHJlc2VudChCdWZmZXImJiBidWZmZXIp
CiB7CisgICAgQVNTRVJUKCFtX3NwYXJlQnVmZmVyLnN1cmZhY2UpOworICAgIEFTU0VSVCghbV9z
cGFyZUJ1ZmZlci5oYW5kbGUpOwogICAgIG1fc3BhcmVCdWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1f
ZGlzcGxheUJ1ZmZlciwgV1RGTW92ZShidWZmZXIpKTsKICAgICBpZiAobV9kaXNwbGF5QnVmZmVy
SW5Vc2UpIHsKICAgICAgICAgbV9kaXNwbGF5QnVmZmVySW5Vc2UgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NjA2ZWU0NDMxMjk2
MmVhYmU3NDRhZTRiOWNmNzQ5ODc3N2I2MWI0Li4xYjVlZTA2NTdlYmIwZmE1ZjE2YzIwYWJkYWIy
MjAxOTU0MzJiZTVlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMTEtMjQgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBBTkdMRSBNZXRhbDogVGhlIG1lbW9yeSBiYWNr
aW5nIElPU3VyZmFjZXMgb2YgZm9ybWVyIGNsaWVudCBidWZmZXIgcGJ1ZmZlcnMgaXMgbGVha2Vk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMjgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg1NTYzMTg3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEFkZCB0ZXN0cyB0ZXN0aW5nIENvY29hIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMIGRyYXdpbmcgYnVmZmVyCisgICAgICAgIHJlY3ljbGluZyBiZWhh
dmlvci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktp
dEFQSS54Y2NvbmZpZzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0OgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbWFnZUJ1ZmZlclRl
c3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmltYWdlQnVmZmVyUGl4ZWxJcyk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjptZW1vcnlGb290cHJpbnRDaGFuZ2VkQnkpOiBEZWxldGVk
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9UZXN0R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0
ZURlZmF1bHRUZXN0Q29udGV4dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGFuZ2VDb250
ZXh0Q29udGVudHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0VXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFV0aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICBBZGQgZmV3IHVzZWZ1bCBm
dW5jdGlvbnMgdG8gVGVzdFV0aWxpdGllcy5oIHNvIHRoYXQgZGlmZmVyZW50CisgICAgICAgIHRl
c3RzIGNhbiB1c2UgdGhlbS4KKwogMjAyMS0xMS0xOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gW0dMSUJdIEFkZCBuZXcg
dGVzdCBjYXNlIHRvIC9qc2MvY2xhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwppbmRleCBmYzg4NzY5MmY0
Y2ZmZjljNDZhNmY2NWYwYjRiMzBhYmQ0NzY3N2U3Li43YzkyYWIzNWFjZjQzOGI1NjJkOTM4NzAz
ODMxNzhmMjE1MTJlM2VlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCkBAIC05Myw3ICs5Myw3IEBAIFdL
X1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5c3QgPSAtZnJhbWV3b3JrIFVJS2l0TWFj
SGVscGVyOwogCiBPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAk
KFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2
YXRlSGVhZGVyczsKIAotT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3Jj
ZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29y
ayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAt
ZnJhbWV3b3JrIE1ldGFsICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhL
SVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BF
TkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQo
V0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQo
T1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9MREZMQUdT
ID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIp
L2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsg
V2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJ
T1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZM
QUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERG
TEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJ
VE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChPVEhFUl9M
REZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKIE9USEVSX0xERkxBR1NfUExBVEZP
Uk1fID0gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENhcmJvbjsKIAogLy8gRklYTUU6IFRo
aXMgc2hvdWxkIG5vdCBiZSBidWlsdCBvbiBpT1MuIEluc3RlYWQgd2Ugc2hvdWxkIGNyZWF0ZSBh
bmQgdXNlIGEgVGVzdFdlYktpdEFQSSBhcHBsaWNhdGlvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvU291cmNlcy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0
CmluZGV4IGFhMzc1ZjE2NGJiYzEyNjhkY2ZiYzJhZTUwN2FkYzIyOTU3M2JiZWYuLjkyNmQ1NmU4
OGE0MmI5NjIwNDU4NDBiZWIyZTNjZWM4ODE1MzJjMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvU291cmNlcy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4
dApAQCAtMjUsNCArMjUsNSBAQCBEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmNwcAogSmF2YVNjcmlw
dFRlc3QuY3BwCiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAKIFRlc3RzQ29udHJvbGxlci5jcHAKK1Rl
c3RVdGlsaXRpZXMuY3BwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFV0
aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RVdGlsaXRpZXMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY5ZjJmODczZDY3NzdiNmIxZDgzY2Y4MDY0YjBiZWE5NjE1MzdkMDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RVdGlsaXRpZXMuY3BwCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVz
dFV0aWxpdGllcy5oIgorCisjaW1wb3J0IDx3dGYvTWVtb3J5Rm9vdHByaW50Lmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgbWVtb3J5
Rm9vdHByaW50Q2hhbmdlZEJ5KHNpemVfdCYgbGFzdEZvb3RwcmludCwgZG91YmxlIGV4cGVjdGVk
Q2hhbmdlLCBkb3VibGUgZXJyb3IpCit7CisgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVN
ZW1vcnkoKTsKKyAgICBzaXplX3QgbmV3Rm9vdHByaW50ID0gbWVtb3J5Rm9vdHByaW50KCk7Cisg
ICAgc2l6ZV90IG9sZEZvb3RwcmludCA9IHN0ZDo6ZXhjaGFuZ2UobGFzdEZvb3RwcmludCwgbmV3
Rm9vdHByaW50KTsKKyAgICBkb3VibGUgY2hhbmdlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihuZXdG
b290cHJpbnQpIC0gb2xkRm9vdHByaW50OworICAgIGlmIChjaGFuZ2UgLSBleHBlY3RlZENoYW5n
ZSA+IGVycm9yKQorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkg
PDwgIkZvb3RwcmludCBjaGFuZ2VkIGJ5ICIgPDwgY2hhbmdlIDw8ICIuIEV4cGVjdGVkIGF0IG1v
c3QgIiA8PCBleHBlY3RlZENoYW5nZSA8PCAiKy0iIDw8IGVycm9yOworICAgIHJldHVybiA6OnRl
c3Rpbmc6OkFzc2VydGlvblN1Y2Nlc3MoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0VXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RVdGls
aXRpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40OTZhNjJiMjJjYTYwNjJlNzA5NTIwMDUzZGIzZTUxNDJlOGNj
MjA0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0VXRpbGl0aWVz
LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiVGVzdC5oIgorI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworLy8gQ2FsbGVyIHNob3VsZCBpbml0aWFsaXplIGxhc3RG
b290cHJpbnQgd2l0aCBtZW1vcnlGb290cHJpbnQoKSBmb3IgdGhlIGluaXRpYWwgY2FsbC4KKzo6
dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG1lbW9yeUZvb3RwcmludENoYW5nZWRCeShzaXplX3Qm
IGxhc3RGb290cHJpbnQsIGRvdWJsZSBleHBlY3RlZENoYW5nZSwgZG91YmxlIGVycm9yKTsKKwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9y
PDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgV2ViQ29yZTo6Q29sb3ImIHZhbHVlKQoreworICAg
IFRleHRTdHJlYW0gcyB7IFRleHRTdHJlYW06OkxpbmVNb2RlOjpTaW5nbGVMaW5lIH07CisgICAg
cyA8PCB2YWx1ZTsKKyAgICByZXR1cm4gb3MgPDwgcy5yZWxlYXNlKCk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOTY1YzdlN2NhZWEwODhlNjVkY2E4NjdjOTQwNWFkODQ5ODM3
ZDQ2NS4uZDQ1YzIyYTA2MDAzZDYwYTc0OGVjODVkZGRhMDM4NTkzNzFmNDljZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIzNzAsNiArMjM3MCw4IEBACiAJCTdCN0QwOTY5MjUxOUY4Rjkw
MDE3QTA3OCAvKiBXZWJHTE5vQ3Jhc2hPbk90aGVyVGhyZWFkQWNjZXNzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViR0xOb0NyYXNoT25PdGhlclRocmVhZEFjY2Vzcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JBMzkzNkIyNzFFREZDQTAwMTU5MTFDIC8qIFRlc3RHcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCQTM5MzZEMjcxRUVDNTMwMDE1OTExQyAvKiBXZWJDb3Jl
VXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVVdGls
aXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JCNzU0QUYyNzRFMzlBMTAw
RDAwRUMxIC8qIFRlc3RVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdFV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkI3NTRCMDI3NEUzOUExMDBEMDBFQzEg
LyogVGVzdFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0VXRpbGl0aWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxQUY3OTMxRThEQ0JBQjAwMjY0NUI5
IC8qIFByZXBhcmVGb3JNb3ZlVG9XaW5kb3cubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQcmVwYXJlRm9yTW92ZVRvV2luZG93Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzM5NjUwNTFDREQ3NEY5MDA5NERCQjggLyogQ29sb3JUZXN0cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvclRlc3RzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzREI4RTIxRDEyMTI5QjAwQUU4Q0MzIC8qIENv
bW1hbmRCYWNrRm9yd2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IENvbW1hbmRCYWNrRm9yd2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTMxNzYsNiArMzE3OCw4IEBACiAJCQkJQkNCOUU3RkExMTIzNTlBMzAwQTEzN0UwIC8qIFRlc3Qu
aCAqLywKIAkJCQlCQzEzMUFBODExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVyLmNw
cCAqLywKIAkJCQlCQ0I5RTdDNzExMjM0RTNBMDBBMTM3RTAgLyogVGVzdHNDb250cm9sbGVyLmgg
Ki8sCisJCQkJN0JCNzU0QjAyNzRFMzlBMTAwRDAwRUMxIC8qIFRlc3RVdGlsaXRpZXMuY3BwICov
LAorCQkJCTdCQjc1NEFGMjc0RTM5QTEwMEQwMEVDMSAvKiBUZXN0VXRpbGl0aWVzLmggKi8sCiAJ
CQkJN0M4M0UwMzYxRDBBNUY3MDAwRkVCQ0YzIC8qIFV0aWxpdGllcy5oICovLAogCQkJCTdCQTM5
MzZEMjcxRUVDNTMwMDE1OTExQyAvKiBXZWJDb3JlVXRpbGl0aWVzLmggKi8sCiAJCQkJN0NCRDVB
MjIyMkRFNDJBNjAwNEE5RTMyIC8qIFdURlN0cmluZ1V0aWxpdGllcy5jcHAgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSW1hZ2VCdWZmZXJUZXN0cy5j
cHAKaW5kZXggNjczNzMwMDNjNDRiNGVjNTM3Mzk2MWNlYzY0YjVjNjVmZDQwZjFmYi4uYTFlNTUw
NzZlZmQxNmY2YWFmMzc0NGFiNmQ2YzI0ZDZmYjgyMGY0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ltYWdlQnVmZmVyVGVzdHMuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9JbWFnZUJ1ZmZlclRlc3RzLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJUZXN0VXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1h
Z2VCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaD4KQEAg
LTM0LDE3ICszNSw2IEBACiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotc3RhdGljIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IG1lbW9yeUZv
b3RwcmludENoYW5nZWRCeShzaXplX3QmIGxhc3RGb290cHJpbnQsIGRvdWJsZSBleHBlY3RlZENo
YW5nZSwgZG91YmxlIGVycm9yKQotewotICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KCk7Ci0gICAgc2l6ZV90IG5ld0Zvb3RwcmludCA9IG1lbW9yeUZvb3RwcmludCgpOwotICAg
IHNpemVfdCBvbGRGb290cHJpbnQgPSBzdGQ6OmV4Y2hhbmdlKGxhc3RGb290cHJpbnQsIG5ld0Zv
b3RwcmludCk7Ci0gICAgZG91YmxlIGNoYW5nZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3Rm9v
dHByaW50KSAtIG9sZEZvb3RwcmludDsKLSAgICBpZiAoY2hhbmdlIC0gZXhwZWN0ZWRDaGFuZ2Ug
PiBlcnJvcikKLSAgICAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8
ICJGb290cHJpbnQgY2hhbmdlZCBieSAiIDw8IGNoYW5nZSA8PCAiLiBFeHBlY3RlZCBhdCBtb3N0
ICIgPDwgZXhwZWN0ZWRDaGFuZ2UgPDwgIistIiA8PCBlcnJvcjsKLSAgICByZXR1cm4gOjp0ZXN0
aW5nOjpBc3NlcnRpb25TdWNjZXNzKCk7Ci19Ci0KIHN0YXRpYyA6OnRlc3Rpbmc6OkFzc2VydGlv
blJlc3VsdCBpbWFnZUJ1ZmZlclBpeGVsSXMoQ29sb3IgZXhwZWN0ZWQsIEltYWdlQnVmZmVyJiBp
bWFnZUJ1ZmZlciwgaW50IHgsIGludCB5KQogewogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwpAQCAtNTIsNyArNDIsNyBA
QCBzdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgaW1hZ2VCdWZmZXJQaXhlbElzKENv
bG9yIGV4cGVjdGVkLCBJbWFnZUJ1ZmZlcgogICAgIGF1dG8mIGRhdGEgPSBmcm9udFBpeGVsQnVm
ZmVyLT5kYXRhKCk7CiAgICAgYXV0byBnb3QgPSBDb2xvciB7IFNSR0JBPHVpbnQ4X3Q+IHsgZGF0
YS5pdGVtKDApLCBkYXRhLml0ZW0oMSksIGRhdGEuaXRlbSgyKSwgZGF0YS5pdGVtKDMpIH0gfTsK
ICAgICBpZiAoZ290ICE9IGV4cGVjdGVkKQotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3Nl
cnRpb25GYWlsdXJlKCkgPDwgImNvbG9yIGlzIG5vdCBleHBlY3RlZC4iOyAvLyBGSVhNRTogaW1w
bGVtZW50IENvbG9yIDw8LgorICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWls
dXJlKCkgPDwgImNvbG9yIGlzIG5vdCBleHBlY3RlZC4gR290OiAiIDw8IGdvdCA8PCAiLCBleHBl
Y3RlZDogIiA8PCBleHBlY3RlZCA8PCAiLiI7CiAgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0
aW9uU3VjY2VzcygpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvVGVzdEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0KaW5kZXggOTE3ZDJlODE2MGE1MzJiZjY2NzRhNDIwNTU3ZTI0ZDVhYmE3
ODNmNi4uYjkzM2Q1MWIxNGUxMmQwODhjZGM1ZGRhYjdlODNlZTI4MTUxZTA0MyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1Rlc3RHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9UZXN0R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQpAQCAtMjcsMjcg
KzI3LDkyIEBACiAjaW1wb3J0ICJUZXN0LmgiCiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKFdFQkdMKQorI2ltcG9ydCAiVGVzdFV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViQ29yZVV0
aWxpdGllcy5oIgogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ29s
b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KKyNpbXBv
cnQgPG9wdGlvbmFsPgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9NZW1v
cnlGb290cHJpbnQuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7Ci1jbGFzcyBUZXN0ZWRHcmFwaGljc0NvbnRleHRH
TE9wZW5HTCA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCB7CisKK2NsYXNzIFRlc3Rl
ZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMIDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFRlc3RlZEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXMpCisgICAgc3RhdGljIFJlZlB0cjxUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY3Jl
YXRlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAg
IHsKICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRSZWYoKm5ldyBUZXN0ZWRHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTChXVEZNb3ZlKGF0dHJpYnV0ZXMpKSk7CiAgICAgICAgIHJldHVybiBjb250
ZXh0OwogICAgIH0KKyAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIGRpc3BsYXlCdWZmZXIoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fc3dhcENoYWluLmRpc3BsYXlCdWZmZXIoKS5zdXJmYWNlLmdl
dCgpOworICAgIH0KKyAgICB2b2lkIG1hcmtEaXNwbGF5QnVmZmVySW5Vc2UoKQorICAgIHsKKyAg
ICAgICAgbV9zd2FwQ2hhaW4ubWFya0Rpc3BsYXlCdWZmZXJJblVzZSgpOworICAgIH0KIHByaXZh
dGU6Ci0gICAgVGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCi0gICAgICAgIDogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wo
V1RGTW92ZShhdHRyaWJ1dGVzKSkKKyAgICBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICAgICAg
OiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChXVEZNb3ZlKGF0dHJpYnV0ZXMpKQog
ICAgIHsKICAgICB9CiB9OworCitjbGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hVGVz
dCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0VXAoKSBv
dmVycmlkZSAvLyBOT0xJTlQKKyAgICB7CisgICAgICAgIG1fc2NvcGVkUHJvY2Vzc1R5cGUgPSBT
Y29wZWRTZXRBdXhpbGlhcnlQcm9jZXNzVHlwZUZvclRlc3RpbmcgeyBXZWJDb3JlOjpBdXhpbGlh
cnlQcm9jZXNzVHlwZTo6R1BVIH07CisgICAgfQorICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlk
ZSAvLyBOT0xJTlQKKyAgICB7CisgICAgICAgIG1fc2NvcGVkUHJvY2Vzc1R5cGUgPSBzdGQ6Om51
bGxvcHQ7CisgICAgfQorcHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPFNjb3BlZFNldEF1eGls
aWFyeVByb2Nlc3NUeXBlRm9yVGVzdGluZz4gbV9zY29wZWRQcm9jZXNzVHlwZTsKK307CisKK30K
Kworc3RhdGljIGNvbnN0IGludCBleHBlY3RlZERpc3BsYXlCdWZmZXJQb29sU2l6ZSA9IDM7CisK
K3N0YXRpYyBSZWZQdHI8VGVzdGVkR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNyZWF0ZURlZmF1
bHRUZXN0Q29udGV4dChXZWJDb3JlOjpJbnRTaXplIGNvbnRleHRTaXplKQoreworICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAgIGF0dHJpYnV0
ZXMudXNlTWV0YWwgPSB0cnVlOworICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7Cisg
ICAgYXR0cmlidXRlcy5kZXB0aCA9IGZhbHNlOworICAgIGF0dHJpYnV0ZXMuc3RlbmNpbCA9IGZh
bHNlOworICAgIGF0dHJpYnV0ZXMuYWxwaGEgPSB0cnVlOworICAgIGF0dHJpYnV0ZXMucHJlc2Vy
dmVEcmF3aW5nQnVmZmVyID0gZmFsc2U7CisgICAgYXV0byBjb250ZXh0ID0gVGVzdGVkR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZShhdHRyaWJ1dGVzKTsKKyAgICBpZiAoIWNvbnRleHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNvbnRleHQtPnJlc2hhcGUoY29udGV4dFNp
emUud2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOworICAgIHJldHVybiBjb250ZXh0Owor
fQorCitzdGF0aWMgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgY2hhbmdlQ29udGV4dENvbnRl
bnRzKFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJiBjb250ZXh0LCBpbnQgaXRlcmF0aW9u
KQoreworICAgIGNvbnRleHQubWFya0NvbnRleHRDaGFuZ2VkKCk7CisgICAgV2ViQ29yZTo6Q29s
b3IgZXhwZWN0ZWQgeyBpdGVyYXRpb24gJSAyID8gV2ViQ29yZTo6Q29sb3I6OmdyZWVuIDogV2Vi
Q29yZTo6Q29sb3I6OnllbGxvdyB9OworICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNd
ID0gZXhwZWN0ZWQuY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5jbGVhckNvbG9yKGNvbXBvbmVudHNbMF0sIGNv
bXBvbmVudHNbMV0sIGNvbXBvbmVudHNbMl0sIGNvbXBvbmVudHNbM10pOworICAgIGNvbnRleHQu
Y2xlYXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNPTE9SX0JVRkZFUl9CSVQpOworICAg
IHVpbnQ4X3QgZ290VmFsdWVzWzRdID0geyB9OworICAgIGF1dG8gc2FtcGxlQXQgPSBjb250ZXh0
LmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCk7CisgICAgc2FtcGxlQXQuY29udHJhY3QoMiwg
Myk7CisgICAgc2FtcGxlQXQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworICAgIGNvbnRleHQucmVh
ZG5QaXhlbHMoc2FtcGxlQXQud2lkdGgoKSwgc2FtcGxlQXQuaGVpZ2h0KCksIDEsIDEsIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSR0JBLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
VU5TSUdORURfQllURSwgZ290VmFsdWVzKTsKKyAgICBXZWJDb3JlOjpDb2xvciBnb3QgeyBXZWJD
b3JlOjpTUkdCQTx1aW50OF90PiB7IGdvdFZhbHVlc1swXSwgZ290VmFsdWVzWzFdLCBnb3RWYWx1
ZXNbMl0sIGdvdFZhbHVlc1szXSB9IH07CisgICAgaWYgKGdvdCAhPSBleHBlY3RlZCkKKyAgICAg
ICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJGYWlsZWQgdG8gdmVy
aWZ5IGRyYXcgdG8gY29udGV4dC4gR290OiAiIDw8IGdvdCA8PCAiLCBleHBlY3RlZDogIiA8PCBl
eHBlY3RlZCA8PCAiLiI7CisgICAgcmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2Vzcygp
OwogfQogCiBzdGF0aWMgYm9vbCBoYXNNdWx0aXBsZUdQVXMoKQpAQCAtNjgsMjkgKzEzMywxMjEg
QEAgc3RhdGljIGJvb2wgaGFzTXVsdGlwbGVHUFVzKCkKIC8vIFRlc3RzIGZvciBhIGJ1ZyB3aGVy
ZSBoaWdoLXBlcmZvcm1hbmNlIGNvbnRleHQgd291bGQgdXNlIGxvdy1wb3dlciBHUFUgaWYgbG93
LXBvd2VyIG9yIGRlZmF1bHQKIC8vIGNvbnRleHQgd2FzIGNyZWF0ZWQgZmlyc3QuIFRlc3QgaXMg
YXBwbGljYWJsZSBvbmx5IGZvciBNZXRhbCwgc2luY2UgR1BVIHNlbGVjdGlvbiBmb3IgT3BlbkdM
IGlzCiAvLyB2ZXJ5IGRpZmZlcmVudC4KLVRFU1QoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YVRlc3QsIE1BWUJFX011bHRpcGxlR1BVc0RpZmZlcmVudFBvd2VyUHJlZmVyZW5jZU1ldGFsKQor
VEVTVF9GKEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2FUZXN0LCBNQVlCRV9NdWx0aXBsZUdQ
VXNEaWZmZXJlbnRQb3dlclByZWZlcmVuY2VNZXRhbCkKIHsKICAgICBpZiAoIWhhc011bHRpcGxl
R1BVcygpKQogICAgICAgICByZXR1cm47Ci0gICAgU2NvcGVkU2V0QXV4aWxpYXJ5UHJvY2Vzc1R5
cGVGb3JUZXN0aW5nIHNjb3BlZFByb2Nlc3NUeXBlIHsgQXV4aWxpYXJ5UHJvY2Vzc1R5cGU6OkdQ
VSB9OwogCi0gICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CiAgICAgYXR0
cmlidXRlcy51c2VNZXRhbCA9IHRydWU7Ci0gICAgRVhQRUNUX0VRKGF0dHJpYnV0ZXMucG93ZXJQ
cmVmZXJlbmNlLCBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCk7Cisg
ICAgRVhQRUNUX0VRKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlLCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6RGVmYXVsdCk7CiAgICAgYXV0byBkZWZhdWx0Q29u
dGV4dCA9IFRlc3RlZEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGUoYXR0cmlidXRlcyk7
Ci0gICAgRVhQRUNUX05FKGRlZmF1bHRDb250ZXh0LCBudWxscHRyKTsKKyAgICBBU1NFUlRfTkUo
ZGVmYXVsdENvbnRleHQsIG51bGxwdHIpOwogCi0gICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVu
Y2UgPSBHcmFwaGljc0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6TG93UG93ZXI7CisgICAgYXR0
cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFBvd2Vy
UHJlZmVyZW5jZTo6TG93UG93ZXI7CiAgICAgYXV0byBsb3dQb3dlckNvbnRleHQgPSBUZXN0ZWRH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMpOwotICAgIEVYUEVDVF9O
RShsb3dQb3dlckNvbnRleHQsIG51bGxwdHIpOworICAgIEFTU0VSVF9ORShsb3dQb3dlckNvbnRl
eHQsIG51bGxwdHIpOwogCi0gICAgYXR0cmlidXRlcy5wb3dlclByZWZlcmVuY2UgPSBHcmFwaGlj
c0NvbnRleHRHTFBvd2VyUHJlZmVyZW5jZTo6SGlnaFBlcmZvcm1hbmNlOworICAgIGF0dHJpYnV0
ZXMucG93ZXJQcmVmZXJlbmNlID0gV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xQb3dlclByZWZl
cmVuY2U6OkhpZ2hQZXJmb3JtYW5jZTsKICAgICBhdXRvIGhpZ2hQZXJmb3JtYW5jZUNvbnRleHQg
PSBUZXN0ZWRHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlKGF0dHJpYnV0ZXMpOwotICAg
IEVYUEVDVF9ORShoaWdoUGVyZm9ybWFuY2VDb250ZXh0LCBudWxscHRyKTsKKyAgICBBU1NFUlRf
TkUoaGlnaFBlcmZvcm1hbmNlQ29udGV4dCwgbnVsbHB0cik7CisKKyAgICBFWFBFQ1RfTkUobG93
UG93ZXJDb250ZXh0LT5nZXRTdHJpbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OlJFTkRF
UkVSKSwgaGlnaFBlcmZvcm1hbmNlQ29udGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMOjpSRU5ERVJFUikpOworICAgIEVYUEVDVF9FUShkZWZhdWx0Q29udGV4dC0+Z2V0
U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUiksIGxvd1Bvd2VyQ29u
dGV4dC0+Z2V0U3RyaW5nKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJFUikpOwor
fQorCitURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYVRlc3QsIERpc3BsYXlCdWZm
ZXJzQXJlUmVjeWNsZWQpCit7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlRGVmYXVsdFRlc3RD
b250ZXh0KHsgMjAsIDIwIH0pOworICAgIEFTU0VSVF9ORShjb250ZXh0LCBudWxscHRyKTsKKyAg
ICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBleHBlY3RlZERpc3BsYXlCdWZmZXJzW2V4cGVjdGVk
RGlzcGxheUJ1ZmZlclBvb2xTaXplXTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyArK2kp
IHsKKyAgICAgICAgRVhQRUNUX1RSVUUoY2hhbmdlQ29udGV4dENvbnRlbnRzKCpjb250ZXh0LCBp
KSk7CisgICAgICAgIGNvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIGF1dG8q
IHN1cmZhY2UgPSBjb250ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CisgICAgICAgIEFTU0VSVF9ORShz
dXJmYWNlLCBudWxscHRyKTsKKyAgICAgICAgaW50IHNsb3QgPSBpICUgZXhwZWN0ZWREaXNwbGF5
QnVmZmVyUG9vbFNpemU7CisgICAgICAgIGlmICghZXhwZWN0ZWREaXNwbGF5QnVmZmVyc1tzbG90
XSkKKyAgICAgICAgICAgIGV4cGVjdGVkRGlzcGxheUJ1ZmZlcnNbc2xvdF0gPSBzdXJmYWNlLT5z
dXJmYWNlKCk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERpc3BsYXlCdWZmZXJzW3Nsb3Rd
LmdldCgpLCBzdXJmYWNlLT5zdXJmYWNlKCkpIDw8ICJmb3IgaToiIDw8IGkgPDwgIiBzbG90OiAi
IDw8IHNsb3Q7CisgICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXhwZWN0ZWREaXNwbGF5
QnVmZmVyUG9vbFNpemUgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOyBq
IDwgZXhwZWN0ZWREaXNwbGF5QnVmZmVyUG9vbFNpemU7ICsraikKKyAgICAgICAgICAgIEVYUEVD
VF9ORShleHBlY3RlZERpc3BsYXlCdWZmZXJzW2ldLmdldCgpLCBleHBlY3RlZERpc3BsYXlCdWZm
ZXJzW2pdLmdldCgpKSA8PCAiZm9yIGk6ICIgPDwgaSA8PCAiIGo6IiA8PCBqOworICAgIH0KK30K
IAotICAgIEVYUEVDVF9ORShsb3dQb3dlckNvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRl
eHRHTDo6UkVOREVSRVIpLCBoaWdoUGVyZm9ybWFuY2VDb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhp
Y3NDb250ZXh0R0w6OlJFTkRFUkVSKSk7Ci0gICAgRVhQRUNUX0VRKGRlZmF1bHRDb250ZXh0LT5n
ZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSwgbG93UG93ZXJDb250ZXh0LT5n
ZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkVSKSk7CisvLyBUZXN0IHRoYXQgZHJh
d2luZyBidWZmZXJzIGFyZSBub3QgcmVjeWNsZWQgaWYgYEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjptYXJrRGlzcGxheUJ1ZmZlckluVXNlKClgCisvLyBpcyBjYWxsZWQuCitURVNUX0YoR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYVRlc3QsIERpc3BsYXlCdWZmZXJzQXJlTm90UmVjeWNsZWRX
aGVuTWFya2VkSW5Vc2UpCit7CisgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlRGVmYXVsdFRlc3RD
b250ZXh0KHsgMjAsIDIwIH0pOworICAgIEFTU0VSVF9ORShjb250ZXh0LCBudWxscHRyKTsKKyAg
ICBIYXNoU2V0PFJldGFpblB0cjxJT1N1cmZhY2VSZWY+PiBzZWVuU3VyZmFjZVJlZnM7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGNoYW5n
ZUNvbnRleHRDb250ZW50cygqY29udGV4dCwgaSkpOworICAgICAgICBjb250ZXh0LT5wcmVwYXJl
Rm9yRGlzcGxheSgpOworICAgICAgICBXZWJDb3JlOjpJT1N1cmZhY2UqIHN1cmZhY2UgPSBjb250
ZXh0LT5kaXNwbGF5QnVmZmVyKCk7CisgICAgICAgIEFTU0VSVF9ORShzdXJmYWNlLCBudWxscHRy
KTsKKyAgICAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2VSZWYgPSBzdXJmYWNlLT5zdXJmYWNlKCk7
CisgICAgICAgIEVYUEVDVF9ORShzdXJmYWNlUmVmLCBudWxscHRyKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKHNlZW5TdXJmYWNlUmVmcy5jb250YWlucyhzdXJmYWNlUmVmKSk7CisgICAgICAgIHNl
ZW5TdXJmYWNlUmVmcy5hZGQoc3VyZmFjZVJlZik7CisKKyAgICAgICAgY29udGV4dC0+bWFya0Rp
c3BsYXlCdWZmZXJJblVzZSgpOworICAgIH0KKyAgICBBU1NFUlRfRVEoc2VlblN1cmZhY2VSZWZz
LnNpemUoKSwgNTB1KTsKIH0KIAorLy8gVGVzdCB0aGF0IGRyYXdpbmcgYnVmZmVycyBhcmUgbm90
IHJlY3ljbGVkIGlmIHRoZSB1c2UgY291bnQgb2YgdGhlIHVuZGVybHlpbmcgSU9TdXJmYWNlCisv
LyBjaGFuZ2VzLiBVc2UgY291bnQgaXMgbW9kaWZpZWQgZm9yIGV4YW1wbGUgYnkgQ29yZUFuaW1h
dGlvbiB3aGVuIHRoZSBJT1N1cmZhY2UgaXMgYXR0YWNoZWQKKy8vIHRvIHRoZSBjb250ZW50cy4K
K1RFU1RfRihHcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hVGVzdCwgRGlzcGxheUJ1ZmZlcnNB
cmVOb3RSZWN5Y2xlZFdoZWRJblVzZSkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVEZWZh
dWx0VGVzdENvbnRleHQoeyAyMCwgMjAgfSk7CisgICAgQVNTRVJUX05FKGNvbnRleHQsIG51bGxw
dHIpOworICAgIEhhc2hTZXQ8UmV0YWluUHRyPElPU3VyZmFjZVJlZj4+IHNlZW5TdXJmYWNlUmVm
czsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX1RS
VUUoY2hhbmdlQ29udGV4dENvbnRlbnRzKCpjb250ZXh0LCBpKSk7CisgICAgICAgIGNvbnRleHQt
PnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZSogc3VyZmFj
ZSA9IGNvbnRleHQtPmRpc3BsYXlCdWZmZXIoKTsKKyAgICAgICAgQVNTRVJUX05FKHN1cmZhY2Us
IG51bGxwdHIpOworICAgICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZVJlZiA9IHN1cmZhY2UtPnN1
cmZhY2UoKTsKKyAgICAgICAgRVhQRUNUX05FKHN1cmZhY2VSZWYsIG51bGxwdHIpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uoc2VlblN1cmZhY2VSZWZzLmNvbnRhaW5zKHN1cmZhY2VSZWYpKTsKKyAg
ICAgICAgc2VlblN1cmZhY2VSZWZzLmFkZChzdXJmYWNlUmVmKTsKKworICAgICAgICBJT1N1cmZh
Y2VJbmNyZW1lbnRVc2VDb3VudChzdXJmYWNlUmVmKTsKKyAgICB9CisgICAgQVNTRVJUX0VRKHNl
ZW5TdXJmYWNlUmVmcy5zaXplKCksIDUwdSk7CiB9CisKKy8vIFRlc3QgdGhhdCBkcmF3aW5nIHRv
IEdyYXBoaWNzQ29udGV4dEdMIGFuZCBtYXJraW5nIHRoZSBkaXNwbGF5IGJ1ZmZlciBpbiB1c2Ug
ZG9lcyBub3QgbGVhayBiaWcKKy8vIGFtb3VudHMgb2YgbWVtb3J5IGZvciBlYWNoIGRpc3BsYXll
ZCBidWZmZXIuCitURVNUX0YoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYVRlc3QsIFVucmVj
eWNsZWREaXNwbGF5QnVmZmVyc05vTGVha3MpCit7CisgICAgLy8gVGhlIHRlc3QgZGV0ZWN0cyB0
aGUgbGVhayBieSBvYnNlcnZpbmcgbWVtb3J5IGZvb3RwcmludC4gSG93ZXZlciwgc29tZSBvZiB0
aGUgZnJlZWQgSU9TdXJmYWNlCisgICAgLy8gbWVtb3J5ICgxMzBtYikgc3RheXMgcmVzaWRlbnQs
IHByZXN1bWFibHkgYnkgaW50ZW50aW9uIG9mIElPS2l0LiBUaGUgdGVzdCB3b3VsZCBvcmlnaW5h
bGx5IGxlYWsKKyAgICAvLyAyLjdnYiBzbyB0aGUgaW50ZW5kZWQgYnVnIHdvdWxkIGJlIGRldGVj
dGVkIHdpdGggMTUwbWIgZXJyb3IgcmFuZ2UuCisgICAgc2l6ZV90IGZvb3RwcmludEVycm9yID0g
MTUwICogMTAyNCAqIDEwMjQ7CisgICAgc2l6ZV90IGZvb3RwcmludENoYW5nZSA9IDA7CisKKyAg
ICBhdXRvIGNvbnRleHQgPSBjcmVhdGVEZWZhdWx0VGVzdENvbnRleHQoeyAyMDQ4LCAyMDQ4IH0p
OworICAgIEFTU0VSVF9ORShjb250ZXh0LCBudWxscHRyKTsKKworICAgIFdURjo6cmVsZWFzZUZh
c3RNYWxsb2NGcmVlTWVtb3J5KCk7CisgICAgYXV0byBsYXN0Rm9vdHByaW50ID0gbWVtb3J5Rm9v
dHByaW50KCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAg
RVhQRUNUX1RSVUUoY2hhbmdlQ29udGV4dENvbnRlbnRzKCpjb250ZXh0LCBpKSk7CisgICAgICAg
IGNvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5KCk7CisgICAgICAgIEVYUEVDVF9ORShjb250ZXh0
LT5kaXNwbGF5QnVmZmVyKCksIG51bGxwdHIpOworICAgICAgICBjb250ZXh0LT5tYXJrRGlzcGxh
eUJ1ZmZlckluVXNlKCk7CisgICAgfQorCisgICAgRVhQRUNUX1RSVUUobWVtb3J5Rm9vdHByaW50
Q2hhbmdlZEJ5KGxhc3RGb290cHJpbnQsIGZvb3RwcmludENoYW5nZSwgZm9vdHByaW50RXJyb3Ip
KTsKK30KKworfQorCiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>