<?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>238192</bug_id>
          
          <creation_ts>2022-03-22 00:54:32 -0700</creation_ts>
          <short_desc>[GPU Process] [GraphicsContextState 3/] Make GraphicsContextState a class</short_desc>
          <delta_ts>2022-03-22 13:40:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237728</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853559</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-22 00:54:32 -0700</bug_when>
    <thetext>This will make the members be private so we have to provide getters for all of them. This change will prevent changing the members without going through the setters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853562</commentid>
    <comment_count>1</comment_count>
      <attachid>455344</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-22 01:00:00 -0700</bug_when>
    <thetext>Created attachment 455344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853567</commentid>
    <comment_count>2</comment_count>
      <attachid>455346</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-22 01:25:18 -0700</bug_when>
    <thetext>Created attachment 455346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853572</commentid>
    <comment_count>3</comment_count>
      <attachid>455349</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-22 01:51:51 -0700</bug_when>
    <thetext>Created attachment 455349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853579</commentid>
    <comment_count>4</comment_count>
      <attachid>455353</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-22 02:19:13 -0700</bug_when>
    <thetext>Created attachment 455353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853591</commentid>
    <comment_count>5</comment_count>
      <attachid>455356</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-22 02:50:58 -0700</bug_when>
    <thetext>Created attachment 455356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853763</commentid>
    <comment_count>6</comment_count>
      <attachid>455395</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-22 10:59:25 -0700</bug_when>
    <thetext>Created attachment 455395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853881</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-22 13:39:05 -0700</bug_when>
    <thetext>Committed r291696 (248738@main): &lt;https://commits.webkit.org/248738@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455395.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853882</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-22 13:40:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/90656519&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455344</attachid>
            <date>2022-03-22 01:00:00 -0700</date>
            <delta_ts>2022-03-22 01:32:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238192-20220322005959.patch</filename>
            <type>text/plain</type>
            <size>72109</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiNGM3Y2VkODZmNjlm
Njk2N2E3NjBiMzBiOGQzMzU2NjY5MGYzZS4uNTdiYTJhN2QwYzgzY2Y0YjlmZGY0MDEzYThkZmEw
N2ZkNzZlMThkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMi0wMy0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgdGhlIG1lbWJlcnMgYmUg
cHJpdmF0ZSBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgZ2V0dGVycyBmb3IKKyAgICAgICAgYWxsIG9m
IHRoZW0uIFRoaXMgY2hhbmdlIHdpbGwgcHJldmVudCBjaGFuZ2luZyB0aGUgbWVtYmVycyB3aXRo
b3V0IGdvaW5nCisgICAgICAgIHRocm91Z2ggdGhlIHNldHRlcnMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxs
Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJ1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0ZU1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnRleHREcmF3aW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRBbnRpYWxpYXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRTbW9vdGhGb250cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0x1bWluYW5jZU1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRp
ZEVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpjaGFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkaWRBcHBseUNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OmZpbGxCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OmZpbGxSdWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldENvbXBv
c2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BT
aGFkb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmFs
cGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRB
bHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkQW50
aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRT
bW9vdGhGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2V0U2hvdWxkU21vb3RoRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFVzZURhcmtB
cHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWlybzo6U3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlOjpTaGFkb3dTdGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvcmVJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dENHOjpjYW5Vc2VTaGFkb3dCbHVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91
bGREdW1wRm9yRmxhZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseVNldFN0YXRlSXRlbSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVT
dGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVj
dCk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRl
ZFJlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ds
eXBocyk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1JlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xp
bmUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmVz
Rm9yVGV4dCk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
RWxsaXBzZSk6CisKIDIwMjItMDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtl
ZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDkw
M2NlYTE4NGQ0OTlkZmNhZWMwMzdhMjQzZDFlMGE2MDY3YWEzZS4uZDZjZjdhYjlkZjkyODY0MjE4
NWY0NGMwOTk1N2FlNzhiNzRmYjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0w
My0yMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisKIDIwMjItMDMtMjEgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdy
YXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFw
cGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCmluZGV4IDllNGQwNjZiMDM5YjZkNWZlNGM1MmNkNWFhNDk3ZDQyOTlhNmZi
MWIuLmFjMzNmM2QzMTIzZmM1ODE0NGQ3YmJiOTdkN2FkZDYxMzc1YzM5MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApA
QCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdyYXBoaWNzQ29udGV4
dDo6R3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFn
cyYgY2hhbmdlRmxhZ3MpCi0gICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQorR3JhcGhpY3NDb250
ZXh0OjpHcmFwaGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZs
YWdzJiBjaGFuZ2VGbGFncywgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSkKKyAgICA6IG1fc3RhdGUoY2hhbmdlRmxhZ3MsIGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMTNjYzNiMDM3NzkxMTY2ZjkzYzI2ZWE4MmU4MWQ3NmU0
NjFiNDBjNi4uZWQwZmVmYzU1YTgzMTMxZDE3MDlmN2Q3ZDRkYTQxZGQ0OWUzZGM0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0Nv
bnRleHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZs
YWdzJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgPSB7IH0sIEludGVycG9sYXRpb25RdWFs
aXR5ID0gSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgdmlydHVhbCBib29sIGhhc1BsYXRm
b3JtQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03OSwzNiArNzksMzYgQEAg
cHVibGljOgogCiAgICAgLy8gQ29udGV4dCBTdGF0ZQogCi0gICAgY29uc3QgU291cmNlQnJ1c2gm
IGZpbGxCcnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoOyB9Ci0gICAgY29u
c3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLmNv
bG9yKCk7IH0KLSAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5maWxsQnJ1c2guZ3JhZGllbnQoKTsgfQotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxC
cnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KLSAgICBQYXR0ZXJuKiBmaWxsUGF0dGVy
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLnBhdHRlcm4oKTsgfQorICAgIGNv
bnN0IFNvdXJjZUJydXNoJiBmaWxsQnJ1c2goKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxC
cnVzaCgpOyB9CisgICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZp
bGxCcnVzaCgpLmNvbG9yKCk7IH0KKyAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkgY29uc3Qg
eyByZXR1cm4gZmlsbEJydXNoKCkuZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBmaWxsQnJ1
c2goKS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICBQYXR0ZXJuKiBmaWxsUGF0dGVy
bigpIGNvbnN0IHsgcmV0dXJuIGZpbGxCcnVzaCgpLnBhdHRlcm4oKTsgfQogICAgIHZvaWQgc2V0
RmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBtX3N0YXRlLnNldEZpbGxCcnVz
aChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRGaWxsQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fc3RhdGUuc2V0RmlsbENvbG9yKGNvbG9yKTsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICAgICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3Jh
ZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0g
PSB7IH0pIHsgbV9zdGF0ZS5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNl
VHJhbnNmb3JtKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICAgICB2b2lkIHNldEZpbGxQ
YXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9zdGF0ZS5zZXRGaWxsUGF0dGVybihX
VEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdpbmRS
dWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUnVsZTsgfQorICAgIFdp
bmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUnVsZSgpOyB9CiAg
ICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLnNldEZpbGxS
dWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGNvbnN0IFNv
dXJjZUJydXNoJiBzdHJva2VCcnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1
c2g7IH0KLSAgICBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLnN0cm9rZUJydXNoLmNvbG9yKCk7IH0KLSAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50KCk7IH0KLSAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKTsg
fQotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0
cm9rZUJydXNoLnBhdHRlcm4oKTsgfQorICAgIGNvbnN0IFNvdXJjZUJydXNoJiBzdHJva2VCcnVz
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2goKTsgfQorICAgIGNvbnN0IENv
bG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkuY29sb3IoKTsg
fQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJy
dXNoKCkuZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkuZ3JhZGll
bnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0
IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkucGF0dGVybigpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VC
cnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRTdHJva2VCcnVzaChi
cnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRTdHJva2VDb2xvcihjb2xvcik7IGRp
ZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8
R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zv
cm0gPSB7IH0pIHsgbV9zdGF0ZS5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwg
c3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogICAgIHZvaWQgc2V0
U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3RhdGUuc2V0U3Ryb2tl
UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5zdHJva2VUaGlja25lc3MoKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNz
KGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3Mp
OyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxlOyB9CisgICAgU3Ryb2tlU3R5
bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxlKCk7IH0K
ICAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0eWxlKSB7IG1fc3RhdGUuc2V0
U3Ryb2tlU3R5bGUoc3R5bGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgY29u
c3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJvcFNo
YWRvdzsgfQorICAgIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3coKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmRyb3BTaGFkb3coKTsgfQogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkub2Zmc2V0OyB9CiAgICAgZmxvYXQgc2hhZG93Qmx1
cigpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5ibHVyUmFkaXVzOyB9CiAgICAgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yKCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmNvbG9yOyB9
CkBAIC0xMjMsNDAgKzEyMyw0MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93
KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzQmx1cnJlZCgpOyB9CiAgICAgYm9vbCBo
YXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuaGFzT3V0c2V0cygpOyB9CiAK
LSAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGUoKTsgfQogICAgIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5v
cGVyYXRpb247IH0KICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gY29t
cG9zaXRlTW9kZSgpLmJsZW5kTW9kZTsgfQogICAgIHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21w
b3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUpIHsgbV9zdGF0ZS5zZXRDb21wb3NpdGVNb2RlKGNvbXBv
c2l0ZU1vZGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogICAgIHZvaWQgc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5k
TW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSB7IHNldENvbXBvc2l0ZU1vZGUoeyBvcGVyYXRpb24s
IGJsZW5kTW9kZSB9KTsgfQogCi0gICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLmFscGhhOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFs
cGhhKCk7IH0KICAgICB2b2lkIHNldEFscGhhKGZsb2F0IGFscGhhKSB7IG1fc3RhdGUuc2V0QWxw
aGEoYWxwaGEpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgVGV4dERyYXdpbmdN
b2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS50ZXh0RHJh
d2luZ01vZGU7IH0KKyAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSgpOyB9CiAgICAgdm9pZCBzZXRU
ZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1f
c3RhdGUuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CiAgICAgCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eTsgfQorICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
KTsgfQogICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3Rh
dGUobV9zdGF0ZSk7IH0KIAotICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXM7IH0KKyAgICBib29sIHNob3VsZEFudGlhbGlhcygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKCk7IH0KICAgICB2b2lkIHNl
dFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNldFNob3Vs
ZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQog
Ci0gICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hv
dWxkU21vb3RoRm9udHM7IH0KKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cygpOyB9CiAgICAgdm9pZCBzZXRTaG91bGRT
bW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2V0U2hvdWxkU21v
b3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQog
CiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRpb24gYmVjYXVz
ZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhzLgogICAgIC8v
IEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRvIGVuc3VyZSBhIGhpZ2gtcXVh
bGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzOyB9CisgICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpOyB9CiAgICAgdm9pZCBz
ZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGJv
b2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOyB9CisgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKTsgfQogICAg
IHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcykgeyBtX3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGJvb2wgZHJhd0x1
bWluYW5jZU1hc2soKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrOyB9
CisgICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJh
d0x1bWluYW5jZU1hc2soKTsgfQogICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBk
cmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRyYXdMdW1p
bmFuY2VNYXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUoT1NfREFS
S19NT0RFX1NVUFBPUlQpCi0gICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7IH0KKyAgICBib29sIHVzZURhcmtBcHBlYXJh
bmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSgpOyB9CiAgICAg
dm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3Rh
dGUuc2V0VXNlRGFya0FwcGVhcmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcAppbmRleCBhNzI1NTNhMmE4
MjE0M2I4YjYxODgyNDI2MmE1NTU2Nzg3ZmUwMzEyLi4xOGRmYWNhYmU3ZjVjNmE3MDcyNGVlYTc0
Y2NlNTlkYzYzMDg2ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwCkBAIC0zMCwyMiArMzAsMjEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzKQotICAgIDogY2hhbmdl
RmxhZ3MoY2hhbmdlRmxhZ3MpCitHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzLCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQorICAgIDogbV9jaGFuZ2VGbGFncyhjaGFuZ2VG
bGFncykKKyAgICAsIG1faW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KQogewogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09u
bHlJbmxpbmVDaGFuZ2VzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZs
YWdzIGlubGluZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6
U3Ryb2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3Mg
IT0gKGNoYW5nZUZsYWdzICYgaW5saW5lQ2hhbmdlRmxhZ3MpKQorICAgIGlmIChtX2NoYW5nZUZs
YWdzICE9IChtX2NoYW5nZUZsYWdzICYgYmFzaWNDaGFuZ2VGbGFncykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhDaGFuZ2U6OlN0cm9rZUJy
dXNoKSAmJiAhc3Ryb2tlQnJ1c2guaXNJbmxpbmVDb2xvcigpKQorICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFtX3N0cm9rZUJydXNoLmlzSW5s
aW5lQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNoYW5nZUZsYWdz
LmNvbnRhaW5zKENoYW5nZTo6RmlsbEJydXNoKSAmJiAhZmlsbEJydXNoLmlzSW5saW5lQ29sb3Io
KSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhDaGFuZ2U6OkZpbGxCcnVzaCkgJiYg
IW1fZmlsbEJydXNoLmlzSW5saW5lQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuIHRydWU7CkBAIC01NCwzMyArNTMsMzMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Y29udGFpbnNPbmx5SW5saW5lQ2hhbmdlcygpIGNvbnN0CiB2b2lkIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjptZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERyYXdpbmdT
dGF0ZSkKIHsKICAgICBhdXRvIG1lcmdlQ2hhbmdlID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8g
R3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgewotICAgICAgICBpZiAoIXN0YXRlLmNo
YW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkgfHwgdGhpcy0+KnByb3BlcnR5ID09IHN0YXRlLipw
cm9wZXJ0eSkKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoY2hhbmdlKSB8
fCB0aGlzLT4qcHJvcGVydHkgPT0gc3RhdGUuKnByb3BlcnR5KQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBzdGF0ZS4qcHJvcGVydHk7Ci0gICAgICAgIGNo
YW5nZUZsYWdzLnNldChjaGFuZ2UsICFsYXN0RHJhd2luZ1N0YXRlIHx8ICgqbGFzdERyYXdpbmdT
dGF0ZSkuKnByb3BlcnR5ICE9IHRoaXMtPipwcm9wZXJ0eSk7CisgICAgICAgIG1fY2hhbmdlRmxh
Z3Muc2V0KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0YXRlKS4q
cHJvcGVydHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKICAgICB9OwogCi0gICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZmlsbEJydXNoKTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxlLCAgICAg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisgICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6bV9maWxsQnJ1c2gpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6
RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
ZmlsbFJ1bGUpOwogCi0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOwotICAgIG1l
cmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdl
OjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
c3Ryb2tlU3R5bGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gpOworICAg
IG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX3N0cm9rZVN0eWxlKTsKIAotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6Q29tcG9zaXRl
TW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1v
ZGUpOwotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpOworICAgIG1lcmdlQ2hhbmdl
KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1fY29tcG9zaXRlTW9kZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcm9wU2hh
ZG93LCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcm9wU2hh
ZG93KTsKIAotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsKLSAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6
OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0
ZXh0RHJhd2luZ01vZGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fYWxwaGEpOworICAgIG1l
cmdlQ2hhbmdlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1faW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgbWVyZ2VD
aGFuZ2UoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUpOwogCi0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdl
OjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
c2hvdWxkQW50aWFsaWFzKTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290aEZv
bnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250
cyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMs
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsK
LSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAgbWVy
Z2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOworICAgIG1lcmdlQ2hhbmdlKENoYW5n
ZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fc2hvdWxkQW50aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290
aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFNtb290
aEZvbnRzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cywgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcywg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7
CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNlTWFzayk7CiAjaWYgSEFWRShP
U19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlVzZURhcmtBcHBl
YXJhbmNlLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFy
YW5jZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV91c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5k
aWYKIH0KIApAQCAtODgsNyArODcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpkaWRC
ZWdpblRyYW5zcGFyZW5jeUxheWVyKCkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0dDb250ZXh0
QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNldHMgdGhlIENHIGdsb2JhbCBhbHBoYSB0byAxLiBL
ZWVwIG91ciBhbHBoYSBpbiBzeW5jLgotICAgIGFscGhhID0gMTsKKyAgICBtX2FscGhhID0gMTsK
ICNlbmRpZgogfQogCkBAIC05Niw3ICs5NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9yaWdpbmFsT3BhY2l0eSkKIHsKICNpZiBV
U0UoQ0cpCiAgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNldHMgdGhl
IENHIGdsb2JhbCBhbHBoYSB0byAxLiBSZXNvcmUgb3VyIGFscGhhIG5vdy4KLSAgICBhbHBoYSA9
IG9yaWdpbmFsT3BhY2l0eTsKKyAgICBtX2FscGhhID0gb3JpZ2luYWxPcGFjaXR5OwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ob3JpZ2luYWxPcGFjaXR5KTsKICNlbmRpZgpAQCAtMTYwLDMzICsx
NTksMzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlQ2hhbmdlTmFtZShHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlIGNoYW5nZSkKIFRleHRTdHJlYW0mIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGF1dG8gZHVtcCA9IFsmXShDaGFu
Z2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKLSAgICAg
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCiAgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoc3Rh
dGVDaGFuZ2VOYW1lKGNoYW5nZSksIHRoaXMtPipwcm9wZXJ0eSk7CiAgICAgfTsKIAotICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgY2hhbmdlRmxhZ3MpOworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgbV9jaGFuZ2VGbGFncyk7CiAKLSAgICBkdW1wKENoYW5n
ZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZmlsbEJydXNoKTsKLSAgICBkdW1wKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpOworICAgIGR1bXAoQ2hhbmdlOjpG
aWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2Zp
bGxCcnVzaCk7CisgICAgZHVtcChDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUpOwogCi0gICAgZHVtcChDaGFuZ2U6
OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0
cm9rZUJydXNoKTsKLSAgICBkdW1wKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKLSAgICBkdW1wKENo
YW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c3Ryb2tlU3R5bGUpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZUJydXNoKTsKKyAgICBkdW1w
KENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6bV9zdHJva2VUaGlja25lc3MpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VTdHlsZSwg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlKTsK
IAotICAgIGR1bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKLSAgICBkdW1wKENoYW5nZTo6RHJvcFNo
YWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dyk7CisgICAgZHVtcChDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSk7CisgICAgZHVtcChDaGFuZ2U6OkRy
b3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZHJv
cFNoYWRvdyk7CiAKLSAgICBkdW1wKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOwotICAgIGR1bXAoQ2hhbmdlOjpJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5LCAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBkdW1wKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlKTsKKyAg
ICBkdW1wKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV9hbHBoYSk7CisgICAgZHVtcChDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHksICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1faW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSk7CisgICAgZHVtcChDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fdGV4dERyYXdpbmdNb2RlKTsKIAotICAgIGR1bXAo
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaG91bGRBbnRpYWxpYXMpOwotICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250
cywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7
Ci0gICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7Ci0gICAgZHVtcChD
aGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBkdW1wKENoYW5nZTo6RHJhd0x1bWlu
YW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5j
ZU1hc2spOworICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZEFudGlhbGlhcyk7CisgICAgZHVtcChDaGFu
Z2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fc2hvdWxkU21vb3RoRm9udHMpOworICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMsICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwor
ICAgIGR1bXAoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX2RyYXdMdW1pbmFuY2VNYXNrKTsKICNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQotICAgIGR1bXAoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CisgICAgZHVtcChD
aGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6Om1fdXNlRGFya0FwcGVhcmFuY2UpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRzOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dFN0YXRlLmgKaW5kZXggZTgyNTE3ZWJlZTI2NTVmMWMzZmVmNjgyZDNhYTQ2YTE5ZGE3ZTI5Ny4u
ODYzMzgwNTQzZmZhZTJmNzgzODY2N2Q1MjY2MWVjNGVmZDY5OGZmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5o
CkBAIC0zMiw3ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKKyAgICBmcmll
bmQgR3JhcGhpY3NDb250ZXh0Q2Fpcm87CitwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDaGFuZ2Ug
OiB1aW50MzJfdCB7CiAgICAgICAgIEZpbGxCcnVzaCAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MCwKICAgICAgICAgRmlsbFJ1bGUgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxLApAQCAtNTks
NDAgKzYxLDY3IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgfTsKICAgICB1
c2luZyBDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFuZ2U+OwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmID0geyB9KTsKKyAgICBz
dGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIGJhc2ljQ2hhbmdlRmxhZ3MgeyBDaGFuZ2U6OlN0
cm9rZVRoaWNrbmVzcywgQ2hhbmdlOjpTdHJva2VCcnVzaCwgQ2hhbmdlOjpGaWxsQnJ1c2ggfTsK
IAotICAgIENoYW5nZUZsYWdzIGNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBjaGFuZ2VGbGFnczsg
fQotICAgIHZvaWQgZGlkQXBwbHlDaGFuZ2VzKCkgeyBjaGFuZ2VGbGFncyA9IHsgfTsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9
IHsgfSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVs
dCk7CiAKLSAgICB2b2lkIHNldEZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsg
c2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Zmls
bEJydXNoLCBicnVzaCk7IH0KLSAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZmlsbEJydXNoLCB7IGNvbG9yIH0pOyB9Ci0gICAgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVm
PEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNm
b3JtKSB7IGZpbGxCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFu
c2Zvcm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9Ci0gICAgdm9pZCBz
ZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IGZpbGxCcnVzaC5zZXRQYXR0
ZXJuKFdURk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gp
OyB9CisgICAgQ2hhbmdlRmxhZ3MgY2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlRmxh
Z3M7IH0KKyAgICB2b2lkIGRpZEFwcGx5Q2hhbmdlcygpIHsgbV9jaGFuZ2VGbGFncyA9IHsgfTsg
fQogCi0gICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0
eShDaGFuZ2U6OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlLCBmaWxs
UnVsZSk7IH0KKyAgICBjb25zdCBTb3VyY2VCcnVzaCYgZmlsbEJydXNoKCkgY29uc3QgeyByZXR1
cm4gbV9maWxsQnJ1c2g7IH0KKyAgICB2b2lkIHNldEZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVz
aCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9maWxsQnJ1c2gsIGJydXNoKTsgfQorICAgIHZvaWQgc2V0RmlsbENvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVzaCwgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCwgeyBjb2xvciB9KTsgfQorICAgIHZvaWQgc2V0
RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBtX2ZpbGxCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdy
YWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBtX2NoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxC
cnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4p
IHsgbV9maWxsQnJ1c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgbV9jaGFuZ2VGbGFn
cy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9CiAKLSAgICB2b2lkIHNldFN0cm9rZUJydXNoKGNv
bnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZUJydXNo
LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoLCBicnVzaCk7IH0KLSAgICB2b2lk
IHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OlN0cm9rZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoLCB7IGNvbG9y
IH0pOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGll
bnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgc3Ryb2tlQnJ1c2gu
c2V0R3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgY2hhbmdlRmxh
Z3MuYWRkKENoYW5nZTo6U3Ryb2tlQnJ1c2gpOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJu
KFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgc3Ryb2tlQnJ1c2guc2V0UGF0dGVybihXVEZNb3Zl
KHBhdHRlcm4pKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6U3Ryb2tlQnJ1c2gpOyB9CisgICAg
V2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxSdWxlOyB9CisgICAgdm9p
ZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZp
bGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUsIGZpbGxSdWxlKTsgfQog
Ci0gICAgdm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKSB7IHNl
dFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnN0cm9rZVRoaWNrbmVzcywgc3Ryb2tlVGhpY2tuZXNzKTsgfQotICAgIHZvaWQgc2V0U3Ryb2tl
U3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJv
a2VTdHlsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSwgc3Ryb2tlU3R5bGUp
OyB9CisgICAgY29uc3QgU291cmNlQnJ1c2gmIHN0cm9rZUJydXNoKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJva2VCcnVzaDsgfQorICAgIHZvaWQgc2V0U3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1
c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV9zdHJva2VCcnVzaCwgYnJ1c2gpOyB9CisgICAgdm9pZCBzZXRTdHJva2VD
b2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VCcnVz
aCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZUJydXNoLCB7IGNvbG9yIH0pOyB9Cisg
ICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgbV9zdHJva2VCcnVzaC5zZXRHcmFk
aWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBtX2NoYW5nZUZsYWdzLmFk
ZChDaGFuZ2U6OlN0cm9rZUJydXNoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8
UGF0dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3Ryb2tlQnJ1c2guc2V0UGF0dGVybihXVEZNb3ZlKHBh
dHRlcm4pKTsgbV9jaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KIAotICAg
IHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNv
bXBvc2l0ZU1vZGUsIGNvbXBvc2l0ZU1vZGUpOyB9Ci0gICAgdm9pZCBzZXREcm9wU2hhZG93KGNv
bnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcm9wU2hh
ZG93LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3csIGRyb3BTaGFkb3cpOyB9Cisg
ICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VUaGlja25l
c3M7IH0KKyAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCBzdHJva2VUaGlja25lc3Mp
IHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6bV9zdHJva2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KIAotICAgIHZvaWQg
c2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxwaGEpOyB9Ci0gICAgdm9pZCBzZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERy
YXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6VGV4
dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSwgdGV4
dERyYXdpbmdNb2RlKTsgfQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5
bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VTdHlsZSwgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlLCBzdHJva2VTdHlsZSk7IH0KKworICAgIGNv
bnN0IENvbXBvc2l0ZU1vZGUmIGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBv
c2l0ZU1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21w
b3NpdGVNb2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX2NvbXBvc2l0ZU1vZGUsIGNvbXBvc2l0ZU1vZGUpOyB9CisKKyAgICBj
b25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9kcm9wU2hhZG93
OyB9CisgICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cp
IHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcm9wU2hhZG93LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fZHJvcFNoYWRvdywgZHJvcFNoYWRvdyk7IH0KKworICAgIGZsb2F0IGFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV9hbHBoYTsgfQorICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2FscGhhLCBh
bHBoYSk7IH0KKworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKyAg
ICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkg
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHksICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5LCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgfQorCisgICAgVGV4dERy
YXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RHJh
d2luZ01vZGU7IH0KKyAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVG
bGFncyB0ZXh0RHJhd2luZ01vZGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpUZXh0RHJhd2luZ01v
ZGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUsIHRleHREcmF3aW5n
TW9kZSk7IH0KKworICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRBbnRpYWxpYXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3Vs
ZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZEFudGlhbGlhcywgc2hvdWxkQW50aWFsaWFzKTsgfQor
CisgICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU21v
b3RoRm9udHM7IH0KKyAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21v
b3RoRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFNtb290aEZvbnRzLCBzaG91bGRTbW9vdGhGb250cyk7
IH0KKworICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IH0KKyAgICB2b2lkIHNldFNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBz
ZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgc2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzKTsgfQorCisgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcygp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KKyAgICB2b2lkIHNl
dFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsg
c2V0UHJvcGVydHkoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjptX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7IH0KKworICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBjb25zdCB7IHJldHVybiBt
X2RyYXdMdW1pbmFuY2VNYXNrOyB9CisgICAgdm9pZCBzZXREcmF3THVtaW5hbmNlTWFzayhib29s
IGRyYXdMdW1pbmFuY2VNYXNrKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RHJhd0x1bWluYW5jZU1h
c2ssICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWlu
YW5jZU1hc2spOyB9CiAKLSAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFu
dGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsIHNob3VsZEFudGlhbGlhcyk7IH0KLSAgICB2
b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsgc2V0UHJv
cGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
aG91bGRTbW9vdGhGb250cywgc2hvdWxkU21vb3RoRm9udHMpOyB9Ci0gICAgdm9pZCBzZXRTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMp
IHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCBzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMpOyB9Ci0gICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgfQotICAgIHZvaWQgc2V0RHJh
d0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBzZXRQcm9wZXJ0eShDaGFu
Z2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFu
Y2VNYXNrLCBkcmF3THVtaW5hbmNlTWFzayk7IH0KICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQ
T1JUKQotICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5j
ZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlLCB1c2VEYXJrQXBwZWFyYW5jZSk7IH0KKyAgICBi
b29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV91c2VEYXJrQXBwZWFyYW5j
ZTsgfQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5j
ZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6Om1fdXNlRGFya0FwcGVhcmFuY2UsIHVzZURhcmtBcHBlYXJhbmNlKTsgfQogI2Vu
ZGlmCiAgICAgCiAgICAgYm9vbCBjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzKCkgY29uc3Q7CkBA
IC0xMDYsMzEgKzEzNSw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4
dFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7
Ci0KLSAgICBTb3VyY2VCcnVzaCBmaWxsQnJ1c2ggeyBDb2xvcjo6YmxhY2sgfTsKLSAgICBXaW5k
UnVsZSBmaWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07Ci0gICAgCi0gICAgU291cmNlQnJ1
c2ggc3Ryb2tlQnJ1c2ggeyBDb2xvcjo6YmxhY2sgfTsKLSAgICBmbG9hdCBzdHJva2VUaGlja25l
c3MgeyAwIH07Ci0gICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9Owot
ICAgIAotICAgIENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSB7IENvbXBvc2l0ZU9wZXJhdG9y
OjpTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCB9OwotICAgIERyb3BTaGFkb3cgZHJvcFNo
YWRvdzsKLSAgICAKLSAgICBmbG9hdCBhbHBoYSB7IDEgfTsKLSAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRl
ZmF1bHQgfTsKLSAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUgeyBUZXh0
RHJhd2luZ01vZGU6OkZpbGwgfTsKLQotICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIHsgdHJ1ZSB9
OwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgeyB0cnVlIH07Ci0gICAgYm9vbCBzaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMgeyB0cnVlIH07Ci0gICAgYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzayB7IGZhbHNlIH07
Ci0jaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBib29sIHVzZURhcmtBcHBlYXJh
bmNlIHsgZmFsc2UgfTsKLSNlbmRpZgotICAgIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6KnByb3BlcnR5LCBjb25zdCBUJiB2YWx1ZSkKQEAgLTE0MCw3ICsxNDQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgICAgIHRoaXMtPipw
cm9wZXJ0eSA9IHZhbHVlOwotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKKyAgICAg
ICAgbV9jaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpAQCAtMTUxLDQxICsxNTUsNjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICNlbmRpZgogICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBXVEZNb3ZlKHZhbHVlKTsKLSAg
ICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CisgICAgICAgIG1fY2hhbmdlRmxhZ3MuYWRk
KGNoYW5nZSk7CiAgICAgfQorCisgICAgQ2hhbmdlRmxhZ3MgbV9jaGFuZ2VGbGFnczsKKworICAg
IFNvdXJjZUJydXNoIG1fZmlsbEJydXNoIHsgQ29sb3I6OmJsYWNrIH07CisgICAgV2luZFJ1bGUg
bV9maWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07CisgICAgCisgICAgU291cmNlQnJ1c2gg
bV9zdHJva2VCcnVzaCB7IENvbG9yOjpibGFjayB9OworICAgIGZsb2F0IG1fc3Ryb2tlVGhpY2tu
ZXNzIHsgMCB9OworICAgIFN0cm9rZVN0eWxlIG1fc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9
OworICAgIAorICAgIENvbXBvc2l0ZU1vZGUgbV9jb21wb3NpdGVNb2RlIHsgQ29tcG9zaXRlT3Bl
cmF0b3I6OlNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRHJvcFNoYWRvdyBt
X2Ryb3BTaGFkb3c7CisgICAgCisgICAgZmxvYXQgbV9hbHBoYSB7IDEgfTsKKyAgICBJbnRlcnBv
bGF0aW9uUXVhbGl0eSBtX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgeyBJbnRlcnBvbGF0aW9u
UXVhbGl0eTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1fdGV4dERyYXdp
bmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07CisKKyAgICBib29sIG1fc2hvdWxkQW50
aWFsaWFzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRTbW9vdGhGb250cyB7IHRydWUgfTsK
KyAgICBib29sIG1fc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9OworICAgIGJv
b2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RyYXdM
dW1pbmFuY2VNYXNrIHsgZmFsc2UgfTsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQor
ICAgIGJvb2wgbV91c2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNlIH07CisjZW5kaWYKIH07CiAKIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBhdXRvIGVuY29kZSA9IFsmXShDaGFuZ2Ug
Y2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKLSAgICAgICAg
aWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKGNoYW5nZSkpCiAgICAgICAgICAgICBlbmNvZGVyIDw8IHRoaXMtPipwcm9w
ZXJ0eTsKICAgICB9OwogCi0gICAgZW5jb2RlciA8PCBjaGFuZ2VGbGFnczsKKyAgICBlbmNvZGVy
IDw8IG1fY2hhbmdlRmxhZ3M7CiAKLSAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCk7Ci0gICAg
ZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RmlsbEJydXNoLCAg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCk7
CisgICAgZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxSdWxlKTsKIAotICAgIGVuY29kZShDaGFuZ2U6OlN0
cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ry
b2tlQnJ1c2gpOwotICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKLSAgICBlbmNv
ZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VCcnVzaCwg
ICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gp
OworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlja25lc3MpOworICAgIGVuY29kZShDaGFu
Z2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bV9zdHJva2VTdHlsZSk7CiAKLSAgICBlbmNvZGUoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOwot
ICAgIGVuY29kZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdyk7CisgICAgZW5jb2RlKENoYW5nZTo6Q29tcG9z
aXRlTW9kZSwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2NvbXBv
c2l0ZU1vZGUpOworICAgIGVuY29kZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcm9wU2hhZG93KTsKIAotICAgIGVuY29k
ZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6YWxwaGEpOwotICAgIGVuY29kZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0gICAgZW5jb2RlKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworICAgIGVuY29kZShD
aGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6bV9hbHBoYSk7CisgICAgZW5jb2RlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpOworICAgIGVuY29kZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUpOwogCi0gICAgZW5j
b2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOwotICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFNt
b290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21v
b3RoRm9udHMpOwotICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBlbmNv
ZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRB
bnRpYWxpYXMsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxk
QW50aWFsaWFzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9udHMpOworICAg
IGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6bV9zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworICAgIGVuY29k
ZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgZW5jb2RlKENoYW5nZTo6
RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpt
X2RyYXdMdW1pbmFuY2VNYXNrKTsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAg
IGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOworICAgIGVuY29kZShDaGFuZ2U6OlVz
ZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV91
c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIApAQCAtMTkzLDcgKzIyMiw3IEBAIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+CiBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0
byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdl
LCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKLSAgICAgICAgaWYgKCFz
dGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICBpZiAoIXN0YXRlLmNo
YW5nZXMoKS5jb250YWlucyhjaGFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNl
PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4oKS4qcHJvcGVydHkp
Pjo6dHlwZTsKQEAgLTIxMyw0MiArMjQyLDQyIEBAIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250
ZXh0U3RhdGU+IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBzdGF0ZSgqY2hhbmdlRmxhZ3MpOwogCi0gICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENo
YW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fZmlsbEJydXNoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRl
Y29kZShzdGF0ZSwgQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6
OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2Zp
bGxSdWxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICghZGVjb2Rl
KHN0YXRlLCBDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzdHJva2VCcnVzaCkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6
U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ry
b2tlQnJ1c2gpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2Rl
KHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpt
X3N0cm9rZVRoaWNrbmVzcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwg
Q2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bV9zdHJva2VTdHlsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBp
ZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkpCisgICAgaWYgKCFkZWNvZGUoc3Rh
dGUsIENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1fY29tcG9zaXRlTW9kZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjptX2Ryb3BTaGFkb3cpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwg
Q2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bV9hbHBoYSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNv
ZGUoc3RhdGUsIENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKQorICAgIGlmICghZGVjb2Rl
KHN0YXRlLCBDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjptX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlRleHREcmF3aW5n
TW9kZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUp
KQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3RleHREcmF3aW5nTW9kZSkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpT
aG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxk
QW50aWFsaWFzKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRBbnRpYWxpYXMp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBD
aGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaG91bGRTbW9vdGhGb250cykpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hv
dWxkU21vb3RoRm9udHMsICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxk
U21vb3RoRm9udHMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVj
b2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKQorICAgIGlmICghZGVj
b2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMsICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNv
ZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwg
Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bV9kcmF3THVtaW5hbmNlTWFzaykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAj
aWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hh
bmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
dXNlRGFya0FwcGVhcmFuY2UpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURh
cmtBcHBlYXJhbmNlLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3VzZURhcmtB
cHBlYXJhbmNlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9P
cGVyYXRpb25zLmNwcAppbmRleCAyZGE0OTFmZDg3ZjZjZmJiMzNlNDdkOTgxMjMzN2JmMjE1OGY2
ZGUxLi41OTAwNmNmZWYzYjJiMDNjZTQ4NzMwNDJkZGEyMDFlYzQzMjllMmVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5jcHAKQEAgLTU1NiwxMCArNTU2LDEwIEBAIGJvb2wgaXNBY2NlbGVyYXRlZENvbnRl
eHQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKIH0gLy8gbmFtZXNwYWNl
IFN0YXRlCiAKIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlKQotICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCi0gICAgLCBmaWxsUnVs
ZShzdGF0ZS5maWxsUnVsZSkKKyAgICA6IGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKCkpCisgICAg
LCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSgpKQogewotICAgIGlmIChhdXRvIGZpbGxQYXR0ZXJu
ID0gc3RhdGUuZmlsbEJydXNoLnBhdHRlcm4oKSkgeworICAgIGlmIChhdXRvIGZpbGxQYXR0ZXJu
ID0gc3RhdGUuZmlsbEJydXNoKCkucGF0dGVybigpKSB7CiAgICAgICAgIHBhdHRlcm4ub2JqZWN0
ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFu
c2Zvcm0oKSkpOwogCiAgICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IGZpbGxQYXR0ZXJuLT50
aWxlSW1hZ2UoKTsKQEAgLTU2NywzNCArNTY3LDM0IEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICBwYXR0ZXJuLnRyYW5z
Zm9ybSA9IGZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKICAgICAgICAgcGF0
dGVybi5yZXBlYXRYID0gZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKICAgICAgICAgcGF0dGVybi5y
ZXBlYXRZID0gZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKGF1dG8gZmls
bEdyYWRpZW50ID0gc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50KCkpIHsKLSAgICAgICAgZ3JhZGll
bnQuYmFzZSA9IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5maWxsQnJ1c2gu
Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8gZmlsbEdyYWRp
ZW50ID0gc3RhdGUuZmlsbEJydXNoKCkuZ3JhZGllbnQoKSkgeworICAgICAgICBncmFkaWVudC5i
YXNlID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxCcnVzaCgpLmdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQot
ICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IGZpbGxHcmFkaWVudC0+Y3JlYXRl
UGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSk7CisgICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gZmlsbEdyYWRpZW50
LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKCksIHN0YXRlLmZpbGxCcnVzaCgpLmdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbG9yID0gc3RhdGUuZmls
bEJydXNoLmNvbG9yKCk7CisgICAgICAgIGNvbG9yID0gc3RhdGUuZmlsbEJydXNoKCkuY29sb3Io
KTsKIH0KIAogU3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKQogICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiB7Ci0gICAgaWYg
KGF1dG8gc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkKKyAgICBp
ZiAoYXV0byBzdHJva2VQYXR0ZXJuID0gc3RhdGUuc3Ryb2tlQnJ1c2goKS5wYXR0ZXJuKCkpCiAg
ICAgICAgIHBhdHRlcm4gPSBhZG9wdFJlZihzdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBh
dHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKLSAgICBlbHNlIGlmIChhdXRvIHN0cm9rZUdyYWRp
ZW50ID0gc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKSkgewotICAgICAgICBncmFkaWVudC5i
YXNlID0gc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuc3Ryb2tlQnJ1c2gu
Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICBlbHNlIGlmIChhdXRvIHN0cm9rZUdyYWRp
ZW50ID0gc3RhdGUuc3Ryb2tlQnJ1c2goKS5ncmFkaWVudCgpKSB7CisgICAgICAgIGdyYWRpZW50
LmJhc2UgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5zdHJva2VCcnVz
aCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBoYSAh
PSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0cm9rZUdyYWRpZW50
LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudFNw
YWNlVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0
cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKCksIHN0YXRlLnN0cm9rZUJy
dXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgY29s
b3IgPSBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpOworICAgICAgICBjb2xvciA9IHN0YXRlLnN0
cm9rZUJydXNoKCkuY29sb3IoKTsKIH0KIAogU2hhZG93U3RhdGU6OlNoYWRvd1N0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKLSAgICA6IG9mZnNldChzdGF0ZS5kcm9wU2hh
ZG93Lm9mZnNldCkKLSAgICAsIGJsdXIoc3RhdGUuZHJvcFNoYWRvdy5ibHVyUmFkaXVzKQotICAg
ICwgY29sb3Ioc3RhdGUuZHJvcFNoYWRvdy5jb2xvcikKLSAgICAsIGlnbm9yZVRyYW5zZm9ybXMo
c3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCi0gICAgLCBnbG9iYWxBbHBoYShzdGF0ZS5h
bHBoYSkKLSAgICAsIGdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yKHN0YXRlLmNvbXBvc2l0ZU1vZGUu
b3BlcmF0aW9uKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3coKS5vZmZzZXQpCisgICAg
LCBibHVyKHN0YXRlLmRyb3BTaGFkb3coKS5ibHVyUmFkaXVzKQorICAgICwgY29sb3Ioc3RhdGUu
ZHJvcFNoYWRvdygpLmNvbG9yKQorICAgICwgaWdub3JlVHJhbnNmb3JtcyhzdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcygpKQorICAgICwgZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEoKSkKKyAg
ICAsIGdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yKHN0YXRlLmNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRp
b24pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBjOWJkZGM4MGM0
MGI4NTJiMTEwMjY1M2RmZmMzMDBjYjI5Nzk3N2Y5Li5jMjI4Y2E3NGRiNDBmYWE2Yzg2M2QwOWY5
YzU3M2I0MmI2YThhMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xNDQs
NyArMTQ0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MKIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byYg
c3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZSgqdGhp
cywgbmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwg
eyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhh
LCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1h
Z2UoKnRoaXMsIG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIH0sIHN0
YXRlLmFscGhhKCksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlz
IG9ubHkgdXNlZCB0byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dz
LgpAQCAtMjgzLDI2ICsyODMsMjYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6dHJhbnNs
YXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkaWRVcGRh
dGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLmNo
YW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlj
a25lc3MpKQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcygqdGhpcywg
c3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VU
aGlja25lc3MoKnRoaXMsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpKTsKIAogICAgIGlmIChzdGF0
ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tl
U3R5bGUpKQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVN0eWxlKCp0aGlzLCBzdGF0
ZS5zdHJva2VTdHlsZSk7CisgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U3Ryb2tlU3R5bGUoKnRo
aXMsIHN0YXRlLnN0cm9rZVN0eWxlKCkpOwogCiAgICAgLy8gRklYTUU6IG1fc3RhdGUgc2hvdWxk
IG5vdCBiZSBjaGFuZ2VkIHRvIGZsaXAgdGhlIHNoYWRvdyBvZmZzZXQuIFRoaXMgY2FuIGhhcHBl
biB3aGVuIHRoZSBzaGFkb3cgaXMgYXBwbGllZCB0byB0aGUgcGxhdGZvcm0gY29udGV4dC4KICAg
ICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFu
Z2U6OkRyb3BTaGFkb3cpKSB7CiAgICAgICAgIGlmIChzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3JtcykgewogICAgICAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3MgY29udGV4
dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgICAg
ICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9w
cG9zaXRlIFkgYXhpcwotICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJv
cFNoYWRvdy5vZmZzZXQ7Ci0gICAgICAgICAgICBtX3N0YXRlLmRyb3BTaGFkb3cub2Zmc2V0ID0g
eyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9OworICAgICAg
ICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJvcFNoYWRvdygpLm9mZnNldDsKKyAg
ICAgICAgICAgIG1fc3RhdGUubV9kcm9wU2hhZG93Lm9mZnNldCA9IHsgc2hhZG93T2Zmc2V0Lndp
ZHRoKCksIC1zaGFkb3dPZmZzZXQuaGVpZ2h0KCkgfTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6Q29tcG9zaXRlTW9kZSkpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9z
aXRlTW9kZS5ibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9w
ZXJhdGlvbigqdGhpcywgc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbiwgc3RhdGUuY29t
cG9zaXRlTW9kZSgpLmJsZW5kTW9kZSk7CiAKICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpCi0gICAg
ICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hvdWxkQW50aWFsaWFzKCp0aGlzLCBzdGF0ZS5zaG91bGRB
bnRpYWxpYXMpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNob3VsZEFudGlhbGlhcygqdGhp
cywgc3RhdGUoKS5zaG91bGRBbnRpYWxpYXMoKSk7CiAKICAgICBzdGF0ZS5kaWRBcHBseUNoYW5n
ZXMoKTsKIH0KQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqCiAgICAg
YXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3R2x5cGhzKCp0aGlz
LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAog
ICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3lu
dGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCi0gICAgICAgIHN0YXRlLnRl
eHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9m
ZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwKKyAgICAgICAgc3RhdGUudGV4dERyYXdpbmdN
b2RlKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5kcm9wU2hhZG93KCkub2Zmc2V0
LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsCiAgICAgICAgIGZvbnRTbW9vdGhpbmcpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmRhZWQ5ZjE3ZTQwYTMyMWYyZDA0YWY3MTAyODBjYzli
YzA3OTcyMC4uNzJkZTRhZWVmNTMwNjUyZmNkMzQwNDA3MGFjNTQwNmViMmJmYTI4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcApAQCAtNjAsOSArNjAsOSBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0g
Z2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICByZXR1cm4gQ0dBZmZp
bmVUcmFuc2Zvcm1Db25jYXQoQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5z
Zm9ybUludmVydChDR0NvbnRleHRHZXRCYXNlQ1RNKGNvbnRleHQpKSk7CiB9CiAKLXN0YXRpYyBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBjb3JlSW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0
aW9uUXVhbGl0eSBxdWFsaXR5KQorc3RhdGljIEludGVycG9sYXRpb25RdWFsaXR5IGNvcmVJbnRl
cnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBzd2l0Y2ggKHF1
YWxpdHkpIHsKKyAgICBzd2l0Y2ggKENHQ29udGV4dEdldEludGVycG9sYXRpb25RdWFsaXR5KGNv
bnRleHQpKSB7CiAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uRGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0OwogICAgIGNhc2Uga0NHSW50ZXJwb2xh
dGlvbk5vbmU6CkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIHZvaWQgc2V0Q0dCbGVuZE1vZGUo
Q0dDb250ZXh0UmVmIGNvbnRleHQsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUKIH0K
IAogR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQpCi0gICAgOiBHcmFwaGljc0NvbnRleHQoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpGaWxsQnJ1c2gsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNo
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MgfSkKKyAgICA6
IEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHRTdGF0ZTo6YmFzaWNDaGFuZ2VGbGFncywg
Y29yZUludGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKSkKIHsKICAgICBpZiAo
IWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkzLDcgKzE5Myw2IEBAIEdyYXBoaWNz
Q29udGV4dENHOjpHcmFwaGljc0NvbnRleHRDRyhDR0NvbnRleHRSZWYgY2dDb250ZXh0KQogICAg
IG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoY2dDb250ZXh0KTsK
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3Rh
dGUuCiAgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7Ci0gICAgbV9zdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5ID0gY29yZUludGVycG9sYXRpb25RdWFsaXR5KENHQ29udGV4dEdldElu
dGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKSk7CiB9CiAKIEdyYXBoaWNzQ29u
dGV4dENHOjp+R3JhcGhpY3NDb250ZXh0Q0coKQpAQCAtMTA4NCw0MyArMTA4Myw0MyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUpCiAgICAgZm9yIChhdXRvIGNoYW5nZSA6IHN0YXRlLmNoYW5nZXMoKSkgewogICAgICAg
ICBzd2l0Y2ggKGNoYW5nZSkgewogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OkZpbGxCcnVzaDoKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0
YXRlLmZpbGxCcnVzaC5jb2xvcigpKTsKKyAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRl
eHQsIHN0YXRlLmZpbGxCcnVzaCgpLmNvbG9yKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3M6
Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgoc3Rh
dGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVX
aWR0aChjb250ZXh0LCBzdGQ6Om1heChzdGF0ZS5zdHJva2VUaGlja25lc3MoKSwgMC5mKSk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlN0cm9rZUJydXNoOgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JX
aXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigp
KS5nZXQoKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihj
b250ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUJydXNoKCkuY29sb3IoKSkuZ2V0KCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlOgotICAgICAgICAgICAgc2V0Q0dCbGVuZE1vZGUoY29u
dGV4dCwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUu
YmxlbmRNb2RlKTsKKyAgICAgICAgICAgIHNldENHQmxlbmRNb2RlKGNvbnRleHQsIHN0YXRlLmNv
bXBvc2l0ZU1vZGUoKS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGUp
OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpEcm9wU2hhZG93OgotICAgICAgICAgICAgc2V0Q0dTaGFkb3coY29udGV4dCwg
cmVuZGVyaW5nTW9kZSgpLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRv
dy5ibHVyUmFkaXVzLCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBzdGF0ZS5zaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtcyk7CisgICAgICAgICAgICBzZXRDR1NoYWRvdyhjb250ZXh0LCByZW5kZXJpbmdN
b2RlKCksIHN0YXRlLmRyb3BTaGFkb3coKS5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3coKS5ibHVy
UmFkaXVzLCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsIHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYToKLSAgICAgICAgICAgIENHQ29udGV4dFNldEFscGhh
KGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldEFscGhhKGNv
bnRleHQsIHN0YXRlLmFscGhhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
OgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwg
Y2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSk7
CisgICAgICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCBj
Z0ludGVycG9sYXRpb25RdWFsaXR5KHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGU6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0
RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdN
b2RlKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwg
Y2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKCkpKTsKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hv
dWxkQW50aWFsaWFzOgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNv
bnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRT
aG91bGRBbnRpYWxpYXMoY29udGV4dCwgc3RhdGUuc2hvdWxkQW50aWFsaWFzKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdl
OjpTaG91bGRTbW9vdGhGb250czoKLSAgICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZFNtb290
aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKKyAgICAgICAgICAgIENH
Q29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZv
bnRzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKQEAgLTExNTUs
NyArMTE1NCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAgICBhdXRvIGxheWVyID0g
YWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKSk7
CiAKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29u
dGV4dChsYXllci5nZXQoKSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9
IGxpbmVXaWR0aDsKICAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChsYXllckNvbnRl
eHQsIGxpbmVXaWR0aCk7CiAKICAgICAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBsaW5l
IHdpZHRoLCBvdGhlcndpc2UgdGhlIGxheWVyJ3MgdG9wLWxlZnQgY29ybmVyIHdvdWxkIGJlCkBA
IC0xNDg4LDcgKzE0ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphZGREZXN0aW5hdGlv
bkF0UG9pbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGbG9hdFBvaQogCiBib29sIEdyYXBo
aWNzQ29udGV4dENHOjpjYW5Vc2VTaGFkb3dCbHVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKHJl
bmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSAmJiBoYXNCbHVy
cmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgcmV0
dXJuIChyZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkgJiYg
aGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApp
bmRleCBkMGJlYzhkNjM4NDcwOWI3OGNmMWRlODBiYjAyZTFlMzdkMmY5NDZlLi5hMWFlZmQwNzAy
ZmFkNDdmOTE5ZGJhODJmNjIzNTZmMjA1MTU1NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC05NiwxMyArOTYsMTMgQEAgRHJhd0dseXBoc1Jl
Y29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25z
dHJ1Y3REcmF3R2wKIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlKQogewotICAgIG1f
b3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2ggPSBjb250ZXh0U3RhdGUuZmlsbEJydXNoOwotICAgIG1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVzaDsKKyAg
ICBtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoID0gY29udGV4dFN0YXRlLmZpbGxCcnVzaCgpOwor
ICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVz
aCgpOwogCiAgICAgbV9vcmlnaW5hbFN0YXRlLmN0bSA9IG1fb3duZXIuZ2V0Q1RNKCk7IC8vIEZJ
WE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCiAKLSAgICBtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRv
dyA9IGNvbnRleHRTdGF0ZS5kcm9wU2hhZG93OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVU
cmFuc2Zvcm1zID0gY29udGV4dFN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworICAgIG1f
b3JpZ2luYWxTdGF0ZS5kcm9wU2hhZG93ID0gY29udGV4dFN0YXRlLmRyb3BTaGFkb3coKTsKKyAg
ICBtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcygpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxh
dGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0
ZSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJ
bnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbgogICAgIG1faW50
ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUu
aWdub3JlVHJhbnNmb3Jtcyk7CiAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldERyb3BTaGFkb3co
bV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cpOwogCi0gICAgbV9pbnRlcm5hbENvbnRleHQtPnNl
dFRleHREcmF3aW5nTW9kZShjb250ZXh0U3RhdGUudGV4dERyYXdpbmdNb2RlKTsKKyAgICBtX2lu
dGVybmFsQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHRTdGF0ZS50ZXh0RHJhd2lu
Z01vZGUoKSk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwcmVwYXJlSW50ZXJuYWxD
b250ZXh0KGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAyYjAzY2U0YTY2ZTJkOGFhMGZhZDgxYTY0
NGFlYjFlZGZkZTFjODgxLi4yYjRlNDM3ZDZjNTFkMTYyYTZiODEzZjQ1ZTA2ZGYyNzMxZDI4MTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBEaXNw
bGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxl
IGl0ZW0pCiAgICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9y
bU9wZXJhdGlvbnMpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0gPSBpdGVt
LmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93LCBvbmx5IGRy
b3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0Zm9ybS1z
cGVjaWZpYy4KLSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5jaGFuZ2VGbGFncyA9
PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHMpCisgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlKCkuY2hhbmdlcygpID09IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggOTM5NDU1MWYzNTll
YzFhZjRlYTkyYzdiM2IxNjg0ZWQyZWVkYTYxNi4uMzRmNmYyMTNkM2E3YmU0OWM3MjVhM2NiNGRi
NWMyYTNhZjczOTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVy
KCkKICAgICByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fc3RhdGVTdGFjay5y
ZW1vdmVMYXN0KCk7CiAKLSAgICBtX3N0YXRlLmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGN1cnJl
bnRTdGF0ZSgpLnN0YXRlLmFscGhhKTsKKyAgICBtX3N0YXRlLmRpZEVuZFRyYW5zcGFyZW5jeUxh
eWVyKGN1cnJlbnRTdGF0ZSgpLnN0YXRlLmFscGhhKCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjpk
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBmM2M4YzkwY2Q4OGJi
ZTBjNTFlMWQ0ZmExMzNjNTFlODNiODBiMzliLi43OWEwYTg1MDBhMjNjZjNmZGZkOGNkMTRlN2I0
N2FjMjJiMDM2NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CkBAIC05NywxMCArOTcsMTAgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVy
ID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaC5w
YXR0ZXJuKCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxl
SW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuc3Ryb2tlQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAg
ICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAotICAgIGlmIChhdXRvIGltYWdlSWRlbnRp
ZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuZmlsbEJydXNo
LnBhdHRlcm4oKSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRp
bGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5maWxsQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAg
ICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAogICAgIHNldFN0YXRlSXRlbS5hcHBseShj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKaW5kZXggMTQxNjlhMDc1NThkNjE2YjA5MjBjYjA1N2RjOGViMWMyYTU4
OGIwMy4uYzIxY2QwZTRkNTI3YTNjYzEyMDJiZjZmY2Y3ZWQyMWFmZjkzZDVmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAK
QEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVT
dGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlVGhpY2tuZXNzQ2hhbmdl
PihzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8
U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0ZS5zdHJva2VUaGlja25lc3MoKSkpOwogICAgIH0K
IAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6U3Ryb2tlU3R5bGUpKSB7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8U3Ryb2tlU3R5bGVDaGFuZ2U+KHN0YXRlLnN0cm9rZVN0eWxlKSk7CisgICAgICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPFN0cm9rZVN0eWxlQ2hhbmdlPihzdGF0ZS5zdHJva2VTdHlsZSgp
KSk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlKSkgewpAQCAtMTM1LDcgKzEzNSw3IEBA
IHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9z
aXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKSk7CisgICAg
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUu
Y29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLmJsZW5kTW9k
ZSkpOwogICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzKSkgewpAQCAtMTUzLDcgKzE1Myw3
IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAg
IGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlhbGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxk
QW50aWFsaWFzKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlhbGlh
c0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFsaWFzKCkpKTsKICAgICB9CiAKICAgICBzdGF0ZS5k
aWRBcHBseUNoYW5nZXMoKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRp
ZW50KQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4o
MS4wLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkpOworICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBncmFkaWVudC5jcmVhdGVQYXR0ZXJu
KDEuMCwgc3RhdGUuZmlsbEJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkpOwogfQog
CiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yLAogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7
Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGNvbG9yLCBjb21wb3Np
dGVPcGVyYXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBzdGF0ZS5j
b21wb3NpdGVNb2RlLm9wZXJhdGlvbikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxS
ZWN0PihyZWN0LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNo
YWRvd1N0YXRlKHN0YXRlKSwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbikpOwogfQog
CiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0CiAg
ICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3Jl
YXRlQ29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwgc3RhdGUuY29t
cG9zaXRlTW9kZS5vcGVyYXRpb24sIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSb3VuZGVkUmVjdD4ocm91bmRlZFJl
Y3QsIGNvbG9yLCBzdGF0ZS5jb21wb3NpdGVNb2RlKCkub3BlcmF0aW9uLCBibGVuZE1vZGUsIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpA
QCAtNTM0LDggKzUzNCw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBo
cyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoCiAgICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8RHJhd0dseXBocz4oQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6
U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwg
cG9pbnQsCiAgICAgICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250LnBsYXRmb3Jt
RGF0YSgpLnNjYWxlZEZvbnQoKSksCi0gICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgp
LCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlLAot
ICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBz
dGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBmb250U21vb3RoaW5nKSk7CisgICAgICAgIGZvbnQuc3lu
dGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUu
dGV4dERyYXdpbmdNb2RlKCksCisgICAgICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0
ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsIGZvbnRTbW9v
dGhpbmcpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdl
LCBjb25zdCBGbG8KIAogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0
YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZl
SW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4obmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFn
ZSgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3Rh
dGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKSwgc3RhdGUuYWxwaGEoKSwgQ2Fpcm86OlNo
YWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTYwMSw3
ICs2MDEsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZQogICAgIH07CiAKICAgICBhdXRvJiBz
dGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+
KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCksIHN0YXRlLnN0
cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKSk7CisgICAgYXBwZW5kKGNyZWF0
ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbEJydXNo
KCkuY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUoKSwgc3RhdGUuc3Ryb2tlQnJ1c2goKS5jb2xv
cigpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCkBAIC02MjQsNyAr
NjI0LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZShjb25zdCBGbG9h
dFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERy
YXdMaW5lPihwb2ludDEsIHBvaW50Miwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUJy
dXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hvdWxkQW50aWFsaWFz
KSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQyLCBz
dGF0ZS5zdHJva2VTdHlsZSgpLCBzdGF0ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCksIHN0YXRlLnN0
cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMoKSkpOwogfQogCiB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJp
bnRpbmcsIGJvb2wgZG91YmxlVW5kZXJsaW5lcywgU3Ryb2tlU3R5bGUpCkBAIC02NDcsNyArNjQ3
LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdM
aW5lc0ZvclRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZVVu
ZGVybGluZXMsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpKTsKKyAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxEcmF3TGluZXNGb3JUZXh0Pihwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50
aW5nLCBkb3VibGVVbmRlcmxpbmVzLCBzdGF0ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCkpKTsKIH0K
IAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2Vy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBA
IC02ODYsNyArNjg2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxsaXBz
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhp
cy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwg
c3RhdGUuZmlsbEJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VC
cnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsKKyAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbEJydXNoKCkuY29sb3IoKSwgc3Rh
dGUuc3Ryb2tlU3R5bGUoKSwgc3RhdGUuc3Ryb2tlQnJ1c2goKS5jb2xvcigpLCBzdGF0ZS5zdHJv
a2VUaGlja25lc3MoKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdG
b2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29u
c3QgQ29sb3ImIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDllMzc4
NmUwZmRjZGI4OWZiMDY2MjhjOGZjYzZkYzg3Yjc3YzNlOWUuLjlhMjM5ZTY0MjVmZDM5YzRiYzgx
MzRmNWQ1MTk1YmRkYTFkNmFkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAg
LTEyOCwxMCArMTI4LDEwIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3Rh
dGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYgaXRlbSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfTsKIAotICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlKCkuZmlsbEJy
dXNoLnBhdHRlcm4oKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUo
KS5maWxsQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWZp
eFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZSgpLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkpCisg
ICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaCgpLnBh
dHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVt
KSk7Cg==
</data>
<flag name="commit-queue"
          id="483312"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455346</attachid>
            <date>2022-03-22 01:25:18 -0700</date>
            <delta_ts>2022-03-22 02:22:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238192-20220322012517.patch</filename>
            <type>text/plain</type>
            <size>72115</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiNGM3Y2VkODZmNjlm
Njk2N2E3NjBiMzBiOGQzMzU2NjY5MGYzZS4uNTdiYTJhN2QwYzgzY2Y0YjlmZGY0MDEzYThkZmEw
N2ZkNzZlMThkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMi0wMy0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgdGhlIG1lbWJlcnMgYmUg
cHJpdmF0ZSBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgZ2V0dGVycyBmb3IKKyAgICAgICAgYWxsIG9m
IHRoZW0uIFRoaXMgY2hhbmdlIHdpbGwgcHJldmVudCBjaGFuZ2luZyB0aGUgbWVtYmVycyB3aXRo
b3V0IGdvaW5nCisgICAgICAgIHRocm91Z2ggdGhlIHNldHRlcnMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxs
Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJ1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0ZU1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnRleHREcmF3aW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRBbnRpYWxpYXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRTbW9vdGhGb250cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0x1bWluYW5jZU1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRp
ZEVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpjaGFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkaWRBcHBseUNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OmZpbGxCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OmZpbGxSdWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldENvbXBv
c2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BT
aGFkb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmFs
cGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRB
bHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkQW50
aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRT
bW9vdGhGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2V0U2hvdWxkU21vb3RoRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFVzZURhcmtB
cHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWlybzo6U3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlOjpTaGFkb3dTdGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvcmVJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Q0c6OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dENHOjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dENHOjpjYW5Vc2VTaGFkb3dCbHVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91
bGREdW1wRm9yRmxhZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZW5kVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseVNldFN0YXRlSXRlbSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVT
dGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVj
dCk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRl
ZFJlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0ds
eXBocyk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1JlY3QpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xp
bmUpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmVz
Rm9yVGV4dCk6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
RWxsaXBzZSk6CisKIDIwMjItMDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtl
ZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDkw
M2NlYTE4NGQ0OTlkZmNhZWMwMzdhMjQzZDFlMGE2MDY3YWEzZS4uZDZjZjdhYjlkZjkyODY0MjE4
NWY0NGMwOTk1N2FlNzhiNzRmYjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0w
My0yMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BV
IFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpzZXRTdGF0ZSk6CisKIDIwMjItMDMtMjEgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdy
YXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFw
cGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCmluZGV4IDllNGQwNjZiMDM5YjZkNWZlNGM1MmNkNWFhNDk3ZDQyOTlhNmZi
MWIuLmFjMzNmM2QzMTIzZmM1ODE0NGQ3YmJiOTdkN2FkZDYxMzc1YzM5MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApA
QCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdyYXBoaWNzQ29udGV4
dDo6R3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFn
cyYgY2hhbmdlRmxhZ3MpCi0gICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQorR3JhcGhpY3NDb250
ZXh0OjpHcmFwaGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZs
YWdzJiBjaGFuZ2VGbGFncywgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSkKKyAgICA6IG1fc3RhdGUoY2hhbmdlRmxhZ3MsIGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMTNjYzNiMDM3NzkxMTY2ZjkzYzI2ZWE4MmU4MWQ3NmU0
NjFiNDBjNi4uZWQwZmVmYzU1YTgzMTMxZDE3MDlmN2Q3ZDRkYTQxZGQ0OWUzZGM0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
QEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0Nv
bnRleHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBHcmFwaGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZs
YWdzJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgPSB7IH0sIEludGVycG9sYXRpb25RdWFs
aXR5ID0gSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgdmlydHVhbCBib29sIGhhc1BsYXRm
b3JtQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03OSwzNiArNzksMzYgQEAg
cHVibGljOgogCiAgICAgLy8gQ29udGV4dCBTdGF0ZQogCi0gICAgY29uc3QgU291cmNlQnJ1c2gm
IGZpbGxCcnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoOyB9Ci0gICAgY29u
c3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLmNv
bG9yKCk7IH0KLSAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5maWxsQnJ1c2guZ3JhZGllbnQoKTsgfQotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxC
cnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KLSAgICBQYXR0ZXJuKiBmaWxsUGF0dGVy
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLnBhdHRlcm4oKTsgfQorICAgIGNv
bnN0IFNvdXJjZUJydXNoJiBmaWxsQnJ1c2goKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxC
cnVzaCgpOyB9CisgICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZp
bGxCcnVzaCgpLmNvbG9yKCk7IH0KKyAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkgY29uc3Qg
eyByZXR1cm4gZmlsbEJydXNoKCkuZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBmaWxsQnJ1
c2goKS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICBQYXR0ZXJuKiBmaWxsUGF0dGVy
bigpIGNvbnN0IHsgcmV0dXJuIGZpbGxCcnVzaCgpLnBhdHRlcm4oKTsgfQogICAgIHZvaWQgc2V0
RmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBtX3N0YXRlLnNldEZpbGxCcnVz
aChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRGaWxsQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fc3RhdGUuc2V0RmlsbENvbG9yKGNvbG9yKTsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICAgICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3Jh
ZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0g
PSB7IH0pIHsgbV9zdGF0ZS5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNl
VHJhbnNmb3JtKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICAgICB2b2lkIHNldEZpbGxQ
YXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9zdGF0ZS5zZXRGaWxsUGF0dGVybihX
VEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdpbmRS
dWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUnVsZTsgfQorICAgIFdp
bmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUnVsZSgpOyB9CiAg
ICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLnNldEZpbGxS
dWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGNvbnN0IFNv
dXJjZUJydXNoJiBzdHJva2VCcnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1
c2g7IH0KLSAgICBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLnN0cm9rZUJydXNoLmNvbG9yKCk7IH0KLSAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50KCk7IH0KLSAgICBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKTsg
fQotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0
cm9rZUJydXNoLnBhdHRlcm4oKTsgfQorICAgIGNvbnN0IFNvdXJjZUJydXNoJiBzdHJva2VCcnVz
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2goKTsgfQorICAgIGNvbnN0IENv
bG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkuY29sb3IoKTsg
fQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJy
dXNoKCkuZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkuZ3JhZGll
bnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0
IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkucGF0dGVybigpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VC
cnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRTdHJva2VCcnVzaChi
cnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRTdHJva2VDb2xvcihjb2xvcik7IGRp
ZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8
R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zv
cm0gPSB7IH0pIHsgbV9zdGF0ZS5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwg
c3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogICAgIHZvaWQgc2V0
U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3RhdGUuc2V0U3Ryb2tl
UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5zdHJva2VUaGlja25lc3MoKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNz
KGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3Mp
OyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxlOyB9CisgICAgU3Ryb2tlU3R5
bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxlKCk7IH0K
ICAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0eWxlKSB7IG1fc3RhdGUuc2V0
U3Ryb2tlU3R5bGUoc3R5bGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgY29u
c3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJvcFNo
YWRvdzsgfQorICAgIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3coKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLmRyb3BTaGFkb3coKTsgfQogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkub2Zmc2V0OyB9CiAgICAgZmxvYXQgc2hhZG93Qmx1
cigpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5ibHVyUmFkaXVzOyB9CiAgICAgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yKCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmNvbG9yOyB9
CkBAIC0xMjMsNDAgKzEyMyw0MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93
KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzQmx1cnJlZCgpOyB9CiAgICAgYm9vbCBo
YXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuaGFzT3V0c2V0cygpOyB9CiAK
LSAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGUoKTsgfQogICAgIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5v
cGVyYXRpb247IH0KICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gY29t
cG9zaXRlTW9kZSgpLmJsZW5kTW9kZTsgfQogICAgIHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21w
b3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUpIHsgbV9zdGF0ZS5zZXRDb21wb3NpdGVNb2RlKGNvbXBv
c2l0ZU1vZGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogICAgIHZvaWQgc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5k
TW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSB7IHNldENvbXBvc2l0ZU1vZGUoeyBvcGVyYXRpb24s
IGJsZW5kTW9kZSB9KTsgfQogCi0gICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLmFscGhhOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFs
cGhhKCk7IH0KICAgICB2b2lkIHNldEFscGhhKGZsb2F0IGFscGhhKSB7IG1fc3RhdGUuc2V0QWxw
aGEoYWxwaGEpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgVGV4dERyYXdpbmdN
b2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS50ZXh0RHJh
d2luZ01vZGU7IH0KKyAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSgpOyB9CiAgICAgdm9pZCBzZXRU
ZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1f
c3RhdGUuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRl
KG1fc3RhdGUpOyB9CiAgICAgCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eTsgfQorICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHko
KTsgfQogICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3Rh
dGUobV9zdGF0ZSk7IH0KIAotICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXM7IH0KKyAgICBib29sIHNob3VsZEFudGlhbGlhcygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFzKCk7IH0KICAgICB2b2lkIHNl
dFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNldFNob3Vs
ZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQog
Ci0gICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hv
dWxkU21vb3RoRm9udHM7IH0KKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cygpOyB9CiAgICAgdm9pZCBzZXRTaG91bGRT
bW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2V0U2hvdWxkU21v
b3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQog
CiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRpb24gYmVjYXVz
ZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhzLgogICAgIC8v
IEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRvIGVuc3VyZSBhIGhpZ2gtcXVh
bGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzOyB9CisgICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpOyB9CiAgICAgdm9pZCBz
ZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGJv
b2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOyB9CisgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKTsgfQogICAg
IHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcykgeyBtX3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGJvb2wgZHJhd0x1
bWluYW5jZU1hc2soKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrOyB9
CisgICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJh
d0x1bWluYW5jZU1hc2soKTsgfQogICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBk
cmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRyYXdMdW1p
bmFuY2VNYXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUoT1NfREFS
S19NT0RFX1NVUFBPUlQpCi0gICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7IH0KKyAgICBib29sIHVzZURhcmtBcHBlYXJh
bmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSgpOyB9CiAgICAg
dm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3Rh
dGUuc2V0VXNlRGFya0FwcGVhcmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0
ZShtX3N0YXRlKTsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcAppbmRleCBhNzI1NTNhMmE4
MjE0M2I4YjYxODgyNDI2MmE1NTU2Nzg3ZmUwMzEyLi4xOGRmYWNhYmU3ZjVjNmE3MDcyNGVlYTc0
Y2NlNTlkYzYzMDg2ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwCkBAIC0zMCwyMiArMzAsMjEgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzKQotICAgIDogY2hhbmdl
RmxhZ3MoY2hhbmdlRmxhZ3MpCitHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzLCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQorICAgIDogbV9jaGFuZ2VGbGFncyhjaGFuZ2VG
bGFncykKKyAgICAsIG1faW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KQogewogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09u
bHlJbmxpbmVDaGFuZ2VzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZs
YWdzIGlubGluZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6
U3Ryb2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3Mg
IT0gKGNoYW5nZUZsYWdzICYgaW5saW5lQ2hhbmdlRmxhZ3MpKQorICAgIGlmIChtX2NoYW5nZUZs
YWdzICE9IChtX2NoYW5nZUZsYWdzICYgYmFzaWNDaGFuZ2VGbGFncykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhDaGFuZ2U6OlN0cm9rZUJy
dXNoKSAmJiAhc3Ryb2tlQnJ1c2guaXNJbmxpbmVDb2xvcigpKQorICAgIGlmIChtX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFtX3N0cm9rZUJydXNoLmlzSW5s
aW5lQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNoYW5nZUZsYWdz
LmNvbnRhaW5zKENoYW5nZTo6RmlsbEJydXNoKSAmJiAhZmlsbEJydXNoLmlzSW5saW5lQ29sb3Io
KSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhDaGFuZ2U6OkZpbGxCcnVzaCkgJiYg
IW1fZmlsbEJydXNoLmlzSW5saW5lQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuIHRydWU7CkBAIC01NCwzMyArNTMsMzMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Y29udGFpbnNPbmx5SW5saW5lQ2hhbmdlcygpIGNvbnN0CiB2b2lkIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjptZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERyYXdpbmdT
dGF0ZSkKIHsKICAgICBhdXRvIG1lcmdlQ2hhbmdlID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8g
R3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgewotICAgICAgICBpZiAoIXN0YXRlLmNo
YW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkgfHwgdGhpcy0+KnByb3BlcnR5ID09IHN0YXRlLipw
cm9wZXJ0eSkKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoY2hhbmdlKSB8
fCB0aGlzLT4qcHJvcGVydHkgPT0gc3RhdGUuKnByb3BlcnR5KQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBzdGF0ZS4qcHJvcGVydHk7Ci0gICAgICAgIGNo
YW5nZUZsYWdzLnNldChjaGFuZ2UsICFsYXN0RHJhd2luZ1N0YXRlIHx8ICgqbGFzdERyYXdpbmdT
dGF0ZSkuKnByb3BlcnR5ICE9IHRoaXMtPipwcm9wZXJ0eSk7CisgICAgICAgIG1fY2hhbmdlRmxh
Z3Muc2V0KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0YXRlKS4q
cHJvcGVydHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKICAgICB9OwogCi0gICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZmlsbEJydXNoKTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxlLCAgICAg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisgICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6bV9maWxsQnJ1c2gpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6
RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
ZmlsbFJ1bGUpOwogCi0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOwotICAgIG1l
cmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdl
OjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
c3Ryb2tlU3R5bGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gpOworICAg
IG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX3N0cm9rZVN0eWxlKTsKIAotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6Q29tcG9zaXRl
TW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1v
ZGUpOwotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpOworICAgIG1lcmdlQ2hhbmdl
KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1fY29tcG9zaXRlTW9kZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcm9wU2hh
ZG93LCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcm9wU2hh
ZG93KTsKIAotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsKLSAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6
OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0
ZXh0RHJhd2luZ01vZGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fYWxwaGEpOworICAgIG1l
cmdlQ2hhbmdlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1faW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgbWVyZ2VD
aGFuZ2UoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUpOwogCi0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdl
OjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
c2hvdWxkQW50aWFsaWFzKTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290aEZv
bnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250
cyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMs
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsK
LSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAgbWVy
Z2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOworICAgIG1lcmdlQ2hhbmdlKENoYW5n
ZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fc2hvdWxkQW50aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290
aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFNtb290
aEZvbnRzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cywgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcywg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7
CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNlTWFzayk7CiAjaWYgSEFWRShP
U19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlVzZURhcmtBcHBl
YXJhbmNlLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFy
YW5jZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV91c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5k
aWYKIH0KIApAQCAtODgsNyArODcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpkaWRC
ZWdpblRyYW5zcGFyZW5jeUxheWVyKCkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0dDb250ZXh0
QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNldHMgdGhlIENHIGdsb2JhbCBhbHBoYSB0byAxLiBL
ZWVwIG91ciBhbHBoYSBpbiBzeW5jLgotICAgIGFscGhhID0gMTsKKyAgICBtX2FscGhhID0gMTsK
ICNlbmRpZgogfQogCkBAIC05Niw3ICs5NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9yaWdpbmFsT3BhY2l0eSkKIHsKICNpZiBV
U0UoQ0cpCiAgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNldHMgdGhl
IENHIGdsb2JhbCBhbHBoYSB0byAxLiBSZXNvcmUgb3VyIGFscGhhIG5vdy4KLSAgICBhbHBoYSA9
IG9yaWdpbmFsT3BhY2l0eTsKKyAgICBtX2FscGhhID0gb3JpZ2luYWxPcGFjaXR5OwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ob3JpZ2luYWxPcGFjaXR5KTsKICNlbmRpZgpAQCAtMTYwLDMzICsx
NTksMzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlQ2hhbmdlTmFtZShHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlIGNoYW5nZSkKIFRleHRTdHJlYW0mIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGF1dG8gZHVtcCA9IFsmXShDaGFu
Z2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKLSAgICAg
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgIGlmIChtX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCiAgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoc3Rh
dGVDaGFuZ2VOYW1lKGNoYW5nZSksIHRoaXMtPipwcm9wZXJ0eSk7CiAgICAgfTsKIAotICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgY2hhbmdlRmxhZ3MpOworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgbV9jaGFuZ2VGbGFncyk7CiAKLSAgICBkdW1wKENoYW5n
ZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
ZmlsbEJydXNoKTsKLSAgICBkdW1wKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpOworICAgIGR1bXAoQ2hhbmdlOjpG
aWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2Zp
bGxCcnVzaCk7CisgICAgZHVtcChDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUpOwogCi0gICAgZHVtcChDaGFuZ2U6
OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0
cm9rZUJydXNoKTsKLSAgICBkdW1wKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKLSAgICBkdW1wKENo
YW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c3Ryb2tlU3R5bGUpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZUJydXNoKTsKKyAgICBkdW1w
KENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6bV9zdHJva2VUaGlja25lc3MpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VTdHlsZSwg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlKTsK
IAotICAgIGR1bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKLSAgICBkdW1wKENoYW5nZTo6RHJvcFNo
YWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dyk7CisgICAgZHVtcChDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSk7CisgICAgZHVtcChDaGFuZ2U6OkRy
b3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZHJv
cFNoYWRvdyk7CiAKLSAgICBkdW1wKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOwotICAgIGR1bXAoQ2hhbmdlOjpJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5LCAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBkdW1wKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlKTsKKyAg
ICBkdW1wKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV9hbHBoYSk7CisgICAgZHVtcChDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHksICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1faW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSk7CisgICAgZHVtcChDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fdGV4dERyYXdpbmdNb2RlKTsKIAotICAgIGR1bXAo
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaG91bGRBbnRpYWxpYXMpOwotICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250
cywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7
Ci0gICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7Ci0gICAgZHVtcChD
aGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBkdW1wKENoYW5nZTo6RHJhd0x1bWlu
YW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5j
ZU1hc2spOworICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZEFudGlhbGlhcyk7CisgICAgZHVtcChDaGFu
Z2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fc2hvdWxkU21vb3RoRm9udHMpOworICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMsICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwor
ICAgIGR1bXAoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX2RyYXdMdW1pbmFuY2VNYXNrKTsKICNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQotICAgIGR1bXAoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CisgICAgZHVtcChD
aGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6Om1fdXNlRGFya0FwcGVhcmFuY2UpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRzOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dFN0YXRlLmgKaW5kZXggZTgyNTE3ZWJlZTI2NTVmMWMzZmVmNjgyZDNhYTQ2YTE5ZGE3ZTI5Ny4u
NDZiMWE4NmNkODJlMDEyZDk4Yzc1MTg1ZmE4NmE3ZDE2NWY2ZjIxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5o
CkBAIC0zMiw3ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKKyAgICBmcmll
bmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0Q2Fpcm87CitwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBD
aGFuZ2UgOiB1aW50MzJfdCB7CiAgICAgICAgIEZpbGxCcnVzaCAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMCwKICAgICAgICAgRmlsbFJ1bGUgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxLApA
QCAtNTksNDAgKzYxLDY3IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgfTsK
ICAgICB1c2luZyBDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFuZ2U+OwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmID0geyB9KTsK
KyAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIGJhc2ljQ2hhbmdlRmxhZ3MgeyBDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcywgQ2hhbmdlOjpTdHJva2VCcnVzaCwgQ2hhbmdlOjpGaWxsQnJ1
c2ggfTsKIAotICAgIENoYW5nZUZsYWdzIGNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBjaGFuZ2VG
bGFnczsgfQotICAgIHZvaWQgZGlkQXBwbHlDaGFuZ2VzKCkgeyBjaGFuZ2VGbGFncyA9IHsgfTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IENoYW5nZUZs
YWdzJiA9IHsgfSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6
RGVmYXVsdCk7CiAKLSAgICB2b2lkIHNldEZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1
c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZmlsbEJydXNoLCBicnVzaCk7IH0KLSAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZmlsbEJydXNoLCB7IGNvbG9yIH0pOyB9Ci0gICAgdm9pZCBzZXRGaWxsR3JhZGll
bnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNl
VHJhbnNmb3JtKSB7IGZpbGxCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3Bh
Y2VUcmFuc2Zvcm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9Ci0gICAg
dm9pZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IGZpbGxCcnVzaC5z
ZXRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxs
QnJ1c2gpOyB9CisgICAgQ2hhbmdlRmxhZ3MgY2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hh
bmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRpZEFwcGx5Q2hhbmdlcygpIHsgbV9jaGFuZ2VGbGFncyA9
IHsgfTsgfQogCi0gICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBzZXRQ
cm9wZXJ0eShDaGFuZ2U6OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxl
LCBmaWxsUnVsZSk7IH0KKyAgICBjb25zdCBTb3VyY2VCcnVzaCYgZmlsbEJydXNoKCkgY29uc3Qg
eyByZXR1cm4gbV9maWxsQnJ1c2g7IH0KKyAgICB2b2lkIHNldEZpbGxCcnVzaChjb25zdCBTb3Vy
Y2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6bV9maWxsQnJ1c2gsIGJydXNoKTsgfQorICAgIHZvaWQgc2V0RmlsbENv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVzaCwg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCwgeyBjb2xvciB9KTsgfQorICAgIHZv
aWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBtX2ZpbGxCcnVzaC5zZXRHcmFkaWVudChXVEZN
b3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBtX2NoYW5nZUZsYWdzLmFkZChDaGFuZ2U6
OkZpbGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBh
dHRlcm4pIHsgbV9maWxsQnJ1c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgbV9jaGFu
Z2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9CiAKLSAgICB2b2lkIHNldFN0cm9rZUJy
dXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9r
ZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoLCBicnVzaCk7IH0KLSAg
ICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShD
aGFuZ2U6OlN0cm9rZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoLCB7
IGNvbG9yIH0pOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYg
Z3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgc3Ryb2tl
QnJ1c2guc2V0R3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgY2hh
bmdlRmxhZ3MuYWRkKENoYW5nZTo6U3Ryb2tlQnJ1c2gpOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VQ
YXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgc3Ryb2tlQnJ1c2guc2V0UGF0dGVybihX
VEZNb3ZlKHBhdHRlcm4pKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6U3Ryb2tlQnJ1c2gpOyB9
CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxSdWxlOyB9Cisg
ICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0eShDaGFu
Z2U6OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUsIGZpbGxSdWxl
KTsgfQogCi0gICAgdm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNz
KSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgc3Ryb2tlVGhpY2tuZXNzKTsgfQotICAgIHZvaWQgc2V0
U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpTdHJva2VTdHlsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSwgc3Ryb2tl
U3R5bGUpOyB9CisgICAgY29uc3QgU291cmNlQnJ1c2gmIHN0cm9rZUJydXNoKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJva2VCcnVzaDsgfQorICAgIHZvaWQgc2V0U3Ryb2tlQnJ1c2goY29uc3QgU291
cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VCcnVzaCwgYnJ1c2gpOyB9CisgICAgdm9pZCBzZXRT
dHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJv
a2VCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZUJydXNoLCB7IGNvbG9yIH0p
OyB9CisgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgbV9zdHJva2VCcnVzaC5z
ZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBtX2NoYW5nZUZs
YWdzLmFkZChDaGFuZ2U6OlN0cm9rZUJydXNoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVy
bihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3Ryb2tlQnJ1c2guc2V0UGF0dGVybihXVEZN
b3ZlKHBhdHRlcm4pKTsgbV9jaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0K
IAotICAgIHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUp
IHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmNvbXBvc2l0ZU1vZGUsIGNvbXBvc2l0ZU1vZGUpOyB9Ci0gICAgdm9pZCBzZXREcm9wU2hh
ZG93KGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpE
cm9wU2hhZG93LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3csIGRyb3BTaGFkb3cp
OyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VU
aGlja25lc3M7IH0KKyAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCBzdHJva2VUaGlj
a25lc3MpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV9zdHJva2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KIAotICAg
IHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxwaGEpOyB9Ci0gICAgdm9pZCBzZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUo
VGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9k
ZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ry
b2tlU3R5bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VTdHlsZSwg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlLCBzdHJva2VTdHlsZSk7IH0KKwor
ICAgIGNvbnN0IENvbXBvc2l0ZU1vZGUmIGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBt
X2NvbXBvc2l0ZU1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0ZU1vZGUoQ29tcG9zaXRlTW9k
ZSBjb21wb3NpdGVNb2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjptX2NvbXBvc2l0ZU1vZGUsIGNvbXBvc2l0ZU1vZGUpOyB9CisK
KyAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9kcm9w
U2hhZG93OyB9CisgICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRyb3BT
aGFkb3cpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcm9wU2hhZG93LCAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1fZHJvcFNoYWRvdywgZHJvcFNoYWRvdyk7IH0KKworICAgIGZsb2F0IGFscGhhKCkg
Y29uc3QgeyByZXR1cm4gbV9hbHBoYTsgfQorICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEp
IHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2Fs
cGhhLCBhbHBoYSk7IH0KKworICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7
IH0KKyAgICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5LCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgfQorCisgICAg
VGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0RHJhd2luZ01vZGU7IH0KKyAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2lu
Z01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpUZXh0RHJh
d2luZ01vZGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUsIHRleHRE
cmF3aW5nTW9kZSk7IH0KKworICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRBbnRpYWxpYXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29s
IHNob3VsZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZEFudGlhbGlhcywgc2hvdWxkQW50aWFsaWFz
KTsgfQorCisgICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hv
dWxkU21vb3RoRm9udHM7IH0KKyAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hv
dWxkU21vb3RoRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFNtb290aEZvbnRzLCBzaG91bGRTbW9vdGhG
b250cyk7IH0KKworICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IH0KKyAgICB2b2lkIHNldFNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQorCisgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNm
b3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KKyAgICB2
b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjptX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtcyk7IH0KKworICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBjb25zdCB7IHJl
dHVybiBtX2RyYXdMdW1pbmFuY2VNYXNrOyB9CisgICAgdm9pZCBzZXREcmF3THVtaW5hbmNlTWFz
ayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RHJhd0x1bWlu
YW5jZU1hc2ssICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNlTWFzaywgZHJh
d0x1bWluYW5jZU1hc2spOyB9CiAKLSAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNo
b3VsZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsIHNob3VsZEFudGlhbGlhcyk7IH0K
LSAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsg
c2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaG91bGRTbW9vdGhGb250cywgc2hvdWxkU21vb3RoRm9udHMpOyB9Ci0gICAgdm9pZCBz
ZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMs
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCBzaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOyB9Ci0gICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJh
bnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgfQotICAgIHZvaWQg
c2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBzZXRQcm9wZXJ0
eShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdM
dW1pbmFuY2VNYXNrLCBkcmF3THVtaW5hbmNlTWFzayk7IH0KICNpZiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQotICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBw
ZWFyYW5jZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlLCB1c2VEYXJrQXBwZWFyYW5jZSk7IH0K
KyAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV91c2VEYXJrQXBw
ZWFyYW5jZTsgfQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBw
ZWFyYW5jZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fdXNlRGFya0FwcGVhcmFuY2UsIHVzZURhcmtBcHBlYXJhbmNlKTsg
fQogI2VuZGlmCiAgICAgCiAgICAgYm9vbCBjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzKCkgY29u
c3Q7CkBAIC0xMDYsMzEgKzEzNSw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNz
Q29udGV4dFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgQ2hhbmdlRmxhZ3MgY2hhbmdl
RmxhZ3M7Ci0KLSAgICBTb3VyY2VCcnVzaCBmaWxsQnJ1c2ggeyBDb2xvcjo6YmxhY2sgfTsKLSAg
ICBXaW5kUnVsZSBmaWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07Ci0gICAgCi0gICAgU291
cmNlQnJ1c2ggc3Ryb2tlQnJ1c2ggeyBDb2xvcjo6YmxhY2sgfTsKLSAgICBmbG9hdCBzdHJva2VU
aGlja25lc3MgeyAwIH07Ci0gICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9r
ZSB9OwotICAgIAotICAgIENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSB7IENvbXBvc2l0ZU9w
ZXJhdG9yOjpTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCB9OwotICAgIERyb3BTaGFkb3cg
ZHJvcFNoYWRvdzsKLSAgICAKLSAgICBmbG9hdCBhbHBoYSB7IDEgfTsKLSAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvblF1YWxp
dHk6OkRlZmF1bHQgfTsKLSAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUg
eyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgfTsKLQotICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIHsg
dHJ1ZSB9OwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgeyB0cnVlIH07Ci0gICAgYm9vbCBz
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgeyB0cnVlIH07Ci0gICAgYm9vbCBzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzayB7IGZh
bHNlIH07Ci0jaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBib29sIHVzZURhcmtB
cHBlYXJhbmNlIHsgZmFsc2UgfTsKLSNlbmRpZgotICAgIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBjb25zdCBUJiB2YWx1ZSkKQEAgLTE0MCw3ICsx
NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgICAgIHRo
aXMtPipwcm9wZXJ0eSA9IHZhbHVlOwotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsK
KyAgICAgICAgbV9jaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgpAQCAtMTUxLDQxICsxNTUsNjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybjsKICNlbmRpZgogICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBXVEZNb3ZlKHZhbHVl
KTsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CisgICAgICAgIG1fY2hhbmdlRmxh
Z3MuYWRkKGNoYW5nZSk7CiAgICAgfQorCisgICAgQ2hhbmdlRmxhZ3MgbV9jaGFuZ2VGbGFnczsK
KworICAgIFNvdXJjZUJydXNoIG1fZmlsbEJydXNoIHsgQ29sb3I6OmJsYWNrIH07CisgICAgV2lu
ZFJ1bGUgbV9maWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07CisgICAgCisgICAgU291cmNl
QnJ1c2ggbV9zdHJva2VCcnVzaCB7IENvbG9yOjpibGFjayB9OworICAgIGZsb2F0IG1fc3Ryb2tl
VGhpY2tuZXNzIHsgMCB9OworICAgIFN0cm9rZVN0eWxlIG1fc3Ryb2tlU3R5bGUgeyBTb2xpZFN0
cm9rZSB9OworICAgIAorICAgIENvbXBvc2l0ZU1vZGUgbV9jb21wb3NpdGVNb2RlIHsgQ29tcG9z
aXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRHJvcFNo
YWRvdyBtX2Ryb3BTaGFkb3c7CisgICAgCisgICAgZmxvYXQgbV9hbHBoYSB7IDEgfTsKKyAgICBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgeyBJbnRlcnBv
bGF0aW9uUXVhbGl0eTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1fdGV4
dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07CisKKyAgICBib29sIG1fc2hv
dWxkQW50aWFsaWFzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRTbW9vdGhGb250cyB7IHRy
dWUgfTsKKyAgICBib29sIG1fc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2RyYXdMdW1pbmFuY2VNYXNrIHsgZmFsc2UgfTsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQ
T1JUKQorICAgIGJvb2wgbV91c2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNlIH07CisjZW5kaWYKIH07
CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBhdXRvIGVuY29kZSA9IFsmXShD
aGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKLSAg
ICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgIGlmIChtX2No
YW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCiAgICAgICAgICAgICBlbmNvZGVyIDw8IHRoaXMt
Pipwcm9wZXJ0eTsKICAgICB9OwogCi0gICAgZW5jb2RlciA8PCBjaGFuZ2VGbGFnczsKKyAgICBl
bmNvZGVyIDw8IG1fY2hhbmdlRmxhZ3M7CiAKLSAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsQnJ1c2gs
ICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCk7
Ci0gICAgZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RmlsbEJy
dXNoLCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxC
cnVzaCk7CisgICAgZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxSdWxlKTsKIAotICAgIGVuY29kZShDaGFu
Z2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c3Ryb2tlQnJ1c2gpOwotICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKLSAg
ICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VC
cnVzaCwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tl
QnJ1c2gpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlja25lc3MpOworICAgIGVuY29k
ZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9zdHJva2VTdHlsZSk7CiAKLSAgICBlbmNvZGUoQ2hhbmdlOjpDb21wb3NpdGVN
b2RlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1v
ZGUpOwotICAgIGVuY29kZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdyk7CisgICAgZW5jb2RlKENoYW5nZTo6
Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpt
X2NvbXBvc2l0ZU1vZGUpOworICAgIGVuY29kZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcm9wU2hhZG93KTsKIAotICAg
IGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6YWxwaGEpOwotICAgIGVuY29kZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSk7Ci0gICAgZW5jb2RlKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworICAgIGVu
Y29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV9hbHBoYSk7CisgICAgZW5jb2RlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSwgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpOworICAgIGVuY29kZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUpOwogCi0g
ICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOwotICAgIGVuY29kZShDaGFuZ2U6OlNo
b3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hv
dWxkU21vb3RoRm9udHMpOwotICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKLSAg
ICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpT
aG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
c2hvdWxkQW50aWFsaWFzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9udHMp
OworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworICAg
IGVuY29kZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgZW5jb2RlKENo
YW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX2RyYXdMdW1pbmFuY2VNYXNrKTsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JU
KQotICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpOworICAgIGVuY29kZShDaGFu
Z2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bV91c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIApAQCAtMTkzLDcgKzIyMiw3IEBA
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0
YXRlPiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgYXV0byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBDaGFuZ2Ug
Y2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKLSAgICAgICAg
aWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICBpZiAoIXN0
YXRlLmNoYW5nZXMoKS5jb250YWlucyhjaGFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVm
ZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4oKS4qcHJv
cGVydHkpPjo6dHlwZTsKQEAgLTIxMyw0MiArMjQyLDQyIEBAIHN0ZDo6b3B0aW9uYWw8R3JhcGhp
Y3NDb250ZXh0U3RhdGU+IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBzdGF0ZSgqY2hhbmdlRmxhZ3MpOwogCi0g
ICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCkpCisgICAgaWYgKCFkZWNvZGUoc3Rh
dGUsIENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1fZmlsbEJydXNoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBp
ZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBD
aGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjptX2ZpbGxSdWxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICgh
ZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENo
YW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fc3Ryb2tlQnJ1c2gpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICgh
ZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpKQorICAgIGlmICghZGVjb2RlKHN0YXRl
LCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX3N0cm9rZVRoaWNrbmVzcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKSkKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9zdHJva2VTdHlsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkpCisgICAgaWYgKCFkZWNv
ZGUoc3RhdGUsIENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgIGlmICghZGVj
b2RlKHN0YXRlLCBDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX2Ryb3BTaGFkb3cpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKSkKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9hbHBoYSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKQorICAgIGlmICgh
ZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjptX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlRleHRE
cmF3aW5nTW9kZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2lu
Z01vZGUpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3RleHREcmF3aW5nTW9kZSkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hh
bmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
c2hvdWxkQW50aWFsaWFzKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRB
bnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRBbnRp
YWxpYXMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cykpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5n
ZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
c2hvdWxkU21vb3RoRm9udHMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlm
ICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKQorICAgIGlm
ICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaGFk
b3dzSWdub3JlVHJhbnNmb3JtcywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNlTWFzaykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAoIWRlY29kZShzdGF0
ZSwgQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6
OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Vz
ZURhcmtBcHBlYXJhbmNlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCAyZGE0OTFmZDg3ZjZjZmJiMzNlNDdkOTgxMjMzN2Jm
MjE1OGY2ZGUxLi41OTAwNmNmZWYzYjJiMDNjZTQ4NzMwNDJkZGEyMDFlYzQzMjllMmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU1NiwxMCArNTU2LDEwIEBAIGJvb2wgaXNBY2NlbGVyYXRl
ZENvbnRleHQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKIH0gLy8gbmFt
ZXNwYWNlIFN0YXRlCiAKIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCi0gICAgLCBm
aWxsUnVsZShzdGF0ZS5maWxsUnVsZSkKKyAgICA6IGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKCkp
CisgICAgLCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSgpKQogewotICAgIGlmIChhdXRvIGZpbGxQ
YXR0ZXJuID0gc3RhdGUuZmlsbEJydXNoLnBhdHRlcm4oKSkgeworICAgIGlmIChhdXRvIGZpbGxQ
YXR0ZXJuID0gc3RhdGUuZmlsbEJydXNoKCkucGF0dGVybigpKSB7CiAgICAgICAgIHBhdHRlcm4u
b2JqZWN0ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZp
bmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IGZpbGxQYXR0
ZXJuLT50aWxlSW1hZ2UoKTsKQEAgLTU2NywzNCArNTY3LDM0IEBAIEZpbGxTb3VyY2U6OkZpbGxT
b3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICBwYXR0ZXJu
LnRyYW5zZm9ybSA9IGZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKICAgICAg
ICAgcGF0dGVybi5yZXBlYXRYID0gZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKICAgICAgICAgcGF0
dGVybi5yZXBlYXRZID0gZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKGF1
dG8gZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50KCkpIHsKLSAgICAgICAg
Z3JhZGllbnQuYmFzZSA9IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5maWxs
QnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8gZmls
bEdyYWRpZW50ID0gc3RhdGUuZmlsbEJydXNoKCkuZ3JhZGllbnQoKSkgeworICAgICAgICBncmFk
aWVudC5iYXNlID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxCcnVz
aCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlmIChzdGF0ZS5hbHBoYSAh
PSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IGZpbGxHcmFkaWVudC0+
Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSwgc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VU
cmFuc2Zvcm0oKSk7CisgICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gZmlsbEdy
YWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKCksIHN0YXRlLmZpbGxCcnVzaCgpLmdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbG9yID0gc3Rh
dGUuZmlsbEJydXNoLmNvbG9yKCk7CisgICAgICAgIGNvbG9yID0gc3RhdGUuZmlsbEJydXNoKCku
Y29sb3IoKTsKIH0KIAogU3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlKQogICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCiB7Ci0g
ICAgaWYgKGF1dG8gc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkK
KyAgICBpZiAoYXV0byBzdHJva2VQYXR0ZXJuID0gc3RhdGUuc3Ryb2tlQnJ1c2goKS5wYXR0ZXJu
KCkpCiAgICAgICAgIHBhdHRlcm4gPSBhZG9wdFJlZihzdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKLSAgICBlbHNlIGlmIChhdXRvIHN0cm9r
ZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnQoKSkgewotICAgICAgICBncmFk
aWVudC5iYXNlID0gc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuc3Ryb2tl
QnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICBlbHNlIGlmIChhdXRvIHN0cm9r
ZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlQnJ1c2goKS5ncmFkaWVudCgpKSB7CisgICAgICAgIGdy
YWRpZW50LmJhc2UgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5zdHJv
a2VCcnVzaCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGlmIChzdGF0ZS5h
bHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0cm9rZUdy
YWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5zdHJva2VCcnVzaC5ncmFk
aWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3Rl
ZCA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKCksIHN0YXRlLnN0
cm9rZUJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgY29sb3IgPSBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpOworICAgICAgICBjb2xvciA9IHN0
YXRlLnN0cm9rZUJydXNoKCkuY29sb3IoKTsKIH0KIAogU2hhZG93U3RhdGU6OlNoYWRvd1N0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKLSAgICA6IG9mZnNldChzdGF0ZS5k
cm9wU2hhZG93Lm9mZnNldCkKLSAgICAsIGJsdXIoc3RhdGUuZHJvcFNoYWRvdy5ibHVyUmFkaXVz
KQotICAgICwgY29sb3Ioc3RhdGUuZHJvcFNoYWRvdy5jb2xvcikKLSAgICAsIGlnbm9yZVRyYW5z
Zm9ybXMoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCi0gICAgLCBnbG9iYWxBbHBoYShz
dGF0ZS5hbHBoYSkKLSAgICAsIGdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yKHN0YXRlLmNvbXBvc2l0
ZU1vZGUub3BlcmF0aW9uKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3coKS5vZmZzZXQp
CisgICAgLCBibHVyKHN0YXRlLmRyb3BTaGFkb3coKS5ibHVyUmFkaXVzKQorICAgICwgY29sb3Io
c3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yKQorICAgICwgaWdub3JlVHJhbnNmb3JtcyhzdGF0ZS5z
aGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKQorICAgICwgZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEo
KSkKKyAgICAsIGdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yKHN0YXRlLmNvbXBvc2l0ZU1vZGUoKS5v
cGVyYXRpb24pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBjOWJk
ZGM4MGM0MGI4NTJiMTEwMjY1M2RmZmMzMDBjYjI5Nzk3N2Y5Li5jMjI4Y2E3NGRiNDBmYWE2Yzg2
M2QwOWY5YzU3M2I0MmI2YThhMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBA
IC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd1JlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MKIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
YXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3UGxhdGZvcm1JbWFn
ZSgqdGhpcywgbmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRl
LmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRm
b3JtSW1hZ2UoKnRoaXMsIG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgp
IH0sIHN0YXRlLmFscGhhKCksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBU
aGlzIGlzIG9ubHkgdXNlZCB0byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBz
aGFkb3dzLgpAQCAtMjgzLDI2ICsyODMsMjYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6
dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpk
aWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0
YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJv
a2VUaGlja25lc3MpKQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcygq
dGhpcywgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRT
dHJva2VUaGlja25lc3MoKnRoaXMsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpKTsKIAogICAgIGlm
IChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6
U3Ryb2tlU3R5bGUpKQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVN0eWxlKCp0aGlz
LCBzdGF0ZS5zdHJva2VTdHlsZSk7CisgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U3Ryb2tlU3R5
bGUoKnRoaXMsIHN0YXRlLnN0cm9rZVN0eWxlKCkpOwogCiAgICAgLy8gRklYTUU6IG1fc3RhdGUg
c2hvdWxkIG5vdCBiZSBjaGFuZ2VkIHRvIGZsaXAgdGhlIHNoYWRvdyBvZmZzZXQuIFRoaXMgY2Fu
IGhhcHBlbiB3aGVuIHRoZSBzaGFkb3cgaXMgYXBwbGllZCB0byB0aGUgcGxhdGZvcm0gY29udGV4
dC4KICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OkRyb3BTaGFkb3cpKSB7CiAgICAgICAgIGlmIChzdGF0ZS5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcykgewogICAgICAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3Mg
Y29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAg
ICAgICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBo
YXZlIG9wcG9zaXRlIFkgYXhpcwotICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3Rh
dGUuZHJvcFNoYWRvdy5vZmZzZXQ7Ci0gICAgICAgICAgICBtX3N0YXRlLmRyb3BTaGFkb3cub2Zm
c2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9Owor
ICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJvcFNoYWRvdygpLm9mZnNl
dDsKKyAgICAgICAgICAgIG1fc3RhdGUubV9kcm9wU2hhZG93Lm9mZnNldCA9IHsgc2hhZG93T2Zm
c2V0LndpZHRoKCksIC1zaGFkb3dPZmZzZXQuaGVpZ2h0KCkgfTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUu
Y29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBv
c2l0ZU9wZXJhdGlvbigqdGhpcywgc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbiwgc3Rh
dGUuY29tcG9zaXRlTW9kZSgpLmJsZW5kTW9kZSk7CiAKICAgICBpZiAoc3RhdGUuY2hhbmdlcygp
LmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykp
Ci0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hvdWxkQW50aWFsaWFzKCp0aGlzLCBzdGF0ZS5z
aG91bGRBbnRpYWxpYXMpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNob3VsZEFudGlhbGlh
cygqdGhpcywgc3RhdGUoKS5zaG91bGRBbnRpYWxpYXMoKSk7CiAKICAgICBzdGF0ZS5kaWRBcHBs
eUNoYW5nZXMoKTsKIH0KQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENh
aXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgq
CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3R2x5cGhz
KCp0aGlzLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3VyY2Uoc3Rh
dGUpLAogICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9u
dCwgc3ludGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCi0gICAgICAgIHN0
YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hh
ZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwKKyAgICAgICAgc3RhdGUudGV4dERy
YXdpbmdNb2RlKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5kcm9wU2hhZG93KCku
b2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsCiAgICAgICAgIGZvbnRTbW9vdGhpbmcp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmRhZWQ5ZjE3ZTQwYTMyMWYyZDA0YWY3MTAy
ODBjYzliYzA3OTcyMC4uNzJkZTRhZWVmNTMwNjUyZmNkMzQwNDA3MGFjNTQwNmViMmJmYTI4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcApAQCAtNjAsOSArNjAsOSBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFu
c2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICByZXR1cm4g
Q0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQoQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmlu
ZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRCYXNlQ1RNKGNvbnRleHQpKSk7CiB9CiAKLXN0
YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBjb3JlSW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRl
cnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KQorc3RhdGljIEludGVycG9sYXRpb25RdWFsaXR5IGNv
cmVJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBzd2l0
Y2ggKHF1YWxpdHkpIHsKKyAgICBzd2l0Y2ggKENHQ29udGV4dEdldEludGVycG9sYXRpb25RdWFs
aXR5KGNvbnRleHQpKSB7CiAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uRGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0OwogICAgIGNhc2Uga0NHSW50
ZXJwb2xhdGlvbk5vbmU6CkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIHZvaWQgc2V0Q0dCbGVu
ZE1vZGUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUKIH0KIAogR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKENHQ29udGV4dFJl
ZiBjZ0NvbnRleHQpCi0gICAgOiBHcmFwaGljc0NvbnRleHQoeyBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9r
ZUJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MgfSkK
KyAgICA6IEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHRTdGF0ZTo6YmFzaWNDaGFuZ2VG
bGFncywgY29yZUludGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKSkKIHsKICAg
ICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkzLDcgKzE5Myw2IEBAIEdy
YXBoaWNzQ29udGV4dENHOjpHcmFwaGljc0NvbnRleHRDRyhDR0NvbnRleHRSZWYgY2dDb250ZXh0
KQogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoY2dDb250
ZXh0KTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBv
dXIgc3RhdGUuCiAgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7Ci0gICAgbV9zdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5ID0gY29yZUludGVycG9sYXRpb25RdWFsaXR5KENHQ29udGV4
dEdldEludGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKSk7CiB9CiAKIEdyYXBo
aWNzQ29udGV4dENHOjp+R3JhcGhpY3NDb250ZXh0Q0coKQpAQCAtMTA4NCw0MyArMTA4Myw0MyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUpCiAgICAgZm9yIChhdXRvIGNoYW5nZSA6IHN0YXRlLmNoYW5nZXMoKSkgewog
ICAgICAgICBzd2l0Y2ggKGNoYW5nZSkgewogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaDoKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRl
eHQsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpKTsKKyAgICAgICAgICAgIHNldENHRmlsbENvbG9y
KGNvbnRleHQsIHN0YXRlLmZpbGxCcnVzaCgpLmNvbG9yKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlj
a25lc3M6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjpt
YXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNl
dExpbmVXaWR0aChjb250ZXh0LCBzdGQ6Om1heChzdGF0ZS5zdHJva2VUaGlja25lc3MoKSwgMC5m
KSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoOgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tl
Q29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihzdGF0ZS5zdHJva2VCcnVzaC5j
b2xvcigpKS5nZXQoKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhD
b2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUJydXNoKCkuY29sb3IoKSku
Z2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlOgotICAgICAgICAgICAgc2V0Q0dCbGVuZE1v
ZGUoY29udGV4dCwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0
ZU1vZGUuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIHNldENHQmxlbmRNb2RlKGNvbnRleHQsIHN0
YXRlLmNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUoKS5ibGVu
ZE1vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93OgotICAgICAgICAgICAgc2V0Q0dTaGFkb3coY29u
dGV4dCwgcmVuZGVyaW5nTW9kZSgpLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJv
cFNoYWRvdy5ibHVyUmFkaXVzLCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBzdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyk7CisgICAgICAgICAgICBzZXRDR1NoYWRvdyhjb250ZXh0LCByZW5k
ZXJpbmdNb2RlKCksIHN0YXRlLmRyb3BTaGFkb3coKS5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3co
KS5ibHVyUmFkaXVzLCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsIHN0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYToKLSAgICAgICAgICAgIENHQ29udGV4dFNl
dEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldEFs
cGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5OgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoY29u
dGV4dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250
ZXh0LCBjZ0ludGVycG9sYXRpb25RdWFsaXR5KHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGU6Ci0gICAgICAgICAgICBDR0NvbnRleHRT
ZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERy
YXdpbmdNb2RlKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29u
dGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKCkpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6U2hvdWxkQW50aWFsaWFzOgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFs
aWFzKGNvbnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAgICAgICBDR0NvbnRl
eHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgc3RhdGUuc2hvdWxkQW50aWFsaWFzKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250czoKLSAgICAgICAgICAgIENHQ29udGV4dFNldFNob3Vs
ZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKKyAgICAgICAg
ICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNt
b290aEZvbnRzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKQEAg
LTExNTUsNyArMTE1NCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAgICBhdXRvIGxh
eWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXpl
LCAwKSk7CiAKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVy
R2V0Q29udGV4dChsYXllci5nZXQoKSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZVRoaWNr
bmVzcyA9IGxpbmVXaWR0aDsKICAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChsYXll
ckNvbnRleHQsIGxpbmVXaWR0aCk7CiAKICAgICAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIHRo
ZSBsaW5lIHdpZHRoLCBvdGhlcndpc2UgdGhlIGxheWVyJ3MgdG9wLWxlZnQgY29ybmVyIHdvdWxk
IGJlCkBAIC0xNDg4LDcgKzE0ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphZGREZXN0
aW5hdGlvbkF0UG9pbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGbG9hdFBvaQogCiBib29s
IEdyYXBoaWNzQ29udGV4dENHOjpjYW5Vc2VTaGFkb3dCbHVyKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gKHJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSAmJiBo
YXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Cisg
ICAgcmV0dXJuIChyZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0
LmNwcAppbmRleCBkMGJlYzhkNjM4NDcwOWI3OGNmMWRlODBiYjAyZTFlMzdkMmY5NDZlLi5hMWFl
ZmQwNzAyZmFkNDdmOTE5ZGJhODJmNjIzNTZmMjA1MTU1NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3Jl
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC05NiwxMyArOTYsMTMgQEAgRHJhd0ds
eXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwg
RGVjb25zdHJ1Y3REcmF3R2wKIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50
ZXJuYWxTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlKQogewot
ICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2ggPSBjb250ZXh0U3RhdGUuZmlsbEJydXNoOwot
ICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVz
aDsKKyAgICBtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoID0gY29udGV4dFN0YXRlLmZpbGxCcnVz
aCgpOworICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJv
a2VCcnVzaCgpOwogCiAgICAgbV9vcmlnaW5hbFN0YXRlLmN0bSA9IG1fb3duZXIuZ2V0Q1RNKCk7
IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCiAKLSAgICBtX29yaWdpbmFsU3RhdGUuZHJv
cFNoYWRvdyA9IGNvbnRleHRTdGF0ZS5kcm9wU2hhZG93OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5p
Z25vcmVUcmFuc2Zvcm1zID0gY29udGV4dFN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwor
ICAgIG1fb3JpZ2luYWxTdGF0ZS5kcm9wU2hhZG93ID0gY29udGV4dFN0YXRlLmRyb3BTaGFkb3co
KTsKKyAgICBtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5z
aGFkb3dzSWdub3JlVHJhbnNmb3JtcygpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbnRl
eHRTdGF0ZSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9w
dWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbgogICAg
IG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFs
U3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7CiAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldERyb3BT
aGFkb3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cpOwogCi0gICAgbV9pbnRlcm5hbENvbnRl
eHQtPnNldFRleHREcmF3aW5nTW9kZShjb250ZXh0U3RhdGUudGV4dERyYXdpbmdNb2RlKTsKKyAg
ICBtX2ludGVybmFsQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHRTdGF0ZS50ZXh0
RHJhd2luZ01vZGUoKSk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwcmVwYXJlSW50
ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGlu
Z01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAyYjAzY2U0YTY2ZTJkOGFhMGZh
ZDgxYTY0NGFlYjFlZGZkZTFjODgxLi4yYjRlNDM3ZDZjNTFkMTYyYTZiODEzZjQ1ZTA2ZGYyNzMx
ZDI4MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgYm9v
bCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVt
SGFuZGxlIGl0ZW0pCiAgICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQ
bGF0Zm9ybU9wZXJhdGlvbnMpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0g
PSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93LCBv
bmx5IGRyb3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0
Zm9ybS1zcGVjaWZpYy4KLSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5jaGFuZ2VG
bGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMpCisgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlKCkuY2hhbmdlcygpID09
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggOTM5NDU1
MWYzNTllYzFhZjRlYTkyYzdiM2IxNjg0ZWQyZWVkYTYxNi4uMzRmNmYyMTNkM2E3YmU0OWM3MjVh
M2NiNGRiNWMyYTNhZjczOTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5j
eUxheWVyKCkKICAgICByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fc3RhdGVT
dGFjay5yZW1vdmVMYXN0KCk7CiAKLSAgICBtX3N0YXRlLmRpZEVuZFRyYW5zcGFyZW5jeUxheWVy
KGN1cnJlbnRTdGF0ZSgpLnN0YXRlLmFscGhhKTsKKyAgICBtX3N0YXRlLmRpZEVuZFRyYW5zcGFy
ZW5jeUxheWVyKGN1cnJlbnRTdGF0ZSgpLnN0YXRlLmFscGhhKCkpOwogfQogCiB2b2lkIFJlY29y
ZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBmM2M4Yzkw
Y2Q4OGJiZTBjNTFlMWQ0ZmExMzNjNTFlODNiODBiMzliLi43OWEwYTg1MDBhMjNjZjNmZGZkOGNk
MTRlN2I0N2FjMjJiMDM2NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwCkBAIC05NywxMCArOTcsMTAgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVu
dGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5zdHJva2VC
cnVzaC5wYXR0ZXJuKCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRl
cm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuc3Ryb2tlQnJ1c2goKS5wYXR0ZXJuKCkp
KQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAotICAgIGlmIChhdXRvIGltYWdl
SWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuZmls
bEJydXNoLnBhdHRlcm4oKSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0
dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5maWxsQnJ1c2goKS5wYXR0ZXJuKCkp
KQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAogICAgIHNldFN0YXRlSXRlbS5h
cHBseShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMTQxNjlhMDc1NThkNjE2YjA5MjBjYjA1N2RjOGVi
MWMyYTU4OGIwMy4uYzIxY2QwZTRkNTI3YTNjYzEyMDJiZjZmY2Y3ZWQyMWFmZjkzZDVmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRV
cGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlVGhpY2tuZXNz
Q2hhbmdlPihzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0ZS5zdHJva2VUaGlja25lc3MoKSkpOwog
ICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUpKSB7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8U3Ryb2tlU3R5bGVDaGFuZ2U+KHN0YXRlLnN0cm9rZVN0eWxlKSk7CisgICAg
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFN0cm9rZVN0eWxlQ2hhbmdlPihzdGF0ZS5zdHJva2VT
dHlsZSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlKSkgewpAQCAtMTM1LDcgKzEz
NSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAg
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUu
Y29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKSk7
CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4o
c3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLmJs
ZW5kTW9kZSkpOwogICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzKSkgewpAQCAtMTUzLDcg
KzE1Myw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlhbGlhc0NoYW5nZT4oc3RhdGUu
c2hvdWxkQW50aWFsaWFzKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3VsZEFu
dGlhbGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFsaWFzKCkpKTsKICAgICB9CiAKICAgICBz
dGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQm
IGdyYWRpZW50KQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0g
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBh
dHRlcm4oMS4wLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkpOwor
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBncmFkaWVudC5jcmVhdGVQ
YXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkp
OwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLAogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0
YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGNvbG9yLCBj
b21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBz
dGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5k
PEZpbGxSZWN0PihyZWN0LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbikp
OwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRS
ZWN0CiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwgc3Rh
dGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSb3VuZGVkUmVjdD4ocm91
bmRlZFJlY3QsIGNvbG9yLCBzdGF0ZS5jb21wb3NpdGVNb2RlKCkub3BlcmF0aW9uLCBibGVuZE1v
ZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yKQpAQCAtNTM0LDggKzUzNCw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoCiAgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0dseXBocz4oQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBD
YWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSwgcG9pbnQsCiAgICAgICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250LnBs
YXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSksCi0gICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9m
ZnNldCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdN
b2RlLAotICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zm
c2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBmb250U21vb3RoaW5nKSk7CisgICAgICAgIGZv
bnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwg
c3RhdGUudGV4dERyYXdpbmdNb2RlKCksCisgICAgICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygp
LCBzdGF0ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsIGZv
bnRTbW9vdGhpbmcpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBD
YWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2
ZUltYWdlLCBjb25zdCBGbG8KIAogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1
dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3
TmF0aXZlSW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAg
IGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4obmF0aXZlSW1hZ2UucGxhdGZv
cm1JbWFnZSgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9u
cywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKSwgc3RhdGUuYWxwaGEoKSwgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAg
LTYwMSw3ICs2MDEsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZQogICAgIH07CiAKICAgICBh
dXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJh
d1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCksIHN0
YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKSk7CisgICAgYXBwZW5k
KGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmls
bEJydXNoKCkuY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUoKSwgc3RhdGUuc3Ryb2tlQnJ1c2go
KS5jb2xvcigpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUo
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCkBAIC02
MjQsNyArNjI0LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZShjb25z
dCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPERyYXdMaW5lPihwb2ludDEsIHBvaW50Miwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0
cm9rZUJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hvdWxkQW50
aWFsaWFzKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9p
bnQyLCBzdGF0ZS5zdHJva2VTdHlsZSgpLCBzdGF0ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCksIHN0
YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMoKSkpOwogfQogCiB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJv
b2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5kZXJsaW5lcywgU3Ryb2tlU3R5bGUpCkBAIC02NDcs
NyArNjQ3LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5k
PERyYXdMaW5lc0ZvclRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRv
dWJsZVVuZGVybGluZXMsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpKTsKKyAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxEcmF3TGluZXNGb3JUZXh0Pihwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMs
IHByaW50aW5nLCBkb3VibGVVbmRlcmxpbmVzLCBzdGF0ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCkp
KTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50
TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5
bGUpCkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRl
ID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4o
cmVjdCwgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5z
dHJva2VCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsKKyAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbEJydXNoKCkuY29sb3Io
KSwgc3RhdGUuc3Ryb2tlU3R5bGUoKSwgc3RhdGUuc3Ryb2tlQnJ1c2goKS5jb2xvcigpLCBzdGF0
ZS5zdHJva2VUaGlja25lc3MoKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNl
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4
IDllMzc4NmUwZmRjZGI4OWZiMDY2MjhjOGZjYzZkYzg3Yjc3YzNlOWUuLjlhMjM5ZTY0MjVmZDM5
YzRiYzgxMzRmNWQ1MTk1YmRkYTFkNmFkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKQEAgLTEyOCwxMCArMTI4LDEwIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6
c2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYgaXRlbSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfTsKIAotICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlKCku
ZmlsbEJydXNoLnBhdHRlcm4oKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0u
c3RhdGUoKS5maWxsQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZSgpLnN0cm9rZUJydXNoLnBhdHRlcm4o
KSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5zdHJva2VCcnVz
aCgpLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGhhbmRsZUl0ZW0oV1RGTW92
ZShpdGVtKSk7Cg==
</data>
<flag name="commit-queue"
          id="483316"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455349</attachid>
            <date>2022-03-22 01:51:51 -0700</date>
            <delta_ts>2022-03-22 02:34:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238192-20220322015150.patch</filename>
            <type>text/plain</type>
            <size>74839</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiNGM3Y2VkODZmNjlm
Njk2N2E3NjBiMzBiOGQzMzU2NjY5MGYzZS4uODFjMzA1N2VkNmMyZDU4ZmU3NzAzYWYxZDFlYWI1
Yjg3NWE3MmY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wMy0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgdGhlIG1lbWJlcnMgYmUg
cHJpdmF0ZSBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgZ2V0dGVycyBmb3IKKyAgICAgICAgYWxsIG9m
IHRoZW0uIFRoaXMgY2hhbmdlIHdpbGwgcHJldmVudCBjaGFuZ2luZyB0aGUgbWVtYmVycyB3aXRo
b3V0IGdvaW5nCisgICAgICAgIHRocm91Z2ggdGhlIHNldHRlcnMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxs
Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJ1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0ZU1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnRleHREcmF3aW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRBbnRpYWxpYXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRTbW9vdGhGb250cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0x1bWluYW5jZU1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRp
ZEVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpjaGFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkaWRBcHBseUNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OmZpbGxCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OmZpbGxSdWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldENvbXBv
c2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BT
aGFkb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmFs
cGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRB
bHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkQW50
aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRT
bW9vdGhGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2V0U2hvdWxkU21vb3RoRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFVzZURhcmtB
cHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWlybzo6U3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlOjpTaGFkb3dTdGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcmVJbnRl
cnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6
OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpz
dHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpjYW5Vc2VT
aGFkb3dCbHVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5
cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjphcHBseVNldFN0YXRlSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNv
c2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChOaWNv
c2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAo
Tmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QpOgorICAgICAgICAo
Tmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUpOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAg
IChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxsaXBzZSk6CisKIDIwMjIt
MDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdl
cyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDkwM2NlYTE4NGQ0OTlkZmNhZWMw
MzdhMjQzZDFlMGE2MDY3YWEzZS4uZDZjZjdhYjlkZjkyODY0MjE4NWY0NGMwOTk1N2FlNzhiNzRm
YjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0yMiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3Jh
cGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
OjpzZXRTdGF0ZSk6CisKIDIwMjItMDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRl
IGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4
IDllNGQwNjZiMDM5YjZkNWZlNGM1MmNkNWFhNDk3ZDQyOTlhNmZiMWIuLmFjMzNmM2QzMTIzZmM1
ODE0NGQ3YmJiOTdkN2FkZDYxMzc1YzM5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNDMsOCArNDMsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgY2hhbmdlRmxhZ3MpCi0g
ICAgOiBtX3N0YXRlKGNoYW5nZUZsYWdzKQorR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRl
eHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiBjaGFuZ2VGbGFncywg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkKKyAgICA6IG1f
c3RhdGUoY2hhbmdlRmxhZ3MsIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggMTNjYzNiMDM3NzkxMTY2ZjkzYzI2ZWE4MmU4MWQ3NmU0NjFiNDBjNi4uZWQwZmVmYzU1
YTgzMTMxZDE3MDlmN2Q3ZDRkYTQxZGQ0OWUzZGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTY1LDcgKzY1LDcgQEAg
c3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHcmFwaGljc0NvbnRleHQpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRl
eHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiA9IHsgfSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2VGbGFncyYgPSB7IH0sIEludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlv
blF1YWxpdHk6OkRlZmF1bHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkdyYXBoaWNz
Q29udGV4dCgpOwogCiAgICAgdmlydHVhbCBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03OSwzNiArNzksMzYgQEAgcHVibGljOgogCiAgICAgLy8g
Q29udGV4dCBTdGF0ZQogCi0gICAgY29uc3QgU291cmNlQnJ1c2gmIGZpbGxCcnVzaCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoOyB9Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLmNvbG9yKCk7IH0KLSAgICBHcmFk
aWVudCogZmlsbEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guZ3Jh
ZGllbnQoKTsgfQotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VU
cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNl
VHJhbnNmb3JtKCk7IH0KLSAgICBQYXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuZmlsbEJydXNoLnBhdHRlcm4oKTsgfQorICAgIGNvbnN0IFNvdXJjZUJydXNoJiBm
aWxsQnJ1c2goKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaCgpOyB9CisgICAgY29u
c3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGxCcnVzaCgpLmNvbG9yKCk7
IH0KKyAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gZmlsbEJydXNo
KCkuZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBmaWxsQnJ1c2goKS5ncmFkaWVudFNwYWNl
VHJhbnNmb3JtKCk7IH0KKyAgICBQYXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJu
IGZpbGxCcnVzaCgpLnBhdHRlcm4oKTsgfQogICAgIHZvaWQgc2V0RmlsbEJydXNoKGNvbnN0IFNv
dXJjZUJydXNoJiBicnVzaCkgeyBtX3N0YXRlLnNldEZpbGxCcnVzaChicnVzaCk7IGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKSB7IG1fc3RhdGUuc2V0RmlsbENvbG9yKGNvbG9yKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSk7IH0KICAgICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0ZS5z
ZXRGaWxsR3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7IH0KICAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJu
PiYmIHBhdHRlcm4pIHsgbV9zdGF0ZS5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsg
ZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUnVsZTsgfQorICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUnVsZSgpOyB9CiAgICAgdm9pZCBzZXRGaWxsUnVs
ZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLnNldEZpbGxSdWxlKGZpbGxSdWxlKTsgZGlk
VXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGNvbnN0IFNvdXJjZUJydXNoJiBzdHJva2VC
cnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2g7IH0KLSAgICBjb25zdCBD
b2xvciYgc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmNv
bG9yKCk7IH0KLSAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50KCk7IH0KLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHN0cm9rZUdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKTsgfQotICAgIFBhdHRlcm4qIHN0
cm9rZVBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLnBhdHRlcm4o
KTsgfQorICAgIGNvbnN0IFNvdXJjZUJydXNoJiBzdHJva2VCcnVzaCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuc3Ryb2tlQnJ1c2goKTsgfQorICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkuY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBz
dHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkuZ3JhZGllbnQoKTsg
fQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
OyB9CisgICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJy
dXNoKCkucGF0dGVybigpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VC
cnVzaCYgYnJ1c2gpIHsgbV9zdGF0ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0
YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpIHsgbV9zdGF0ZS5zZXRTdHJva2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3Rh
dGUpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGll
bnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0
ZS5zZXRTdHJva2VHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBk
aWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8
UGF0dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3RhdGUuc2V0U3Ryb2tlUGF0dGVybihXVEZNb3ZlKHBh
dHRlcm4pKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGZsb2F0IHN0cm9rZVRo
aWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOyB9CisgICAg
ZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlj
a25lc3MoKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykg
eyBtX3N0YXRlLnNldFN0cm9rZVRoaWNrbmVzcyh0aGlja25lc3MpOyBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlKTsgfQogCi0gICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLnN0cm9rZVN0eWxlOyB9CisgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxlKCk7IH0KICAgICB2b2lkIHNldFN0cm9r
ZVN0eWxlKFN0cm9rZVN0eWxlIHN0eWxlKSB7IG1fc3RhdGUuc2V0U3Ryb2tlU3R5bGUoc3R5bGUp
OyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgY29uc3QgRHJvcFNoYWRvdyYgZHJv
cFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJvcFNoYWRvdzsgfQorICAgIGNvbnN0
IERyb3BTaGFkb3cmIGRyb3BTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRyb3BTaGFk
b3coKTsgfQogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQoKSBjb25zdCB7IHJldHVybiBkcm9w
U2hhZG93KCkub2Zmc2V0OyB9CiAgICAgZmxvYXQgc2hhZG93Qmx1cigpIGNvbnN0IHsgcmV0dXJu
IGRyb3BTaGFkb3coKS5ibHVyUmFkaXVzOyB9CiAgICAgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9y
KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmNvbG9yOyB9CkBAIC0xMjMsNDAgKzEyMyw0
MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4g
ZHJvcFNoYWRvdygpLmlzQmx1cnJlZCgpOyB9CiAgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7
IHJldHVybiBkcm9wU2hhZG93KCkuaGFzT3V0c2V0cygpOyB9CiAKLSAgICBDb21wb3NpdGVNb2Rl
IGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0K
KyAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LmNvbXBvc2l0ZU1vZGUoKTsgfQogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRpb247IH0KICAgICBC
bGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gY29tcG9zaXRlTW9kZSgpLmJsZW5k
TW9kZTsgfQogICAgIHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21wb3NpdGVNb2RlIGNvbXBvc2l0
ZU1vZGUpIHsgbV9zdGF0ZS5zZXRDb21wb3NpdGVNb2RlKGNvbXBvc2l0ZU1vZGUpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6
Tm9ybWFsKSB7IHNldENvbXBvc2l0ZU1vZGUoeyBvcGVyYXRpb24sIGJsZW5kTW9kZSB9KTsgfQog
Ci0gICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9CisgICAg
ZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhKCk7IH0KICAgICB2b2lk
IHNldEFscGhhKGZsb2F0IGFscGhhKSB7IG1fc3RhdGUuc2V0QWxwaGEoYWxwaGEpOyBkaWRVcGRh
dGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7IH0KKyAgICBU
ZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLnRleHREcmF3aW5nTW9kZSgpOyB9CiAgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4
dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4dERyYXdp
bmdNb2RlKHRleHREcmF3aW5nTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAg
Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorICAgIElu
dGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsgfQogICAgIHZvaWQgc2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KSB7IG1fc3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShp
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAot
ICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRB
bnRpYWxpYXM7IH0KKyAgICBib29sIHNob3VsZEFudGlhbGlhcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuc2hvdWxkQW50aWFsaWFzKCk7IH0KICAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhi
b29sIHNob3VsZEFudGlhbGlhcykgeyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRB
bnRpYWxpYXMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgYm9vbCBzaG91bGRT
bW9vdGhGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7IH0K
KyAgICBib29sIHNob3VsZFNtb290aEZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91
bGRTbW9vdGhGb250cygpOyB9CiAgICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNo
b3VsZFNtb290aEZvbnRzKSB7IG1fc3RhdGUuc2V0U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21v
b3RoRm9udHMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkg
Q0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRpb24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUg
cGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhzLgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2Ug
aGF2ZSB0byBkaXNhYmxlIHRvIHRvIGVuc3VyZSBhIGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhl
IGdseXBocy4KLSAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOyB9CisgICAgYm9vbCBz
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cygpOyB9CiAgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5z
ZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGJvb2wgc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
OyB9CisgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKTsgfQogICAgIHZvaWQgc2V0U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNl
dFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrOyB9CisgICAgYm9vbCBkcmF3THVt
aW5hbmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2soKTsg
fQogICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykg
eyBtX3N0YXRlLnNldERyYXdMdW1pbmFuY2VNYXNrKGRyYXdMdW1pbmFuY2VNYXNrKTsgZGlkVXBk
YXRlU3RhdGUobV9zdGF0ZSk7IH0KIAogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0g
ICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudXNlRGFy
a0FwcGVhcmFuY2U7IH0KKyAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZSgpOyB9CiAgICAgdm9pZCBzZXRVc2VEYXJrQXBw
ZWFyYW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0VXNlRGFya0FwcGVh
cmFuY2UodXNlRGFya0FwcGVhcmFuY2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFN0YXRlLmNwcAppbmRleCBhNzI1NTNhMmE4MjE0M2I4YjYxODgyNDI2MmE1
NTU2Nzg3ZmUwMzEyLi4xOGRmYWNhYmU3ZjVjNmE3MDcyNGVlYTc0Y2NlNTlkYzYzMDg2ZGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0U3RhdGUuY3BwCkBAIC0zMCwyMiArMzAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1HcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3Qg
Q2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzKQotICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3Mp
CitHcmFwaGljc0NvbnRleHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdl
RmxhZ3MmIGNoYW5nZUZsYWdzLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KQorICAgIDogbV9jaGFuZ2VGbGFncyhjaGFuZ2VGbGFncykKKyAgICAsIG1faW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQogewogfQog
CiBib29sIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzKCkg
Y29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIGlubGluZUNoYW5nZUZs
YWdzIHsgQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsIENoYW5n
ZTo6RmlsbEJydXNoIH07Ci0KLSAgICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYg
aW5saW5lQ2hhbmdlRmxhZ3MpKQorICAgIGlmIChtX2NoYW5nZUZsYWdzICE9IChtX2NoYW5nZUZs
YWdzICYgYmFzaWNDaGFuZ2VGbGFncykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
IChjaGFuZ2VGbGFncy5jb250YWlucyhDaGFuZ2U6OlN0cm9rZUJydXNoKSAmJiAhc3Ryb2tlQnJ1
c2guaXNJbmxpbmVDb2xvcigpKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKENoYW5n
ZTo6U3Ryb2tlQnJ1c2gpICYmICFtX3N0cm9rZUJydXNoLmlzSW5saW5lQ29sb3IoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6
RmlsbEJydXNoKSAmJiAhZmlsbEJydXNoLmlzSW5saW5lQ29sb3IoKSkKKyAgICBpZiAobV9jaGFu
Z2VGbGFncy5jb250YWlucyhDaGFuZ2U6OkZpbGxCcnVzaCkgJiYgIW1fZmlsbEJydXNoLmlzSW5s
aW5lQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC01NCwzMyArNTMsMzMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29udGFpbnNPbmx5
SW5saW5lQ2hhbmdlcygpIGNvbnN0CiB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNo
YW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSkKIHsKICAgICBhdXRv
IG1lcmdlQ2hhbmdlID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250ZXh0U3Rh
dGU6Oipwcm9wZXJ0eSkgewotICAgICAgICBpZiAoIXN0YXRlLmNoYW5nZUZsYWdzLmNvbnRhaW5z
KGNoYW5nZSkgfHwgdGhpcy0+KnByb3BlcnR5ID09IHN0YXRlLipwcm9wZXJ0eSkKKyAgICAgICAg
aWYgKCFzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoY2hhbmdlKSB8fCB0aGlzLT4qcHJvcGVydHkg
PT0gc3RhdGUuKnByb3BlcnR5KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLT4q
cHJvcGVydHkgPSBzdGF0ZS4qcHJvcGVydHk7Ci0gICAgICAgIGNoYW5nZUZsYWdzLnNldChjaGFu
Z2UsICFsYXN0RHJhd2luZ1N0YXRlIHx8ICgqbGFzdERyYXdpbmdTdGF0ZSkuKnByb3BlcnR5ICE9
IHRoaXMtPipwcm9wZXJ0eSk7CisgICAgICAgIG1fY2hhbmdlRmxhZ3Muc2V0KGNoYW5nZSwgIWxh
c3REcmF3aW5nU3RhdGUgfHwgKCpsYXN0RHJhd2luZ1N0YXRlKS4qcHJvcGVydHkgIT0gdGhpcy0+
KnByb3BlcnR5KTsKICAgICB9OwogCi0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gs
ICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsK
LSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdl
OjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
bV9maWxsQnJ1c2gpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUpOwogCi0gICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOwotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6
U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0
cm9rZVRoaWNrbmVzcyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpOworICAg
IG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gpOworICAgIG1lcmdlQ2hhbmdlKENoYW5n
ZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0eWxl
LCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxl
KTsKIAotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOwotICAgIG1lcmdlQ2hh
bmdlKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OmRyb3BTaGFkb3cpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6Q29tcG9zaXRl
TW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRl
TW9kZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcm9wU2hhZG93KTsKIAotICAgIG1lcmdl
Q2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmFscGhhKTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHksICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOwor
ICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fYWxwaGEpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpUZXh0
RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0
RHJhd2luZ01vZGUpOwogCi0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMs
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKTsK
LSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7Ci0gICAgbWVyZ2VDaGFu
Z2UoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpE
cmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJh
d0x1bWluYW5jZU1hc2spOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFz
LCAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkQW50aWFsaWFz
KTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFNtb290aEZvbnRzKTsKKyAgICBtZXJn
ZUNoYW5nZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7CisgICAgbWVyZ2VD
aGFuZ2UoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbWVyZ2VDaGFuZ2Uo
Q2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6bV9kcmF3THVtaW5hbmNlTWFzayk7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9S
VCkKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CisgICAgbWVyZ2VD
aGFuZ2UoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV91c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIApAQCAtODgsNyAr
ODcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpkaWRCZWdpblRyYW5zcGFyZW5jeUxh
eWVyKCkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lM
YXllcigpIHNldHMgdGhlIENHIGdsb2JhbCBhbHBoYSB0byAxLiBLZWVwIG91ciBhbHBoYSBpbiBz
eW5jLgotICAgIGFscGhhID0gMTsKKyAgICBtX2FscGhhID0gMTsKICNlbmRpZgogfQogCkBAIC05
Niw3ICs5NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEVuZFRyYW5zcGFyZW5j
eUxheWVyKGZsb2F0IG9yaWdpbmFsT3BhY2l0eSkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0dD
b250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNldHMgdGhlIENHIGdsb2JhbCBhbHBoYSB0
byAxLiBSZXNvcmUgb3VyIGFscGhhIG5vdy4KLSAgICBhbHBoYSA9IG9yaWdpbmFsT3BhY2l0eTsK
KyAgICBtX2FscGhhID0gb3JpZ2luYWxPcGFjaXR5OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
b3JpZ2luYWxPcGFjaXR5KTsKICNlbmRpZgpAQCAtMTYwLDMzICsxNTksMzMgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0YXRlQ2hhbmdlTmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlIGNo
YW5nZSkKIFRleHRTdHJlYW0mIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpkdW1wKFRleHRTdHJlYW0m
IHRzKSBjb25zdAogewogICAgIGF1dG8gZHVtcCA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKLSAgICAgICAgaWYgKGNoYW5nZUZsYWdz
LmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKGNo
YW5nZSkpCiAgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoc3RhdGVDaGFuZ2VOYW1lKGNoYW5n
ZSksIHRoaXMtPipwcm9wZXJ0eSk7CiAgICAgfTsKIAotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2hh
bmdlLWZsYWdzIiwgY2hhbmdlRmxhZ3MpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2hhbmdlLWZs
YWdzIiwgbV9jaGFuZ2VGbGFncyk7CiAKLSAgICBkdW1wKENoYW5nZTo6RmlsbEJydXNoLCAgICAg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKLSAgICBk
dW1wKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZmlsbFJ1bGUpOworICAgIGR1bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCk7CisgICAgZHVt
cChDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1fZmlsbFJ1bGUpOwogCi0gICAgZHVtcChDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoKTsKLSAgICBk
dW1wKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKLSAgICBkdW1wKENoYW5nZTo6U3Ryb2tlU3R5bGUs
ICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpOwor
ICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX3N0cm9rZUJydXNoKTsKKyAgICBkdW1wKENoYW5nZTo6U3Ryb2tlVGhp
Y2tuZXNzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlj
a25lc3MpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlKTsKIAotICAgIGR1bXAoQ2hhbmdl
OjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpj
b21wb3NpdGVNb2RlKTsKLSAgICBkdW1wKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdyk7CisgICAgZHVtcChDaGFu
Z2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fY29tcG9zaXRlTW9kZSk7CisgICAgZHVtcChDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZHJvcFNoYWRvdyk7CiAKLSAgICBk
dW1wKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6YWxwaGEpOwotICAgIGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5LCAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KTsKLSAgICBkdW1wKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlKTsKKyAgICBkdW1wKENoYW5nZTo6QWxw
aGEsICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9hbHBo
YSk7CisgICAgZHVtcChDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1faW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgZHVt
cChDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1fdGV4dERyYXdpbmdNb2RlKTsKIAotICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRp
YWxpYXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxp
YXMpOwotICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7Ci0gICAgZHVtcChDaGFuZ2U6
OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7Ci0gICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zLCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKTsKLSAgICBkdW1wKENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOworICAgIGR1bXAo
Q2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX3Nob3VsZEFudGlhbGlhcyk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFNtb290aEZv
bnRzLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9u
dHMpOworICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7CisgICAg
ZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6Om1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgIGR1bXAoQ2hhbmdlOjpE
cmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2Ry
YXdMdW1pbmFuY2VNYXNrKTsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGR1
bXAoQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CisgICAgZHVtcChDaGFuZ2U6OlVzZURhcmtBcHBl
YXJhbmNlLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fdXNlRGFya0FwcGVh
cmFuY2UpOwogI2VuZGlmCiAgICAgcmV0dXJuIHRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKaW5kZXggZTgy
NTE3ZWJlZTI2NTVmMWMzZmVmNjgyZDNhYTQ2YTE5ZGE3ZTI5Ny4uNDZiMWE4NmNkODJlMDEyZDk4
Yzc1MTg1ZmE4NmE3ZDE2NWY2ZjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5oCkBAIC0zMiw3ICszMiw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsK
K2NsYXNzIEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3ND
b250ZXh0Q2Fpcm87CitwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDaGFuZ2UgOiB1aW50MzJfdCB7
CiAgICAgICAgIEZpbGxCcnVzaCAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKICAgICAgICAg
RmlsbFJ1bGUgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxLApAQCAtNTksNDAgKzYxLDY3IEBA
IHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgfTsKICAgICB1c2luZyBDaGFuZ2VG
bGFncyA9IE9wdGlvblNldDxDaGFuZ2U+OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3ND
b250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmID0geyB9KTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIENoYW5nZUZsYWdzIGJhc2ljQ2hhbmdlRmxhZ3MgeyBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVz
cywgQ2hhbmdlOjpTdHJva2VCcnVzaCwgQ2hhbmdlOjpGaWxsQnJ1c2ggfTsKIAotICAgIENoYW5n
ZUZsYWdzIGNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBjaGFuZ2VGbGFnczsgfQotICAgIHZvaWQg
ZGlkQXBwbHlDaGFuZ2VzKCkgeyBjaGFuZ2VGbGFncyA9IHsgfTsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSwgSW50ZXJw
b2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCk7CiAKLSAgICB2
b2lkIHNldEZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHko
Q2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoLCBicnVz
aCk7IH0KLSAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJv
cGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNo
LCB7IGNvbG9yIH0pOyB9Ci0gICAgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYm
IGdyYWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtKSB7IGZpbGxC
cnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBjaGFu
Z2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9Ci0gICAgdm9pZCBzZXRGaWxsUGF0dGVy
bihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IGZpbGxCcnVzaC5zZXRQYXR0ZXJuKFdURk1vdmUo
cGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9CisgICAgQ2hh
bmdlRmxhZ3MgY2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlRmxhZ3M7IH0KKyAgICB2
b2lkIGRpZEFwcGx5Q2hhbmdlcygpIHsgbV9jaGFuZ2VGbGFncyA9IHsgfTsgfQogCi0gICAgdm9p
ZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZp
bGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlLCBmaWxsUnVsZSk7IH0KKyAg
ICBjb25zdCBTb3VyY2VCcnVzaCYgZmlsbEJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9maWxsQnJ1
c2g7IH0KKyAgICB2b2lkIHNldEZpbGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsg
c2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9m
aWxsQnJ1c2gsIGJydXNoKTsgfQorICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX2ZpbGxCcnVzaCwgeyBjb2xvciB9KTsgfQorICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50
KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRy
YW5zZm9ybSkgeyBtX2ZpbGxCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3Bh
Y2VUcmFuc2Zvcm0pOyBtX2NoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KKyAg
ICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9maWxsQnJ1
c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgbV9jaGFuZ2VGbGFncy5hZGQoQ2hhbmdl
OjpGaWxsQnJ1c2gpOyB9CiAKLSAgICB2b2lkIHNldFN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJy
dXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZUJydXNoLCAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OnN0cm9rZUJydXNoLCBicnVzaCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZUNv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZUJydXNo
LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoLCB7IGNvbG9yIH0pOyB9Ci0gICAg
dm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgc3Ryb2tlQnJ1c2guc2V0R3JhZGllbnQo
V1RGTW92ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5n
ZTo6U3Ryb2tlQnJ1c2gpOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJu
PiYmIHBhdHRlcm4pIHsgc3Ryb2tlQnJ1c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsg
Y2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6U3Ryb2tlQnJ1c2gpOyB9CisgICAgV2luZFJ1bGUgZmls
bFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxSdWxlOyB9CisgICAgdm9pZCBzZXRGaWxsUnVs
ZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxSdWxlLCAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUsIGZpbGxSdWxlKTsgfQogCi0gICAgdm9pZCBz
ZXRTdHJva2VUaGlja25lc3MoZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKSB7IHNldFByb3BlcnR5KENo
YW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNr
bmVzcywgc3Ryb2tlVGhpY2tuZXNzKTsgfQotICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tl
U3R5bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VTdHlsZSwgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSwgc3Ryb2tlU3R5bGUpOyB9CisgICAgY29u
c3QgU291cmNlQnJ1c2gmIHN0cm9rZUJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VCcnVz
aDsgfQorICAgIHZvaWQgc2V0U3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7
IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
bV9zdHJva2VCcnVzaCwgYnJ1c2gpOyB9CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VCcnVzaCwgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX3N0cm9rZUJydXNoLCB7IGNvbG9yIH0pOyB9CisgICAgdm9pZCBzZXRT
dHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgbV9zdHJva2VCcnVzaC5zZXRHcmFkaWVudChXVEZNb3Zl
KGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBtX2NoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OlN0
cm9rZUJydXNoKTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBw
YXR0ZXJuKSB7IG1fc3Ryb2tlQnJ1c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgbV9j
aGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0KIAotICAgIHZvaWQgc2V0Q29t
cG9zaXRlTW9kZShDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUpIHsgc2V0UHJvcGVydHkoQ2hh
bmdlOjpDb21wb3NpdGVNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUs
IGNvbXBvc2l0ZU1vZGUpOyB9Ci0gICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0IERyb3BTaGFk
b3cmIGRyb3BTaGFkb3cpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcm9wU2hhZG93LCAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3csIGRyb3BTaGFkb3cpOyB9CisgICAgZmxvYXQgc3Ry
b2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VUaGlja25lc3M7IH0KKyAgICB2
b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCBzdHJva2VUaGlja25lc3MpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJv
a2VUaGlja25lc3MsIHN0cm9rZVRoaWNrbmVzcyk7IH0KIAotICAgIHZvaWQgc2V0QWxwaGEoZmxv
YXQgYWxwaGEpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjphbHBoYSwgYWxwaGEpOyB9Ci0gICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxh
Z3MgdGV4dERyYXdpbmdNb2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2Rl
LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2Rl
KTsgfQorICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJv
a2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5
bGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VTdHlsZSwgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX3N0cm9rZVN0eWxlLCBzdHJva2VTdHlsZSk7IH0KKworICAgIGNvbnN0IENvbXBvc2l0
ZU1vZGUmIGNvbXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU1vZGU7IH0K
KyAgICB2b2lkIHNldENvbXBvc2l0ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7
IHNldFByb3BlcnR5KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjptX2NvbXBvc2l0ZU1vZGUsIGNvbXBvc2l0ZU1vZGUpOyB9CisKKyAgICBjb25zdCBEcm9wU2hh
ZG93JiBkcm9wU2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9kcm9wU2hhZG93OyB9CisgICAgdm9p
ZCBzZXREcm9wU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpEcm9wU2hhZG93LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZHJvcFNoYWRv
dywgZHJvcFNoYWRvdyk7IH0KKworICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9h
bHBoYTsgfQorICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVydHkoQ2hh
bmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2FscGhhLCBhbHBoYSk7IH0KKwor
ICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKyAgICB2b2lkIHNldElt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHksICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
LCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsgfQorCisgICAgVGV4dERyYXdpbmdNb2RlRmxh
Z3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RHJhd2luZ01vZGU7IH0K
KyAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJh
d2luZ01vZGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUsIHRleHREcmF3aW5nTW9kZSk7IH0KKwor
ICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRBbnRpYWxp
YXM7IH0KKyAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykg
eyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX3Nob3VsZEFudGlhbGlhcywgc2hvdWxkQW50aWFsaWFzKTsgfQorCisgICAgYm9vbCBz
aG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU21vb3RoRm9udHM7IH0K
KyAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsg
c2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX3Nob3VsZFNtb290aEZvbnRzLCBzaG91bGRTbW9vdGhGb250cyk7IH0KKworICAgIGJv
b2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHM7IH0KKyAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyhib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBzZXRQcm9wZXJ0eShD
aGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKTsgfQorCisgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KKyAgICB2b2lkIHNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsgc2V0UHJvcGVydHko
Q2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpt
X3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7IH0KKwor
ICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYXdMdW1pbmFu
Y2VNYXNrOyB9CisgICAgdm9pZCBzZXREcmF3THVtaW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFu
Y2VNYXNrKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1hc2spOyB9
CiAKLSAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBz
ZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaG91bGRBbnRpYWxpYXMsIHNob3VsZEFudGlhbGlhcyk7IH0KLSAgICB2b2lkIHNldFNob3Vs
ZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpTaG91bGRTbW9vdGhGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhG
b250cywgc2hvdWxkU21vb3RoRm9udHMpOyB9Ci0gICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMoYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMpOyB9Ci0gICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMs
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgfQotICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1h
c2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkRyYXdMdW1p
bmFuY2VNYXNrLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrLCBkcmF3
THVtaW5hbmNlTWFzayk7IH0KICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIHZv
aWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnVz
ZURhcmtBcHBlYXJhbmNlLCB1c2VEYXJrQXBwZWFyYW5jZSk7IH0KKyAgICBib29sIHVzZURhcmtB
cHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV91c2VEYXJrQXBwZWFyYW5jZTsgfQorICAgIHZv
aWQgc2V0VXNlRGFya0FwcGVhcmFuY2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
dXNlRGFya0FwcGVhcmFuY2UsIHVzZURhcmtBcHBlYXJhbmNlKTsgfQogI2VuZGlmCiAgICAgCiAg
ICAgYm9vbCBjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzKCkgY29uc3Q7CkBAIC0xMDYsMzEgKzEz
NSw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBkZWNv
ZGUoRGVjb2RlciYpOwogCi0gICAgQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7Ci0KLSAgICBTb3Vy
Y2VCcnVzaCBmaWxsQnJ1c2ggeyBDb2xvcjo6YmxhY2sgfTsKLSAgICBXaW5kUnVsZSBmaWxsUnVs
ZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07Ci0gICAgCi0gICAgU291cmNlQnJ1c2ggc3Ryb2tlQnJ1
c2ggeyBDb2xvcjo6YmxhY2sgfTsKLSAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgeyAwIH07Ci0g
ICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIAotICAgIENv
bXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSB7IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVy
LCBCbGVuZE1vZGU6Ok5vcm1hbCB9OwotICAgIERyb3BTaGFkb3cgZHJvcFNoYWRvdzsKLSAgICAK
LSAgICBmbG9hdCBhbHBoYSB7IDEgfTsKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQgfTsKLSAg
ICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUgeyBUZXh0RHJhd2luZ01vZGU6
OkZpbGwgfTsKLQotICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzIHsgdHJ1ZSB9OwotICAgIGJvb2wg
c2hvdWxkU21vb3RoRm9udHMgeyB0cnVlIH07Ci0gICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMgeyB0cnVlIH07Ci0gICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyB7IGZh
bHNlIH07Ci0gICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzayB7IGZhbHNlIH07Ci0jaWYgSEFWRShP
U19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlIHsgZmFsc2Ug
fTsKLSNlbmRpZgotICAgIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IHZvaWQgc2V0UHJvcGVydHkoQ2hhbmdlIGNoYW5nZSwgVCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
KnByb3BlcnR5LCBjb25zdCBUJiB2YWx1ZSkKQEAgLTE0MCw3ICsxNDQsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IHZh
bHVlOwotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKKyAgICAgICAgbV9jaGFuZ2VG
bGFncy5hZGQoY2hhbmdlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
MTUxLDQxICsxNTUsNjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgog
ICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBXVEZNb3ZlKHZhbHVlKTsKLSAgICAgICAgY2hhbmdl
RmxhZ3MuYWRkKGNoYW5nZSk7CisgICAgICAgIG1fY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CiAg
ICAgfQorCisgICAgQ2hhbmdlRmxhZ3MgbV9jaGFuZ2VGbGFnczsKKworICAgIFNvdXJjZUJydXNo
IG1fZmlsbEJydXNoIHsgQ29sb3I6OmJsYWNrIH07CisgICAgV2luZFJ1bGUgbV9maWxsUnVsZSB7
IFdpbmRSdWxlOjpOb25aZXJvIH07CisgICAgCisgICAgU291cmNlQnJ1c2ggbV9zdHJva2VCcnVz
aCB7IENvbG9yOjpibGFjayB9OworICAgIGZsb2F0IG1fc3Ryb2tlVGhpY2tuZXNzIHsgMCB9Owor
ICAgIFN0cm9rZVN0eWxlIG1fc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OworICAgIAorICAg
IENvbXBvc2l0ZU1vZGUgbV9jb21wb3NpdGVNb2RlIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJj
ZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRHJvcFNoYWRvdyBtX2Ryb3BTaGFkb3c7
CisgICAgCisgICAgZmxvYXQgbV9hbHBoYSB7IDEgfTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBtX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgeyBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVm
YXVsdCB9OworICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIG1fdGV4dERyYXdpbmdNb2RlIHsgVGV4
dERyYXdpbmdNb2RlOjpGaWxsIH07CisKKyAgICBib29sIG1fc2hvdWxkQW50aWFsaWFzIHsgdHJ1
ZSB9OworICAgIGJvb2wgbV9zaG91bGRTbW9vdGhGb250cyB7IHRydWUgfTsKKyAgICBib29sIG1f
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RyYXdMdW1pbmFuY2VNYXNr
IHsgZmFsc2UgfTsKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGJvb2wgbV91
c2VEYXJrQXBwZWFyYW5jZSB7IGZhbHNlIH07CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CiB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKICAgICBhdXRvIGVuY29kZSA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRv
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKLSAgICAgICAgaWYgKGNoYW5nZUZs
YWdzLmNvbnRhaW5zKGNoYW5nZSkpCisgICAgICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KGNoYW5nZSkpCiAgICAgICAgICAgICBlbmNvZGVyIDw8IHRoaXMtPipwcm9wZXJ0eTsKICAgICB9
OwogCi0gICAgZW5jb2RlciA8PCBjaGFuZ2VGbGFnczsKKyAgICBlbmNvZGVyIDw8IG1fY2hhbmdl
RmxhZ3M7CiAKLSAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCk7Ci0gICAgZW5jb2RlKENoYW5n
ZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpmaWxsUnVsZSk7CisgICAgZW5jb2RlKENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCk7CisgICAgZW5jb2Rl
KENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjptX2ZpbGxSdWxlKTsKIAotICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAg
ICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOwot
ICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpT
dHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0
cm9rZVN0eWxlKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gpOworICAgIGVuY29k
ZShDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9zdHJva2VUaGlja25lc3MpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVN0
eWxlLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VT
dHlsZSk7CiAKLSAgICBlbmNvZGUoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOwotICAgIGVuY29kZShD
aGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZHJvcFNoYWRvdyk7CisgICAgZW5jb2RlKENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2NvbXBvc2l0ZU1vZGUpOwor
ICAgIGVuY29kZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6bV9kcm9wU2hhZG93KTsKIAotICAgIGVuY29kZShDaGFuZ2U6OkFs
cGhhLCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxw
aGEpOwotICAgIGVuY29kZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAg
ZW5jb2RlKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworICAgIGVuY29kZShDaGFuZ2U6OkFscGhh
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9hbHBo
YSk7CisgICAgZW5jb2RlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOworICAg
IGVuY29kZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUpOwogCi0gICAgZW5jb2RlKENoYW5nZTo6
U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
aG91bGRBbnRpYWxpYXMpOwotICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpOwot
ICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBlbmNv
ZGUoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpE
cmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRy
YXdMdW1pbmFuY2VNYXNrKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkQW50aWFsaWFzKTsK
KyAgICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9udHMpOworICAgIGVuY29kZShDaGFu
Z2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bV9zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9z
aGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJhd0x1bWluYW5j
ZU1hc2ssICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2RyYXdMdW1pbmFu
Y2VNYXNrKTsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGVuY29kZShDaGFu
Z2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6dXNlRGFya0FwcGVhcmFuY2UpOworICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJh
bmNlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV91c2VEYXJrQXBwZWFy
YW5jZSk7CiAjZW5kaWYKIH0KIApAQCAtMTkzLDcgKzIyMiw3IEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CiBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBkZWNvZGUgPSBb
Jl0oR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHkpIHsKLSAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VG
bGFncy5jb250YWlucyhjaGFuZ2UpKQorICAgICAgICBpZiAoIXN0YXRlLmNoYW5nZXMoKS5jb250
YWlucyhjaGFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgdXNpbmcg
UHJvcGVydHlUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0
ZDo6ZGVjbHZhbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6dHlwZTsKQEAg
LTIxMyw0MiArMjQyLDQyIEBAIHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZSBzdGF0ZSgqY2hhbmdlRmxhZ3MpOwogCi0gICAgaWYgKCFkZWNvZGUoc3Rh
dGUsIENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmZpbGxCcnVzaCkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RmlsbEJy
dXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbEJydXNo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwg
Q2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6ZmlsbFJ1bGUpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxSdWxlLCAg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxSdWxlKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFu
Z2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
dHJva2VCcnVzaCkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlQnJ1c2gs
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFu
Z2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
dHJva2VUaGlja25lc3MpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRo
aWNrbmVzcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVRoaWNr
bmVzcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3Rh
dGUsIENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnN0cm9rZVN0eWxlKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJv
a2VTdHlsZSwgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VT
dHlsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6
Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fY29t
cG9zaXRlTW9kZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNv
ZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmRyb3BTaGFkb3cpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6
OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2Ry
b3BTaGFkb3cpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNv
ZGUoc3RhdGUsIENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmFscGhhKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpBbHBo
YSwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9hbHBoYSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENo
YW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFu
Z2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpt
X2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpKQorICAgIGlmICgh
ZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjptX3RleHREcmF3aW5nTW9kZSkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKSkK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRBbnRpYWxpYXMpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3Vs
ZFNtb290aEZvbnRzLCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9v
dGhGb250cykpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hvdWxkU21vb3RoRm9u
dHMsICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9udHMp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBD
aGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBD
aGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjptX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMsICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcykp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENo
YW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OmRyYXdMdW1pbmFuY2VNYXNrKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpEcmF3
THVtaW5hbmNlTWFzaywgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3THVt
aW5hbmNlTWFzaykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjaWYgSEFWRShPU19E
QVJLX01PREVfU1VQUE9SVCkKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpVc2VEYXJr
QXBwZWFyYW5jZSwgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVh
cmFuY2UpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNl
LCAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3VzZURhcmtBcHBlYXJhbmNlKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNw
cAppbmRleCAyZGE0OTFmZDg3ZjZjZmJiMzNlNDdkOTgxMjMzN2JmMjE1OGY2ZGUxLi5hMmUyZTkz
NDAzNjNiMjEyYTViZWI0Zjg4OGI1NjYwOGI3NmVhNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAK
QEAgLTU1NiwxMCArNTU2LDEwIEBAIGJvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoR3JhcGhpY3ND
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKIH0gLy8gbmFtZXNwYWNlIFN0YXRlCiAKIEZp
bGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQot
ICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCi0gICAgLCBmaWxsUnVsZShzdGF0ZS5maWxs
UnVsZSkKKyAgICA6IGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKCkpCisgICAgLCBmaWxsUnVsZShz
dGF0ZS5maWxsUnVsZSgpKQogewotICAgIGlmIChhdXRvIGZpbGxQYXR0ZXJuID0gc3RhdGUuZmls
bEJydXNoLnBhdHRlcm4oKSkgeworICAgIGlmIChhdXRvIGZpbGxQYXR0ZXJuID0gc3RhdGUuZmls
bEJydXNoKCkucGF0dGVybigpKSB7CiAgICAgICAgIHBhdHRlcm4ub2JqZWN0ID0gYWRvcHRSZWYo
ZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkpOwog
CiAgICAgICAgIGF1dG8mIHBhdHRlcm5JbWFnZSA9IGZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsK
QEAgLTU2NywzNCArNTY3LDM0IEBAIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IGZpbGxQ
YXR0ZXJuLT5wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKICAgICAgICAgcGF0dGVybi5yZXBlYXRY
ID0gZmlsbFBhdHRlcm4tPnJlcGVhdFgoKTsKICAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gZmls
bFBhdHRlcm4tPnJlcGVhdFkoKTsKLSAgICB9IGVsc2UgaWYgKGF1dG8gZmlsbEdyYWRpZW50ID0g
c3RhdGUuZmlsbEJydXNoLmdyYWRpZW50KCkpIHsKLSAgICAgICAgZ3JhZGllbnQuYmFzZSA9IGZp
bGxHcmFkaWVudC0+Y3JlYXRlUGF0dGVybigxLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpKTsKLSAgICAgICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCi0gICAgICAgICAg
ICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0
YXRlLmFscGhhLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAg
ICB9IGVsc2UgaWYgKGF1dG8gZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEJydXNoKCkuZ3JhZGll
bnQoKSkgeworICAgICAgICBncmFkaWVudC5iYXNlID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0
ZXJuKDEsIHN0YXRlLmZpbGxCcnVzaCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAg
ICAgIGlmIChzdGF0ZS5hbHBoYSgpICE9IDEpCisgICAgICAgICAgICBncmFkaWVudC5hbHBoYUFk
anVzdGVkID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKCksIHN0YXRl
LmZpbGxCcnVzaCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIGNvbG9yID0gc3RhdGUuZmlsbEJydXNoLmNvbG9yKCk7CisgICAgICAgIGNvbG9yID0gc3Rh
dGUuZmlsbEJydXNoKCkuY29sb3IoKTsKIH0KIAogU3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogZ2xvYmFsQWxwaGEoc3Rh
dGUuYWxwaGEpCisgICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSgpKQogewotICAgIGlmIChh
dXRvIHN0cm9rZVBhdHRlcm4gPSBzdGF0ZS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpCisgICAgaWYg
KGF1dG8gc3Ryb2tlUGF0dGVybiA9IHN0YXRlLnN0cm9rZUJydXNoKCkucGF0dGVybigpKQogICAg
ICAgICBwYXR0ZXJuID0gYWRvcHRSZWYoc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7Ci0gICAgZWxzZSBpZiAoYXV0byBzdHJva2VHcmFkaWVu
dCA9IHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50KCkpIHsKLSAgICAgICAgZ3JhZGllbnQuYmFz
ZSA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUJydXNoLmdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7Ci0gICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQot
ICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFBZGp1c3RlZCA9IHN0cm9rZUdyYWRpZW50LT5jcmVh
dGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudFNwYWNlVHJh
bnNmb3JtKCkpOworICAgIGVsc2UgaWYgKGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJv
a2VCcnVzaCgpLmdyYWRpZW50KCkpIHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdy
YWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUJydXNoKCkuZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgaWYgKHN0YXRlLmFscGhhKCkgIT0gMSkKKyAgICAgICAg
ICAgIGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVy
bihzdGF0ZS5hbHBoYSgpLCBzdGF0ZS5zdHJva2VCcnVzaCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zv
cm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbG9yID0gc3RhdGUuc3Ryb2tlQnJ1c2guY29s
b3IoKTsKKyAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCk7CiB9CiAK
IFNoYWRvd1N0YXRlOjpTaGFkb3dTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUpCi0gICAgOiBvZmZzZXQoc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQpCi0gICAgLCBibHVyKHN0
YXRlLmRyb3BTaGFkb3cuYmx1clJhZGl1cykKLSAgICAsIGNvbG9yKHN0YXRlLmRyb3BTaGFkb3cu
Y29sb3IpCi0gICAgLCBpZ25vcmVUcmFuc2Zvcm1zKHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKQotICAgICwgZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCi0gICAgLCBnbG9iYWxDb21wb3Np
dGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikKKyAgICA6IG9mZnNldChz
dGF0ZS5kcm9wU2hhZG93KCkub2Zmc2V0KQorICAgICwgYmx1cihzdGF0ZS5kcm9wU2hhZG93KCku
Ymx1clJhZGl1cykKKyAgICAsIGNvbG9yKHN0YXRlLmRyb3BTaGFkb3coKS5jb2xvcikKKyAgICAs
IGlnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSkKKyAgICAs
IGdsb2JhbEFscGhhKHN0YXRlLmFscGhhKCkpCisgICAgLCBnbG9iYWxDb21wb3NpdGVPcGVyYXRv
cihzdGF0ZS5jb21wb3NpdGVNb2RlKCkub3BlcmF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBm
ZTczOGJkZjc3ZThjZTc2MmFjYzlhMGYwZjg0ZGQ4MzYxYzY5YzExLi4zZDE5NzU3OWEyY2MyMjk5
MzM4ODVhMWExNTk1YzYzOTZjYTg2ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBhdXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsK
ICAgICBDYWlybzo6ZHJhd0dseXBocygqY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ2Fpcm86
OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0Jv
bGRPZmZzZXQsIGNhaXJvR2x5cGhzLCB4T2Zmc2V0LAotICAgICAgICBzdGF0ZS50ZXh0RHJhd2lu
Z01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0
YXRlLmRyb3BTaGFkb3cuY29sb3IsCisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSgpLCBz
dGF0ZS5zdHJva2VUaGlja25lc3MoKSwgc3RhdGUuZHJvcFNoYWRvdygpLm9mZnNldCwgc3RhdGUu
ZHJvcFNoYWRvdygpLmNvbG9yLAogICAgICAgICBmb250U21vb3RoaW5nTW9kZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBjOWJkZGM4MGM0MGI4NTJiMTEwMjY1M2Rm
ZmMzMDBjYjI5Nzk3N2Y5Li4yNjJmMGQ2MDJiODBkYzM3N2M0MDlmNDQ2ZGJiNDg4ZGFjMzEyMjQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBm
bG9hdCBib3JkZXJUaGlja25lc3MKIHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5z
dGF0ZSgpOwotICAgIENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZSgqdGhpcywgbmF0aXZlSW1hZ2Uu
cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0
ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93
U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnRoaXMsIG5hdGl2
ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9u
cywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIH0sIHN0YXRlLmFscGhhKCksIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0byBk
cmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dzLgpAQCAtMjgzLDI2ICsy
ODMsMjYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZs
b2F0IHkpCiB2b2lkIEdyYXBoaWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MpKQotICAgICAg
ICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcygqdGhpcywgc3RhdGUuc3Ryb2tlVGhp
Y2tuZXNzKTsKKyAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTdHJva2VUaGlja25lc3MoKnRoaXMs
IHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpKTsKIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUpKQotICAgICAg
ICBDYWlybzo6U3RhdGU6OnNldFN0cm9rZVN0eWxlKCp0aGlzLCBzdGF0ZS5zdHJva2VTdHlsZSk7
CisgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U3Ryb2tlU3R5bGUoKnRoaXMsIHN0YXRlLnN0cm9r
ZVN0eWxlKCkpOwogCiAgICAgLy8gRklYTUU6IG1fc3RhdGUgc2hvdWxkIG5vdCBiZSBjaGFuZ2Vk
IHRvIGZsaXAgdGhlIHNoYWRvdyBvZmZzZXQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBzaGFk
b3cgaXMgYXBwbGllZCB0byB0aGUgcGxhdGZvcm0gY29udGV4dC4KICAgICBpZiAoc3RhdGUuY2hh
bmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3cp
KSB7Ci0gICAgICAgIGlmIChzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeworICAgICAg
ICBpZiAoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSkgewogICAgICAgICAgICAgLy8g
TWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3MgY29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBD
YW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQg
c2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRlIFkgYXhpcwotICAgICAgICAg
ICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQ7Ci0gICAgICAg
ICAgICBtX3N0YXRlLmRyb3BTaGFkb3cub2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwg
LXNoYWRvd09mZnNldC5oZWlnaHQoKSB9OworICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0
ID0gc3RhdGUuZHJvcFNoYWRvdygpLm9mZnNldDsKKyAgICAgICAgICAgIG1fc3RhdGUubV9kcm9w
U2hhZG93Lm9mZnNldCA9IHsgc2hhZG93T2Zmc2V0LndpZHRoKCksIC1zaGFkb3dPZmZzZXQuaGVp
Z2h0KCkgfTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkpCi0gICAg
ICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21w
b3NpdGVNb2RlLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpOworICAg
ICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbigqdGhpcywgc3RhdGUuY29t
cG9zaXRlTW9kZSgpLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLmJsZW5kTW9kZSk7
CiAKICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhcykpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hv
dWxkQW50aWFsaWFzKCp0aGlzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOworICAgICAgICBDYWly
bzo6U3RhdGU6OnNldFNob3VsZEFudGlhbGlhcygqdGhpcywgc3RhdGUuc2hvdWxkQW50aWFsaWFz
KCkpOwogCiAgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CiB9CkBAIC00MzMsNyArNDMzLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKgogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUo
KTsKICAgICBDYWlybzo6ZHJhd0dseXBocygqdGhpcywgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUp
LCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5
cGhzLCB4T2Zmc2V0LAotICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9r
ZVRoaWNrbmVzcywgc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29s
b3IsCisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSgpLCBzdGF0ZS5zdHJva2VUaGlja25l
c3MoKSwgc3RhdGUuZHJvcFNoYWRvdygpLm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9y
LAogICAgICAgICBmb250U21vb3RoaW5nKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQuY3BwCmluZGV4IDk2Yzc2MTM1NDFiZGM2NThhNzg3YWIwM2U3NzgxODgzNGQzMTg1YzQu
LmM4ZTU2NzgyNDIzMTVhYzM5MzUxZTAyMDhmZjhhMGVkZWUxM2Q5YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QKICAgICBjb25zdCBhdXRvJiBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSA9IGRlc3RD
b250ZXh0LnN0YXRlKCk7CiAKICAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgm
ZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJh
Y2tpbmdTdG9yZSkpCi0gICAgICAgIGRyYXdQbGF0Zm9ybUltYWdlKCpkZXN0Q29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29yZTo6Q2Fp
cm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAgIGRyYXdQ
bGF0Zm9ybUltYWdlKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRp
b25Db250ZXh0U3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIH0sIGRlc3RpbmF0aW9u
Q29udGV4dFN0YXRlLmFscGhhKCksIFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dTdGF0ZShkZXN0aW5h
dGlvbkNvbnRleHRTdGF0ZSkpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKaW5kZXggYmRhZWQ5ZjE3ZTQwYTMyMWYyZDA0YWY3MTAyODBjYzliYzA3OTcy
MC4uNzJkZTRhZWVmNTMwNjUyZmNkMzQwNDA3MGFjNTQwNmViMmJmYTI4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcApAQCAtNjAsOSArNjAsOSBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNl
clRvQmFzZUNUTShDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFu
c2Zvcm1Db25jYXQoQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5zZm9ybUlu
dmVydChDR0NvbnRleHRHZXRCYXNlQ1RNKGNvbnRleHQpKSk7CiB9CiAKLXN0YXRpYyBJbnRlcnBv
bGF0aW9uUXVhbGl0eSBjb3JlSW50ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9uUXVh
bGl0eSBxdWFsaXR5KQorc3RhdGljIEludGVycG9sYXRpb25RdWFsaXR5IGNvcmVJbnRlcnBvbGF0
aW9uUXVhbGl0eShDR0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBzd2l0Y2ggKHF1YWxpdHkp
IHsKKyAgICBzd2l0Y2ggKENHQ29udGV4dEdldEludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQp
KSB7CiAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uRGVmYXVsdDoKICAgICAgICAgcmV0dXJuIElu
dGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0OwogICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbk5v
bmU6CkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIHZvaWQgc2V0Q0dCbGVuZE1vZGUoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUKIH0KIAogR3Jh
cGhpY3NDb250ZXh0Q0c6OkdyYXBoaWNzQ29udGV4dENHKENHQ29udGV4dFJlZiBjZ0NvbnRleHQp
Ci0gICAgOiBHcmFwaGljc0NvbnRleHQoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpG
aWxsQnJ1c2gsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MgfSkKKyAgICA6IEdyYXBo
aWNzQ29udGV4dChHcmFwaGljc0NvbnRleHRTdGF0ZTo6YmFzaWNDaGFuZ2VGbGFncywgY29yZUlu
dGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKSkKIHsKICAgICBpZiAoIWNnQ29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkzLDcgKzE5Myw2IEBAIEdyYXBoaWNzQ29udGV4
dENHOjpHcmFwaGljc0NvbnRleHRDRyhDR0NvbnRleHRSZWYgY2dDb250ZXh0KQogICAgIG1fZGF0
YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoY2dDb250ZXh0KTsKICAgICAv
LyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCiAg
ICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7Ci0gICAgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRp
b25RdWFsaXR5ID0gY29yZUludGVycG9sYXRpb25RdWFsaXR5KENHQ29udGV4dEdldEludGVycG9s
YXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4dCgpKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dENH
Ojp+R3JhcGhpY3NDb250ZXh0Q0coKQpAQCAtMTA4NCw0MyArMTA4Myw0MyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUp
CiAgICAgZm9yIChhdXRvIGNoYW5nZSA6IHN0YXRlLmNoYW5nZXMoKSkgewogICAgICAgICBzd2l0
Y2ggKGNoYW5nZSkgewogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OkZpbGxCcnVzaDoKLSAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0YXRlLmZp
bGxCcnVzaC5jb2xvcigpKTsKKyAgICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0
YXRlLmZpbGxCcnVzaCgpLmNvbG9yKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3M6Ci0gICAg
ICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ry
b2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChj
b250ZXh0LCBzdGQ6Om1heChzdGF0ZS5zdHJva2VUaGlja25lc3MoKSwgMC5mKSk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6
OlN0cm9rZUJydXNoOgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29s
b3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKS5nZXQo
KSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0
LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9rZUJydXNoKCkuY29sb3IoKSkuZ2V0KCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpDb21wb3NpdGVNb2RlOgotICAgICAgICAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwg
c3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRN
b2RlKTsKKyAgICAgICAgICAgIHNldENHQmxlbmRNb2RlKGNvbnRleHQsIHN0YXRlLmNvbXBvc2l0
ZU1vZGUoKS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpEcm9wU2hhZG93OgotICAgICAgICAgICAgc2V0Q0dTaGFkb3coY29udGV4dCwgcmVuZGVy
aW5nTW9kZSgpLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5ibHVy
UmFkaXVzLCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7CisgICAgICAgICAgICBzZXRDR1NoYWRvdyhjb250ZXh0LCByZW5kZXJpbmdNb2RlKCks
IHN0YXRlLmRyb3BTaGFkb3coKS5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3coKS5ibHVyUmFkaXVz
LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsIHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpBbHBoYToKLSAgICAgICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRl
eHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQs
IHN0YXRlLmFscGhhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5OgotICAg
ICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgY2dJbnRl
cnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSk7CisgICAg
ICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCBjZ0ludGVy
cG9sYXRpb25RdWFsaXR5KHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpUZXh0RHJhd2luZ01vZGU6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2lu
Z01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKSk7
CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0
RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKCkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50
aWFsaWFzOgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQs
IHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRB
bnRpYWxpYXMoY29udGV4dCwgc3RhdGUuc2hvdWxkQW50aWFsaWFzKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91
bGRTbW9vdGhGb250czoKLSAgICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRz
KGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKTsKKyAgICAgICAgICAgIENHQ29udGV4
dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKQEAgLTExNTUsNyArMTE1
NCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAgICBhdXRvIGxheWVyID0gYWRvcHRD
RihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKSk7CiAKICAg
ICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChs
YXllci5nZXQoKSk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IGxpbmVX
aWR0aDsKICAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChsYXllckNvbnRleHQsIGxp
bmVXaWR0aCk7CiAKICAgICAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBsaW5lIHdpZHRo
LCBvdGhlcndpc2UgdGhlIGxheWVyJ3MgdG9wLWxlZnQgY29ybmVyIHdvdWxkIGJlCkBAIC0xNDg4
LDcgKzE0ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjphZGREZXN0aW5hdGlvbkF0UG9p
bnQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBGbG9hdFBvaQogCiBib29sIEdyYXBoaWNzQ29u
dGV4dENHOjpjYW5Vc2VTaGFkb3dCbHVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKHJlbmRlcmlu
Z01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKSAmJiBoYXNCbHVycmVkU2hh
ZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgcmV0dXJuIChy
ZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkgJiYgaGFzQmx1
cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0
L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBk
MGJlYzhkNjM4NDcwOWI3OGNmMWRlODBiYjAyZTFlMzdkMmY5NDZlLi5hMWFlZmQwNzAyZmFkNDdm
OTE5ZGJhODJmNjIzNTZmMjA1MTU1NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1Jl
Y29yZGVyQ29yZVRleHQuY3BwCkBAIC05NiwxMyArOTYsMTMgQEAgRHJhd0dseXBoc1JlY29yZGVy
OjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3RE
cmF3R2wKIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgY29udGV4dFN0YXRlKQogewotICAgIG1fb3JpZ2lu
YWxTdGF0ZS5maWxsQnJ1c2ggPSBjb250ZXh0U3RhdGUuZmlsbEJydXNoOwotICAgIG1fb3JpZ2lu
YWxTdGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVzaDsKKyAgICBtX29y
aWdpbmFsU3RhdGUuZmlsbEJydXNoID0gY29udGV4dFN0YXRlLmZpbGxCcnVzaCgpOworICAgIG1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVzaCgpOwog
CiAgICAgbV9vcmlnaW5hbFN0YXRlLmN0bSA9IG1fb3duZXIuZ2V0Q1RNKCk7IC8vIEZJWE1FOiBE
ZWFsIHdpdGggYmFzZSBDVE0uCiAKLSAgICBtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdyA9IGNv
bnRleHRTdGF0ZS5kcm9wU2hhZG93OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFuc2Zv
cm1zID0gY29udGV4dFN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworICAgIG1fb3JpZ2lu
YWxTdGF0ZS5kcm9wU2hhZG93ID0gY29udGV4dFN0YXRlLmRyb3BTaGFkb3coKTsKKyAgICBtX29y
aWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRl
cm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKQEAg
LTExNSw3ICsxMTUsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5h
bENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbgogICAgIG1faW50ZXJuYWxD
b250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuaWdub3Jl
VHJhbnNmb3Jtcyk7CiAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldERyb3BTaGFkb3cobV9vcmln
aW5hbFN0YXRlLmRyb3BTaGFkb3cpOwogCi0gICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFRleHRE
cmF3aW5nTW9kZShjb250ZXh0U3RhdGUudGV4dERyYXdpbmdNb2RlKTsKKyAgICBtX2ludGVybmFs
Q29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHRTdGF0ZS50ZXh0RHJhd2luZ01vZGUo
KSk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpwcmVwYXJlSW50ZXJuYWxDb250ZXh0
KGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAyYjAzY2U0YTY2ZTJkOGFhMGZhZDgxYTY0NGFlYjFl
ZGZkZTFjODgxLi4yYjRlNDM3ZDZjNTFkMTYyYTZiODEzZjQ1ZTA2ZGYyNzMxZDI4MTRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBEaXNwbGF5TGlz
dDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0p
CiAgICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJh
dGlvbnMpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0gPSBpdGVtLmdldDxT
ZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93LCBvbmx5IGRyb3AgdGhl
IGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0Zm9ybS1zcGVjaWZp
Yy4KLSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5jaGFuZ2VGbGFncyA9PSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCisg
ICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlKCkuY2hhbmdlcygpID09IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggOTM5NDU1MWYzNTllYzFhZjRl
YTkyYzdiM2IxNjg0ZWQyZWVkYTYxNi4uMzRmNmYyMTNkM2E3YmU0OWM3MjVhM2NiNGRiNWMyYTNh
ZjczOTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
Mjg0LDcgKzI4NCw3IEBAIHZvaWQgUmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKICAg
ICByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVM
YXN0KCk7CiAKLSAgICBtX3N0YXRlLmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGN1cnJlbnRTdGF0
ZSgpLnN0YXRlLmFscGhhKTsKKyAgICBtX3N0YXRlLmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGN1
cnJlbnRTdGF0ZSgpLnN0YXRlLmFscGhhKCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBmM2M4YzkwY2Q4OGJiZTBjNTFl
MWQ0ZmExMzNjNTFlODNiODBiMzliLi43OWEwYTg1MDBhMjNjZjNmZGZkOGNkMTRlN2I0N2FjMjJi
MDM2NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC05
NywxMCArOTcsMTAgQEAgaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGgKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9OwogCi0gICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4
UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaC5wYXR0ZXJu
KCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uo
c2V0U3RhdGVJdGVtLnN0YXRlKCkuc3Ryb2tlQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICBy
ZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAotICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9
IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRl
cm4oKSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFn
ZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5maWxsQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICBy
ZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAogICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAKaW5kZXggMTQxNjlhMDc1NThkNjE2YjA5MjBjYjA1N2RjOGViMWMyYTU4OGIwMy4u
YzIxY2QwZTRkNTI3YTNjYzEyMDJiZjZmY2Y3ZWQyMWFmZjkzZDVmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTk5
LDcgKzk5LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0
ZS5zdHJva2VUaGlja25lc3MpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tl
VGhpY2tuZXNzQ2hhbmdlPihzdGF0ZS5zdHJva2VUaGlja25lc3MoKSkpOwogICAgIH0KIAogICAg
IGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5n
ZTo6U3Ryb2tlU3R5bGUpKSB7CkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8
U3Ryb2tlU3R5bGVDaGFuZ2U+KHN0YXRlLnN0cm9rZVN0eWxlKSk7CisgICAgICAgIGFwcGVuZChj
cmVhdGVDb21tYW5kPFN0cm9rZVN0eWxlQ2hhbmdlPihzdGF0ZS5zdHJva2VTdHlsZSgpKSk7CiAg
ICAgfQogCiAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlKSkgewpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGFwcGVuZChj
cmVhdGVDb21tYW5kPENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9zaXRlTW9k
ZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKSk7CisgICAgICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPENvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9z
aXRlTW9kZSgpLm9wZXJhdGlvbiwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLmJsZW5kTW9kZSkpOwog
ICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzKSkgewpAQCAtMTUzLDcgKzE1Myw3IEBAIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlhbGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFs
aWFzKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlhbGlhc0NoYW5n
ZT4oc3RhdGUuc2hvdWxkQW50aWFsaWFzKCkpKTsKICAgICB9CiAKICAgICBzdGF0ZS5kaWRBcHBs
eUNoYW5nZXMoKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQog
ICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBz
dGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkpOworICAgIGFwcGVuZChj
cmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwg
c3RhdGUuZmlsbEJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLAogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAg
YXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3QsIGNvbG9yLCBjb21wb3NpdGVPcGVy
YXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBzdGF0ZS5jb21wb3Np
dGVNb2RlLm9wZXJhdGlvbikpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0Pihy
ZWN0LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbikpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByb3VuZGVkUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Zmls
bFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0CiAgICAgfTsK
IAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29t
bWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwgc3RhdGUuY29tcG9zaXRl
TW9kZS5vcGVyYXRpb24sIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwor
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QsIGNv
bG9yLCBzdGF0ZS5jb21wb3NpdGVNb2RlKCkub3BlcmF0aW9uLCBibGVuZE1vZGUsIENhaXJvOjpT
aGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTM0
LDggKzUzNCw4IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25z
dCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoCiAgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8RHJhd0dseXBocz4oQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tl
U291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQs
CiAgICAgICAgIFJlZlB0cjxjYWlyb19zY2FsZWRfZm9udF90Pihmb250LnBsYXRmb3JtRGF0YSgp
LnNjYWxlZEZvbnQoKSksCi0gICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZN
b3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlLAotICAgICAg
ICBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5k
cm9wU2hhZG93LmNvbG9yLCBmb250U21vb3RoaW5nKSk7CisgICAgICAgIGZvbnQuc3ludGhldGlj
Qm9sZE9mZnNldCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERy
YXdpbmdNb2RlKCksCisgICAgICAgIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5kcm9w
U2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsIGZvbnRTbW9vdGhpbmcp
KTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25z
dCBGbG8KIAogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0g
dGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+
KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBz
dGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVh
dGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4obmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKSwgc3RhdGUuYWxwaGEoKSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0
ZXJuKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTYwMSw3ICs2MDEs
NyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3Qs
IGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0
eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbEJydXNoKCkuY29s
b3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUoKSwgc3RhdGUuc3Ryb2tlQnJ1c2goKS5jb2xvcigpKSk7
CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCkBAIC02MjQsNyArNjI0LDcg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50
JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYg
c3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5l
Pihwb2ludDEsIHBvaW50Miwgc3RhdGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUJydXNoLmNv
bG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7Cisg
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5z
dHJva2VTdHlsZSgpLCBzdGF0ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRo
aWNrbmVzcygpLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMoKSkpOwogfQogCiB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcs
IGJvb2wgZG91YmxlVW5kZXJsaW5lcywgU3Ryb2tlU3R5bGUpCkBAIC02NDcsNyArNjQ3LDcgQEAg
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBmbG9hdCB0aGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3Rh
dGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5lc0Zv
clRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGlu
ZXMsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxEcmF3TGluZXNGb3JUZXh0Pihwb2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBk
b3VibGVVbmRlcmxpbmVzLCBzdGF0ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCkpKTsKIH0KIAogdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgRG9jdW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC02ODYs
NyArNjg2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxsaXBzZShjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3Rh
dGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUu
ZmlsbEJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5j
b2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbEJydXNoKCkuY29sb3IoKSwgc3RhdGUuc3Ry
b2tlU3R5bGUoKSwgc3RhdGUuc3Ryb2tlQnJ1c2goKS5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlj
a25lc3MoKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdGb2N1c1Jp
bmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29s
b3ImIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDllMzc4NmUwZmRj
ZGI4OWZiMDY2MjhjOGZjYzZkYzg3Yjc3YzNlOWUuLjlhMjM5ZTY0MjVmZDM5YzRiYzgxMzRmNWQ1
MTk1YmRkYTFkNmFkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyOCwx
MCArMTI4LDEwIEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGUoRGlz
cGxheUxpc3Q6OlNldFN0YXRlJiYgaXRlbSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsK
IAotICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBh
dHRlcm4oKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5maWxs
QnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWZpeFBhdHRl
cm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZSgpLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkpCisgICAgaWYg
KCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaCgpLnBhdHRlcm4o
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSk7Cg==
</data>
<flag name="commit-queue"
          id="483317"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455353</attachid>
            <date>2022-03-22 02:19:13 -0700</date>
            <delta_ts>2022-03-22 03:16:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238192-20220322021912.patch</filename>
            <type>text/plain</type>
            <size>75835</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiNGM3Y2VkODZmNjlm
Njk2N2E3NjBiMzBiOGQzMzU2NjY5MGYzZS4uODFjMzA1N2VkNmMyZDU4ZmU3NzAzYWYxZDFlYWI1
Yjg3NWE3MmY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wMy0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgdGhlIG1lbWJlcnMgYmUg
cHJpdmF0ZSBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgZ2V0dGVycyBmb3IKKyAgICAgICAgYWxsIG9m
IHRoZW0uIFRoaXMgY2hhbmdlIHdpbGwgcHJldmVudCBjaGFuZ2luZyB0aGUgbWVtYmVycyB3aXRo
b3V0IGdvaW5nCisgICAgICAgIHRocm91Z2ggdGhlIHNldHRlcnMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxs
Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJ1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0ZU1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnRleHREcmF3aW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRBbnRpYWxpYXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRTbW9vdGhGb250cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0x1bWluYW5jZU1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRp
ZEVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpjaGFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkaWRBcHBseUNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OmZpbGxCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OmZpbGxSdWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldENvbXBv
c2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BT
aGFkb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmFs
cGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRB
bHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkQW50
aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRT
bW9vdGhGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2V0U2hvdWxkU21vb3RoRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFVzZURhcmtB
cHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWlybzo6U3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlOjpTaGFkb3dTdGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcmVJbnRl
cnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6
OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpz
dHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpjYW5Vc2VT
aGFkb3dCbHVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5
cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjphcHBseVNldFN0YXRlSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNv
c2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChOaWNv
c2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAo
Tmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QpOgorICAgICAgICAo
Tmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUpOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAg
IChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxsaXBzZSk6CisKIDIwMjIt
MDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdl
cyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDkwM2NlYTE4NGQ0OTlkZmNhZWMw
MzdhMjQzZDFlMGE2MDY3YWEzZS4uYTI3YzIzYWJlODljYmUyMTdmZjk2NWFkNzExMTc0MDZkNGFj
NWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMy0yMiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3Jh
cGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
OjpzZXRTdGF0ZSk6CisgICAgICAgICogU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisKIDIwMjIt
MDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdl
cyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDllNGQwNjZiMDM5YjZkNWZlNGM1
MmNkNWFhNDk3ZDQyOTlhNmZiMWIuLmFjMzNmM2QzMTIzZmM1ODE0NGQ3YmJiOTdkN2FkZDYxMzc1
YzM5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcApAQCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2VGbGFncyYgY2hhbmdlRmxhZ3MpCi0gICAgOiBtX3N0YXRlKGNoYW5nZUZs
YWdzKQorR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiBjaGFuZ2VGbGFncywgSW50ZXJwb2xhdGlvblF1YWxpdHkg
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkKKyAgICA6IG1fc3RhdGUoY2hhbmdlRmxhZ3MsIGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMTNjYzNiMDM3NzkxMTY2
ZjkzYzI2ZWE4MmU4MWQ3NmU0NjFiNDBjNi4uZWQwZmVmYzU1YTgzMTMxZDE3MDlmN2Q3ZDRkYTQx
ZGQ0OWUzZGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHcmFwaGljc0NvbnRleHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhp
Y3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgPSB7IH0s
IEludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgdmly
dHVhbCBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBA
IC03OSwzNiArNzksMzYgQEAgcHVibGljOgogCiAgICAgLy8gQ29udGV4dCBTdGF0ZQogCi0gICAg
Y29uc3QgU291cmNlQnJ1c2gmIGZpbGxCcnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmls
bEJydXNoOyB9Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuZmlsbEJydXNoLmNvbG9yKCk7IH0KLSAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnQoKTsgfQotICAgIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KLSAgICBQ
YXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLnBh
dHRlcm4oKTsgfQorICAgIGNvbnN0IFNvdXJjZUJydXNoJiBmaWxsQnJ1c2goKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLmZpbGxCcnVzaCgpOyB9CisgICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIGZpbGxCcnVzaCgpLmNvbG9yKCk7IH0KKyAgICBHcmFkaWVudCogZmls
bEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gZmlsbEJydXNoKCkuZ3JhZGllbnQoKTsgfQorICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBmaWxsQnJ1c2goKS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICBQ
YXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIGZpbGxCcnVzaCgpLnBhdHRlcm4o
KTsgfQogICAgIHZvaWQgc2V0RmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBt
X3N0YXRlLnNldEZpbGxCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAg
ICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fc3RhdGUuc2V0Rmls
bENvbG9yKGNvbG9yKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICAgICB2b2lkIHNldEZp
bGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0ZS5zZXRGaWxsR3JhZGllbnQoV1RGTW92
ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0K
ICAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9zdGF0
ZS5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSk7IH0KIAotICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5m
aWxsUnVsZTsgfQorICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5maWxsUnVsZSgpOyB9CiAgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkg
eyBtX3N0YXRlLnNldEZpbGxSdWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7
IH0KIAotICAgIGNvbnN0IFNvdXJjZUJydXNoJiBzdHJva2VCcnVzaCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuc3Ryb2tlQnJ1c2g7IH0KLSAgICBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCk7IH0KLSAgICBHcmFkaWVu
dCogc3Ryb2tlR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmdy
YWRpZW50KCk7IH0KLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKTsgfQotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLnBhdHRlcm4oKTsgfQorICAgIGNvbnN0IFNvdXJj
ZUJydXNoJiBzdHJva2VCcnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2go
KTsgfQorICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0cm9r
ZUJydXNoKCkuY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0
IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkuZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0
cm9rZUJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgUGF0dGVybiogc3Ry
b2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkucGF0dGVybigpOyB9CiAg
ICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgbV9zdGF0
ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAg
dm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRTdHJv
a2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRT
dHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0ZS5zZXRTdHJva2VHcmFkaWVudChX
VEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
KTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7
IG1fc3RhdGUuc2V0U3Ryb2tlUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBkYXRlU3Rh
dGUobV9zdGF0ZSk7IH0KIAotICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3MoKTsgfQogICAgIHZvaWQg
c2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnNldFN0cm9rZVRo
aWNrbmVzcyh0aGlja25lc3MpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgU3Ry
b2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxl
OyB9CisgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnN0cm9rZVN0eWxlKCk7IH0KICAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0
eWxlKSB7IG1fc3RhdGUuc2V0U3Ryb2tlU3R5bGUoc3R5bGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogCi0gICAgY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUuZHJvcFNoYWRvdzsgfQorICAgIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRyb3BTaGFkb3coKTsgfQogICAgIEZsb2F0U2l6
ZSBzaGFkb3dPZmZzZXQoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkub2Zmc2V0OyB9CiAg
ICAgZmxvYXQgc2hhZG93Qmx1cigpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5ibHVyUmFk
aXVzOyB9CiAgICAgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKCkgY29uc3QgeyByZXR1cm4gZHJv
cFNoYWRvdygpLmNvbG9yOyB9CkBAIC0xMjMsNDAgKzEyMyw0MCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzQmx1cnJl
ZCgpOyB9CiAgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCku
aGFzT3V0c2V0cygpOyB9CiAKLSAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBDb21wb3NpdGVNb2RlIGNv
bXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGUoKTsgfQog
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRpb247IH0KICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkg
Y29uc3QgeyByZXR1cm4gY29tcG9zaXRlTW9kZSgpLmJsZW5kTW9kZTsgfQogICAgIHZvaWQgc2V0
Q29tcG9zaXRlTW9kZShDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUpIHsgbV9zdGF0ZS5zZXRD
b21wb3NpdGVNb2RlKGNvbXBvc2l0ZU1vZGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQog
ICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlv
biwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSB7IHNldENvbXBvc2l0
ZU1vZGUoeyBvcGVyYXRpb24sIGJsZW5kTW9kZSB9KTsgfQogCi0gICAgZmxvYXQgYWxwaGEoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLmFscGhhKCk7IH0KICAgICB2b2lkIHNldEFscGhhKGZsb2F0IGFscGhh
KSB7IG1fc3RhdGUuc2V0QWxwaGEoYWxwaGEpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQog
Ci0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7IH0KKyAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0
ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSgp
OyB9CiAgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4
dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9k
ZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgCi0gICAgSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorICAgIEludGVycG9sYXRpb25RdWFsaXR5IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKTsgfQogICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IG1f
c3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGJvb2wgc2hvdWxkQW50aWFs
aWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXM7IH0KKyAgICBib29s
IHNob3VsZEFudGlhbGlhcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFz
KCk7IH0KICAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykg
eyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQogCi0gICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7IH0KKyAgICBib29sIHNob3VsZFNtb290
aEZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cygpOyB9CiAg
ICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1f
c3RhdGUuc2V0U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1x
dWFudGl6YXRpb24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25p
bmcgZ2x5cGhzLgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRv
IGVuc3VyZSBhIGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICBib29sIHNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzOyB9CisgICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cygpOyB9CiAgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSk7IH0KIAotICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CisgICAgYm9vbCBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKTsgfQogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0K
IAotICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRy
YXdMdW1pbmFuY2VNYXNrOyB9CisgICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2soKTsgfQogICAgIHZvaWQgc2V0RHJhd0x1
bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1p
bmFuY2VNYXNrKGRyYXdMdW1pbmFuY2VNYXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0K
IAogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7IH0KKyAgICBi
b29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS51c2VEYXJrQXBw
ZWFyYW5jZSgpOyB9CiAgICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtB
cHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0VXNlRGFya0FwcGVhcmFuY2UodXNlRGFya0FwcGVhcmFu
Y2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNw
cAppbmRleCBhNzI1NTNhMmE4MjE0M2I4YjYxODgyNDI2MmE1NTU2Nzg3ZmUwMzEyLi4xOGRmYWNh
YmU3ZjVjNmE3MDcyNGVlYTc0Y2NlNTlkYzYzMDg2ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwCkBA
IC0zMCwyMiArMzAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HcmFwaGljc0NvbnRl
eHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZs
YWdzKQotICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCitHcmFwaGljc0NvbnRleHRTdGF0
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzLCBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQorICAgIDogbV9j
aGFuZ2VGbGFncyhjaGFuZ2VGbGFncykKKyAgICAsIG1faW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQogewogfQogCiBib29sIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMg
Y29uc3RleHByIENoYW5nZUZsYWdzIGlubGluZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VU
aGlja25lc3MsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07Ci0KLSAg
ICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgaW5saW5lQ2hhbmdlRmxhZ3MpKQor
ICAgIGlmIChtX2NoYW5nZUZsYWdzICE9IChtX2NoYW5nZUZsYWdzICYgYmFzaWNDaGFuZ2VGbGFn
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlu
cyhDaGFuZ2U6OlN0cm9rZUJydXNoKSAmJiAhc3Ryb2tlQnJ1c2guaXNJbmxpbmVDb2xvcigpKQor
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFt
X3N0cm9rZUJydXNoLmlzSW5saW5lQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6RmlsbEJydXNoKSAmJiAhZmlsbEJy
dXNoLmlzSW5saW5lQ29sb3IoKSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhDaGFu
Z2U6OkZpbGxCcnVzaCkgJiYgIW1fZmlsbEJydXNoLmlzSW5saW5lQ29sb3IoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC01NCwzMyArNTMsMzMgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29udGFpbnNPbmx5SW5saW5lQ2hhbmdlcygpIGNvbnN0
CiB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0
YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSkKIHsKICAgICBhdXRvIG1lcmdlQ2hhbmdlID0gWyZdKENo
YW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgewotICAg
ICAgICBpZiAoIXN0YXRlLmNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkgfHwgdGhpcy0+KnBy
b3BlcnR5ID09IHN0YXRlLipwcm9wZXJ0eSkKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VzKCku
Y29udGFpbnMoY2hhbmdlKSB8fCB0aGlzLT4qcHJvcGVydHkgPT0gc3RhdGUuKnByb3BlcnR5KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBzdGF0ZS4qcHJv
cGVydHk7Ci0gICAgICAgIGNoYW5nZUZsYWdzLnNldChjaGFuZ2UsICFsYXN0RHJhd2luZ1N0YXRl
IHx8ICgqbGFzdERyYXdpbmdTdGF0ZSkuKnByb3BlcnR5ICE9IHRoaXMtPipwcm9wZXJ0eSk7Cisg
ICAgICAgIG1fY2hhbmdlRmxhZ3Muc2V0KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCps
YXN0RHJhd2luZ1N0YXRlKS4qcHJvcGVydHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKICAgICB9Owog
Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKLSAgICBtZXJnZUNoYW5nZShDaGFu
Z2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpmaWxsUnVsZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9maWxsQnJ1c2gpOworICAgIG1l
cmdlQ2hhbmdlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUpOwogCi0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpT
dHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ry
b2tlQnJ1c2gpOwotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyk7Ci0gICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6
U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
c3Ryb2tlQnJ1c2gpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlVGhpY2tuZXNzKTsK
KyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlKTsKIAotICAgIG1lcmdlQ2hhbmdl
KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOwotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RHJvcFNoYWRv
dywgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cp
OworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSk7CisgICAgbWVyZ2VDaGFu
Z2UoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9kcm9wU2hhZG93KTsKIAotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEs
ICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsK
LSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBt
ZXJnZUNoYW5nZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5n
ZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fYWxwaGEpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1faW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUpOwogCi0gICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKTsKLSAgICBtZXJnZUNoYW5nZShDaGFu
Z2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaG91bGRTbW9vdGhGb250cyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMsICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zLCAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJh
bnNmb3Jtcyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOworICAg
IG1lcmdlQ2hhbmdlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkQW50aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX3Nob3VsZFNtb290aEZvbnRzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaGFkb3dz
SWdub3JlVHJhbnNmb3JtcywgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNl
TWFzaywgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNl
TWFzayk7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJr
QXBwZWFyYW5jZSwgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV91c2VEYXJr
QXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIApAQCAtODgsNyArODcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpkaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCkKIHsKICNpZiBVU0UoQ0cp
CiAgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNldHMgdGhlIENHIGds
b2JhbCBhbHBoYSB0byAxLiBLZWVwIG91ciBhbHBoYSBpbiBzeW5jLgotICAgIGFscGhhID0gMTsK
KyAgICBtX2FscGhhID0gMTsKICNlbmRpZgogfQogCkBAIC05Niw3ICs5NSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9yaWdpbmFs
T3BhY2l0eSkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcigpIHNldHMgdGhlIENHIGdsb2JhbCBhbHBoYSB0byAxLiBSZXNvcmUgb3VyIGFscGhh
IG5vdy4KLSAgICBhbHBoYSA9IG9yaWdpbmFsT3BhY2l0eTsKKyAgICBtX2FscGhhID0gb3JpZ2lu
YWxPcGFjaXR5OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3JpZ2luYWxPcGFjaXR5KTsKICNl
bmRpZgpAQCAtMTYwLDMzICsxNTksMzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlQ2hhbmdl
TmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlIGNoYW5nZSkKIFRleHRTdHJlYW0mIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGF1
dG8gZHVtcCA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoq
cHJvcGVydHkpIHsKLSAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisg
ICAgICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCiAgICAgICAgICAgICB0
cy5kdW1wUHJvcGVydHkoc3RhdGVDaGFuZ2VOYW1lKGNoYW5nZSksIHRoaXMtPipwcm9wZXJ0eSk7
CiAgICAgfTsKIAotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgY2hhbmdlRmxh
Z3MpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgbV9jaGFuZ2VGbGFncyk7
CiAKLSAgICBkdW1wKENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKLSAgICBkdW1wKENoYW5nZTo6RmlsbFJ1bGUs
ICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpOwor
ICAgIGR1bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCk7CisgICAgZHVtcChDaGFuZ2U6OkZpbGxSdWxlLCAg
ICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUpOwog
Ci0gICAgZHVtcChDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoKTsKLSAgICBkdW1wKENoYW5nZTo6U3Ryb2tlVGhp
Y2tuZXNzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tu
ZXNzKTsKLSAgICBkdW1wKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJv
a2VCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9r
ZUJydXNoKTsKKyAgICBkdW1wKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlja25lc3MpOworICAgIGR1bXAoQ2hh
bmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjptX3N0cm9rZVN0eWxlKTsKIAotICAgIGR1bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKLSAgICBk
dW1wKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZHJvcFNoYWRvdyk7CisgICAgZHVtcChDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSk7Cisg
ICAgZHVtcChDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6Om1fZHJvcFNoYWRvdyk7CiAKLSAgICBkdW1wKENoYW5nZTo6QWxwaGEsICAg
ICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOwotICAg
IGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBkdW1wKENoYW5nZTo6
VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4
dERyYXdpbmdNb2RlKTsKKyAgICBkdW1wKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9hbHBoYSk7CisgICAgZHVtcChDaGFuZ2U6
OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgZHVtcChDaGFuZ2U6OlRleHREcmF3aW5n
TW9kZSwgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fdGV4dERyYXdpbmdN
b2RlKTsKIAotICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOwotICAgIGR1bXAoQ2hhbmdl
OjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
aG91bGRTbW9vdGhGb250cyk7Ci0gICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cyk7Ci0gICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBkdW1w
KENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOworICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZEFudGlhbGlh
cyk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9udHMpOworICAgIGR1bXAoQ2hhbmdl
OjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpt
X3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zLCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMpOworICAgIGR1bXAoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2RyYXdMdW1pbmFuY2VNYXNrKTsKICNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGR1bXAoQ2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFy
YW5jZSk7CisgICAgZHVtcChDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fdXNlRGFya0FwcGVhcmFuY2UpOwogI2VuZGlmCiAgICAg
cmV0dXJuIHRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKaW5kZXggZTgyNTE3ZWJlZTI2NTVmMWMzZmVmNjgy
ZDNhYTQ2YTE5ZGE3ZTI5Ny4uNDZiMWE4NmNkODJlMDEyZDk4Yzc1MTg1ZmE4NmE3ZDE2NWY2ZjIx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZS5oCkBAIC0zMiw3ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dFN0YXRlIHsKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0Q2Fpcm87CitwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBDaGFuZ2UgOiB1aW50MzJfdCB7CiAgICAgICAgIEZpbGxCcnVzaCAg
ICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKICAgICAgICAgRmlsbFJ1bGUgICAgICAgICAgICAg
ICAgICAgID0gMSA8PCAxLApAQCAtNTksNDAgKzYxLDY3IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSB7CiAgICAgfTsKICAgICB1c2luZyBDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFu
Z2U+OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hh
bmdlRmxhZ3MmID0geyB9KTsKKyAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIGJhc2lj
Q2hhbmdlRmxhZ3MgeyBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgQ2hhbmdlOjpTdHJva2VCcnVz
aCwgQ2hhbmdlOjpGaWxsQnJ1c2ggfTsKIAotICAgIENoYW5nZUZsYWdzIGNoYW5nZXMoKSBjb25z
dCB7IHJldHVybiBjaGFuZ2VGbGFnczsgfQotICAgIHZvaWQgZGlkQXBwbHlDaGFuZ2VzKCkgeyBj
aGFuZ2VGbGFncyA9IHsgfTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0
YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRl
cnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCk7CiAKLSAgICB2b2lkIHNldEZpbGxCcnVzaChjb25z
dCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoLCBicnVzaCk7IH0KLSAgICB2b2lkIHNldEZp
bGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1
c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoLCB7IGNvbG9yIH0pOyB9Ci0gICAg
dm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtKSB7IGZpbGxCcnVzaC5zZXRHcmFkaWVudChXVEZN
b3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpG
aWxsQnJ1c2gpOyB9Ci0gICAgdm9pZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0
ZXJuKSB7IGZpbGxCcnVzaC5zZXRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFn
cy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9CisgICAgQ2hhbmdlRmxhZ3MgY2hhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRpZEFwcGx5Q2hhbmdlcygp
IHsgbV9jaGFuZ2VGbGFncyA9IHsgfTsgfQogCi0gICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVs
ZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OmZpbGxSdWxlLCBmaWxsUnVsZSk7IH0KKyAgICBjb25zdCBTb3VyY2VCcnVzaCYg
ZmlsbEJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9maWxsQnJ1c2g7IH0KKyAgICB2b2lkIHNldEZp
bGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpG
aWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9maWxsQnJ1c2gsIGJydXNoKTsgfQor
ICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShD
aGFuZ2U6OkZpbGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCwgeyBj
b2xvciB9KTsgfQorICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFk
aWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBtX2ZpbGxCcnVz
aC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBtX2NoYW5n
ZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJu
KFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9maWxsQnJ1c2guc2V0UGF0dGVybihXVEZNb3Zl
KHBhdHRlcm4pKTsgbV9jaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9CiAKLSAg
ICB2b2lkIHNldFN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OlN0cm9rZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJy
dXNoLCBicnVzaCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnN0cm9rZUJydXNoLCB7IGNvbG9yIH0pOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VU
cmFuc2Zvcm0pIHsgc3Ryb2tlQnJ1c2guc2V0R3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNw
YWNlVHJhbnNmb3JtKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6U3Ryb2tlQnJ1c2gpOyB9Ci0g
ICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgc3Ryb2tl
QnJ1c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5n
ZTo6U3Ryb2tlQnJ1c2gpOyB9CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVy
biBtX2ZpbGxSdWxlOyB9CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkg
eyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
ZmlsbFJ1bGUsIGZpbGxSdWxlKTsgfQogCi0gICAgdm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxv
YXQgc3Ryb2tlVGhpY2tuZXNzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNz
LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgc3Ryb2tlVGhpY2tuZXNz
KTsgfQotICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpIHsg
c2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VTdHlsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
dHJva2VTdHlsZSwgc3Ryb2tlU3R5bGUpOyB9CisgICAgY29uc3QgU291cmNlQnJ1c2gmIHN0cm9r
ZUJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VCcnVzaDsgfQorICAgIHZvaWQgc2V0U3Ry
b2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6
U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VCcnVzaCwgYnJ1c2gp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJv
cGVydHkoQ2hhbmdlOjpTdHJva2VCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9r
ZUJydXNoLCB7IGNvbG9yIH0pOyB9CisgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3Jh
ZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0p
IHsgbV9zdHJva2VCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFu
c2Zvcm0pOyBtX2NoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OlN0cm9rZUJydXNoKTsgfQorICAgIHZv
aWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3Ryb2tlQnJ1
c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgbV9jaGFuZ2VGbGFncy5hZGQoQ2hhbmdl
OjpTdHJva2VCcnVzaCk7IH0KIAotICAgIHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21wb3NpdGVN
b2RlIGNvbXBvc2l0ZU1vZGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUsIGNvbXBvc2l0ZU1vZGUpOyB9Ci0g
ICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpEcm9wU2hhZG93LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BT
aGFkb3csIGRyb3BTaGFkb3cpOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJva2VUaGlja25lc3M7IH0KKyAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVz
cyhmbG9hdCBzdHJva2VUaGlja25lc3MpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VUaGlj
a25lc3MsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlja25lc3MsIHN0cm9rZVRo
aWNrbmVzcyk7IH0KIAotICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxwaGEpOyB9
Ci0gICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFs
aXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9Ci0gICAgdm9pZCBz
ZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7
IHNldFByb3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnRleHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorICAgIFN0cm9rZVN0eWxl
IHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VTdHlsZTsgfQorICAgIHZvaWQg
c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hh
bmdlOjpTdHJva2VTdHlsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlLCBz
dHJva2VTdHlsZSk7IH0KKworICAgIGNvbnN0IENvbXBvc2l0ZU1vZGUmIGNvbXBvc2l0ZU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0
ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6
Q29tcG9zaXRlTW9kZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2NvbXBvc2l0ZU1vZGUsIGNv
bXBvc2l0ZU1vZGUpOyB9CisKKyAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kcm9wU2hhZG93OyB9CisgICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0
IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcm9wU2hhZG93
LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZHJvcFNoYWRvdywgZHJvcFNoYWRvdyk7IH0KKwor
ICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYTsgfQorICAgIHZvaWQgc2V0
QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX2FscGhhLCBhbHBoYSk7IH0KKworICAgIEludGVycG9sYXRpb25RdWFs
aXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHk7IH0KKyAgICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkgeyBzZXRQ
cm9wZXJ0eShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9pbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KTsgfQorCisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0RHJhd2luZ01vZGU7IH0KKyAgICB2b2lkIHNldFRleHREcmF3
aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0
RHJhd2luZ01vZGUsIHRleHREcmF3aW5nTW9kZSk7IH0KKworICAgIGJvb2wgc2hvdWxkQW50aWFs
aWFzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRBbnRpYWxpYXM7IH0KKyAgICB2b2lkIHNldFNo
b3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OlNob3VsZEFudGlhbGlhcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZEFudGlhbGlh
cywgc2hvdWxkQW50aWFsaWFzKTsgfQorCisgICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNv
bnN0IHsgcmV0dXJuIG1fc2hvdWxkU21vb3RoRm9udHM7IH0KKyAgICB2b2lkIHNldFNob3VsZFNt
b290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpT
aG91bGRTbW9vdGhGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFNtb290aEZv
bnRzLCBzaG91bGRTbW9vdGhGb250cyk7IH0KKworICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7
IH0KKyAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQorCisgICAgYm9vbCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM7IH0KKyAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7IH0KKworICAgIGJvb2wgZHJhd0x1bWluYW5j
ZU1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYXdMdW1pbmFuY2VNYXNrOyB9CisgICAgdm9pZCBz
ZXREcmF3THVtaW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKSB7IHNldFByb3BlcnR5
KENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3
THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1hc2spOyB9CiAKLSAgICB2b2lkIHNldFNob3Vs
ZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNo
b3VsZEFudGlhbGlhcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsIHNo
b3VsZEFudGlhbGlhcyk7IH0KLSAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hv
dWxkU21vb3RoRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cywgc2hvdWxkU21vb3RoRm9u
dHMpOyB9Ci0gICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOyB9Ci0gICAgdm9pZCBz
ZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7
IHNldFByb3BlcnR5KENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKTsgfQotICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNl
TWFzaykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrLCBkcmF3THVtaW5hbmNlTWFzayk7IH0KICNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFu
Y2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtB
cHBlYXJhbmNlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlLCB1c2VE
YXJrQXBwZWFyYW5jZSk7IH0KKyAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VEYXJrQXBwZWFyYW5jZTsgfQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFu
Y2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtB
cHBlYXJhbmNlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fdXNlRGFya0FwcGVhcmFuY2UsIHVz
ZURhcmtBcHBlYXJhbmNlKTsgfQogI2VuZGlmCiAgICAgCiAgICAgYm9vbCBjb250YWluc09ubHlJ
bmxpbmVDaGFuZ2VzKCkgY29uc3Q7CkBAIC0xMDYsMzEgKzEzNSw2IEBAIHN0cnVjdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAg
Q2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7Ci0KLSAgICBTb3VyY2VCcnVzaCBmaWxsQnJ1c2ggeyBD
b2xvcjo6YmxhY2sgfTsKLSAgICBXaW5kUnVsZSBmaWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJv
IH07Ci0gICAgCi0gICAgU291cmNlQnJ1c2ggc3Ryb2tlQnJ1c2ggeyBDb2xvcjo6YmxhY2sgfTsK
LSAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgeyAwIH07Ci0gICAgU3Ryb2tlU3R5bGUgc3Ryb2tl
U3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIAotICAgIENvbXBvc2l0ZU1vZGUgY29tcG9zaXRl
TW9kZSB7IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCB9
OwotICAgIERyb3BTaGFkb3cgZHJvcFNoYWRvdzsKLSAgICAKLSAgICBmbG9hdCBhbHBoYSB7IDEg
fTsKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5IHsg
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQgfTsKLSAgICBUZXh0RHJhd2luZ01vZGVGbGFn
cyB0ZXh0RHJhd2luZ01vZGUgeyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgfTsKLQotICAgIGJvb2wg
c2hvdWxkQW50aWFsaWFzIHsgdHJ1ZSB9OwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgeyB0
cnVlIH07Ci0gICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgeyB0cnVlIH07Ci0g
ICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBkcmF3
THVtaW5hbmNlTWFzayB7IGZhbHNlIH07Ci0jaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkK
LSAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlIHsgZmFsc2UgfTsKLSNlbmRpZgotICAgIAogcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hh
bmdlIGNoYW5nZSwgVCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBjb25zdCBUJiB2
YWx1ZSkKQEAgLTE0MCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCiAgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IHZhbHVlOwotICAgICAgICBjaGFuZ2VG
bGFncy5hZGQoY2hhbmdlKTsKKyAgICAgICAgbV9jaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTUxLDQxICsxNTUsNjYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgICAgICB0aGlzLT4qcHJvcGVy
dHkgPSBXVEZNb3ZlKHZhbHVlKTsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7Cisg
ICAgICAgIG1fY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CiAgICAgfQorCisgICAgQ2hhbmdlRmxh
Z3MgbV9jaGFuZ2VGbGFnczsKKworICAgIFNvdXJjZUJydXNoIG1fZmlsbEJydXNoIHsgQ29sb3I6
OmJsYWNrIH07CisgICAgV2luZFJ1bGUgbV9maWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07
CisgICAgCisgICAgU291cmNlQnJ1c2ggbV9zdHJva2VCcnVzaCB7IENvbG9yOjpibGFjayB9Owor
ICAgIGZsb2F0IG1fc3Ryb2tlVGhpY2tuZXNzIHsgMCB9OworICAgIFN0cm9rZVN0eWxlIG1fc3Ry
b2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OworICAgIAorICAgIENvbXBvc2l0ZU1vZGUgbV9jb21w
b3NpdGVNb2RlIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9y
bWFsIH07CisgICAgRHJvcFNoYWRvdyBtX2Ryb3BTaGFkb3c7CisgICAgCisgICAgZmxvYXQgbV9h
bHBoYSB7IDEgfTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkgeyBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3
aW5nTW9kZUZsYWdzIG1fdGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07
CisKKyAgICBib29sIG1fc2hvdWxkQW50aWFsaWFzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91
bGRTbW9vdGhGb250cyB7IHRydWUgfTsKKyAgICBib29sIG1fc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2RyYXdMdW1pbmFuY2VNYXNrIHsgZmFsc2UgfTsKKyNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGJvb2wgbV91c2VEYXJrQXBwZWFyYW5jZSB7IGZh
bHNlIH07CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBh
dXRvIGVuY29kZSA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjoqcHJvcGVydHkpIHsKLSAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkp
CisgICAgICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCiAgICAgICAgICAg
ICBlbmNvZGVyIDw8IHRoaXMtPipwcm9wZXJ0eTsKICAgICB9OwogCi0gICAgZW5jb2RlciA8PCBj
aGFuZ2VGbGFnczsKKyAgICBlbmNvZGVyIDw8IG1fY2hhbmdlRmxhZ3M7CiAKLSAgICBlbmNvZGUo
Q2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmZpbGxCcnVzaCk7Ci0gICAgZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisgICAgZW5j
b2RlKENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjptX2ZpbGxCcnVzaCk7CisgICAgZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxSdWxlKTsK
IAotICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOwotICAgIGVuY29kZShDaGFuZ2U6OlN0
cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ry
b2tlVGhpY2tuZXNzKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKyAgICBlbmNv
ZGUoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRoaWNr
bmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlj
a25lc3MpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VTdHlsZSk7CiAKLSAgICBlbmNvZGUo
Q2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOwotICAgIGVuY29kZShDaGFuZ2U6OkRyb3BTaGFkb3csICAg
ICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdyk7Cisg
ICAgZW5jb2RlKENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjptX2NvbXBvc2l0ZU1vZGUpOworICAgIGVuY29kZShDaGFuZ2U6OkRy
b3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9k
cm9wU2hhZG93KTsKIAotICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOwotICAgIGVuY29kZShDaGFu
Z2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgZW5jb2RlKENoYW5nZTo6VGV4dERy
YXdpbmdNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJh
d2luZ01vZGUpOworICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9hbHBoYSk7CisgICAgZW5jb2RlKENoYW5n
ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjptX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOworICAgIGVuY29kZShDaGFuZ2U6OlRleHRE
cmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0
RHJhd2luZ01vZGUpOwogCi0gICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOwotICAg
IGVuY29kZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpOwotICAgIGVuY29kZShDaGFuZ2U6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcywgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyAg
ICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkQW50aWFsaWFzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpT
aG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
c2hvdWxkU21vb3RoRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
LCAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2RyYXdMdW1pbmFuY2VNYXNrKTsKICNpZiBIQVZFKE9T
X0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNl
LCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2Up
OworICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6bV91c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIApA
QCAtMTkzLDcgKzIyMiw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBzdGQ6Om9wdGlvbmFs
PEdyYXBoaWNzQ29udGV4dFN0YXRlPiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJv
cGVydHkpIHsKLSAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2Up
KQorICAgICAgICBpZiAoIXN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhjaGFuZ2UpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gdHlwZW5h
bWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxHcmFwaGljc0Nv
bnRleHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6dHlwZTsKQEAgLTIxMyw0MiArMjQyLDQyIEBAIHN0
ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBzdGF0ZSgq
Y2hhbmdlRmxhZ3MpOwogCi0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RmlsbEJydXNo
LCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCkpCisg
ICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbEJydXNoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpGaWxsUnVsZSwgICAg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpKQorICAgIGlm
ICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxSdWxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCkpCisgICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpKQorICAg
IGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVRoaWNrbmVzcykpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlU3R5
bGUsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKSkK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VTdHlsZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3Np
dGVNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9k
ZSkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJv
cFNoYWRvdywgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFk
b3cpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2Ryb3BTaGFkb3cpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6QWxw
aGEsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKSkK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9hbHBoYSkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSwgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHksICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6
OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Rl
eHREcmF3aW5nTW9kZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAo
IWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKSkKKyAgICBpZiAoIWRlY29kZShzdGF0
ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6bV9zaG91bGRBbnRpYWxpYXMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cykpCisgICAgaWYgKCFk
ZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9udHMpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNv
ZGUoc3RhdGUsIENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSkKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1h
c2ssICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNlTWFzaykpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAg
ICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpKQorICAgIGlmICghZGVj
b2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX3VzZURhcmtBcHBlYXJhbmNlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCAyZGE0OTFmZDg3ZjZj
ZmJiMzNlNDdkOTgxMjMzN2JmMjE1OGY2ZGUxLi5hMmUyZTkzNDAzNjNiMjEyYTViZWI0Zjg4OGI1
NjYwOGI3NmVhNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU1NiwxMCArNTU2LDEwIEBA
IGJvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCkKIH0gLy8gbmFtZXNwYWNlIFN0YXRlCiAKIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogZ2xvYmFsQWxwaGEoc3Rh
dGUuYWxwaGEpCi0gICAgLCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSkKKyAgICA6IGdsb2JhbEFs
cGhhKHN0YXRlLmFscGhhKCkpCisgICAgLCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSgpKQogewot
ICAgIGlmIChhdXRvIGZpbGxQYXR0ZXJuID0gc3RhdGUuZmlsbEJydXNoLnBhdHRlcm4oKSkgewor
ICAgIGlmIChhdXRvIGZpbGxQYXR0ZXJuID0gc3RhdGUuZmlsbEJydXNoKCkucGF0dGVybigpKSB7
CiAgICAgICAgIHBhdHRlcm4ub2JqZWN0ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBs
YXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAgIGF1dG8mIHBhdHRl
cm5JbWFnZSA9IGZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKQEAgLTU2NywzNCArNTY3LDM0IEBA
IEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQogICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IGZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm0oKTsKICAgICAgICAgcGF0dGVybi5yZXBlYXRYID0gZmlsbFBhdHRlcm4tPnJlcGVh
dFgoKTsKICAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsK
LSAgICB9IGVsc2UgaWYgKGF1dG8gZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEJydXNoLmdyYWRp
ZW50KCkpIHsKLSAgICAgICAgZ3JhZGllbnQuYmFzZSA9IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0
dGVybigxLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKLSAgICAg
ICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCi0gICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVz
dGVkID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5maWxs
QnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8gZmls
bEdyYWRpZW50ID0gc3RhdGUuZmlsbEJydXNoKCkuZ3JhZGllbnQoKSkgeworICAgICAgICBncmFk
aWVudC5iYXNlID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxCcnVz
aCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgIGlmIChzdGF0ZS5hbHBoYSgp
ICE9IDEpCisgICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gZmlsbEdyYWRpZW50
LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKCksIHN0YXRlLmZpbGxCcnVzaCgpLmdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbG9yID0gc3RhdGUuZmls
bEJydXNoLmNvbG9yKCk7CisgICAgICAgIGNvbG9yID0gc3RhdGUuZmlsbEJydXNoKCkuY29sb3Io
KTsKIH0KIAogU3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKQotICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCisgICAgOiBnbG9i
YWxBbHBoYShzdGF0ZS5hbHBoYSgpKQogewotICAgIGlmIChhdXRvIHN0cm9rZVBhdHRlcm4gPSBz
dGF0ZS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpCisgICAgaWYgKGF1dG8gc3Ryb2tlUGF0dGVybiA9
IHN0YXRlLnN0cm9rZUJydXNoKCkucGF0dGVybigpKQogICAgICAgICBwYXR0ZXJuID0gYWRvcHRS
ZWYoc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgp
KSk7Ci0gICAgZWxzZSBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNo
LmdyYWRpZW50KCkpIHsKLSAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5j
cmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7Ci0gICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQu
YWxwaGFBZGp1c3RlZCA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhh
LCBzdGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgIGVsc2Ug
aWYgKGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJva2VCcnVzaCgpLmdyYWRpZW50KCkp
IHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJu
KDEsIHN0YXRlLnN0cm9rZUJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAg
ICAgaWYgKHN0YXRlLmFscGhhKCkgIT0gMSkKKyAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRq
dXN0ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSgpLCBzdGF0
ZS5zdHJva2VCcnVzaCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGNvbG9yID0gc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKTsKKyAgICAgICAgY29sb3Ig
PSBzdGF0ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCk7CiB9CiAKIFNoYWRvd1N0YXRlOjpTaGFkb3dT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCi0gICAgOiBvZmZzZXQoc3Rh
dGUuZHJvcFNoYWRvdy5vZmZzZXQpCi0gICAgLCBibHVyKHN0YXRlLmRyb3BTaGFkb3cuYmx1clJh
ZGl1cykKLSAgICAsIGNvbG9yKHN0YXRlLmRyb3BTaGFkb3cuY29sb3IpCi0gICAgLCBpZ25vcmVU
cmFuc2Zvcm1zKHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotICAgICwgZ2xvYmFsQWxw
aGEoc3RhdGUuYWxwaGEpCi0gICAgLCBnbG9iYWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21w
b3NpdGVNb2RlLm9wZXJhdGlvbikKKyAgICA6IG9mZnNldChzdGF0ZS5kcm9wU2hhZG93KCkub2Zm
c2V0KQorICAgICwgYmx1cihzdGF0ZS5kcm9wU2hhZG93KCkuYmx1clJhZGl1cykKKyAgICAsIGNv
bG9yKHN0YXRlLmRyb3BTaGFkb3coKS5jb2xvcikKKyAgICAsIGlnbm9yZVRyYW5zZm9ybXMoc3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSkKKyAgICAsIGdsb2JhbEFscGhhKHN0YXRlLmFs
cGhhKCkpCisgICAgLCBnbG9iYWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2Rl
KCkub3BlcmF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBmZTczOGJkZjc3ZThjZTc2MmFjYzlh
MGYwZjg0ZGQ4MzYxYzY5YzExLi4zZDE5NzU3OWEyY2MyMjk5MzM4ODVhMWExNTk1YzYzOTZjYTg2
ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDYWlyby5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcK
ICAgICBhdXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd0dseXBo
cygqY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBD
YWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhz
LCB4T2Zmc2V0LAotICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRo
aWNrbmVzcywgc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3Is
CisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSgpLCBzdGF0ZS5zdHJva2VUaGlja25lc3Mo
KSwgc3RhdGUuZHJvcFNoYWRvdygpLm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yLAog
ICAgICAgICBmb250U21vb3RoaW5nTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAppbmRleCBjOWJkZGM4MGM0MGI4NTJiMTEwMjY1M2RmZmMzMDBjYjI5Nzk3N2Y5Li4yNjJm
MGQ2MDJiODBkYzM3N2M0MDlmNDQ2ZGJiNDg4ZGFjMzEyMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWly
bzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MK
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
bmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpk
cmF3UGxhdGZvcm1JbWFnZSgqdGhpcywgbmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBD
YWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnRoaXMsIG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSgpIH0sIHN0YXRlLmFscGhhKCksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNo
b3VsZCBub3QgZHJhdyBzaGFkb3dzLgpAQCAtMjgzLDI2ICsyODMsMjYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB2b2lkIEdyYXBoaWNz
Q29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MpKQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0
cm9rZVRoaWNrbmVzcygqdGhpcywgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgQ2Fp
cm86OlN0YXRlOjpzZXRTdHJva2VUaGlja25lc3MoKnRoaXMsIHN0YXRlLnN0cm9rZVRoaWNrbmVz
cygpKTsKIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUpKQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0
cm9rZVN0eWxlKCp0aGlzLCBzdGF0ZS5zdHJva2VTdHlsZSk7CisgICAgICAgIENhaXJvOjpTdGF0
ZTo6c2V0U3Ryb2tlU3R5bGUoKnRoaXMsIHN0YXRlLnN0cm9rZVN0eWxlKCkpOwogCiAgICAgLy8g
RklYTUU6IG1fc3RhdGUgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIHRvIGZsaXAgdGhlIHNoYWRvdyBv
ZmZzZXQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBzaGFkb3cgaXMgYXBwbGllZCB0byB0aGUg
cGxhdGZvcm0gY29udGV4dC4KICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3cpKSB7Ci0gICAgICAgIGlmIChzdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeworICAgICAgICBpZiAoc3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSkgewogICAgICAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3Jh
cGhpY3MgY29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0
CiAgICAgICAgICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENh
bnZhcyBoYXZlIG9wcG9zaXRlIFkgYXhpcwotICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0
ID0gc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQ7Ci0gICAgICAgICAgICBtX3N0YXRlLmRyb3BTaGFk
b3cub2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQo
KSB9OworICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJvcFNoYWRvdygp
Lm9mZnNldDsKKyAgICAgICAgICAgIG1fc3RhdGUubV9kcm9wU2hhZG93Lm9mZnNldCA9IHsgc2hh
ZG93T2Zmc2V0LndpZHRoKCksIC1zaGFkb3dPZmZzZXQuaGVpZ2h0KCkgfTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwg
c3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNl
dENvbXBvc2l0ZU9wZXJhdGlvbigqdGhpcywgc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlv
biwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLmJsZW5kTW9kZSk7CiAKICAgICBpZiAoc3RhdGUuY2hh
bmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlh
bGlhcykpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hvdWxkQW50aWFsaWFzKCp0aGlzLCBz
dGF0ZS5zaG91bGRBbnRpYWxpYXMpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNob3VsZEFu
dGlhbGlhcygqdGhpcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKCkpOwogCiAgICAgc3RhdGUuZGlk
QXBwbHlDaGFuZ2VzKCk7CiB9CkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKgogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd0ds
eXBocygqdGhpcywgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNl
KHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIHNjYWxl
ZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhzLCB4T2Zmc2V0LAotICAgICAg
ICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuZHJv
cFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsCisgICAgICAgIHN0YXRlLnRl
eHREcmF3aW5nTW9kZSgpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MoKSwgc3RhdGUuZHJvcFNoYWRv
dygpLm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yLAogICAgICAgICBmb250U21vb3Ro
aW5nKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IDk2Yzc2
MTM1NDFiZGM2NThhNzg3YWIwM2U3NzgxODgzNGQzMTg1YzQuLmM4ZTU2NzgyNDIzMTVhYzM5MzUx
ZTAyMDhmZjhhMGVkZWUxM2Q5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBjb25zdCBh
dXRvJiBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSA9IGRlc3RDb250ZXh0LnN0YXRlKCk7CiAKICAg
ICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRl
eHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAg
IGRyYXdQbGF0Zm9ybUltYWdlKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVz
dGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5h
dGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3Rp
bmF0aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAgIGRyYXdQbGF0Zm9ybUltYWdlKCpkZXN0Q29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVz
dFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpIH0sIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhhKCks
IFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dTdGF0ZShkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSkpOwog
fQogCiB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmRh
ZWQ5ZjE3ZTQwYTMyMWYyZDA0YWY3MTAyODBjYzliYzA3OTcyMC4uNzJkZTRhZWVmNTMwNjUyZmNk
MzQwNDA3MGFjNTQwNmViMmJmYTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNjAsOSArNjAs
OSBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRS
ZWYgY29udGV4dCkKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQoQ0dDb250ZXh0
R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRCYXNl
Q1RNKGNvbnRleHQpKSk7CiB9CiAKLXN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBjb3JlSW50
ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KQorc3RhdGlj
IEludGVycG9sYXRpb25RdWFsaXR5IGNvcmVJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRS
ZWYgY29udGV4dCkKIHsKLSAgICBzd2l0Y2ggKHF1YWxpdHkpIHsKKyAgICBzd2l0Y2ggKENHQ29u
dGV4dEdldEludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQpKSB7CiAgICAgY2FzZSBrQ0dJbnRl
cnBvbGF0aW9uRGVmYXVsdDoKICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25RdWFsaXR5OjpE
ZWZhdWx0OwogICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbk5vbmU6CkBAIC0xODUsNyArMTg1LDcg
QEAgc3RhdGljIHZvaWQgc2V0Q0dCbGVuZE1vZGUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUKIH0KIAogR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBo
aWNzQ29udGV4dENHKENHQ29udGV4dFJlZiBjZ0NvbnRleHQpCi0gICAgOiBHcmFwaGljc0NvbnRl
eHQoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTdHJva2VUaGlja25lc3MgfSkKKyAgICA6IEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6YmFzaWNDaGFuZ2VGbGFncywgY29yZUludGVycG9sYXRpb25RdWFsaXR5KHBs
YXRmb3JtQ29udGV4dCgpKSkKIHsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTkzLDcgKzE5Myw2IEBAIEdyYXBoaWNzQ29udGV4dENHOjpHcmFwaGljc0NvbnRleHRD
RyhDR0NvbnRleHRSZWYgY2dDb250ZXh0KQogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUoY2dDb250ZXh0KTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRl
eHQgc3RhcnRzIGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCiAgICAgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSk7Ci0gICAgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gY29yZUludGVy
cG9sYXRpb25RdWFsaXR5KENHQ29udGV4dEdldEludGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3Jt
Q29udGV4dCgpKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dENHOjp+R3JhcGhpY3NDb250ZXh0Q0co
KQpAQCAtMTA4NCw0MyArMTA4Myw0MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRh
dGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgZm9yIChhdXRvIGNoYW5n
ZSA6IHN0YXRlLmNoYW5nZXMoKSkgewogICAgICAgICBzd2l0Y2ggKGNoYW5nZSkgewogICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaDoKLSAgICAgICAg
ICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpKTsKKyAg
ICAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0YXRlLmZpbGxCcnVzaCgpLmNvbG9y
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3M6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRM
aW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsK
KyAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCBzdGQ6Om1heChzdGF0
ZS5zdHJva2VUaGlja25lc3MoKSwgMC5mKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoOgotICAgICAg
ICAgICAgQ0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dD
b2xvcihzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKS5nZXQoKSk7CisgICAgICAgICAgICBDR0Nv
bnRleHRTZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRl
LnN0cm9rZUJydXNoKCkuY29sb3IoKSkuZ2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlOgot
ICAgICAgICAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgc3RhdGUuY29tcG9zaXRlTW9kZS5v
cGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIHNl
dENHQmxlbmRNb2RlKGNvbnRleHQsIHN0YXRlLmNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRpb24sIHN0
YXRlLmNvbXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93OgotICAg
ICAgICAgICAgc2V0Q0dTaGFkb3coY29udGV4dCwgcmVuZGVyaW5nTW9kZSgpLCBzdGF0ZS5kcm9w
U2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5ibHVyUmFkaXVzLCBzdGF0ZS5kcm9wU2hh
ZG93LmNvbG9yLCBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgICAgICAgICBz
ZXRDR1NoYWRvdyhjb250ZXh0LCByZW5kZXJpbmdNb2RlKCksIHN0YXRlLmRyb3BTaGFkb3coKS5v
ZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3coKS5ibHVyUmFkaXVzLCBzdGF0ZS5kcm9wU2hhZG93KCku
Y29sb3IsIHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYToK
LSAgICAgICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAg
ICAgICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5OgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0
SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0
ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRJ
bnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCBjZ0ludGVycG9sYXRpb25RdWFsaXR5KHN0YXRl
LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGU6
Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0
RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKSk7CisgICAgICAgICAgICBDR0NvbnRl
eHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4
dERyYXdpbmdNb2RlKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzOgotICAgICAgICAgICAg
Q0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlh
cyk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgc3Rh
dGUuc2hvdWxkQW50aWFsaWFzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250czoKLSAgICAg
ICAgICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3Vs
ZFNtb290aEZvbnRzKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRz
KGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgZGVmYXVsdDoKQEAgLTExNTUsNyArMTE1NCw2IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lk
dGgpCiAgICAgICAgICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENv
bnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKSk7CiAKICAgICAgICAgICAgIENHQ29udGV4dFJl
ZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllci5nZXQoKSk7Ci0gICAgICAg
ICAgICBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IGxpbmVXaWR0aDsKICAgICAgICAgICAgIENH
Q29udGV4dFNldExpbmVXaWR0aChsYXllckNvbnRleHQsIGxpbmVXaWR0aCk7CiAKICAgICAgICAg
ICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBsaW5lIHdpZHRoLCBvdGhlcndpc2UgdGhlIGxheWVy
J3MgdG9wLWxlZnQgY29ybmVyIHdvdWxkIGJlCkBAIC0xNDg4LDcgKzE0ODYsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dENHOjphZGREZXN0aW5hdGlvbkF0UG9pbnQoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBGbG9hdFBvaQogCiBib29sIEdyYXBoaWNzQ29udGV4dENHOjpjYW5Vc2VTaGFkb3dC
bHVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKHJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkKSAmJiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgcmV0dXJuIChyZW5kZXJpbmdNb2RlKCkgPT0gUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Ry
YXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBkMGJlYzhkNjM4NDcwOWI3OGNmMWRl
ODBiYjAyZTFlMzdkMmY5NDZlLi5hMWFlZmQwNzAyZmFkNDdmOTE5ZGJhODJmNjIzNTZmMjA1MTU1
NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBA
IC05NiwxMyArOTYsMTMgQEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIo
R3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3REcmF3R2wKIAogdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgY29udGV4dFN0YXRlKQogewotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2ggPSBj
b250ZXh0U3RhdGUuZmlsbEJydXNoOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9
IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVzaDsKKyAgICBtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNo
ID0gY29udGV4dFN0YXRlLmZpbGxCcnVzaCgpOworICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VC
cnVzaCA9IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVzaCgpOwogCiAgICAgbV9vcmlnaW5hbFN0YXRl
LmN0bSA9IG1fb3duZXIuZ2V0Q1RNKCk7IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCiAK
LSAgICBtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdyA9IGNvbnRleHRTdGF0ZS5kcm9wU2hhZG93
OwotICAgIG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zID0gY29udGV4dFN0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOworICAgIG1fb3JpZ2luYWxTdGF0ZS5kcm9wU2hhZG93ID0g
Y29udGV4dFN0YXRlLmRyb3BTaGFkb3coKTsKKyAgICBtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJh
bnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpOwogfQogCiB2
b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIGNvbgogICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7CiAgICAgbV9p
bnRlcm5hbENvbnRleHQtPnNldERyb3BTaGFkb3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cp
OwogCi0gICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShjb250ZXh0U3Rh
dGUudGV4dERyYXdpbmdNb2RlKTsKKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0VGV4dERyYXdp
bmdNb2RlKGNvbnRleHRTdGF0ZS50ZXh0RHJhd2luZ01vZGUoKSk7CiB9CiAKIHZvaWQgRHJhd0ds
eXBoc1JlY29yZGVyOjpwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQmIGZvbnQsIEZv
bnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApp
bmRleCAyYjAzY2U0YTY2ZTJkOGFhMGZhZDgxYTY0NGFlYjFlZGZkZTFjODgxLi4yYjRlNDM3ZDZj
NTFkMTYyYTZiODEzZjQ1ZTA2ZGYyNzMxZDI4MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHAKQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdz
KEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIGlmICghKGZsYWdz
ICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpKSB7CiAgICAgICAgICAg
ICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBmb3Igbm93LCBvbmx5IGRyb3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3Rh
dGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYy4KLSAgICAgICAgICAgIGlmIChz
dGF0ZUl0ZW0uc3RhdGUoKS5jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCisgICAgICAgICAgICBpZiAoc3RhdGVJ
dGVtLnN0YXRlKCkuY2hhbmdlcygpID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKaW5kZXggOTM5NDU1MWYzNTllYzFhZjRlYTkyYzdiM2IxNjg0ZWQyZWVkYTYx
Ni4uMzRmNmYyMTNkM2E3YmU0OWM3MjVhM2NiNGRiNWMyYTNhZjczOTg1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQg
UmVjb3JkZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKICAgICByZWNvcmRFbmRUcmFuc3BhcmVu
Y3lMYXllcigpOwogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CiAKLSAgICBtX3N0YXRl
LmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGN1cnJlbnRTdGF0ZSgpLnN0YXRlLmFscGhhKTsKKyAg
ICBtX3N0YXRlLmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGN1cnJlbnRTdGF0ZSgpLnN0YXRlLmFs
cGhhKCkpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcAppbmRleCBmM2M4YzkwY2Q4OGJiZTBjNTFlMWQ0ZmExMzNjNTFlODNiODBiMzli
Li43OWEwYTg1MDBhMjNjZjNmZGZkOGNkMTRlN2I0N2FjMjJiMDM2NjQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC05NywxMCArOTcsMTAgQEAgaW5saW5l
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlT
ZXRTdGF0ZUl0ZW0oR3JhcGgKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9Owog
Ci0gICAgaWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRT
dGF0ZUl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpKQorICAgIGlmIChhdXRvIGlt
YWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCku
c3Ryb2tlQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmll
cjsKIAotICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uo
c2V0U3RhdGVJdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4oKSkpCisgICAgaWYgKGF1dG8g
aW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUo
KS5maWxsQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmll
cjsKIAogICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMTQxNjlh
MDc1NThkNjE2YjA5MjBjYjA1N2RjOGViMWMyYTU4OGIwMy4uYzIxY2QwZTRkNTI3YTNjYzEyMDJi
ZjZmY2Y3ZWQyMWFmZjkzZDVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYg
c3RhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgYXBwZW5kKGNyZWF0
ZUNvbW1hbmQ8U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsK
KyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0
ZS5zdHJva2VUaGlja25lc3MoKSkpOwogICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCku
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUpKSB7CkBA
IC0xMTcsNyArMTE3LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVT
dGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAg
IH07CiAKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlU3R5bGVDaGFuZ2U+KHN0
YXRlLnN0cm9rZVN0eWxlKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFN0cm9rZVN0
eWxlQ2hhbmdlPihzdGF0ZS5zdHJva2VTdHlsZSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRl
LmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3Np
dGVNb2RlKSkgewpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICAg
ICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENvbXBvc2l0
ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNv
bXBvc2l0ZU1vZGUuYmxlbmRNb2RlKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENv
bXBvc2l0ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbiwg
c3RhdGUuY29tcG9zaXRlTW9kZSgpLmJsZW5kTW9kZSkpOwogICAgIH0KIAogICAgIGlmIChzdGF0
ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxk
QW50aWFsaWFzKSkgewpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAg
ICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3Vs
ZEFudGlhbGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7CisgICAgICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlhbGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFs
aWFzKCkpKTsKICAgICB9CiAKICAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKQEAgLTI5NCw3
ICsyOTQsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogICAgIH07CiAKICAgICBhdXRvJiBz
dGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+
KHJlY3QsIGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGll
bnRTcGFjZVRyYW5zZm9ybSgpKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0
PihyZWN0LCBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEJydXNoKCkuZ3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSgpKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
QEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLAogICAgIH07CiAKICAg
ICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8
RmlsbFJlY3Q+KHJlY3QsIGNvbG9yLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBDYWly
bzo6U2hhZG93U3RhdGUoc3RhdGUpLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikpOwor
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBjb2xvciwgY29tcG9zaXRl
T3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgc3RhdGUuY29t
cG9zaXRlTW9kZSgpLm9wZXJhdGlvbikpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpAQCAtMzQ4LDcgKzM0OCw3
IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0CiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0g
dGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+
KHJvdW5kZWRSZWN0LCBjb2xvciwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIGJsZW5k
TW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPEZpbGxSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QsIGNvbG9yLCBzdGF0ZS5jb21wb3NpdGVN
b2RlKCkub3BlcmF0aW9uLCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsK
IH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRI
b2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTM0LDggKzUzNCw4IEBAIHZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoCiAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0dseXBocz4oQ2Fp
cm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAg
ICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsCiAgICAgICAgIFJlZlB0cjxjYWly
b19zY2FsZWRfZm9udF90Pihmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSksCi0gICAg
ICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9m
ZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlLAotICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25l
c3MsIHN0YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBmb250
U21vb3RoaW5nKSk7CisgICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3Zl
KGNhaXJvR2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlKCksCisgICAgICAg
IHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0
ZS5kcm9wU2hhZG93KCkuY29sb3IsIGZvbnRTbW9vdGhpbmcpKTsKIH0KIAogdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG8KIAogICAgIFVOVVNFRF9Q
QVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBh
cHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRmb3Jt
SW1hZ2UoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMs
IHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNo
YWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJ
bWFnZT4obmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpKSwgc3RhdGUuYWxwaGEoKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCiB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBuYXRp
dmVJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVy
VGhpY2tuZQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAg
YXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3Rh
dGUuZmlsbEJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVz
aC5jb2xvcigpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJv
cmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbEJydXNoKCkuY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5
bGUoKSwgc3RhdGUuc3Ryb2tlQnJ1c2goKS5jb2xvcigpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludDIpCkBAIC02MjQsNyArNjI0LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0
UG9pbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgp
OwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5lPihwb2ludDEsIHBvaW50Miwgc3Rh
dGUuc3Ryb2tlU3R5bGUsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRo
aWNrbmVzcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8RHJhd0xpbmU+KHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJva2VTdHlsZSgpLCBzdGF0ZS5z
dHJva2VCcnVzaCgpLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5zaG91
bGRBbnRpYWxpYXMoKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdM
aW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywgY29u
c3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5kZXJsaW5l
cywgU3Ryb2tlU3R5bGUpCkBAIC02NDcsNyArNjQ3LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0
aGkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwot
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5lc0ZvclRleHQ+KHBvaW50LCB0aGlja25l
c3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGluZXMsIHN0YXRlLnN0cm9rZUJydXNo
LmNvbG9yKCkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZXNGb3JUZXh0Pihw
b2ludCwgdGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxpbmVzLCBzdGF0
ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRG9j
dW1lbnRNYXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAg
ICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3Jl
YXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCksIHN0
YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VU
aGlja25lc3MpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwg
c3RhdGUuZmlsbEJydXNoKCkuY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUoKSwgc3RhdGUuc3Ry
b2tlQnJ1c2goKS5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MoKSkpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwg
ZmxvYXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDllMzc4NmUwZmRjZGI4OWZiMDY2MjhjOGZjYzZkYzg3
Yjc3YzNlOWUuLjlhMjM5ZTY0MjVmZDM5YzRiYzgxMzRmNWQ1MTk1YmRkYTFkNmFkM2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyOCwxMCArMTI4LDEwIEBAIHZvaWQgUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYg
aXRlbSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAotICAgIGlmICghZml4UGF0dGVy
blRpbGVJbWFnZShpdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4oKSkpCisgICAgaWYgKCFm
aXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5maWxsQnJ1c2goKS5wYXR0ZXJuKCkpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0
ZSgpLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdl
KGl0ZW0uc3RhdGUoKS5zdHJva2VCcnVzaCgpLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKaW5kZXggMjMzZjFkNzAxZjM4
ZDY2MDFiOWE4MzJiMzA4MzYwY2NkOWQxMWU4MC4uOTdiNWU2M2YxNWE4MzFmZTRlZTA1YTFhZWIz
Mjg3Y2MwYmQ3MTlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hh
cmVhYmxlQml0bWFwQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1No
YXJlYWJsZUJpdG1hcENhaXJvLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFNoYXJlYWJsZUJp
dG1hcDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3Rvciwg
Y29uc3QgSQogCiAgICAgQVNTRVJUKGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAg
IGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3U3VyZmFjZSgq
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIHN0YXRlLmFscGhhLCBDYWlybzo6
U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1N1cmZhY2UoKmNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KCksIHN0YXRlLmFscGhhKCksIENhaXJvOjpTaGFkb3dT
dGF0ZShzdGF0ZSkpOwogfQogCiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCg==
</data>
<flag name="commit-queue"
          id="483321"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455356</attachid>
            <date>2022-03-22 02:50:58 -0700</date>
            <delta_ts>2022-03-22 10:23:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238192-20220322025057.patch</filename>
            <type>text/plain</type>
            <size>75827</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiNGM3Y2VkODZmNjlm
Njk2N2E3NjBiMzBiOGQzMzU2NjY5MGYzZS4uODFjMzA1N2VkNmMyZDU4ZmU3NzAzYWYxZDFlYWI1
Yjg3NWE3MmY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wMy0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgdGhlIG1lbWJlcnMgYmUg
cHJpdmF0ZSBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgZ2V0dGVycyBmb3IKKyAgICAgICAgYWxsIG9m
IHRoZW0uIFRoaXMgY2hhbmdlIHdpbGwgcHJldmVudCBjaGFuZ2luZyB0aGUgbWVtYmVycyB3aXRo
b3V0IGdvaW5nCisgICAgICAgIHRocm91Z2ggdGhlIHNldHRlcnMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxs
Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsR3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmZpbGxQYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJ1bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZUNvbG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlR3JhZGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJvcFNoYWRvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNvbXBvc2l0ZU1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjphbHBoYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnRleHREcmF3aW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRBbnRpYWxpYXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRTbW9vdGhGb250cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0x1bWluYW5jZU1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Ojp1c2VEYXJrQXBwZWFyYW5jZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRpZEJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRp
ZEVuZFRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpjaGFuZ2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkaWRBcHBseUNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OmZpbGxCcnVzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbEJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0U3RhdGU6OmZpbGxSdWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZUJydXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlVGhpY2tuZXNzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldENvbXBv
c2l0ZU1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BT
aGFkb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNl
dERyb3BTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmFs
cGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRB
bHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4dERyYXdpbmdNb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRUZXh0RHJhd2luZ01vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkQW50
aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRT
bW9vdGhGb250cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0
ZTo6c2V0U2hvdWxkU21vb3RoRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXREcmF3THVtaW5hbmNlTWFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFVzZURhcmtB
cHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6RmlsbFNvdXJjZTo6RmlsbFNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWlybzo6U3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlOjpTaGFkb3dTdGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRDYWlybzo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcmVJbnRl
cnBvbGF0aW9uUXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6
R3JhcGhpY3NDb250ZXh0Q0cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6
OmRpZFVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpz
dHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpjYW5Vc2VT
aGFkb3dCbHVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5
cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
cmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjphcHBseVNldFN0YXRlSXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNv
c2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdCk6CisgICAgICAgIChOaWNv
c2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAo
Tmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgIChO
aWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QpOgorICAgICAgICAo
Tmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmUpOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dCk6CisgICAgICAg
IChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3RWxsaXBzZSk6CisKIDIwMjIt
MDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdl
cyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDkwM2NlYTE4NGQ0OTlkZmNhZWMw
MzdhMjQzZDFlMGE2MDY3YWEzZS4uYTI3YzIzYWJlODljYmUyMTdmZjk2NWFkNzExMTc0MDZkNGFj
NWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMy0yMiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgR3Jh
cGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
OjpzZXRTdGF0ZSk6CisgICAgICAgICogU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpwYWludCk6CisKIDIwMjIt
MDMtMjEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VSBQcm9jZXNzXSBNYWtlIEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdl
cyB0aWxsIHRoZXkgYXJlIGFwcGxpZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDllNGQwNjZiMDM5YjZkNWZlNGM1
MmNkNWFhNDk3ZDQyOTlhNmZiMWIuLmFjMzNmM2QzMTIzZmM1ODE0NGQ3YmJiOTdkN2FkZDYxMzc1
YzM5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcApAQCAtNDMsOCArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDaGFuZ2VGbGFncyYgY2hhbmdlRmxhZ3MpCi0gICAgOiBtX3N0YXRlKGNoYW5nZUZs
YWdzKQorR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiBjaGFuZ2VGbGFncywgSW50ZXJwb2xhdGlvblF1YWxpdHkg
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkKKyAgICA6IG1fc3RhdGUoY2hhbmdlRmxhZ3MsIGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMTNjYzNiMDM3NzkxMTY2
ZjkzYzI2ZWE4MmU4MWQ3NmU0NjFiNDBjNi4uZWQwZmVmYzU1YTgzMTMxZDE3MDlmN2Q3ZDRkYTQx
ZGQ0OWUzZGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHcmFwaGljc0NvbnRleHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhp
Y3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2VGbGFncyYgPSB7IH0s
IEludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgdmly
dHVhbCBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBA
IC03OSwzNiArNzksMzYgQEAgcHVibGljOgogCiAgICAgLy8gQ29udGV4dCBTdGF0ZQogCi0gICAg
Y29uc3QgU291cmNlQnJ1c2gmIGZpbGxCcnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmls
bEJydXNoOyB9Ci0gICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGUuZmlsbEJydXNoLmNvbG9yKCk7IH0KLSAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnQoKTsgfQotICAgIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KLSAgICBQ
YXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLnBh
dHRlcm4oKTsgfQorICAgIGNvbnN0IFNvdXJjZUJydXNoJiBmaWxsQnJ1c2goKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLmZpbGxCcnVzaCgpOyB9CisgICAgY29uc3QgQ29sb3ImIGZpbGxDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIGZpbGxCcnVzaCgpLmNvbG9yKCk7IH0KKyAgICBHcmFkaWVudCogZmls
bEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gZmlsbEJydXNoKCkuZ3JhZGllbnQoKTsgfQorICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBmaWxsQnJ1c2goKS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICBQ
YXR0ZXJuKiBmaWxsUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIGZpbGxCcnVzaCgpLnBhdHRlcm4o
KTsgfQogICAgIHZvaWQgc2V0RmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBt
X3N0YXRlLnNldEZpbGxCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAg
ICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fc3RhdGUuc2V0Rmls
bENvbG9yKGNvbG9yKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICAgICB2b2lkIHNldEZp
bGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0ZS5zZXRGaWxsR3JhZGllbnQoV1RGTW92
ZShncmFkaWVudCksIHNwYWNlVHJhbnNmb3JtKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0K
ICAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9zdGF0
ZS5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0
ZSk7IH0KIAotICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5m
aWxsUnVsZTsgfQorICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5maWxsUnVsZSgpOyB9CiAgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkg
eyBtX3N0YXRlLnNldEZpbGxSdWxlKGZpbGxSdWxlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7
IH0KIAotICAgIGNvbnN0IFNvdXJjZUJydXNoJiBzdHJva2VCcnVzaCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUuc3Ryb2tlQnJ1c2g7IH0KLSAgICBjb25zdCBDb2xvciYgc3Ryb2tlQ29sb3IoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCk7IH0KLSAgICBHcmFkaWVu
dCogc3Ryb2tlR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmdy
YWRpZW50KCk7IH0KLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN0cm9rZUdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKTsgfQotICAgIFBhdHRlcm4qIHN0cm9rZVBhdHRlcm4oKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLnN0cm9rZUJydXNoLnBhdHRlcm4oKTsgfQorICAgIGNvbnN0IFNvdXJj
ZUJydXNoJiBzdHJva2VCcnVzaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2go
KTsgfQorICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0cm9r
ZUJydXNoKCkuY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0
IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkuZ3JhZGllbnQoKTsgfQorICAgIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHN0
cm9rZUJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpOyB9CisgICAgUGF0dGVybiogc3Ry
b2tlUGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIHN0cm9rZUJydXNoKCkucGF0dGVybigpOyB9CiAg
ICAgdm9pZCBzZXRTdHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgbV9zdGF0
ZS5zZXRTdHJva2VCcnVzaChicnVzaCk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAg
dm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRTdHJv
a2VDb2xvcihjb2xvcik7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgdm9pZCBzZXRT
dHJva2VHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgc3BhY2VUcmFuc2Zvcm0gPSB7IH0pIHsgbV9zdGF0ZS5zZXRTdHJva2VHcmFkaWVudChX
VEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
KTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7
IG1fc3RhdGUuc2V0U3Ryb2tlUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgZGlkVXBkYXRlU3Rh
dGUobV9zdGF0ZSk7IH0KIAotICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3MoKTsgfQogICAgIHZvaWQg
c2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNrbmVzcykgeyBtX3N0YXRlLnNldFN0cm9rZVRo
aWNrbmVzcyh0aGlja25lc3MpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgU3Ry
b2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVN0eWxl
OyB9CisgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnN0cm9rZVN0eWxlKCk7IH0KICAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0
eWxlKSB7IG1fc3RhdGUuc2V0U3Ryb2tlU3R5bGUoc3R5bGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogCi0gICAgY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUuZHJvcFNoYWRvdzsgfQorICAgIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFk
b3coKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRyb3BTaGFkb3coKTsgfQogICAgIEZsb2F0U2l6
ZSBzaGFkb3dPZmZzZXQoKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkub2Zmc2V0OyB9CiAg
ICAgZmxvYXQgc2hhZG93Qmx1cigpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5ibHVyUmFk
aXVzOyB9CiAgICAgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yKCkgY29uc3QgeyByZXR1cm4gZHJv
cFNoYWRvdygpLmNvbG9yOyB9CkBAIC0xMjMsNDAgKzEyMyw0MCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmlzQmx1cnJl
ZCgpOyB9CiAgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCku
aGFzT3V0c2V0cygpOyB9CiAKLSAgICBDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGU7IH0KKyAgICBDb21wb3NpdGVNb2RlIGNv
bXBvc2l0ZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU1vZGUoKTsgfQog
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRpb247IH0KICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkg
Y29uc3QgeyByZXR1cm4gY29tcG9zaXRlTW9kZSgpLmJsZW5kTW9kZTsgfQogICAgIHZvaWQgc2V0
Q29tcG9zaXRlTW9kZShDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUpIHsgbV9zdGF0ZS5zZXRD
b21wb3NpdGVNb2RlKGNvbXBvc2l0ZU1vZGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQog
ICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlv
biwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSB7IHNldENvbXBvc2l0
ZU1vZGUoeyBvcGVyYXRpb24sIGJsZW5kTW9kZSB9KTsgfQogCi0gICAgZmxvYXQgYWxwaGEoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhhOyB9CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlLmFscGhhKCk7IH0KICAgICB2b2lkIHNldEFscGhhKGZsb2F0IGFscGhh
KSB7IG1fc3RhdGUuc2V0QWxwaGEoYWxwaGEpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQog
Ci0gICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7IH0KKyAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0
ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSgp
OyB9CiAgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4
dERyYXdpbmdNb2RlKSB7IG1fc3RhdGUuc2V0VGV4dERyYXdpbmdNb2RlKHRleHREcmF3aW5nTW9k
ZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAgICAgCi0gICAgSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorICAgIEludGVycG9sYXRpb25RdWFsaXR5IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKTsgfQogICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IG1f
c3RhdGUuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KIAotICAgIGJvb2wgc2hvdWxkQW50aWFs
aWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXM7IH0KKyAgICBib29s
IHNob3VsZEFudGlhbGlhcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkQW50aWFsaWFz
KCk7IH0KICAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykg
eyBtX3N0YXRlLnNldFNob3VsZEFudGlhbGlhcyhzaG91bGRBbnRpYWxpYXMpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQogCi0gICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc2hvdWxkU21vb3RoRm9udHM7IH0KKyAgICBib29sIHNob3VsZFNtb290
aEZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cygpOyB9CiAg
ICAgdm9pZCBzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKSB7IG1f
c3RhdGUuc2V0U2hvdWxkU21vb3RoRm9udHMoc2hvdWxkU21vb3RoRm9udHMpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQogCiAgICAgLy8gTm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1x
dWFudGl6YXRpb24gYmVjYXVzZSBpdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25p
bmcgZ2x5cGhzLgogICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRvIHRv
IGVuc3VyZSBhIGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICBib29sIHNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzOyB9CisgICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cygpOyB9CiAgICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgbV9zdGF0ZS5zZXRTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgZGlkVXBkYXRlU3RhdGUobV9z
dGF0ZSk7IH0KIAotICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CisgICAgYm9vbCBzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKTsgfQogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0K
IAotICAgIGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmRy
YXdMdW1pbmFuY2VNYXNrOyB9CisgICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2soKTsgfQogICAgIHZvaWQgc2V0RHJhd0x1
bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNlTWFzaykgeyBtX3N0YXRlLnNldERyYXdMdW1p
bmFuY2VNYXNrKGRyYXdMdW1pbmFuY2VNYXNrKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0K
IAogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudXNlRGFya0FwcGVhcmFuY2U7IH0KKyAgICBi
b29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS51c2VEYXJrQXBw
ZWFyYW5jZSgpOyB9CiAgICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFyYW5jZShib29sIHVzZURhcmtB
cHBlYXJhbmNlKSB7IG1fc3RhdGUuc2V0VXNlRGFya0FwcGVhcmFuY2UodXNlRGFya0FwcGVhcmFu
Y2UpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNw
cAppbmRleCBhNzI1NTNhMmE4MjE0M2I4YjYxODgyNDI2MmE1NTU2Nzg3ZmUwMzEyLi4xOGRmYWNh
YmU3ZjVjNmE3MDcyNGVlYTc0Y2NlNTlkYzYzMDg2ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3BwCkBA
IC0zMCwyMiArMzAsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HcmFwaGljc0NvbnRl
eHRTdGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZs
YWdzKQotICAgIDogY2hhbmdlRmxhZ3MoY2hhbmdlRmxhZ3MpCitHcmFwaGljc0NvbnRleHRTdGF0
ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzLCBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQorICAgIDogbV9j
aGFuZ2VGbGFncyhjaGFuZ2VGbGFncykKKyAgICAsIG1faW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eShpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQogewogfQogCiBib29sIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzKCkgY29uc3QKIHsKLSAgICBzdGF0aWMg
Y29uc3RleHByIENoYW5nZUZsYWdzIGlubGluZUNoYW5nZUZsYWdzIHsgQ2hhbmdlOjpTdHJva2VU
aGlja25lc3MsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsIENoYW5nZTo6RmlsbEJydXNoIH07Ci0KLSAg
ICBpZiAoY2hhbmdlRmxhZ3MgIT0gKGNoYW5nZUZsYWdzICYgaW5saW5lQ2hhbmdlRmxhZ3MpKQor
ICAgIGlmIChtX2NoYW5nZUZsYWdzICE9IChtX2NoYW5nZUZsYWdzICYgYmFzaWNDaGFuZ2VGbGFn
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlu
cyhDaGFuZ2U6OlN0cm9rZUJydXNoKSAmJiAhc3Ryb2tlQnJ1c2guaXNJbmxpbmVDb2xvcigpKQor
ICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFt
X3N0cm9rZUJydXNoLmlzSW5saW5lQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKENoYW5nZTo6RmlsbEJydXNoKSAmJiAhZmlsbEJy
dXNoLmlzSW5saW5lQ29sb3IoKSkKKyAgICBpZiAobV9jaGFuZ2VGbGFncy5jb250YWlucyhDaGFu
Z2U6OkZpbGxCcnVzaCkgJiYgIW1fZmlsbEJydXNoLmlzSW5saW5lQ29sb3IoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC01NCwzMyArNTMsMzMgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29udGFpbnNPbmx5SW5saW5lQ2hhbmdlcygpIGNvbnN0
CiB2b2lkIEdyYXBoaWNzQ29udGV4dFN0YXRlOjptZXJnZUNoYW5nZXMoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0
YXRlPiYgbGFzdERyYXdpbmdTdGF0ZSkKIHsKICAgICBhdXRvIG1lcmdlQ2hhbmdlID0gWyZdKENo
YW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipwcm9wZXJ0eSkgewotICAg
ICAgICBpZiAoIXN0YXRlLmNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkgfHwgdGhpcy0+KnBy
b3BlcnR5ID09IHN0YXRlLipwcm9wZXJ0eSkKKyAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VzKCku
Y29udGFpbnMoY2hhbmdlKSB8fCB0aGlzLT4qcHJvcGVydHkgPT0gc3RhdGUuKnByb3BlcnR5KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLT4qcHJvcGVydHkgPSBzdGF0ZS4qcHJv
cGVydHk7Ci0gICAgICAgIGNoYW5nZUZsYWdzLnNldChjaGFuZ2UsICFsYXN0RHJhd2luZ1N0YXRl
IHx8ICgqbGFzdERyYXdpbmdTdGF0ZSkuKnByb3BlcnR5ICE9IHRoaXMtPipwcm9wZXJ0eSk7Cisg
ICAgICAgIG1fY2hhbmdlRmxhZ3Muc2V0KGNoYW5nZSwgIWxhc3REcmF3aW5nU3RhdGUgfHwgKCps
YXN0RHJhd2luZ1N0YXRlKS4qcHJvcGVydHkgIT0gdGhpcy0+KnByb3BlcnR5KTsKICAgICB9Owog
Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKLSAgICBtZXJnZUNoYW5nZShDaGFu
Z2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpmaWxsUnVsZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9maWxsQnJ1c2gpOworICAgIG1l
cmdlQ2hhbmdlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUpOwogCi0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpT
dHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ry
b2tlQnJ1c2gpOwotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcyk7Ci0gICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6
U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
c3Ryb2tlQnJ1c2gpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlVGhpY2tuZXNzKTsK
KyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlKTsKIAotICAgIG1lcmdlQ2hhbmdl
KENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOwotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6RHJvcFNoYWRv
dywgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFkb3cp
OworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSk7CisgICAgbWVyZ2VDaGFu
Z2UoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9kcm9wU2hhZG93KTsKIAotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6QWxwaGEs
ICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKTsK
LSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBt
ZXJnZUNoYW5nZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpOworICAgIG1lcmdlQ2hhbmdlKENoYW5n
ZTo6QWxwaGEsICAgICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fYWxwaGEpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1faW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0RHJhd2luZ01vZGUpOwogCi0gICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKTsKLSAgICBtZXJnZUNoYW5nZShDaGFu
Z2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjpzaG91bGRTbW9vdGhGb250cyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMsICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zLCAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJh
bnNmb3Jtcyk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOworICAg
IG1lcmdlQ2hhbmdlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkQW50aWFsaWFzKTsKKyAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjptX3Nob3VsZFNtb290aEZvbnRzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaGFkb3dz
SWdub3JlVHJhbnNmb3JtcywgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcmF3THVtaW5hbmNl
TWFzaywgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNl
TWFzayk7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBtZXJnZUNoYW5nZShD
aGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpVc2VEYXJr
QXBwZWFyYW5jZSwgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV91c2VEYXJr
QXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIApAQCAtODgsNyArODcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpkaWRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCkKIHsKICNpZiBVU0UoQ0cp
CiAgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcigpIHNldHMgdGhlIENHIGds
b2JhbCBhbHBoYSB0byAxLiBLZWVwIG91ciBhbHBoYSBpbiBzeW5jLgotICAgIGFscGhhID0gMTsK
KyAgICBtX2FscGhhID0gMTsKICNlbmRpZgogfQogCkBAIC05Niw3ICs5NSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9yaWdpbmFs
T3BhY2l0eSkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0dDb250ZXh0QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcigpIHNldHMgdGhlIENHIGdsb2JhbCBhbHBoYSB0byAxLiBSZXNvcmUgb3VyIGFscGhh
IG5vdy4KLSAgICBhbHBoYSA9IG9yaWdpbmFsT3BhY2l0eTsKKyAgICBtX2FscGhhID0gb3JpZ2lu
YWxPcGFjaXR5OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3JpZ2luYWxPcGFjaXR5KTsKICNl
bmRpZgpAQCAtMTYwLDMzICsxNTksMzMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlQ2hhbmdl
TmFtZShHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlIGNoYW5nZSkKIFRleHRTdHJlYW0mIEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIGF1
dG8gZHVtcCA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoq
cHJvcGVydHkpIHsKLSAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCisg
ICAgICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCiAgICAgICAgICAgICB0
cy5kdW1wUHJvcGVydHkoc3RhdGVDaGFuZ2VOYW1lKGNoYW5nZSksIHRoaXMtPipwcm9wZXJ0eSk7
CiAgICAgfTsKIAotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgY2hhbmdlRmxh
Z3MpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2hhbmdlLWZsYWdzIiwgbV9jaGFuZ2VGbGFncyk7
CiAKLSAgICBkdW1wKENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKTsKLSAgICBkdW1wKENoYW5nZTo6RmlsbFJ1bGUs
ICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpOwor
ICAgIGR1bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCk7CisgICAgZHVtcChDaGFuZ2U6OkZpbGxSdWxlLCAg
ICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUpOwog
Ci0gICAgZHVtcChDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoKTsKLSAgICBkdW1wKENoYW5nZTo6U3Ryb2tlVGhp
Y2tuZXNzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tu
ZXNzKTsKLSAgICBkdW1wKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJv
a2VCcnVzaCwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9r
ZUJydXNoKTsKKyAgICBkdW1wKENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlja25lc3MpOworICAgIGR1bXAoQ2hh
bmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjptX3N0cm9rZVN0eWxlKTsKIAotICAgIGR1bXAoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlKTsKLSAgICBk
dW1wKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZHJvcFNoYWRvdyk7CisgICAgZHVtcChDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSk7Cisg
ICAgZHVtcChDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6Om1fZHJvcFNoYWRvdyk7CiAKLSAgICBkdW1wKENoYW5nZTo6QWxwaGEsICAg
ICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOwotICAg
IGR1bXAoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBkdW1wKENoYW5nZTo6
VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dGV4
dERyYXdpbmdNb2RlKTsKKyAgICBkdW1wKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9hbHBoYSk7CisgICAgZHVtcChDaGFuZ2U6
OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgZHVtcChDaGFuZ2U6OlRleHREcmF3aW5n
TW9kZSwgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fdGV4dERyYXdpbmdN
b2RlKTsKIAotICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOwotICAgIGR1bXAoQ2hhbmdl
OjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
aG91bGRTbW9vdGhGb250cyk7Ci0gICAgZHVtcChDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250cyk7Ci0gICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKLSAgICBkdW1w
KENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOworICAgIGR1bXAoQ2hhbmdlOjpTaG91bGRBbnRpYWxp
YXMsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZEFudGlhbGlh
cyk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9udHMpOworICAgIGR1bXAoQ2hhbmdl
OjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMsICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpt
X3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7CisgICAgZHVtcChDaGFuZ2U6OlNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zLCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMpOworICAgIGR1bXAoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2RyYXdMdW1pbmFuY2VNYXNrKTsKICNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGR1bXAoQ2hhbmdlOjpVc2VEYXJrQXBw
ZWFyYW5jZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFy
YW5jZSk7CisgICAgZHVtcChDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fdXNlRGFya0FwcGVhcmFuY2UpOwogI2VuZGlmCiAgICAg
cmV0dXJuIHRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmgKaW5kZXggZTgyNTE3ZWJlZTI2NTVmMWMzZmVmNjgy
ZDNhYTQ2YTE5ZGE3ZTI5Ny4uNDZiMWE4NmNkODJlMDEyZDk4Yzc1MTg1ZmE4NmE3ZDE2NWY2ZjIx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRTdGF0ZS5oCkBAIC0zMiw3ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dFN0YXRlIHsKKyAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0Q2Fpcm87CitwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBDaGFuZ2UgOiB1aW50MzJfdCB7CiAgICAgICAgIEZpbGxCcnVzaCAg
ICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKICAgICAgICAgRmlsbFJ1bGUgICAgICAgICAgICAg
ICAgICAgID0gMSA8PCAxLApAQCAtNTksNDAgKzYxLDY3IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSB7CiAgICAgfTsKICAgICB1c2luZyBDaGFuZ2VGbGFncyA9IE9wdGlvblNldDxDaGFu
Z2U+OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgQ2hh
bmdlRmxhZ3MmID0geyB9KTsKKyAgICBzdGF0aWMgY29uc3RleHByIENoYW5nZUZsYWdzIGJhc2lj
Q2hhbmdlRmxhZ3MgeyBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgQ2hhbmdlOjpTdHJva2VCcnVz
aCwgQ2hhbmdlOjpGaWxsQnJ1c2ggfTsKIAotICAgIENoYW5nZUZsYWdzIGNoYW5nZXMoKSBjb25z
dCB7IHJldHVybiBjaGFuZ2VGbGFnczsgfQotICAgIHZvaWQgZGlkQXBwbHlDaGFuZ2VzKCkgeyBj
aGFuZ2VGbGFncyA9IHsgfTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0
YXRlKGNvbnN0IENoYW5nZUZsYWdzJiA9IHsgfSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRl
cnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCk7CiAKLSAgICB2b2lkIHNldEZpbGxCcnVzaChjb25z
dCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1c2gsICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoLCBicnVzaCk7IH0KLSAgICB2b2lkIHNldEZp
bGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpGaWxsQnJ1
c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoLCB7IGNvbG9yIH0pOyB9Ci0gICAg
dm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtKSB7IGZpbGxCcnVzaC5zZXRHcmFkaWVudChXVEZN
b3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpG
aWxsQnJ1c2gpOyB9Ci0gICAgdm9pZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0
ZXJuKSB7IGZpbGxCcnVzaC5zZXRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFn
cy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9CisgICAgQ2hhbmdlRmxhZ3MgY2hhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fY2hhbmdlRmxhZ3M7IH0KKyAgICB2b2lkIGRpZEFwcGx5Q2hhbmdlcygp
IHsgbV9jaGFuZ2VGbGFncyA9IHsgfTsgfQogCi0gICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVs
ZSBmaWxsUnVsZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OmZpbGxSdWxlLCBmaWxsUnVsZSk7IH0KKyAgICBjb25zdCBTb3VyY2VCcnVzaCYg
ZmlsbEJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9maWxsQnJ1c2g7IH0KKyAgICB2b2lkIHNldEZp
bGxCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpG
aWxsQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9maWxsQnJ1c2gsIGJydXNoKTsgfQor
ICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShD
aGFuZ2U6OkZpbGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCwgeyBj
b2xvciB9KTsgfQorICAgIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFk
aWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9ybSkgeyBtX2ZpbGxCcnVz
aC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBtX2NoYW5n
ZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KKyAgICB2b2lkIHNldEZpbGxQYXR0ZXJu
KFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9maWxsQnJ1c2guc2V0UGF0dGVybihXVEZNb3Zl
KHBhdHRlcm4pKTsgbV9jaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpGaWxsQnJ1c2gpOyB9CiAKLSAg
ICB2b2lkIHNldFN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OlN0cm9rZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJy
dXNoLCBicnVzaCk7IH0KLSAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnN0cm9rZUJydXNoLCB7IGNvbG9yIH0pOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VHcmFkaWVu
dChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VU
cmFuc2Zvcm0pIHsgc3Ryb2tlQnJ1c2guc2V0R3JhZGllbnQoV1RGTW92ZShncmFkaWVudCksIHNw
YWNlVHJhbnNmb3JtKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6U3Ryb2tlQnJ1c2gpOyB9Ci0g
ICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgc3Ryb2tl
QnJ1c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgY2hhbmdlRmxhZ3MuYWRkKENoYW5n
ZTo6U3Ryb2tlQnJ1c2gpOyB9CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVy
biBtX2ZpbGxSdWxlOyB9CisgICAgdm9pZCBzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkg
eyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxSdWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
ZmlsbFJ1bGUsIGZpbGxSdWxlKTsgfQogCi0gICAgdm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxv
YXQgc3Ryb2tlVGhpY2tuZXNzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNz
LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcywgc3Ryb2tlVGhpY2tuZXNz
KTsgfQotICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpIHsg
c2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VTdHlsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
dHJva2VTdHlsZSwgc3Ryb2tlU3R5bGUpOyB9CisgICAgY29uc3QgU291cmNlQnJ1c2gmIHN0cm9r
ZUJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VCcnVzaDsgfQorICAgIHZvaWQgc2V0U3Ry
b2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFByb3BlcnR5KENoYW5nZTo6
U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VCcnVzaCwgYnJ1c2gp
OyB9CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgc2V0UHJv
cGVydHkoQ2hhbmdlOjpTdHJva2VCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9r
ZUJydXNoLCB7IGNvbG9yIH0pOyB9CisgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3Jh
ZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0p
IHsgbV9zdHJva2VCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFu
c2Zvcm0pOyBtX2NoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OlN0cm9rZUJydXNoKTsgfQorICAgIHZv
aWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJiBwYXR0ZXJuKSB7IG1fc3Ryb2tlQnJ1
c2guc2V0UGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsgbV9jaGFuZ2VGbGFncy5hZGQoQ2hhbmdl
OjpTdHJva2VCcnVzaCk7IH0KIAotICAgIHZvaWQgc2V0Q29tcG9zaXRlTW9kZShDb21wb3NpdGVN
b2RlIGNvbXBvc2l0ZU1vZGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUsIGNvbXBvc2l0ZU1vZGUpOyB9Ci0g
ICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpIHsgc2V0
UHJvcGVydHkoQ2hhbmdlOjpEcm9wU2hhZG93LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BT
aGFkb3csIGRyb3BTaGFkb3cpOyB9CisgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJva2VUaGlja25lc3M7IH0KKyAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVz
cyhmbG9hdCBzdHJva2VUaGlja25lc3MpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VUaGlj
a25lc3MsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlja25lc3MsIHN0cm9rZVRo
aWNrbmVzcyk7IH0KIAotICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSwgYWxwaGEpOyB9
Ci0gICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFs
aXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOyB9Ci0gICAgdm9pZCBz
ZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKSB7
IHNldFByb3BlcnR5KENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnRleHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorICAgIFN0cm9rZVN0eWxl
IHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VTdHlsZTsgfQorICAgIHZvaWQg
c2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpIHsgc2V0UHJvcGVydHkoQ2hh
bmdlOjpTdHJva2VTdHlsZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlLCBz
dHJva2VTdHlsZSk7IH0KKworICAgIGNvbnN0IENvbXBvc2l0ZU1vZGUmIGNvbXBvc2l0ZU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU1vZGU7IH0KKyAgICB2b2lkIHNldENvbXBvc2l0
ZU1vZGUoQ29tcG9zaXRlTW9kZSBjb21wb3NpdGVNb2RlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6
Q29tcG9zaXRlTW9kZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2NvbXBvc2l0ZU1vZGUsIGNv
bXBvc2l0ZU1vZGUpOyB9CisKKyAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gbV9kcm9wU2hhZG93OyB9CisgICAgdm9pZCBzZXREcm9wU2hhZG93KGNvbnN0
IERyb3BTaGFkb3cmIGRyb3BTaGFkb3cpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpEcm9wU2hhZG93
LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZHJvcFNoYWRvdywgZHJvcFNoYWRvdyk7IH0KKwor
ICAgIGZsb2F0IGFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9hbHBoYTsgfQorICAgIHZvaWQgc2V0
QWxwaGEoZmxvYXQgYWxwaGEpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpBbHBoYSwgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX2FscGhhLCBhbHBoYSk7IH0KKworICAgIEludGVycG9sYXRpb25RdWFs
aXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHk7IH0KKyAgICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkgeyBzZXRQ
cm9wZXJ0eShDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9pbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KTsgfQorCisgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXh0RHJhd2luZ01vZGU7IH0KKyAgICB2b2lkIHNldFRleHREcmF3
aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUpIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0
RHJhd2luZ01vZGUsIHRleHREcmF3aW5nTW9kZSk7IH0KKworICAgIGJvb2wgc2hvdWxkQW50aWFs
aWFzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRBbnRpYWxpYXM7IH0KKyAgICB2b2lkIHNldFNo
b3VsZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OlNob3VsZEFudGlhbGlhcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZEFudGlhbGlh
cywgc2hvdWxkQW50aWFsaWFzKTsgfQorCisgICAgYm9vbCBzaG91bGRTbW9vdGhGb250cygpIGNv
bnN0IHsgcmV0dXJuIG1fc2hvdWxkU21vb3RoRm9udHM7IH0KKyAgICB2b2lkIHNldFNob3VsZFNt
b290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpT
aG91bGRTbW9vdGhGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFNtb290aEZv
bnRzLCBzaG91bGRTbW9vdGhGb250cyk7IH0KKworICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7
IH0KKyAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cywgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsgfQorCisgICAgYm9vbCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM7IH0KKyAgICB2b2lkIHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zLCBzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7IH0KKworICAgIGJvb2wgZHJhd0x1bWluYW5j
ZU1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYXdMdW1pbmFuY2VNYXNrOyB9CisgICAgdm9pZCBz
ZXREcmF3THVtaW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKSB7IHNldFByb3BlcnR5
KENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3
THVtaW5hbmNlTWFzaywgZHJhd0x1bWluYW5jZU1hc2spOyB9CiAKLSAgICB2b2lkIHNldFNob3Vs
ZEFudGlhbGlhcyhib29sIHNob3VsZEFudGlhbGlhcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNo
b3VsZEFudGlhbGlhcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMsIHNo
b3VsZEFudGlhbGlhcyk7IH0KLSAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hv
dWxkU21vb3RoRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cywgc2hvdWxkU21vb3RoRm9u
dHMpOyB9Ci0gICAgdm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCBzaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOyB9Ci0gICAgdm9pZCBz
ZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7
IHNldFByb3BlcnR5KENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKTsgfQotICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNl
TWFzaykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrLCBkcmF3THVtaW5hbmNlTWFzayk7IH0KICNp
ZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFu
Y2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtB
cHBlYXJhbmNlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlLCB1c2VE
YXJrQXBwZWFyYW5jZSk7IH0KKyAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2VEYXJrQXBwZWFyYW5jZTsgfQorICAgIHZvaWQgc2V0VXNlRGFya0FwcGVhcmFu
Y2UoYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlVzZURhcmtB
cHBlYXJhbmNlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fdXNlRGFya0FwcGVhcmFuY2UsIHVz
ZURhcmtBcHBlYXJhbmNlKTsgfQogI2VuZGlmCiAgICAgCiAgICAgYm9vbCBjb250YWluc09ubHlJ
bmxpbmVDaGFuZ2VzKCkgY29uc3Q7CkBAIC0xMDYsMzEgKzEzNSw2IEBAIHN0cnVjdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAg
Q2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3M7Ci0KLSAgICBTb3VyY2VCcnVzaCBmaWxsQnJ1c2ggeyBD
b2xvcjo6YmxhY2sgfTsKLSAgICBXaW5kUnVsZSBmaWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJv
IH07Ci0gICAgCi0gICAgU291cmNlQnJ1c2ggc3Ryb2tlQnJ1c2ggeyBDb2xvcjo6YmxhY2sgfTsK
LSAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgeyAwIH07Ci0gICAgU3Ryb2tlU3R5bGUgc3Ryb2tl
U3R5bGUgeyBTb2xpZFN0cm9rZSB9OwotICAgIAotICAgIENvbXBvc2l0ZU1vZGUgY29tcG9zaXRl
TW9kZSB7IENvbXBvc2l0ZU9wZXJhdG9yOjpTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCB9
OwotICAgIERyb3BTaGFkb3cgZHJvcFNoYWRvdzsKLSAgICAKLSAgICBmbG9hdCBhbHBoYSB7IDEg
fTsKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5IHsg
SW50ZXJwb2xhdGlvblF1YWxpdHk6OkRlZmF1bHQgfTsKLSAgICBUZXh0RHJhd2luZ01vZGVGbGFn
cyB0ZXh0RHJhd2luZ01vZGUgeyBUZXh0RHJhd2luZ01vZGU6OkZpbGwgfTsKLQotICAgIGJvb2wg
c2hvdWxkQW50aWFsaWFzIHsgdHJ1ZSB9OwotICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMgeyB0
cnVlIH07Ci0gICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgeyB0cnVlIH07Ci0g
ICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBkcmF3
THVtaW5hbmNlTWFzayB7IGZhbHNlIH07Ci0jaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkK
LSAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlIHsgZmFsc2UgfTsKLSNlbmRpZgotICAgIAogcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgc2V0UHJvcGVydHkoQ2hh
bmdlIGNoYW5nZSwgVCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5LCBjb25zdCBUJiB2
YWx1ZSkKQEAgLTE0MCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCiAgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IHZhbHVlOwotICAgICAgICBjaGFuZ2VG
bGFncy5hZGQoY2hhbmdlKTsKKyAgICAgICAgbV9jaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTUxLDQxICsxNTUsNjYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgICAgICB0aGlzLT4qcHJvcGVy
dHkgPSBXVEZNb3ZlKHZhbHVlKTsKLSAgICAgICAgY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7Cisg
ICAgICAgIG1fY2hhbmdlRmxhZ3MuYWRkKGNoYW5nZSk7CiAgICAgfQorCisgICAgQ2hhbmdlRmxh
Z3MgbV9jaGFuZ2VGbGFnczsKKworICAgIFNvdXJjZUJydXNoIG1fZmlsbEJydXNoIHsgQ29sb3I6
OmJsYWNrIH07CisgICAgV2luZFJ1bGUgbV9maWxsUnVsZSB7IFdpbmRSdWxlOjpOb25aZXJvIH07
CisgICAgCisgICAgU291cmNlQnJ1c2ggbV9zdHJva2VCcnVzaCB7IENvbG9yOjpibGFjayB9Owor
ICAgIGZsb2F0IG1fc3Ryb2tlVGhpY2tuZXNzIHsgMCB9OworICAgIFN0cm9rZVN0eWxlIG1fc3Ry
b2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9OworICAgIAorICAgIENvbXBvc2l0ZU1vZGUgbV9jb21w
b3NpdGVNb2RlIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9y
bWFsIH07CisgICAgRHJvcFNoYWRvdyBtX2Ryb3BTaGFkb3c7CisgICAgCisgICAgZmxvYXQgbV9h
bHBoYSB7IDEgfTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkgeyBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCB9OworICAgIFRleHREcmF3
aW5nTW9kZUZsYWdzIG1fdGV4dERyYXdpbmdNb2RlIHsgVGV4dERyYXdpbmdNb2RlOjpGaWxsIH07
CisKKyAgICBib29sIG1fc2hvdWxkQW50aWFsaWFzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91
bGRTbW9vdGhGb250cyB7IHRydWUgfTsKKyAgICBib29sIG1fc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2RyYXdMdW1pbmFuY2VNYXNrIHsgZmFsc2UgfTsKKyNpZiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQorICAgIGJvb2wgbV91c2VEYXJrQXBwZWFyYW5jZSB7IGZh
bHNlIH07CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBh
dXRvIGVuY29kZSA9IFsmXShDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjoqcHJvcGVydHkpIHsKLSAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkp
CisgICAgICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5nZSkpCiAgICAgICAgICAg
ICBlbmNvZGVyIDw8IHRoaXMtPipwcm9wZXJ0eTsKICAgICB9OwogCi0gICAgZW5jb2RlciA8PCBj
aGFuZ2VGbGFnczsKKyAgICBlbmNvZGVyIDw8IG1fY2hhbmdlRmxhZ3M7CiAKLSAgICBlbmNvZGUo
Q2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmZpbGxCcnVzaCk7Ci0gICAgZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7CisgICAgZW5j
b2RlKENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjptX2ZpbGxCcnVzaCk7CisgICAgZW5jb2RlKENoYW5nZTo6RmlsbFJ1bGUsICAg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxSdWxlKTsK
IAotICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOwotICAgIGVuY29kZShDaGFuZ2U6OlN0
cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ry
b2tlVGhpY2tuZXNzKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKTsKKyAgICBlbmNv
ZGUoQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVRoaWNr
bmVzcywgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlj
a25lc3MpOworICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VTdHlsZSk7CiAKLSAgICBlbmNvZGUo
Q2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOwotICAgIGVuY29kZShDaGFuZ2U6OkRyb3BTaGFkb3csICAg
ICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRvdyk7Cisg
ICAgZW5jb2RlKENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjptX2NvbXBvc2l0ZU1vZGUpOworICAgIGVuY29kZShDaGFuZ2U6OkRy
b3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9k
cm9wU2hhZG93KTsKIAotICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEpOwotICAgIGVuY29kZShDaGFu
Z2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgZW5jb2RlKENoYW5nZTo6VGV4dERy
YXdpbmdNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0ZXh0RHJh
d2luZ01vZGUpOworICAgIGVuY29kZShDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9hbHBoYSk7CisgICAgZW5jb2RlKENoYW5n
ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRl
OjptX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOworICAgIGVuY29kZShDaGFuZ2U6OlRleHRE
cmF3aW5nTW9kZSwgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0
RHJhd2luZ01vZGUpOwogCi0gICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkQW50aWFsaWFzLCAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOwotICAg
IGVuY29kZShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2hvdWxkU21vb3RoRm9udHMpOwotICAgIGVuY29kZShDaGFuZ2U6OlNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcywgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKTsKKyAg
ICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkQW50aWFsaWFzKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpT
aG91bGRTbW9vdGhGb250cywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
c2hvdWxkU21vb3RoRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cywgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMpOworICAgIGVuY29kZShDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
LCAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyk7CisgICAgZW5jb2RlKENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2RyYXdMdW1pbmFuY2VNYXNrKTsKICNpZiBIQVZFKE9T
X0RBUktfTU9ERV9TVVBQT1JUKQotICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNl
LCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2Up
OworICAgIGVuY29kZShDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6bV91c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKIH0KIApA
QCAtMTkzLDcgKzIyMiw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBzdGQ6Om9wdGlvbmFs
PEdyYXBoaWNzQ29udGV4dFN0YXRlPiBHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBkZWNvZGUgPSBbJl0oR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBDaGFuZ2UgY2hhbmdlLCBhdXRvIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJv
cGVydHkpIHsKLSAgICAgICAgaWYgKCFzdGF0ZS5jaGFuZ2VGbGFncy5jb250YWlucyhjaGFuZ2Up
KQorICAgICAgICBpZiAoIXN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhjaGFuZ2UpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gdHlwZW5h
bWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxHcmFwaGljc0Nv
bnRleHRTdGF0ZT4oKS4qcHJvcGVydHkpPjo6dHlwZTsKQEAgLTIxMyw0MiArMjQyLDQyIEBAIHN0
ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBzdGF0ZSgq
Y2hhbmdlRmxhZ3MpOwogCi0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RmlsbEJydXNo
LCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxCcnVzaCkpCisg
ICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RmlsbEJydXNoLCAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbEJydXNoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpGaWxsUnVsZSwgICAg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbFJ1bGUpKQorICAgIGlm
ICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxSdWxlLCAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxSdWxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCkpCisgICAgaWYg
KCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlQnJ1c2gpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MpKQorICAg
IGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcywgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVRoaWNrbmVzcykpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlU3R5
bGUsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVN0eWxlKSkK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VTdHlsZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3Np
dGVNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9k
ZSkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6Q29tcG9zaXRlTW9kZSwgICAgICAg
ICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJv
cFNoYWRvdywgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyb3BTaGFk
b3cpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2Ryb3BTaGFkb3cpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6QWxw
aGEsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhKSkK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9hbHBoYSkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSwgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHksICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjp0ZXh0RHJhd2luZ01vZGUpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6
OlRleHREcmF3aW5nTW9kZSwgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Rl
eHREcmF3aW5nTW9kZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAo
IWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkQW50aWFsaWFzKSkKKyAgICBpZiAoIWRlY29kZShzdGF0
ZSwgQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6bV9zaG91bGRBbnRpYWxpYXMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cykpCisgICAgaWYgKCFk
ZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9udHMpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMpKQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNv
ZGUoc3RhdGUsIENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSkKKyAgICBpZiAoIWRlY29kZShz
dGF0ZSwgQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6bV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJhd0x1bWluYW5jZU1h
c2ssICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmRyYXdMdW1pbmFuY2VNYXNrKSkK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcmF3THVtaW5hbmNlTWFzaykpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAg
ICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpVc2VEYXJrQXBwZWFyYW5jZSwgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UpKQorICAgIGlmICghZGVj
b2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAgICAgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjptX3VzZURhcmtBcHBlYXJhbmNlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCAyZGE0OTFmZDg3ZjZj
ZmJiMzNlNDdkOTgxMjMzN2JmMjE1OGY2ZGUxLi5hMmUyZTkzNDAzNjNiMjEyYTViZWI0Zjg4OGI1
NjYwOGI3NmVhNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU1NiwxMCArNTU2LDEwIEBA
IGJvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoR3JhcGhpY3NDb250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCkKIH0gLy8gbmFtZXNwYWNlIFN0YXRlCiAKIEZpbGxTb3VyY2U6OkZpbGxTb3VyY2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogZ2xvYmFsQWxwaGEoc3Rh
dGUuYWxwaGEpCi0gICAgLCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSkKKyAgICA6IGdsb2JhbEFs
cGhhKHN0YXRlLmFscGhhKCkpCisgICAgLCBmaWxsUnVsZShzdGF0ZS5maWxsUnVsZSgpKQogewot
ICAgIGlmIChhdXRvIGZpbGxQYXR0ZXJuID0gc3RhdGUuZmlsbEJydXNoLnBhdHRlcm4oKSkgewor
ICAgIGlmIChhdXRvIGZpbGxQYXR0ZXJuID0gc3RhdGUuZmlsbEJydXNoKCkucGF0dGVybigpKSB7
CiAgICAgICAgIHBhdHRlcm4ub2JqZWN0ID0gYWRvcHRSZWYoZmlsbFBhdHRlcm4tPmNyZWF0ZVBs
YXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAgIGF1dG8mIHBhdHRl
cm5JbWFnZSA9IGZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKQEAgLTU2NywzNCArNTY3LDM0IEBA
IEZpbGxTb3VyY2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQogICAgICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IGZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm0oKTsKICAgICAgICAgcGF0dGVybi5yZXBlYXRYID0gZmlsbFBhdHRlcm4tPnJlcGVh
dFgoKTsKICAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gZmlsbFBhdHRlcm4tPnJlcGVhdFkoKTsK
LSAgICB9IGVsc2UgaWYgKGF1dG8gZmlsbEdyYWRpZW50ID0gc3RhdGUuZmlsbEJydXNoLmdyYWRp
ZW50KCkpIHsKLSAgICAgICAgZ3JhZGllbnQuYmFzZSA9IGZpbGxHcmFkaWVudC0+Y3JlYXRlUGF0
dGVybigxLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKLSAgICAg
ICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCi0gICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVz
dGVkID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhLCBzdGF0ZS5maWxs
QnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICB9IGVsc2UgaWYgKGF1dG8gZmls
bEdyYWRpZW50ID0gc3RhdGUuZmlsbEJydXNoKCkuZ3JhZGllbnQoKSkgeworICAgICAgICBncmFk
aWVudC5iYXNlID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKDEsIHN0YXRlLmZpbGxCcnVz
aCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgICAgIGlmIChzdGF0ZS5hbHBoYSgp
ICE9IDEpCisgICAgICAgICAgICBncmFkaWVudC5hbHBoYUFkanVzdGVkID0gZmlsbEdyYWRpZW50
LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKCksIHN0YXRlLmZpbGxCcnVzaCgpLmdyYWRpZW50
U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNvbG9yID0gc3RhdGUuZmls
bEJydXNoLmNvbG9yKCk7CisgICAgICAgIGNvbG9yID0gc3RhdGUuZmlsbEJydXNoKCkuY29sb3Io
KTsKIH0KIAogU3Ryb2tlU291cmNlOjpTdHJva2VTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlKQotICAgIDogZ2xvYmFsQWxwaGEoc3RhdGUuYWxwaGEpCisgICAgOiBnbG9i
YWxBbHBoYShzdGF0ZS5hbHBoYSgpKQogewotICAgIGlmIChhdXRvIHN0cm9rZVBhdHRlcm4gPSBz
dGF0ZS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpCisgICAgaWYgKGF1dG8gc3Ryb2tlUGF0dGVybiA9
IHN0YXRlLnN0cm9rZUJydXNoKCkucGF0dGVybigpKQogICAgICAgICBwYXR0ZXJuID0gYWRvcHRS
ZWYoc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgp
KSk7Ci0gICAgZWxzZSBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNo
LmdyYWRpZW50KCkpIHsKLSAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5j
cmVhdGVQYXR0ZXJuKDEsIHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7Ci0gICAgICAgIGlmIChzdGF0ZS5hbHBoYSAhPSAxKQotICAgICAgICAgICAgZ3JhZGllbnQu
YWxwaGFBZGp1c3RlZCA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhh
LCBzdGF0ZS5zdHJva2VCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgIGVsc2Ug
aWYgKGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBzdGF0ZS5zdHJva2VCcnVzaCgpLmdyYWRpZW50KCkp
IHsKKyAgICAgICAgZ3JhZGllbnQuYmFzZSA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJu
KDEsIHN0YXRlLnN0cm9rZUJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAg
ICAgaWYgKHN0YXRlLmFscGhhKCkgIT0gMSkKKyAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRq
dXN0ZWQgPSBzdHJva2VHcmFkaWVudC0+Y3JlYXRlUGF0dGVybihzdGF0ZS5hbHBoYSgpLCBzdGF0
ZS5zdHJva2VCcnVzaCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGNvbG9yID0gc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKTsKKyAgICAgICAgY29sb3Ig
PSBzdGF0ZS5zdHJva2VCcnVzaCgpLmNvbG9yKCk7CiB9CiAKIFNoYWRvd1N0YXRlOjpTaGFkb3dT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCi0gICAgOiBvZmZzZXQoc3Rh
dGUuZHJvcFNoYWRvdy5vZmZzZXQpCi0gICAgLCBibHVyKHN0YXRlLmRyb3BTaGFkb3cuYmx1clJh
ZGl1cykKLSAgICAsIGNvbG9yKHN0YXRlLmRyb3BTaGFkb3cuY29sb3IpCi0gICAgLCBpZ25vcmVU
cmFuc2Zvcm1zKHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotICAgICwgZ2xvYmFsQWxw
aGEoc3RhdGUuYWxwaGEpCi0gICAgLCBnbG9iYWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21w
b3NpdGVNb2RlLm9wZXJhdGlvbikKKyAgICA6IG9mZnNldChzdGF0ZS5kcm9wU2hhZG93KCkub2Zm
c2V0KQorICAgICwgYmx1cihzdGF0ZS5kcm9wU2hhZG93KCkuYmx1clJhZGl1cykKKyAgICAsIGNv
bG9yKHN0YXRlLmRyb3BTaGFkb3coKS5jb2xvcikKKyAgICAsIGlnbm9yZVRyYW5zZm9ybXMoc3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSkKKyAgICAsIGdsb2JhbEFscGhhKHN0YXRlLmFs
cGhhKCkpCisgICAgLCBnbG9iYWxDb21wb3NpdGVPcGVyYXRvcihzdGF0ZS5jb21wb3NpdGVNb2Rl
KCkub3BlcmF0aW9uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBmZTczOGJkZjc3ZThjZTc2MmFjYzlh
MGYwZjg0ZGQ4MzYxYzY5YzExLi4zZDE5NzU3OWEyY2MyMjk5MzM4ODVhMWExNTk1YzYzOTZjYTg2
ZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDYWlyby5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcK
ICAgICBhdXRvJiBzdGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd0dseXBo
cygqY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBD
YWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhz
LCB4T2Zmc2V0LAotICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRo
aWNrbmVzcywgc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3Is
CisgICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSgpLCBzdGF0ZS5zdHJva2VUaGlja25lc3Mo
KSwgc3RhdGUuZHJvcFNoYWRvdygpLm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yLAog
ICAgICAgICBmb250U21vb3RoaW5nTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAppbmRleCBjOWJkZGM4MGM0MGI4NTJiMTEwMjY1M2RmZmMzMDBjYjI5Nzk3N2Y5Li4yNjJm
MGQ2MDJiODBkYzM3N2M0MDlmNDQ2ZGJiNDg4ZGFjMzEyMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDYWly
bzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MK
IHZvaWQgR3JhcGhpY3NDb250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
bmF0aXZlSW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpk
cmF3UGxhdGZvcm1JbWFnZSgqdGhpcywgbmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBD
YWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UoKnRoaXMsIG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSgpIH0sIHN0YXRlLmFscGhhKCksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCB0byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNo
b3VsZCBub3QgZHJhdyBzaGFkb3dzLgpAQCAtMjgzLDI2ICsyODMsMjYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRDYWlybzo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB2b2lkIEdyYXBoaWNz
Q29udGV4dENhaXJvOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUp
CiB7CiAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0
ZTo6Q2hhbmdlOjpTdHJva2VUaGlja25lc3MpKQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0
cm9rZVRoaWNrbmVzcygqdGhpcywgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgQ2Fp
cm86OlN0YXRlOjpzZXRTdHJva2VUaGlja25lc3MoKnRoaXMsIHN0YXRlLnN0cm9rZVRoaWNrbmVz
cygpKTsKIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUpKQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldFN0
cm9rZVN0eWxlKCp0aGlzLCBzdGF0ZS5zdHJva2VTdHlsZSk7CisgICAgICAgIENhaXJvOjpTdGF0
ZTo6c2V0U3Ryb2tlU3R5bGUoKnRoaXMsIHN0YXRlLnN0cm9rZVN0eWxlKCkpOwogCiAgICAgLy8g
RklYTUU6IG1fc3RhdGUgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIHRvIGZsaXAgdGhlIHNoYWRvdyBv
ZmZzZXQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBzaGFkb3cgaXMgYXBwbGllZCB0byB0aGUg
cGxhdGZvcm0gY29udGV4dC4KICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkRyb3BTaGFkb3cpKSB7Ci0gICAgICAgIGlmIChzdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeworICAgICAgICBpZiAoc3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSkgewogICAgICAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3Jh
cGhpY3MgY29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0
CiAgICAgICAgICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENh
bnZhcyBoYXZlIG9wcG9zaXRlIFkgYXhpcwotICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0
ID0gc3RhdGUuZHJvcFNoYWRvdy5vZmZzZXQ7Ci0gICAgICAgICAgICBtX3N0YXRlLmRyb3BTaGFk
b3cub2Zmc2V0ID0geyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQo
KSB9OworICAgICAgICAgICAgYXV0byYgc2hhZG93T2Zmc2V0ID0gc3RhdGUuZHJvcFNoYWRvdygp
Lm9mZnNldDsKKyAgICAgICAgICAgIG1fc3RhdGUubV9kcm9wU2hhZG93Lm9mZnNldCA9IHsgc2hh
ZG93T2Zmc2V0LndpZHRoKCksIC1zaGFkb3dPZmZzZXQuaGVpZ2h0KCkgfTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbiwg
c3RhdGUuY29tcG9zaXRlTW9kZS5ibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNl
dENvbXBvc2l0ZU9wZXJhdGlvbigqdGhpcywgc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlv
biwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLmJsZW5kTW9kZSk7CiAKICAgICBpZiAoc3RhdGUuY2hh
bmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlh
bGlhcykpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hvdWxkQW50aWFsaWFzKCp0aGlzLCBz
dGF0ZS5zaG91bGRBbnRpYWxpYXMpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNob3VsZEFu
dGlhbGlhcygqdGhpcywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKCkpOwogCiAgICAgc3RhdGUuZGlk
QXBwbHlDaGFuZ2VzKCk7CiB9CkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRDYWlybzo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKgogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKICAgICBDYWlybzo6ZHJhd0ds
eXBocygqdGhpcywgQ2Fpcm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNl
KHN0YXRlKSwKICAgICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIHNjYWxl
ZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNhaXJvR2x5cGhzLCB4T2Zmc2V0LAotICAgICAg
ICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgc3RhdGUuZHJv
cFNoYWRvdy5vZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuY29sb3IsCisgICAgICAgIHN0YXRlLnRl
eHREcmF3aW5nTW9kZSgpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MoKSwgc3RhdGUuZHJvcFNoYWRv
dygpLm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yLAogICAgICAgICBmb250U21vb3Ro
aW5nKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IDk2Yzc2
MTM1NDFiZGM2NThhNzg3YWIwM2U3NzgxODgzNGQzMTg1YzQuLmM4ZTU2NzgyNDIzMTVhYzM5MzUx
ZTAyMDhmZjhhMGVkZWUxM2Q5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBjb25zdCBh
dXRvJiBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSA9IGRlc3RDb250ZXh0LnN0YXRlKCk7CiAKICAg
ICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRl
eHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAg
IGRyYXdQbGF0Zm9ybUltYWdlKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2Ut
PnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVz
dGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5h
dGlvbkNvbnRleHRTdGF0ZS5hbHBoYSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3Rp
bmF0aW9uQ29udGV4dFN0YXRlKSk7CisgICAgICAgIGRyYXdQbGF0Zm9ybUltYWdlKCpkZXN0Q29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVz
dFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpIH0sIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlLmFscGhhKCks
IFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dTdGF0ZShkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSkpOwog
fQogCiB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYmRh
ZWQ5ZjE3ZTQwYTMyMWYyZDA0YWY3MTAyODBjYzliYzA3OTcyMC4uNGY5OWU5MzFhODZkYmM3MGJi
OGE1Y2NlMWQzMTFmZTk3OTU0NDRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNjAsOSArNjAs
OSBAQCBpbmxpbmUgQ0dBZmZpbmVUcmFuc2Zvcm0gZ2V0VXNlclRvQmFzZUNUTShDR0NvbnRleHRS
ZWYgY29udGV4dCkKICAgICByZXR1cm4gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQoQ0dDb250ZXh0
R2V0Q1RNKGNvbnRleHQpLCBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRCYXNl
Q1RNKGNvbnRleHQpKSk7CiB9CiAKLXN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBjb3JlSW50
ZXJwb2xhdGlvblF1YWxpdHkoQ0dJbnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KQorc3RhdGlj
IEludGVycG9sYXRpb25RdWFsaXR5IGNvcmVJbnRlcnBvbGF0aW9uUXVhbGl0eShDR0NvbnRleHRS
ZWYgY29udGV4dCkKIHsKLSAgICBzd2l0Y2ggKHF1YWxpdHkpIHsKKyAgICBzd2l0Y2ggKENHQ29u
dGV4dEdldEludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQpKSB7CiAgICAgY2FzZSBrQ0dJbnRl
cnBvbGF0aW9uRGVmYXVsdDoKICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25RdWFsaXR5OjpE
ZWZhdWx0OwogICAgIGNhc2Uga0NHSW50ZXJwb2xhdGlvbk5vbmU6CkBAIC0xODUsNyArMTg1LDcg
QEAgc3RhdGljIHZvaWQgc2V0Q0dCbGVuZE1vZGUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUKIH0KIAogR3JhcGhpY3NDb250ZXh0Q0c6OkdyYXBo
aWNzQ29udGV4dENHKENHQ29udGV4dFJlZiBjZ0NvbnRleHQpCi0gICAgOiBHcmFwaGljc0NvbnRl
eHQoeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2gsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hh
bmdlOjpTdHJva2VUaGlja25lc3MgfSkKKyAgICA6IEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6YmFzaWNDaGFuZ2VGbGFncywgY29yZUludGVycG9sYXRpb25RdWFsaXR5KGNn
Q29udGV4dCkpCiB7CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTE5
Myw3ICsxOTMsNiBAQCBHcmFwaGljc0NvbnRleHRDRzo6R3JhcGhpY3NDb250ZXh0Q0coQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCkKICAgICBtX2RhdGEgPSBuZXcgR3JhcGhpY3NDb250ZXh0UGxhdGZv
cm1Qcml2YXRlKGNnQ29udGV4dCk7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb250ZXh0IHN0YXJ0
cyBpbiBzeW5jIHdpdGggb3VyIHN0YXRlLgogICAgIGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOwot
ICAgIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGNvcmVJbnRlcnBvbGF0aW9u
UXVhbGl0eShDR0NvbnRleHRHZXRJbnRlcnBvbGF0aW9uUXVhbGl0eShwbGF0Zm9ybUNvbnRleHQo
KSkpOwogfQogCiBHcmFwaGljc0NvbnRleHRDRzo6fkdyYXBoaWNzQ29udGV4dENHKCkKQEAgLTEw
ODQsNDMgKzEwODMsNDMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRDRzo6ZGlkVXBkYXRlU3RhdGUo
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgIGZvciAoYXV0byBjaGFuZ2UgOiBzdGF0
ZS5jaGFuZ2VzKCkpIHsKICAgICAgICAgc3dpdGNoIChjaGFuZ2UpIHsKICAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpGaWxsQnJ1c2g6Ci0gICAgICAgICAgICBzZXRD
R0ZpbGxDb2xvcihjb250ZXh0LCBzdGF0ZS5maWxsQnJ1c2guY29sb3IoKSk7CisgICAgICAgICAg
ICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBzdGF0ZS5maWxsQnJ1c2goKS5jb2xvcigpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNo
YW5nZTo6U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRo
KGNvbnRleHQsIHN0ZDo6bWF4KHN0YXRlLnN0cm9rZVRoaWNrbmVzcywgMC5mKSk7CisgICAgICAg
ICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzKCksIDAuZikpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VCcnVzaDoKLSAgICAgICAgICAgIENH
Q29udGV4dFNldFN0cm9rZUNvbG9yV2l0aENvbG9yKGNvbnRleHQsIGNhY2hlZENHQ29sb3Ioc3Rh
dGUuc3Ryb2tlQnJ1c2guY29sb3IoKSkuZ2V0KCkpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0
U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihzdGF0ZS5zdHJva2VC
cnVzaCgpLmNvbG9yKCkpLmdldCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZToKLSAgICAgICAg
ICAgIHNldENHQmxlbmRNb2RlKGNvbnRleHQsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9u
LCBzdGF0ZS5jb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgICAgICAgICBzZXRDR0JsZW5k
TW9kZShjb250ZXh0LCBzdGF0ZS5jb21wb3NpdGVNb2RlKCkub3BlcmF0aW9uLCBzdGF0ZS5jb21w
b3NpdGVNb2RlKCkuYmxlbmRNb2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJvcFNoYWRvdzoKLSAgICAgICAgICAg
IHNldENHU2hhZG93KGNvbnRleHQsIHJlbmRlcmluZ01vZGUoKSwgc3RhdGUuZHJvcFNoYWRvdy5v
ZmZzZXQsIHN0YXRlLmRyb3BTaGFkb3cuYmx1clJhZGl1cywgc3RhdGUuZHJvcFNoYWRvdy5jb2xv
ciwgc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOworICAgICAgICAgICAgc2V0Q0dTaGFk
b3coY29udGV4dCwgcmVuZGVyaW5nTW9kZSgpLCBzdGF0ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBz
dGF0ZS5kcm9wU2hhZG93KCkuYmx1clJhZGl1cywgc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yLCBz
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6QWxwaGE6Ci0gICAgICAg
ICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBzdGF0ZS5hbHBoYSk7CisgICAgICAgICAg
ICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCBzdGF0ZS5hbHBoYSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eToKLSAgICAgICAgICAgIENHQ29udGV4dFNldEludGVycG9s
YXRpb25RdWFsaXR5KGNvbnRleHQsIGNnSW50ZXJwb2xhdGlvblF1YWxpdHkoc3RhdGUuaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSkpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJwb2xh
dGlvblF1YWxpdHkoY29udGV4dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6VGV4dERyYXdpbmdNb2RlOgotICAgICAg
ICAgICAgQ0dDb250ZXh0U2V0VGV4dERyYXdpbmdNb2RlKGNvbnRleHQsIGNnVGV4dERyYXdpbmdN
b2RlKHN0YXRlLnRleHREcmF3aW5nTW9kZSkpOworICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4
dERyYXdpbmdNb2RlKGNvbnRleHQsIGNnVGV4dERyYXdpbmdNb2RlKHN0YXRlLnRleHREcmF3aW5n
TW9kZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlhczoKLSAgICAgICAgICAgIENHQ29udGV4
dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMpOworICAg
ICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0YXRlLnNob3Vs
ZEFudGlhbGlhcygpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkU21vb3RoRm9udHM6Ci0gICAgICAgICAgICBD
R0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhjb250ZXh0LCBzdGF0ZS5zaG91bGRTbW9vdGhG
b250cyk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhjb250ZXh0
LCBzdGF0ZS5zaG91bGRTbW9vdGhGb250cygpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGRlZmF1bHQ6CkBAIC0xMTU1LDcgKzExNTQsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENH
OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAg
ICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNv
bnRleHQsIGxheWVyU2l6ZSwgMCkpOwogCiAgICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJD
b250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIuZ2V0KCkpOwotICAgICAgICAgICAgbV9z
dGF0ZS5zdHJva2VUaGlja25lc3MgPSBsaW5lV2lkdGg7CiAgICAgICAgICAgICBDR0NvbnRleHRT
ZXRMaW5lV2lkdGgobGF5ZXJDb250ZXh0LCBsaW5lV2lkdGgpOwogCiAgICAgICAgICAgICAvLyBD
b21wZW5zYXRlIGZvciB0aGUgbGluZSB3aWR0aCwgb3RoZXJ3aXNlIHRoZSBsYXllcidzIHRvcC1s
ZWZ0IGNvcm5lciB3b3VsZCBiZQpAQCAtMTQ4OCw3ICsxNDg2LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRDRzo6YWRkRGVzdGluYXRpb25BdFBvaW50KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
RmxvYXRQb2kKIAogYm9vbCBHcmFwaGljc0NvbnRleHRDRzo6Y2FuVXNlU2hhZG93Qmx1cigpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIChyZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zOworICAgIHJldHVybiAocmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQpICYmIGhhc0JsdXJyZWRTaGFkb3coKSAmJiAhbV9zdGF0ZS5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcygpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggZDBiZWM4ZDYzODQ3MDliNzhjZjFkZTgwYmIwMmUx
ZTM3ZDJmOTQ2ZS4uYTFhZWZkMDcwMmZhZDQ3ZjkxOWRiYTgyZjYyMzU2ZjIwNTE1NTU4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtOTYsMTMg
Kzk2LDEzIEBAIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNz
Q29udGV4dCYgb3duZXIsIERlY29uc3RydWN0RHJhd0dsCiAKIHZvaWQgRHJhd0dseXBoc1JlY29y
ZGVyOjpwb3B1bGF0ZUludGVybmFsU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIGNv
bnRleHRTdGF0ZSkKIHsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoID0gY29udGV4dFN0
YXRlLmZpbGxCcnVzaDsKLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2ggPSBjb250ZXh0
U3RhdGUuc3Ryb2tlQnJ1c2g7CisgICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxCcnVzaCA9IGNvbnRl
eHRTdGF0ZS5maWxsQnJ1c2goKTsKKyAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlQnJ1c2ggPSBj
b250ZXh0U3RhdGUuc3Ryb2tlQnJ1c2goKTsKIAogICAgIG1fb3JpZ2luYWxTdGF0ZS5jdG0gPSBt
X293bmVyLmdldENUTSgpOyAvLyBGSVhNRTogRGVhbCB3aXRoIGJhc2UgQ1RNLgogCi0gICAgbV9v
cmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cgPSBjb250ZXh0U3RhdGUuZHJvcFNoYWRvdzsKLSAgICBt
X29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtczsKKyAgICBtX29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdyA9IGNvbnRleHRT
dGF0ZS5kcm9wU2hhZG93KCk7CisgICAgbV9vcmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5zZm9ybXMg
PSBjb250ZXh0U3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKTsKIH0KIAogdm9pZCBEcmF3
R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBjb24KICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMobV9vcmlnaW5hbFN0YXRlLmlnbm9yZVRyYW5zZm9ybXMpOwogICAgIG1faW50ZXJuYWxD
b250ZXh0LT5zZXREcm9wU2hhZG93KG1fb3JpZ2luYWxTdGF0ZS5kcm9wU2hhZG93KTsKIAotICAg
IG1faW50ZXJuYWxDb250ZXh0LT5zZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dFN0YXRlLnRleHRE
cmF3aW5nTW9kZSk7CisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShj
b250ZXh0U3RhdGUudGV4dERyYXdpbmdNb2RlKCkpOwogfQogCiB2b2lkIERyYXdHbHlwaHNSZWNv
cmRlcjo6cHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250JiBmb250LCBGb250U21vb3Ro
aW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggMmIw
M2NlNGE2NmUyZDhhYTBmYWQ4MWE2NDRhZWIxZWRmZGUxYzg4MS4uMmI0ZTQzN2Q2YzUxZDE2MmE2
YjgxM2Y0NWUwNmRmMjczMWQyODE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC05
MCw3ICs5MCw3IEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRG
bGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4
dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewogICAgICAgICAgICAgY29uc3Qg
YXV0byYgc3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBG
SVhNRTogZm9yIG5vdywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5n
ZSBmbGFncyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoc3RhdGVJdGVt
LnN0YXRlKCkuY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKQorICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0
ZSgpLmNoYW5nZXMoKSA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCmluZGV4IDkzOTQ1NTFmMzU5ZWMxYWY0ZWE5MmM3YjNiMTY4NGVkMmVlZGE2MTYuLjM0ZjZm
MjEzZDNhN2JlNDljNzI1YTNjYjRkYjVjMmEzYWY3Mzk4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFJlY29yZGVy
OjplbmRUcmFuc3BhcmVuY3lMYXllcigpCiAgICAgcmVjb3JkRW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KTsKICAgICBtX3N0YXRlU3RhY2sucmVtb3ZlTGFzdCgpOwogCi0gICAgbV9zdGF0ZS5kaWRFbmRU
cmFuc3BhcmVuY3lMYXllcihjdXJyZW50U3RhdGUoKS5zdGF0ZS5hbHBoYSk7CisgICAgbV9zdGF0
ZS5kaWRFbmRUcmFuc3BhcmVuY3lMYXllcihjdXJyZW50U3RhdGUoKS5zdGF0ZS5hbHBoYSgpKTsK
IH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9h
dCBib3JkZXJUaGlja25lc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKaW5kZXggZjNjOGM5MGNkODhiYmUwYzUxZTFkNGZhMTMzYzUxZTgzYjgwYjM5Yi4uNzlhMGE4
NTAwYTIzY2YzZmRmZDhjZDE0ZTdiNDdhYzIyYjAzNjY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtOTcsMTAgKzk3LDEwIEBAIGlubGluZSBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJ
dGVtKEdyYXBoCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKIAotICAgIGlm
IChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVt
LnN0YXRlKCkuc3Ryb2tlQnJ1c2gucGF0dGVybigpKSkKKyAgICBpZiAoYXV0byBpbWFnZUlkZW50
aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRlSXRlbS5zdGF0ZSgpLnN0cm9rZUJy
dXNoKCkucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJuICppbWFnZUlkZW50aWZpZXI7CiAKLSAg
ICBpZiAoYXV0byBpbWFnZUlkZW50aWZpZXIgPSBmaXhQYXR0ZXJuVGlsZUltYWdlKHNldFN0YXRl
SXRlbS5zdGF0ZSgpLmZpbGxCcnVzaC5wYXR0ZXJuKCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRl
bnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuZmlsbEJy
dXNoKCkucGF0dGVybigpKSkKICAgICAgICAgcmV0dXJuICppbWFnZUlkZW50aWZpZXI7CiAKICAg
ICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDE0MTY5YTA3NTU4ZDYx
NmIwOTIwY2IwNTdkYzhlYjFjMmE1ODhiMDMuLmMyMWNkMGU0ZDUyN2EzY2MxMjAyYmY2ZmNmN2Vk
MjFhZmY5M2Q1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQog
ICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5k
PFN0cm9rZVRoaWNrbmVzc0NoYW5nZT4oc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKSk7CisgICAgICAg
IGFwcGVuZChjcmVhdGVDb21tYW5kPFN0cm9rZVRoaWNrbmVzc0NoYW5nZT4oc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzKCkpKTsKICAgICB9CiAKICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZVN0eWxlKSkgewpAQCAtMTE3LDcg
KzExNyw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUoR3Jh
cGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0g
ICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFN0cm9rZVN0eWxlQ2hhbmdlPihzdGF0ZS5zdHJv
a2VTdHlsZSkpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxTdHJva2VTdHlsZUNoYW5n
ZT4oc3RhdGUuc3Ryb2tlU3R5bGUoKSkpOwogICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2Vz
KCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6Q29tcG9zaXRlTW9kZSkp
IHsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRpZFVw
ZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDb21wb3NpdGVPcGVyYXRp
b25DaGFuZ2U+KHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uLCBzdGF0ZS5jb21wb3NpdGVN
b2RlLmJsZW5kTW9kZSkpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDb21wb3NpdGVP
cGVyYXRpb25DaGFuZ2U+KHN0YXRlLmNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRpb24sIHN0YXRlLmNv
bXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGUpKTsKICAgICB9CiAKICAgICBpZiAoc3RhdGUuY2hhbmdl
cygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZEFudGlhbGlh
cykpIHsKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRp
ZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIH0K
ICAgICAgICAgfTsKIAotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxTaG91bGRBbnRpYWxp
YXNDaGFuZ2U+KHN0YXRlLnNob3VsZEFudGlhbGlhcykpOworICAgICAgICBhcHBlbmQoY3JlYXRl
Q29tbWFuZDxTaG91bGRBbnRpYWxpYXNDaGFuZ2U+KHN0YXRlLnNob3VsZEFudGlhbGlhcygpKSk7
CiAgICAgfQogCiAgICAgc3RhdGUuZGlkQXBwbHlDaGFuZ2VzKCk7CkBAIC0yOTQsNyArMjk0LDcg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIEdyYWRpZW50JiBncmFkaWVudCkKICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0
aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBn
cmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VU
cmFuc2Zvcm0oKSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwg
Z3JhZGllbnQuY3JlYXRlUGF0dGVybigxLjAsIHN0YXRlLmZpbGxCcnVzaCgpLmdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0oKSkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCkBAIC0zMTgs
NyArMzE4LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwKICAgICB9OwogCiAgICAgYXV0byYg
c3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0
PihyZWN0LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRv
d1N0YXRlKHN0YXRlKSwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24pKTsKKyAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxGaWxsUmVjdD4ocmVjdCwgY29sb3IsIGNvbXBvc2l0ZU9wZXJhdG9y
LCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksIHN0YXRlLmNvbXBvc2l0ZU1v
ZGUoKS5vcGVyYXRpb24pKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxs
Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByb3VuZGVkUmVjdAogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0
YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJvdW5kZWRSZWN0Pihyb3VuZGVk
UmVjdCwgY29sb3IsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9uLCBibGVuZE1vZGUsIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxs
Um91bmRlZFJlY3Q+KHJvdW5kZWRSZWN0LCBjb2xvciwgc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9w
ZXJhdGlvbiwgYmxlbmRNb2RlLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3Qs
IGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTUzNCw4ICs1MzQsOCBAQCB2b2lkIENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXJHbHlwaAogICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdHbHlwaHM+KENhaXJvOjpGaWxs
U291cmNlKHN0YXRlKSwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSksCiAgICAgICAgIENhaXJv
OjpTaGFkb3dTdGF0ZShzdGF0ZSksIHBvaW50LAogICAgICAgICBSZWZQdHI8Y2Fpcm9fc2NhbGVk
X2ZvbnRfdD4oZm9udC5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpLAotICAgICAgICBmb250
LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgV1RGTW92ZShjYWlyb0dseXBocyksIHhPZmZzZXQsIHN0
YXRlLnRleHREcmF3aW5nTW9kZSwKLSAgICAgICAgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0
ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwgZm9udFNtb290aGlu
ZykpOworICAgICAgICBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgV1RGTW92ZShjYWlyb0ds
eXBocyksIHhPZmZzZXQsIHN0YXRlLnRleHREcmF3aW5nTW9kZSgpLAorICAgICAgICBzdGF0ZS5z
dHJva2VUaGlja25lc3MoKSwgc3RhdGUuZHJvcFNoYWRvdygpLm9mZnNldCwgc3RhdGUuZHJvcFNo
YWRvdygpLmNvbG9yLCBmb250U21vb3RoaW5nKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQpAQCAtNTYxLDcg
KzU2MSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvCiAKICAgICBVTlVTRURfUEFSQU0oaW1h
Z2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCks
IGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0
ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KG5h
dGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRp
bmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSksIHN0
YXRlLmFscGhhKCksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAogdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmUK
ICAgICB9OwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFwcGVuZChj
cmVhdGVDb21tYW5kPERyYXdSZWN0PihyZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxC
cnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3Io
KSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdSZWN0PihyZWN0LCBib3JkZXJUaGlj
a25lc3MsIHN0YXRlLmZpbGxCcnVzaCgpLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlKCksIHN0
YXRlLnN0cm9rZUJydXNoKCkuY29sb3IoKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50MSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQyKQpAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50CiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBh
cHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZT4ocG9pbnQxLCBwb2ludDIsIHN0YXRlLnN0cm9r
ZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3Ms
IHN0YXRlLnNob3VsZEFudGlhbGlhcykpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdM
aW5lPihwb2ludDEsIHBvaW50Miwgc3RhdGUuc3Ryb2tlU3R5bGUoKSwgc3RhdGUuc3Ryb2tlQnJ1
c2goKS5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MoKSwgc3RhdGUuc2hvdWxkQW50aWFs
aWFzKCkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TGluZXNGb3JU
ZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hB
cnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZVVuZGVybGluZXMsIFN0cm9r
ZVN0eWxlKQpAQCAtNjQ3LDcgKzY0Nyw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdGhpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZXNGb3JUZXh0Pihwb2ludCwgdGhpY2tuZXNzLCB3aWR0
aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxpbmVzLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigp
KSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0xpbmVzRm9yVGV4dD4ocG9pbnQsIHRo
aWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5lcywgc3RhdGUuc3Ryb2tl
QnJ1c2goKS5jb2xvcigpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIERvY3VtZW50TWFy
a2VyTGluZVN0eWxlIHN0eWxlKQpAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIH07CiAK
ICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8RHJhd0VsbGlwc2U+KHJlY3QsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJv
a2VTdHlsZSwgc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNz
KSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0VsbGlwc2U+KHJlY3QsIHN0YXRlLmZp
bGxCcnVzaCgpLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlKCksIHN0YXRlLnN0cm9rZUJydXNo
KCkuY29sb3IoKSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzKCkpKTsKIH0KIAogdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHdp
ZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAppbmRleCA5ZTM3ODZlMGZkY2RiODlmYjA2NjI4YzhmY2M2ZGM4N2I3N2MzZTll
Li45YTIzOWU2NDI1ZmQzOWM0YmM4MTM0ZjVkNTE5NWJkZGExZDZhZDNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjgsMTAgKzEyOCwxMCBAQCB2b2lkIFJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXI6OnNldFN0YXRlKERpc3BsYXlMaXN0OjpTZXRTdGF0ZSYmIGl0ZW0pCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CiAKLSAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1h
Z2UoaXRlbS5zdGF0ZSgpLmZpbGxCcnVzaC5wYXR0ZXJuKCkpKQorICAgIGlmICghZml4UGF0dGVy
blRpbGVJbWFnZShpdGVtLnN0YXRlKCkuZmlsbEJydXNoKCkucGF0dGVybigpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5zdHJv
a2VCcnVzaC5wYXR0ZXJuKCkpKQorICAgIGlmICghZml4UGF0dGVyblRpbGVJbWFnZShpdGVtLnN0
YXRlKCkuc3Ryb2tlQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBo
YW5kbGVJdGVtKFdURk1vdmUoaXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Y2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IDIzM2YxZDcwMWYzOGQ2NjAxYjlh
ODMyYjMwODM2MGNjZDlkMTFlODAuLjk3YjVlNjNmMTVhODMxZmU0ZWUwNWExYWViMzI4N2NjMGJk
NzE5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJp
dG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVC
aXRtYXBDYWlyby5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEkK
IAogICAgIEFTU0VSVChjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBz
dGF0ZSA9IGNvbnRleHQuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd1N1cmZhY2UoKmNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBzdGF0
ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdTdXJmYWNlKCpjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSgpLCBzdGF0ZS5hbHBoYSgpLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKTsKIH0KIAogUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVDYWlyb1N1cmZhY2UoKQo=
</data>
<flag name="review"
          id="483363"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="483326"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455395</attachid>
            <date>2022-03-22 10:59:25 -0700</date>
            <delta_ts>2022-03-22 13:39:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238192-20220322105924.patch</filename>
            <type>text/plain</type>
            <size>76969</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiNGM3Y2VkODZmNjlm
Njk2N2E3NjBiMzBiOGQzMzU2NjY5MGYzZS4uZGVkNTY5NmQ4MzI4ZTRhN2JkZjVhZGUyZDgwZjdk
ZGVjYzAwYzhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAyMi0wMy0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUgYSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIFRoaXMgd2lsbCBtYWtlIHRoZSBtZW1iZXJzIGJlIHBy
aXZhdGUgc28gd2UgaGF2ZSB0byBwcm92aWRlIGdldHRlcnMgZm9yCisgICAgICAgIGFsbCBvZiB0
aGVtLiBUaGlzIGNoYW5nZSB3aWxsIHByZXZlbnQgY2hhbmdpbmcgdGhlIG1lbWJlcnMgd2l0aG91
dCBnb2luZworICAgICAgICB0aHJvdWdoIHRoZSBzZXR0ZXJzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bEJydXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbENv
bG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbEdyYWRp
ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbEdyYWRp
ZW50U3BhY2VUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpmaWxsUGF0dGVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSdWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VDb2xvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZUdyYWRpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlR3JhZGllbnRTcGFjZVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdHRlcm4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyb3BTaGFkb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Ojpjb21wb3NpdGVNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6YWxwaGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Ojp0ZXh0RHJhd2luZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2hvdWxkQW50aWFsaWFzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2hvdWxkU21vb3RoRm9udHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzaGFkb3dz
SWdub3JlVHJhbnNmb3JtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMdW1pbmFuY2VNYXNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6dXNlRGFya0FwcGVhcmFuY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29udGFpbnNPbmx5SW5saW5lQ2hhbmdlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6bWVyZ2VDaGFuZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkaWRCZWdpblRyYW5zcGFy
ZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkaWRF
bmRUcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0U3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpH
cmFwaGljc0NvbnRleHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6Y2hhbmdlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6ZGlkQXBwbHlDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpmaWxsQnJ1c2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldEZpbGxCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6c2V0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzZXRGaWxsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnNldEZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpmaWxsUnVsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6c2V0RmlsbFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0U3RhdGU6OnN0cm9rZUJydXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzZXRTdHJva2VCcnVzaCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlja25lc3MgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFN0cm9rZVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVNb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRDb21wb3Np
dGVNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hh
ZG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRE
cm9wU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBo
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0QWxw
aGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
U3RhdGU6OnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0VGV4dERyYXdpbmdNb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZEFudGlh
bGlhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU21v
b3RoRm9udHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNldFNob3VsZFNtb290aEZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzayBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0RHJhd0x1bWluYW5jZU1hc2spOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzZXRVc2VEYXJrQXBw
ZWFyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2V0UHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0U3RhdGU6OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OkZpbGxTb3VyY2U6OkZpbGxTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OlN0cm9rZVNvdXJjZTo6U3Ryb2tlU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dTdGF0ZTo6U2hhZG93U3RhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FzY2FkZTo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Q2Fpcm86OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRDYWlybzo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3JlSW50ZXJw
b2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q0c6Okdy
YXBoaWNzQ29udGV4dENHKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dENHOjpk
aWRVcGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6c3Ry
b2tlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRDRzo6Y2FuVXNlU2hh
ZG93Qmx1ciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBo
c1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
d0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsQ29udGV4dCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmVuZFRyYW5z
cGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3Np
YTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlkVXBkYXRlU3RhdGUpOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJlY3QpOgorICAgICAgICAoTmljb3Np
YTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKE5p
Y29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KToKKyAgICAgICAgKE5p
Y29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lKToKKyAgICAgICAgKE5pY29z
aWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0ZvclRleHQpOgorICAgICAgICAo
Tmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd0VsbGlwc2UpOgorCiAyMDIyLTAz
LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gTWFrZSBHcmFwaGljc0NvbnRleHRTdGF0ZSBrZWVwIHRyYWNrIG9mIGNoYW5nZXMg
dGlsbCB0aGV5IGFyZSBhcHBsaWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5MDNjZWExODRkNDk5ZGZjYWVjMDM3
YTI0M2QxZTBhNjA2N2FhM2UuLjc2ZGI4MTQ0ZTRmYzlmNjM0Yjg2OTdkMjMyMjZjZjUxOTI0NTVk
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMjIgIFNhaWQgQWJvdS1IYWxs
YXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtlIEdyYXBo
aWNzQ29udGV4dFN0YXRlIGEgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OnNl
dFN0YXRlKToKKyAgICAgICAgKiBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Y29udmVydENhaXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0bWFwKToKKwogMjAy
Mi0wMy0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVIFByb2Nlc3NdIE1ha2UgR3JhcGhpY3NDb250ZXh0U3RhdGUga2VlcCB0cmFjayBvZiBjaGFu
Z2VzIHRpbGwgdGhleSBhcmUgYXBwbGllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggOWU0ZDA2NmIwMzliNmQ1ZmU0
YzUyY2Q1YWE0OTdkNDI5OWE2ZmIxYi4uYWMzM2YzZDMxMjNmYzU4MTQ0ZDdiYmI5N2Q3YWRkNjEz
NzVjMzkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCkBAIC00Myw4ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotR3JhcGhpY3NDb250ZXh0OjpHcmFwaGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiBjaGFuZ2VGbGFncykKLSAgICA6IG1fc3RhdGUoY2hhbmdl
RmxhZ3MpCitHcmFwaGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3MmIGNoYW5nZUZsYWdzLCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQorICAgIDogbV9zdGF0ZShjaGFuZ2VGbGFncywg
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxM2NjM2IwMzc3OTEx
NjZmOTNjMjZlYTgyZTgxZDc2ZTQ2MWI0MGM2Li5lZDBmZWZjNTVhODMxMzFkMTcwOWY3ZDdkNGRh
NDFkZDQ5ZTNkYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dChjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6Q2hhbmdlRmxhZ3MmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBHcmFw
aGljc0NvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZUZsYWdzJiA9IHsg
fSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTc5LDM2ICs3OSwzNiBAQCBwdWJsaWM6CiAKICAgICAvLyBDb250ZXh0IFN0YXRlCiAKLSAg
ICBjb25zdCBTb3VyY2VCcnVzaCYgZmlsbEJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5m
aWxsQnJ1c2g7IH0KLSAgICBjb25zdCBDb2xvciYgZmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5maWxsQnJ1c2guY29sb3IoKTsgfQotICAgIEdyYWRpZW50KiBmaWxsR3JhZGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxCcnVzaC5ncmFkaWVudCgpOyB9Ci0gICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKTsgfQotICAg
IFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQnJ1c2gu
cGF0dGVybigpOyB9CisgICAgY29uc3QgU291cmNlQnJ1c2gmIGZpbGxCcnVzaCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuZmlsbEJydXNoKCk7IH0KKyAgICBjb25zdCBDb2xvciYgZmlsbENvbG9y
KCkgY29uc3QgeyByZXR1cm4gZmlsbEJydXNoKCkuY29sb3IoKTsgfQorICAgIEdyYWRpZW50KiBm
aWxsR3JhZGllbnQoKSBjb25zdCB7IHJldHVybiBmaWxsQnJ1c2goKS5ncmFkaWVudCgpOyB9Cisg
ICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBmaWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIGZpbGxCcnVzaCgpLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKTsgfQorICAg
IFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gZmlsbEJydXNoKCkucGF0dGVy
bigpOyB9CiAgICAgdm9pZCBzZXRGaWxsQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7
IG1fc3RhdGUuc2V0RmlsbEJydXNoKGJydXNoKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0K
ICAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9zdGF0ZS5zZXRG
aWxsQ29sb3IoY29sb3IpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogICAgIHZvaWQgc2V0
RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBzcGFjZVRyYW5zZm9ybSA9IHsgfSkgeyBtX3N0YXRlLnNldEZpbGxHcmFkaWVudChXVEZN
b3ZlKGdyYWRpZW50KSwgc3BhY2VUcmFuc2Zvcm0pOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsg
fQogICAgIHZvaWQgc2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBtX3N0
YXRlLnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVTdGF0ZShtX3N0
YXRlKTsgfQogCi0gICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LmZpbGxSdWxlOyB9CisgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlLmZpbGxSdWxlKCk7IH0KICAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxl
KSB7IG1fc3RhdGUuc2V0RmlsbFJ1bGUoZmlsbFJ1bGUpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRl
KTsgfQogCi0gICAgY29uc3QgU291cmNlQnJ1c2gmIHN0cm9rZUJydXNoKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5zdHJva2VCcnVzaDsgfQotICAgIGNvbnN0IENvbG9yJiBzdHJva2VDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guY29sb3IoKTsgfQotICAgIEdyYWRp
ZW50KiBzdHJva2VHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2gu
Z3JhZGllbnQoKTsgfQotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgc3Ryb2tlR3JhZGllbnRT
cGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGll
bnRTcGFjZVRyYW5zZm9ybSgpOyB9Ci0gICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQnJ1c2gucGF0dGVybigpOyB9CisgICAgY29uc3QgU291
cmNlQnJ1c2gmIHN0cm9rZUJydXNoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VCcnVz
aCgpOyB9CisgICAgY29uc3QgQ29sb3ImIHN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Ry
b2tlQnJ1c2goKS5jb2xvcigpOyB9CisgICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29u
c3QgeyByZXR1cm4gc3Ryb2tlQnJ1c2goKS5ncmFkaWVudCgpOyB9CisgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBzdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
c3Ryb2tlQnJ1c2goKS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCk7IH0KKyAgICBQYXR0ZXJuKiBz
dHJva2VQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gc3Ryb2tlQnJ1c2goKS5wYXR0ZXJuKCk7IH0K
ICAgICB2b2lkIHNldFN0cm9rZUJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBtX3N0
YXRlLnNldFN0cm9rZUJydXNoKGJydXNoKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICAg
ICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBtX3N0YXRlLnNldFN0
cm9rZUNvbG9yKGNvbG9yKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICAgICB2b2lkIHNl
dFN0cm9rZUdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBzcGFjZVRyYW5zZm9ybSA9IHsgfSkgeyBtX3N0YXRlLnNldFN0cm9rZUdyYWRpZW50
KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3Rh
dGUpOyB9CiAgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4p
IHsgbV9zdGF0ZS5zZXRTdHJva2VQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBkaWRVcGRhdGVT
dGF0ZShtX3N0YXRlKTsgfQogCi0gICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKyAgICBmbG9hdCBzdHJva2VUaGlja25l
c3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcygpOyB9CiAgICAgdm9p
ZCBzZXRTdHJva2VUaGlja25lc3MoZmxvYXQgdGhpY2tuZXNzKSB7IG1fc3RhdGUuc2V0U3Ryb2tl
VGhpY2tuZXNzKHRoaWNrbmVzcyk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAKLSAgICBT
dHJva2VTdHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5
bGU7IH0KKyAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuc3Ryb2tlU3R5bGUoKTsgfQogICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUg
c3R5bGUpIHsgbV9zdGF0ZS5zZXRTdHJva2VTdHlsZShzdHlsZSk7IGRpZFVwZGF0ZVN0YXRlKG1f
c3RhdGUpOyB9CiAKLSAgICBjb25zdCBEcm9wU2hhZG93JiBkcm9wU2hhZG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZS5kcm9wU2hhZG93OyB9CisgICAgY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNo
YWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZHJvcFNoYWRvdygpOyB9CiAgICAgRmxvYXRT
aXplIHNoYWRvd09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3coKS5vZmZzZXQ7IH0K
ICAgICBmbG9hdCBzaGFkb3dCbHVyKCkgY29uc3QgeyByZXR1cm4gZHJvcFNoYWRvdygpLmJsdXJS
YWRpdXM7IH0KICAgICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IoKSBjb25zdCB7IHJldHVybiBk
cm9wU2hhZG93KCkuY29sb3I7IH0KQEAgLTEyMyw0MCArMTIzLDQwIEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0JsdXJyZWRTaGFkb3coKSBjb25zdCB7IHJldHVybiBkcm9wU2hhZG93KCkuaXNCbHVy
cmVkKCk7IH0KICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGRyb3BTaGFkb3co
KS5oYXNPdXRzZXRzKCk7IH0KIAotICAgIENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlTW9kZTsgfQorICAgIENvbXBvc2l0ZU1vZGUg
Y29tcG9zaXRlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlTW9kZSgpOyB9
CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1
cm4gY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbjsgfQogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUo
KSBjb25zdCB7IHJldHVybiBjb21wb3NpdGVNb2RlKCkuYmxlbmRNb2RlOyB9CiAgICAgdm9pZCBz
ZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU1vZGUgY29tcG9zaXRlTW9kZSkgeyBtX3N0YXRlLnNl
dENvbXBvc2l0ZU1vZGUoY29tcG9zaXRlTW9kZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CiAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0
aW9uLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIHsgc2V0Q29tcG9z
aXRlTW9kZSh7IG9wZXJhdGlvbiwgYmxlbmRNb2RlIH0pOyB9CiAKLSAgICBmbG9hdCBhbHBoYSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuYWxwaGE7IH0KKyAgICBmbG9hdCBhbHBoYSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuYWxwaGEoKTsgfQogICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxw
aGEpIHsgbV9zdGF0ZS5zZXRBbHBoYShhbHBoYSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9
CiAKLSAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlLnRleHREcmF3aW5nTW9kZTsgfQorICAgIFRleHREcmF3aW5nTW9kZUZsYWdz
IHRleHREcmF3aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUudGV4dERyYXdpbmdNb2Rl
KCk7IH0KICAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyB0
ZXh0RHJhd2luZ01vZGUpIHsgbV9zdGF0ZS5zZXRUZXh0RHJhd2luZ01vZGUodGV4dERyYXdpbmdN
b2RlKTsgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7IH0KICAgICAKLSAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OyB9CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkg
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpOyB9CiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpIHsg
bV9zdGF0ZS5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsgfQogCi0gICAgYm9vbCBzaG91bGRBbnRp
YWxpYXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZEFudGlhbGlhczsgfQorICAgIGJv
b2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRpYWxp
YXMoKTsgfQogICAgIHZvaWQgc2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFz
KSB7IG1fc3RhdGUuc2V0U2hvdWxkQW50aWFsaWFzKHNob3VsZEFudGlhbGlhcyk7IGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUpOyB9CiAKLSAgICBib29sIHNob3VsZFNtb290aEZvbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250czsgfQorICAgIGJvb2wgc2hvdWxkU21v
b3RoRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzKCk7IH0K
ICAgICB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wgc2hvdWxkU21vb3RoRm9udHMpIHsg
bV9zdGF0ZS5zZXRTaG91bGRTbW9vdGhGb250cyhzaG91bGRTbW9vdGhGb250cyk7IGRpZFVwZGF0
ZVN0YXRlKG1fc3RhdGUpOyB9CiAKICAgICAvLyBOb3JtYWxseSBDRyBlbmFibGVzIHN1YnBpeGVs
LXF1YW50aXphdGlvbiBiZWNhdXNlIGl0IGltcHJvdmVzIHRoZSBwZXJmb3JtYW5jZSBvZiBhbGln
bmluZyBnbHlwaHMuCiAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSBoYXZlIHRvIGRpc2FibGUgdG8g
dG8gZW5zdXJlIGEgaGlnaC1xdWFsaXR5IG91dHB1dCBvZiB0aGUgZ2x5cGhzLgotICAgIGJvb2wg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IH0KKyAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRp
emVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKCk7IH0KICAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBtX3N0YXRlLnNldFNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyhzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOyBkaWRVcGRhdGVTdGF0ZSht
X3N0YXRlKTsgfQogCi0gICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KKyAgICBib29sIHNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpOyB9CiAgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29s
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc3RhdGUuc2V0U2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMoc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsg
fQogCi0gICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
ZHJhd0x1bWluYW5jZU1hc2s7IH0KKyAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzaygpOyB9CiAgICAgdm9pZCBzZXREcmF3
THVtaW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKSB7IG1fc3RhdGUuc2V0RHJhd0x1
bWluYW5jZU1hc2soZHJhd0x1bWluYW5jZU1hc2spOyBkaWRVcGRhdGVTdGF0ZShtX3N0YXRlKTsg
fQogCiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBib29sIHVzZURhcmtBcHBl
YXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS51c2VEYXJrQXBwZWFyYW5jZTsgfQorICAg
IGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnVzZURhcmtB
cHBlYXJhbmNlKCk7IH0KICAgICB2b2lkIHNldFVzZURhcmtBcHBlYXJhbmNlKGJvb2wgdXNlRGFy
a0FwcGVhcmFuY2UpIHsgbV9zdGF0ZS5zZXRVc2VEYXJrQXBwZWFyYW5jZSh1c2VEYXJrQXBwZWFy
YW5jZSk7IGRpZFVwZGF0ZVN0YXRlKG1fc3RhdGUpOyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUu
Y3BwCmluZGV4IGE3MjU1M2EyYTgyMTQzYjhiNjE4ODI0MjYyYTU1NTY3ODdmZTAzMTIuLjE4ZGZh
Y2FiZTdmNWM2YTcwNzI0ZWVhNzRjY2U1OWRjNjMwODZkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5jcHAK
QEAgLTMwLDIyICszMCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBDaGFuZ2VGbGFncyYgY2hhbmdl
RmxhZ3MpCi0gICAgOiBjaGFuZ2VGbGFncyhjaGFuZ2VGbGFncykKK0dyYXBoaWNzQ29udGV4dFN0
YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBDaGFuZ2VGbGFncyYgY2hhbmdlRmxhZ3Ms
IEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCisgICAgOiBt
X2NoYW5nZUZsYWdzKGNoYW5nZUZsYWdzKQorICAgICwgbV9pbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCiB7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OmNvbnRhaW5zT25seUlubGluZUNoYW5nZXMoKSBjb25zdAogewotICAgIHN0YXRp
YyBjb25zdGV4cHIgQ2hhbmdlRmxhZ3MgaW5saW5lQ2hhbmdlRmxhZ3MgeyBDaGFuZ2U6OlN0cm9r
ZVRoaWNrbmVzcywgQ2hhbmdlOjpTdHJva2VCcnVzaCwgQ2hhbmdlOjpGaWxsQnJ1c2ggfTsKLQot
ICAgIGlmIChjaGFuZ2VGbGFncyAhPSAoY2hhbmdlRmxhZ3MgJiBpbmxpbmVDaGFuZ2VGbGFncykp
CisgICAgaWYgKG1fY2hhbmdlRmxhZ3MgIT0gKG1fY2hhbmdlRmxhZ3MgJiBiYXNpY0NoYW5nZUZs
YWdzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKENoYW5nZTo6U3Ryb2tlQnJ1c2gpICYmICFzdHJva2VCcnVzaC5pc0lubGluZUNvbG9yKCkp
CisgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoQ2hhbmdlOjpTdHJva2VCcnVzaCkgJiYg
IW1fc3Ryb2tlQnJ1c2guaXNJbmxpbmVDb2xvcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoQ2hhbmdlOjpGaWxsQnJ1c2gpICYmICFmaWxs
QnJ1c2guaXNJbmxpbmVDb2xvcigpKQorICAgIGlmIChtX2NoYW5nZUZsYWdzLmNvbnRhaW5zKENo
YW5nZTo6RmlsbEJydXNoKSAmJiAhbV9maWxsQnJ1c2guaXNJbmxpbmVDb2xvcigpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU0LDMzICs1MywzMyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb250YWluc09ubHlJbmxpbmVDaGFuZ2VzKCkgY29u
c3QKIHZvaWQgR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1lcmdlQ2hhbmdlcyhjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0
U3RhdGU+JiBsYXN0RHJhd2luZ1N0YXRlKQogewogICAgIGF1dG8gbWVyZ2VDaGFuZ2UgPSBbJl0o
Q2hhbmdlIGNoYW5nZSwgYXV0byBHcmFwaGljc0NvbnRleHRTdGF0ZTo6KnByb3BlcnR5KSB7Ci0g
ICAgICAgIGlmICghc3RhdGUuY2hhbmdlRmxhZ3MuY29udGFpbnMoY2hhbmdlKSB8fCB0aGlzLT4q
cHJvcGVydHkgPT0gc3RhdGUuKnByb3BlcnR5KQorICAgICAgICBpZiAoIXN0YXRlLmNoYW5nZXMo
KS5jb250YWlucyhjaGFuZ2UpIHx8IHRoaXMtPipwcm9wZXJ0eSA9PSBzdGF0ZS4qcHJvcGVydHkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMtPipwcm9wZXJ0eSA9IHN0YXRlLipw
cm9wZXJ0eTsKLSAgICAgICAgY2hhbmdlRmxhZ3Muc2V0KGNoYW5nZSwgIWxhc3REcmF3aW5nU3Rh
dGUgfHwgKCpsYXN0RHJhd2luZ1N0YXRlKS4qcHJvcGVydHkgIT0gdGhpcy0+KnByb3BlcnR5KTsK
KyAgICAgICAgbV9jaGFuZ2VGbGFncy5zZXQoY2hhbmdlLCAhbGFzdERyYXdpbmdTdGF0ZSB8fCAo
Kmxhc3REcmF3aW5nU3RhdGUpLipwcm9wZXJ0eSAhPSB0aGlzLT4qcHJvcGVydHkpOwogICAgIH07
CiAKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gpOwotICAgIG1lcmdlQ2hhbmdlKENo
YW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OmZpbGxSdWxlKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAg
ICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCk7CisgICAg
bWVyZ2VDaGFuZ2UoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6bV9maWxsUnVsZSk7CiAKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6
OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
dHJva2VCcnVzaCk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzKTsKLSAg
ICBtZXJnZUNoYW5nZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdl
OjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
bV9zdHJva2VCcnVzaCk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTdHJva2VUaGlja25lc3Ms
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VUaGlja25lc3Mp
OworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlU3R5bGUpOwogCi0gICAgbWVyZ2VDaGFu
Z2UoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSk7Ci0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpEcm9wU2hh
ZG93LCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNoYWRv
dyk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9jb21wb3NpdGVNb2RlKTsKKyAgICBtZXJnZUNo
YW5nZShDaGFuZ2U6OkRyb3BTaGFkb3csICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjptX2Ryb3BTaGFkb3cpOwogCi0gICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpBbHBo
YSwgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEp
OwotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAg
IG1lcmdlQ2hhbmdlKENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hh
bmdlOjpBbHBoYSwgICAgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0
ZTo6bV9hbHBoYSk7CisgICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5LCAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3RleHREcmF3aW5nTW9kZSk7CiAKLSAg
ICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpOwotICAgIG1lcmdlQ2hhbmdlKENo
YW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OnNob3VsZFNtb290aEZvbnRzKTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMpOwotICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMsICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKTsKLSAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzayk7Cisg
ICAgbWVyZ2VDaGFuZ2UoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRBbnRpYWxpYXMpOworICAgIG1lcmdlQ2hhbmdl
KENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6Om1fc2hvdWxkU21vb3RoRm9udHMpOworICAgIG1lcmdlQ2hhbmdlKENoYW5nZTo6U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3NoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OkRyYXdMdW1pbmFu
Y2VNYXNrLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2RyYXdMdW1pbmFu
Y2VNYXNrKTsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgIG1lcmdlQ2hhbmdl
KENoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0
U3RhdGU6OnVzZURhcmtBcHBlYXJhbmNlKTsKKyAgICBtZXJnZUNoYW5nZShDaGFuZ2U6OlVzZURh
cmtBcHBlYXJhbmNlLCAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3VzZURh
cmtBcHBlYXJhbmNlKTsKICNlbmRpZgogfQogCkBAIC04OCw3ICs4Nyw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OmRpZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKQogewogI2lmIFVTRShD
RykKICAgICAvLyBDR0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyKCkgc2V0cyB0aGUgQ0cg
Z2xvYmFsIGFscGhhIHRvIDEuIEtlZXAgb3VyIGFscGhhIGluIHN5bmMuCi0gICAgYWxwaGEgPSAx
OworICAgIG1fYWxwaGEgPSAxOwogI2VuZGlmCiB9CiAKQEAgLTk2LDcgKzk1LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6ZGlkRW5kVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3JpZ2lu
YWxPcGFjaXR5KQogewogI2lmIFVTRShDRykKICAgICAvLyBDR0NvbnRleHRCZWdpblRyYW5zcGFy
ZW5jeUxheWVyKCkgc2V0cyB0aGUgQ0cgZ2xvYmFsIGFscGhhIHRvIDEuIFJlc29yZSBvdXIgYWxw
aGEgbm93LgotICAgIGFscGhhID0gb3JpZ2luYWxPcGFjaXR5OworICAgIG1fYWxwaGEgPSBvcmln
aW5hbE9wYWNpdHk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hbE9wYWNpdHkpOwog
I2VuZGlmCkBAIC0xNjAsMzMgKzE1OSwzMyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RhdGVDaGFu
Z2VOYW1lKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2UgY2hhbmdlKQogVGV4dFN0cmVhbSYg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAg
YXV0byBkdW1wID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6
Oipwcm9wZXJ0eSkgewotICAgICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoY2hhbmdlKSkK
KyAgICAgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoY2hhbmdlKSkKICAgICAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eShzdGF0ZUNoYW5nZU5hbWUoY2hhbmdlKSwgdGhpcy0+KnByb3BlcnR5
KTsKICAgICB9OwogCi0gICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBjaGFuZ2VG
bGFncyk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjaGFuZ2UtZmxhZ3MiLCBtX2NoYW5nZUZsYWdz
KTsKIAotICAgIGR1bXAoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gpOwotICAgIGR1bXAoQ2hhbmdlOjpGaWxsUnVs
ZSwgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSk7
CisgICAgZHVtcChDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fZmlsbEJydXNoKTsKKyAgICBkdW1wKENoYW5nZTo6RmlsbFJ1bGUs
ICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9maWxsUnVsZSk7
CiAKLSAgICBkdW1wKENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlQnJ1c2gpOwotICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VU
aGlja25lc3MsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VUaGlj
a25lc3MpOwotICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VTdHlsZSwgICAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VTdHlsZSk7CisgICAgZHVtcChDaGFuZ2U6OlN0
cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ry
b2tlQnJ1c2gpOworICAgIGR1bXAoQ2hhbmdlOjpTdHJva2VUaGlja25lc3MsICAgICAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVRoaWNrbmVzcyk7CisgICAgZHVtcChD
aGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6Om1fc3Ryb2tlU3R5bGUpOwogCi0gICAgZHVtcChDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmNvbXBvc2l0ZU1vZGUpOwotICAg
IGR1bXAoQ2hhbmdlOjpEcm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpkcm9wU2hhZG93KTsKKyAgICBkdW1wKENoYW5nZTo6Q29tcG9zaXRlTW9kZSwg
ICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9jb21wb3NpdGVNb2RlKTsK
KyAgICBkdW1wKENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6bV9kcm9wU2hhZG93KTsKIAotICAgIGR1bXAoQ2hhbmdlOjpBbHBoYSwg
ICAgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSk7Ci0g
ICAgZHVtcChDaGFuZ2U6OkltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6OmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIGR1bXAoQ2hhbmdl
OjpUZXh0RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp0
ZXh0RHJhd2luZ01vZGUpOworICAgIGR1bXAoQ2hhbmdlOjpBbHBoYSwgICAgICAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2FscGhhKTsKKyAgICBkdW1wKENoYW5n
ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
bV9pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKKyAgICBkdW1wKENoYW5nZTo6VGV4dERyYXdp
bmdNb2RlLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV90ZXh0RHJhd2lu
Z01vZGUpOwogCi0gICAgZHVtcChDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcyk7Ci0gICAgZHVtcChDaGFu
Z2U6OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnNob3VsZFNtb290aEZvbnRzKTsKLSAgICBkdW1wKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzLCAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKTsKLSAgICBkdW1wKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMsICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwotICAgIGR1
bXAoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpkcmF3THVtaW5hbmNlTWFzayk7CisgICAgZHVtcChDaGFuZ2U6OlNob3VsZEFudGlh
bGlhcywgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkQW50aWFs
aWFzKTsKKyAgICBkdW1wKENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRTbW9vdGhGb250cyk7CisgICAgZHVtcChDaGFu
Z2U6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cywgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
Om1fc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKTsKKyAgICBkdW1wKENoYW5nZTo6U2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMsICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyk7CisgICAgZHVtcChDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZHJhd0x1bWluYW5jZU1hc2spOwog
I2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgZHVtcChDaGFuZ2U6OlVzZURhcmtB
cHBlYXJhbmNlLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnVzZURhcmtBcHBl
YXJhbmNlKTsKKyAgICBkdW1wKENoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICAg
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV91c2VEYXJrQXBwZWFyYW5jZSk7CiAjZW5kaWYKICAg
ICByZXR1cm4gdHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0U3RhdGUuaAppbmRleCBlODI1MTdlYmVlMjY1NWYxYzNmZWY2
ODJkM2FhNDZhMTlkYTdlMjk3Li40NmIxYTg2Y2Q4MmUwMTJkOThjNzUxODVmYTg2YTdkMTY1ZjZm
MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFN0YXRlLmgKQEAgLTMyLDcgKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgeworY2xhc3MgR3JhcGhpY3NDb250
ZXh0U3RhdGUgeworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHRDYWlybzsKK3B1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIENoYW5nZSA6IHVpbnQzMl90IHsKICAgICAgICAgRmlsbEJydXNo
ICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAogICAgICAgICBGaWxsUnVsZSAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDEsCkBAIC01OSw0MCArNjEsNjcgQEAgc3RydWN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlIHsKICAgICB9OwogICAgIHVzaW5nIENoYW5nZUZsYWdzID0gT3B0aW9uU2V0PENo
YW5nZT47CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBD
aGFuZ2VGbGFncyYgPSB7IH0pOworICAgIHN0YXRpYyBjb25zdGV4cHIgQ2hhbmdlRmxhZ3MgYmFz
aWNDaGFuZ2VGbGFncyB7IENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCBDaGFuZ2U6OlN0cm9rZUJy
dXNoLCBDaGFuZ2U6OkZpbGxCcnVzaCB9OwogCi0gICAgQ2hhbmdlRmxhZ3MgY2hhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIGNoYW5nZUZsYWdzOyB9Ci0gICAgdm9pZCBkaWRBcHBseUNoYW5nZXMoKSB7
IGNoYW5nZUZsYWdzID0geyB9OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0
U3RhdGUoY29uc3QgQ2hhbmdlRmxhZ3MmID0geyB9LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IElu
dGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0KTsKIAotICAgIHZvaWQgc2V0RmlsbEJydXNoKGNv
bnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxCcnVzaCwg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIGJydXNoKTsgfQotICAgIHZvaWQgc2V0
RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkZpbGxC
cnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsQnJ1c2gsIHsgY29sb3IgfSk7IH0KLSAg
ICB2b2lkIHNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGllbnQsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgc3BhY2VUcmFuc2Zvcm0pIHsgZmlsbEJydXNoLnNldEdyYWRpZW50KFdU
Rk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IGNoYW5nZUZsYWdzLmFkZChDaGFuZ2U6
OkZpbGxCcnVzaCk7IH0KLSAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBh
dHRlcm4pIHsgZmlsbEJydXNoLnNldFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7IGNoYW5nZUZs
YWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KKyAgICBDaGFuZ2VGbGFncyBjaGFuZ2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGFuZ2VGbGFnczsgfQorICAgIHZvaWQgZGlkQXBwbHlDaGFuZ2Vz
KCkgeyBtX2NoYW5nZUZsYWdzID0geyB9OyB9CiAKLSAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRS
dWxlIGZpbGxSdWxlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RmlsbFJ1bGUsICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6ZmlsbFJ1bGUsIGZpbGxSdWxlKTsgfQorICAgIGNvbnN0IFNvdXJjZUJydXNo
JiBmaWxsQnJ1c2goKSBjb25zdCB7IHJldHVybiBtX2ZpbGxCcnVzaDsgfQorICAgIHZvaWQgc2V0
RmlsbEJydXNoKGNvbnN0IFNvdXJjZUJydXNoJiBicnVzaCkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OkZpbGxCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2ZpbGxCcnVzaCwgYnJ1c2gpOyB9
CisgICAgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IHNldFByb3BlcnR5
KENoYW5nZTo6RmlsbEJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbEJydXNoLCB7
IGNvbG9yIH0pOyB9CisgICAgdm9pZCBzZXRGaWxsR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdy
YWRpZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHNwYWNlVHJhbnNmb3JtKSB7IG1fZmlsbEJy
dXNoLnNldEdyYWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRyYW5zZm9ybSk7IG1fY2hh
bmdlRmxhZ3MuYWRkKENoYW5nZTo6RmlsbEJydXNoKTsgfQorICAgIHZvaWQgc2V0RmlsbFBhdHRl
cm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBtX2ZpbGxCcnVzaC5zZXRQYXR0ZXJuKFdURk1v
dmUocGF0dGVybikpOyBtX2NoYW5nZUZsYWdzLmFkZChDaGFuZ2U6OkZpbGxCcnVzaCk7IH0KIAot
ICAgIHZvaWQgc2V0U3Ryb2tlQnJ1c2goY29uc3QgU291cmNlQnJ1c2gmIGJydXNoKSB7IHNldFBy
b3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tl
QnJ1c2gsIGJydXNoKTsgfQotICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U3Ryb2tlQnJ1c2gsICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6c3Ryb2tlQnJ1c2gsIHsgY29sb3IgfSk7IH0KLSAgICB2b2lkIHNldFN0cm9rZUdyYWRp
ZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFj
ZVRyYW5zZm9ybSkgeyBzdHJva2VCcnVzaC5zZXRHcmFkaWVudChXVEZNb3ZlKGdyYWRpZW50KSwg
c3BhY2VUcmFuc2Zvcm0pOyBjaGFuZ2VGbGFncy5hZGQoQ2hhbmdlOjpTdHJva2VCcnVzaCk7IH0K
LSAgICB2b2lkIHNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikgeyBzdHJv
a2VCcnVzaC5zZXRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBjaGFuZ2VGbGFncy5hZGQoQ2hh
bmdlOjpTdHJva2VCcnVzaCk7IH0KKyAgICBXaW5kUnVsZSBmaWxsUnVsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlsbFJ1bGU7IH0KKyAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxl
KSB7IHNldFByb3BlcnR5KENoYW5nZTo6RmlsbFJ1bGUsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
bV9maWxsUnVsZSwgZmlsbFJ1bGUpOyB9CiAKLSAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhm
bG9hdCBzdHJva2VUaGlja25lc3MpIHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTdHJva2VUaGlja25l
c3MsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlVGhpY2tuZXNzLCBzdHJva2VUaGlja25l
c3MpOyB9Ci0gICAgdm9pZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkg
eyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6
OnN0cm9rZVN0eWxlLCBzdHJva2VTdHlsZSk7IH0KKyAgICBjb25zdCBTb3VyY2VCcnVzaCYgc3Ry
b2tlQnJ1c2goKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZUJydXNoOyB9CisgICAgdm9pZCBzZXRT
dHJva2VCcnVzaChjb25zdCBTb3VyY2VCcnVzaCYgYnJ1c2gpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpTdHJva2VCcnVzaCwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZUJydXNoLCBicnVz
aCk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikgeyBzZXRQ
cm9wZXJ0eShDaGFuZ2U6OlN0cm9rZUJydXNoLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ry
b2tlQnJ1c2gsIHsgY29sb3IgfSk7IH0KKyAgICB2b2lkIHNldFN0cm9rZUdyYWRpZW50KFJlZjxH
cmFkaWVudD4mJiBncmFkaWVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzcGFjZVRyYW5zZm9y
bSkgeyBtX3N0cm9rZUJydXNoLnNldEdyYWRpZW50KFdURk1vdmUoZ3JhZGllbnQpLCBzcGFjZVRy
YW5zZm9ybSk7IG1fY2hhbmdlRmxhZ3MuYWRkKENoYW5nZTo6U3Ryb2tlQnJ1c2gpOyB9CisgICAg
dm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pIHsgbV9zdHJva2VC
cnVzaC5zZXRQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOyBtX2NoYW5nZUZsYWdzLmFkZChDaGFu
Z2U6OlN0cm9rZUJydXNoKTsgfQogCi0gICAgdm9pZCBzZXRDb21wb3NpdGVNb2RlKENvbXBvc2l0
ZU1vZGUgY29tcG9zaXRlTW9kZSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUs
ICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSwgY29tcG9zaXRlTW9kZSk7IH0K
LSAgICB2b2lkIHNldERyb3BTaGFkb3coY29uc3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBz
ZXRQcm9wZXJ0eShDaGFuZ2U6OkRyb3BTaGFkb3csICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJv
cFNoYWRvdywgZHJvcFNoYWRvdyk7IH0KKyAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBjb25z
dCB7IHJldHVybiBtX3N0cm9rZVRoaWNrbmVzczsgfQorICAgIHZvaWQgc2V0U3Ryb2tlVGhpY2tu
ZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlN0cm9rZVRo
aWNrbmVzcywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVRoaWNrbmVzcywgc3Ryb2tl
VGhpY2tuZXNzKTsgfQogCi0gICAgdm9pZCBzZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OkFscGhhLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmFscGhhLCBhbHBoYSk7
IH0KLSAgICB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6Oklt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHksICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7IH0KLSAgICB2b2lk
IHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUp
IHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpUZXh0RHJhd2luZ01vZGUsICZHcmFwaGljc0NvbnRleHRT
dGF0ZTo6dGV4dERyYXdpbmdNb2RlLCB0ZXh0RHJhd2luZ01vZGUpOyB9CisgICAgU3Ryb2tlU3R5
bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZVN0eWxlOyB9CisgICAgdm9p
ZCBzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBzdHJva2VTdHlsZSkgeyBzZXRQcm9wZXJ0eShD
aGFuZ2U6OlN0cm9rZVN0eWxlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlU3R5bGUs
IHN0cm9rZVN0eWxlKTsgfQorCisgICAgY29uc3QgQ29tcG9zaXRlTW9kZSYgY29tcG9zaXRlTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRlTW9kZTsgfQorICAgIHZvaWQgc2V0Q29tcG9z
aXRlTW9kZShDb21wb3NpdGVNb2RlIGNvbXBvc2l0ZU1vZGUpIHsgc2V0UHJvcGVydHkoQ2hhbmdl
OjpDb21wb3NpdGVNb2RlLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSwg
Y29tcG9zaXRlTW9kZSk7IH0KKworICAgIGNvbnN0IERyb3BTaGFkb3cmIGRyb3BTaGFkb3coKSBj
b25zdCB7IHJldHVybiBtX2Ryb3BTaGFkb3c7IH0KKyAgICB2b2lkIHNldERyb3BTaGFkb3coY29u
c3QgRHJvcFNoYWRvdyYgZHJvcFNoYWRvdykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkRyb3BTaGFk
b3csICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9kcm9wU2hhZG93LCBkcm9wU2hhZG93KTsgfQor
CisgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2FscGhhOyB9CisgICAgdm9pZCBz
ZXRBbHBoYShmbG9hdCBhbHBoYSkgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OkFscGhhLCAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fYWxwaGEsIGFscGhhKTsgfQorCisgICAgSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSB7IHNl
dFByb3BlcnR5KENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjptX2ltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkpOyB9CisKKyAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUo
KSBjb25zdCB7IHJldHVybiBtX3RleHREcmF3aW5nTW9kZTsgfQorICAgIHZvaWQgc2V0VGV4dERy
YXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSkgeyBzZXRQcm9w
ZXJ0eShDaGFuZ2U6OlRleHREcmF3aW5nTW9kZSwgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Rl
eHREcmF3aW5nTW9kZSwgdGV4dERyYXdpbmdNb2RlKTsgfQorCisgICAgYm9vbCBzaG91bGRBbnRp
YWxpYXMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZEFudGlhbGlhczsgfQorICAgIHZvaWQgc2V0
U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IHNldFByb3BlcnR5KENoYW5n
ZTo6U2hvdWxkQW50aWFsaWFzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkQW50aWFs
aWFzLCBzaG91bGRBbnRpYWxpYXMpOyB9CisKKyAgICBib29sIHNob3VsZFNtb290aEZvbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9zaG91bGRTbW9vdGhGb250czsgfQorICAgIHZvaWQgc2V0U2hvdWxk
U21vb3RoRm9udHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6
OlNob3VsZFNtb290aEZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU21vb3Ro
Rm9udHMsIHNob3VsZFNtb290aEZvbnRzKTsgfQorCisgICAgYm9vbCBzaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
czsgfQorICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wgc2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzLCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOyB9CisKKyAgICBib29s
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsgfQorICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMsIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsgfQorCisgICAgYm9vbCBkcmF3THVtaW5h
bmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd0x1bWluYW5jZU1hc2s7IH0KKyAgICB2b2lk
IHNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWluYW5jZU1hc2spIHsgc2V0UHJvcGVy
dHkoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2Ry
YXdMdW1pbmFuY2VNYXNrLCBkcmF3THVtaW5hbmNlTWFzayk7IH0KIAotICAgIHZvaWQgc2V0U2hv
dWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKSB7IHNldFByb3BlcnR5KENoYW5nZTo6
U2hvdWxkQW50aWFsaWFzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcywg
c2hvdWxkQW50aWFsaWFzKTsgfQotICAgIHZvaWQgc2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBz
aG91bGRTbW9vdGhGb250cykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZFNtb290aEZvbnRz
LCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFNtb290aEZvbnRzLCBzaG91bGRTbW9vdGhG
b250cyk7IH0KLSAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNo
b3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBzZXRQcm9wZXJ0eShDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cywgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMsIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyk7IH0KLSAgICB2b2lk
IHNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
IHsgc2V0UHJvcGVydHkoQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgJkdyYXBoaWNz
Q29udGV4dFN0YXRlOjpzaGFkb3dzSWdub3JlVHJhbnNmb3Jtcywgc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMpOyB9Ci0gICAgdm9pZCBzZXREcmF3THVtaW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFu
Y2VNYXNrKSB7IHNldFByb3BlcnR5KENoYW5nZTo6RHJhd0x1bWluYW5jZU1hc2ssICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2ssIGRyYXdMdW1pbmFuY2VNYXNrKTsgfQog
I2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFy
YW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6VXNlRGFy
a0FwcGVhcmFuY2UsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6dXNlRGFya0FwcGVhcmFuY2UsIHVz
ZURhcmtBcHBlYXJhbmNlKTsgfQorICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdCB7
IHJldHVybiBtX3VzZURhcmtBcHBlYXJhbmNlOyB9CisgICAgdm9pZCBzZXRVc2VEYXJrQXBwZWFy
YW5jZShib29sIHVzZURhcmtBcHBlYXJhbmNlKSB7IHNldFByb3BlcnR5KENoYW5nZTo6VXNlRGFy
a0FwcGVhcmFuY2UsICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV91c2VEYXJrQXBwZWFyYW5jZSwg
dXNlRGFya0FwcGVhcmFuY2UpOyB9CiAjZW5kaWYKICAgICAKICAgICBib29sIGNvbnRhaW5zT25s
eUlubGluZUNoYW5nZXMoKSBjb25zdDsKQEAgLTEwNiwzMSArMTM1LDYgQEAgc3RydWN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKLSAg
ICBDaGFuZ2VGbGFncyBjaGFuZ2VGbGFnczsKLQotICAgIFNvdXJjZUJydXNoIGZpbGxCcnVzaCB7
IENvbG9yOjpibGFjayB9OwotICAgIFdpbmRSdWxlIGZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblpl
cm8gfTsKLSAgICAKLSAgICBTb3VyY2VCcnVzaCBzdHJva2VCcnVzaCB7IENvbG9yOjpibGFjayB9
OwotICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyB7IDAgfTsKLSAgICBTdHJva2VTdHlsZSBzdHJv
a2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07Ci0gICAgCi0gICAgQ29tcG9zaXRlTW9kZSBjb21wb3Np
dGVNb2RlIHsgQ29tcG9zaXRlT3BlcmF0b3I6OlNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFs
IH07Ci0gICAgRHJvcFNoYWRvdyBkcm9wU2hhZG93OwotICAgIAotICAgIGZsb2F0IGFscGhhIHsg
MSB9OwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkg
eyBJbnRlcnBvbGF0aW9uUXVhbGl0eTo6RGVmYXVsdCB9OwotICAgIFRleHREcmF3aW5nTW9kZUZs
YWdzIHRleHREcmF3aW5nTW9kZSB7IFRleHREcmF3aW5nTW9kZTo6RmlsbCB9OwotCi0gICAgYm9v
bCBzaG91bGRBbnRpYWxpYXMgeyB0cnVlIH07Ci0gICAgYm9vbCBzaG91bGRTbW9vdGhGb250cyB7
IHRydWUgfTsKLSAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyB7IHRydWUgfTsK
LSAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHsgZmFsc2UgfTsKLSAgICBib29sIGRy
YXdMdW1pbmFuY2VNYXNrIHsgZmFsc2UgfTsKLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JU
KQotICAgIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UgeyBmYWxzZSB9OwotI2VuZGlmCi0gICAgCiBw
cml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShD
aGFuZ2UgY2hhbmdlLCBUIEdyYXBoaWNzQ29udGV4dFN0YXRlOjoqcHJvcGVydHksIGNvbnN0IFQm
IHZhbHVlKQpAQCAtMTQwLDcgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47
CiAjZW5kaWYKICAgICAgICAgdGhpcy0+KnByb3BlcnR5ID0gdmFsdWU7Ci0gICAgICAgIGNoYW5n
ZUZsYWdzLmFkZChjaGFuZ2UpOworICAgICAgICBtX2NoYW5nZUZsYWdzLmFkZChjaGFuZ2UpOwog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xNTEsNDEgKzE1NSw2NiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgICAgIHRoaXMtPipwcm9w
ZXJ0eSA9IFdURk1vdmUodmFsdWUpOwotICAgICAgICBjaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsK
KyAgICAgICAgbV9jaGFuZ2VGbGFncy5hZGQoY2hhbmdlKTsKICAgICB9CisKKyAgICBDaGFuZ2VG
bGFncyBtX2NoYW5nZUZsYWdzOworCisgICAgU291cmNlQnJ1c2ggbV9maWxsQnJ1c2ggeyBDb2xv
cjo6YmxhY2sgfTsKKyAgICBXaW5kUnVsZSBtX2ZpbGxSdWxlIHsgV2luZFJ1bGU6Ok5vblplcm8g
fTsKKyAgICAKKyAgICBTb3VyY2VCcnVzaCBtX3N0cm9rZUJydXNoIHsgQ29sb3I6OmJsYWNrIH07
CisgICAgZmxvYXQgbV9zdHJva2VUaGlja25lc3MgeyAwIH07CisgICAgU3Ryb2tlU3R5bGUgbV9z
dHJva2VTdHlsZSB7IFNvbGlkU3Ryb2tlIH07CisgICAgCisgICAgQ29tcG9zaXRlTW9kZSBtX2Nv
bXBvc2l0ZU1vZGUgeyBDb21wb3NpdGVPcGVyYXRvcjo6U291cmNlT3ZlciwgQmxlbmRNb2RlOjpO
b3JtYWwgfTsKKyAgICBEcm9wU2hhZG93IG1fZHJvcFNoYWRvdzsKKyAgICAKKyAgICBmbG9hdCBt
X2FscGhhIHsgMSB9OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25RdWFsaXR5OjpEZWZhdWx0IH07CisgICAgVGV4dERy
YXdpbmdNb2RlRmxhZ3MgbV90ZXh0RHJhd2luZ01vZGUgeyBUZXh0RHJhd2luZ01vZGU6OkZpbGwg
fTsKKworICAgIGJvb2wgbV9zaG91bGRBbnRpYWxpYXMgeyB0cnVlIH07CisgICAgYm9vbCBtX3No
b3VsZFNtb290aEZvbnRzIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9zaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMgeyB0cnVlIH07CisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fZHJhd0x1bWluYW5jZU1hc2sgeyBmYWxzZSB9OworI2lmIEhB
VkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisgICAgYm9vbCBtX3VzZURhcmtBcHBlYXJhbmNlIHsg
ZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAg
IGF1dG8gZW5jb2RlID0gWyZdKENoYW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250ZXh0U3Rh
dGU6Oipwcm9wZXJ0eSkgewotICAgICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoY2hhbmdl
KSkKKyAgICAgICAgaWYgKG1fY2hhbmdlRmxhZ3MuY29udGFpbnMoY2hhbmdlKSkKICAgICAgICAg
ICAgIGVuY29kZXIgPDwgdGhpcy0+KnByb3BlcnR5OwogICAgIH07CiAKLSAgICBlbmNvZGVyIDw8
IGNoYW5nZUZsYWdzOworICAgIGVuY29kZXIgPDwgbV9jaGFuZ2VGbGFnczsKIAotICAgIGVuY29k
ZShDaGFuZ2U6OkZpbGxCcnVzaCwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6ZmlsbEJydXNoKTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsUnVsZSwgICAgICAg
ICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OmZpbGxSdWxlKTsKKyAgICBl
bmNvZGUoQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3ND
b250ZXh0U3RhdGU6Om1fZmlsbEJydXNoKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpGaWxsUnVsZSwg
ICAgICAgICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUp
OwogCi0gICAgZW5jb2RlKENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAgICAgICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjpzdHJva2VCcnVzaCk7Ci0gICAgZW5jb2RlKENoYW5nZTo6
U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
dHJva2VUaGlja25lc3MpOwotICAgIGVuY29kZShDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUpOworICAgIGVu
Y29kZShDaGFuZ2U6OlN0cm9rZUJydXNoLCAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6bV9zdHJva2VCcnVzaCk7CisgICAgZW5jb2RlKENoYW5nZTo6U3Ryb2tlVGhp
Y2tuZXNzLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVRo
aWNrbmVzcyk7CisgICAgZW5jb2RlKENoYW5nZTo6U3Ryb2tlU3R5bGUsICAgICAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlKTsKIAotICAgIGVuY29k
ZShDaGFuZ2U6OkNvbXBvc2l0ZU1vZGUsICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Y29tcG9zaXRlTW9kZSk7Ci0gICAgZW5jb2RlKENoYW5nZTo6RHJvcFNoYWRvdywg
ICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpkcm9wU2hhZG93KTsK
KyAgICBlbmNvZGUoQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAgICAgICAgICAgICAgICAmR3Jh
cGhpY3NDb250ZXh0U3RhdGU6Om1fY29tcG9zaXRlTW9kZSk7CisgICAgZW5jb2RlKENoYW5nZTo6
RHJvcFNoYWRvdywgICAgICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpt
X2Ryb3BTaGFkb3cpOwogCi0gICAgZW5jb2RlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjphbHBoYSk7Ci0gICAgZW5jb2RlKENo
YW5nZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0
YXRlOjppbWFnZUludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBlbmNvZGUoQ2hhbmdlOjpUZXh0
RHJhd2luZ01vZGUsICAgICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnRleHRE
cmF3aW5nTW9kZSk7CisgICAgZW5jb2RlKENoYW5nZTo6QWxwaGEsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2FscGhhKTsKKyAgICBlbmNvZGUoQ2hh
bmdlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCAgICAgICAmR3JhcGhpY3NDb250ZXh0U3Rh
dGU6Om1faW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CisgICAgZW5jb2RlKENoYW5nZTo6VGV4
dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Rl
eHREcmF3aW5nTW9kZSk7CiAKLSAgICBlbmNvZGUoQ2hhbmdlOjpTaG91bGRBbnRpYWxpYXMsICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZEFudGlhbGlhcyk7Ci0g
ICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAgICAgICAgICAgJkdyYXBo
aWNzQ29udGV4dFN0YXRlOjpzaG91bGRTbW9vdGhGb250cyk7Ci0gICAgZW5jb2RlKENoYW5nZTo6
U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpz
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOwotICAgIGVuY29kZShDaGFuZ2U6OlNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zLCAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMpOwotICAgIGVuY29kZShDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAg
ICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2spOwor
ICAgIGVuY29kZShDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRBbnRpYWxpYXMpOworICAgIGVuY29kZShDaGFuZ2U6
OlNob3VsZFNtb290aEZvbnRzLCAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6
bV9zaG91bGRTbW9vdGhGb250cyk7CisgICAgZW5jb2RlKENoYW5nZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzLCAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3Nob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cyk7CisgICAgZW5jb2RlKENoYW5nZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMsICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKTsKKyAgICBlbmNvZGUoQ2hhbmdlOjpEcmF3THVtaW5hbmNlTWFzaywgICAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZHJhd0x1bWluYW5jZU1hc2spOwogI2lmIEhBVkUo
T1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgZW5jb2RlKENoYW5nZTo6VXNlRGFya0FwcGVhcmFu
Y2UsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5j
ZSk7CisgICAgZW5jb2RlKENoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICAgICAg
JkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3VzZURhcmtBcHBlYXJhbmNlKTsKICNlbmRpZgogfQog
CkBAIC0xOTMsNyArMjIyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIHN0ZDo6b3B0aW9u
YWw8R3JhcGhpY3NDb250ZXh0U3RhdGU+IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBhdXRvIGRlY29kZSA9IFsmXShHcmFwaGljc0NvbnRleHRT
dGF0ZSYgc3RhdGUsIENoYW5nZSBjaGFuZ2UsIGF1dG8gR3JhcGhpY3NDb250ZXh0U3RhdGU6Oipw
cm9wZXJ0eSkgewotICAgICAgICBpZiAoIXN0YXRlLmNoYW5nZUZsYWdzLmNvbnRhaW5zKGNoYW5n
ZSkpCisgICAgICAgIGlmICghc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKGNoYW5nZSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICB1c2luZyBQcm9wZXJ0eVR5cGUgPSB0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEdyYXBoaWNz
Q29udGV4dFN0YXRlPigpLipwcm9wZXJ0eSk+Ojp0eXBlOwpAQCAtMjEzLDQyICsyNDIsNDIgQEAg
c3RkOjpvcHRpb25hbDxHcmFwaGljc0NvbnRleHRTdGF0ZT4gR3JhcGhpY3NDb250ZXh0U3RhdGU6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGUKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIHN0YXRl
KCpjaGFuZ2VGbGFncyk7CiAKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpGaWxsQnJ1
c2gsICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZmlsbEJydXNoKSkK
KyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpGaWxsQnJ1c2gsICAgICAgICAgICAgICAg
ICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9maWxsQnJ1c2gpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkZpbGxSdWxlLCAg
ICAgICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpmaWxsUnVsZSkpCisgICAg
aWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RmlsbFJ1bGUsICAgICAgICAgICAgICAgICAgICAm
R3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZmlsbFJ1bGUpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlQnJ1c2gsICAg
ICAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZUJydXNoKSkKKyAgICBp
ZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VCcnVzaCwgICAgICAgICAgICAgICAgICZH
cmFwaGljc0NvbnRleHRTdGF0ZTo6bV9zdHJva2VCcnVzaCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNz
LCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnN0cm9rZVRoaWNrbmVzcykpCisg
ICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U3Ryb2tlVGhpY2tuZXNzLCAgICAgICAgICAg
ICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc3Ryb2tlVGhpY2tuZXNzKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTdHJva2VT
dHlsZSwgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6c3Ryb2tlU3R5bGUp
KQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlN0cm9rZVN0eWxlLCAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX3N0cm9rZVN0eWxlKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkNvbXBv
c2l0ZU1vZGUsICAgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjpjb21wb3NpdGVN
b2RlKSkKKyAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpDb21wb3NpdGVNb2RlLCAgICAg
ICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6bV9jb21wb3NpdGVNb2RlKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpE
cm9wU2hhZG93LCAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJvcFNo
YWRvdykpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6RHJvcFNoYWRvdywgICAgICAg
ICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fZHJvcFNoYWRvdykpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpB
bHBoYSwgICAgICAgICAgICAgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6YWxwaGEp
KQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkFscGhhLCAgICAgICAgICAgICAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2FscGhhKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5LCAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6aW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSwgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1faW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUo
c3RhdGUsIENoYW5nZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250
ZXh0U3RhdGU6OnRleHREcmF3aW5nTW9kZSkpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5n
ZTo6VGV4dERyYXdpbmdNb2RlLCAgICAgICAgICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1f
dGV4dERyYXdpbmdNb2RlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlm
ICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgJkdy
YXBoaWNzQ29udGV4dFN0YXRlOjpzaG91bGRBbnRpYWxpYXMpKQorICAgIGlmICghZGVjb2RlKHN0
YXRlLCBDaGFuZ2U6OlNob3VsZEFudGlhbGlhcywgICAgICAgICAgICAgJkdyYXBoaWNzQ29udGV4
dFN0YXRlOjptX3Nob3VsZEFudGlhbGlhcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hvdWxkU21vb3RoRm9udHMsICAgICAg
ICAgICAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFNtb290aEZvbnRzKSkKKyAgICBpZiAo
IWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpTaG91bGRTbW9vdGhGb250cywgICAgICAgICAgICZHcmFw
aGljc0NvbnRleHRTdGF0ZTo6bV9zaG91bGRTbW9vdGhGb250cykpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6OnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cykpCisgICAgaWYgKCFkZWNvZGUoc3RhdGUsIENoYW5nZTo6U2hvdWxkU3VicGl4
ZWxRdWFudGl6ZUZvbnRzLCAmR3JhcGhpY3NDb250ZXh0U3RhdGU6Om1fc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRl
Y29kZShzdGF0ZSwgQ2hhbmdlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3JtcywgICAgICZHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpKQorICAgIGlmICghZGVjb2Rl
KHN0YXRlLCBDaGFuZ2U6OlNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zLCAgICAgJkdyYXBoaWNzQ29u
dGV4dFN0YXRlOjptX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZShzdGF0ZSwgQ2hhbmdlOjpEcmF3THVtaW5hbmNl
TWFzaywgICAgICAgICAgICZHcmFwaGljc0NvbnRleHRTdGF0ZTo6ZHJhd0x1bWluYW5jZU1hc2sp
KQorICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OkRyYXdMdW1pbmFuY2VNYXNrLCAgICAg
ICAgICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjptX2RyYXdMdW1pbmFuY2VNYXNrKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQot
ICAgIGlmICghZGVjb2RlKHN0YXRlLCBDaGFuZ2U6OlVzZURhcmtBcHBlYXJhbmNlLCAgICAgICAg
ICAgJkdyYXBoaWNzQ29udGV4dFN0YXRlOjp1c2VEYXJrQXBwZWFyYW5jZSkpCisgICAgaWYgKCFk
ZWNvZGUoc3RhdGUsIENoYW5nZTo6VXNlRGFya0FwcGVhcmFuY2UsICAgICAgICAgICAmR3JhcGhp
Y3NDb250ZXh0U3RhdGU6Om1fdXNlRGFya0FwcGVhcmFuY2UpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDJkYTQ5MWZkODdm
NmNmYmIzM2U0N2Q5ODEyMzM3YmYyMTU4ZjZkZTEuLmEyZTJlOTM0MDM2M2IyMTJhNWJlYjRmODg4
YjU2NjA4Yjc2ZWE2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNTU2LDEwICs1NTYsMTAg
QEAgYm9vbCBpc0FjY2VsZXJhdGVkQ29udGV4dChHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0KQogfSAvLyBuYW1lc3BhY2UgU3RhdGUKIAogRmlsbFNvdXJjZTo6RmlsbFNvdXJj
ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCi0gICAgOiBnbG9iYWxBbHBoYShz
dGF0ZS5hbHBoYSkKLSAgICAsIGZpbGxSdWxlKHN0YXRlLmZpbGxSdWxlKQorICAgIDogZ2xvYmFs
QWxwaGEoc3RhdGUuYWxwaGEoKSkKKyAgICAsIGZpbGxSdWxlKHN0YXRlLmZpbGxSdWxlKCkpCiB7
Ci0gICAgaWYgKGF1dG8gZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsQnJ1c2gucGF0dGVybigpKSB7
CisgICAgaWYgKGF1dG8gZmlsbFBhdHRlcm4gPSBzdGF0ZS5maWxsQnJ1c2goKS5wYXR0ZXJuKCkp
IHsKICAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihmaWxsUGF0dGVybi0+Y3JlYXRl
UGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKICAgICAgICAgYXV0byYgcGF0
dGVybkltYWdlID0gZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwpAQCAtNTY3LDM0ICs1NjcsMzQg
QEAgRmlsbFNvdXJjZTo6RmlsbFNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3Rh
dGUpCiAgICAgICAgIHBhdHRlcm4udHJhbnNmb3JtID0gZmlsbFBhdHRlcm4tPnBhdHRlcm5TcGFj
ZVRyYW5zZm9ybSgpOwogICAgICAgICBwYXR0ZXJuLnJlcGVhdFggPSBmaWxsUGF0dGVybi0+cmVw
ZWF0WCgpOwogICAgICAgICBwYXR0ZXJuLnJlcGVhdFkgPSBmaWxsUGF0dGVybi0+cmVwZWF0WSgp
OwotICAgIH0gZWxzZSBpZiAoYXV0byBmaWxsR3JhZGllbnQgPSBzdGF0ZS5maWxsQnJ1c2guZ3Jh
ZGllbnQoKSkgewotICAgICAgICBncmFkaWVudC5iYXNlID0gZmlsbEdyYWRpZW50LT5jcmVhdGVQ
YXR0ZXJuKDEsIHN0YXRlLmZpbGxCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwotICAg
ICAgICBpZiAoc3RhdGUuYWxwaGEgIT0gMSkKLSAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRq
dXN0ZWQgPSBmaWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEsIHN0YXRlLmZp
bGxCcnVzaC5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAgIH0gZWxzZSBpZiAoYXV0byBm
aWxsR3JhZGllbnQgPSBzdGF0ZS5maWxsQnJ1c2goKS5ncmFkaWVudCgpKSB7CisgICAgICAgIGdy
YWRpZW50LmJhc2UgPSBmaWxsR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuZmlsbEJy
dXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgaWYgKHN0YXRlLmFscGhh
KCkgIT0gMSkKKyAgICAgICAgICAgIGdyYWRpZW50LmFscGhhQWRqdXN0ZWQgPSBmaWxsR3JhZGll
bnQtPmNyZWF0ZVBhdHRlcm4oc3RhdGUuYWxwaGEoKSwgc3RhdGUuZmlsbEJydXNoKCkuZ3JhZGll
bnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgY29sb3IgPSBzdGF0ZS5m
aWxsQnJ1c2guY29sb3IoKTsKKyAgICAgICAgY29sb3IgPSBzdGF0ZS5maWxsQnJ1c2goKS5jb2xv
cigpOwogfQogCiBTdHJva2VTb3VyY2U6OlN0cm9rZVNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUpCi0gICAgOiBnbG9iYWxBbHBoYShzdGF0ZS5hbHBoYSkKKyAgICA6IGds
b2JhbEFscGhhKHN0YXRlLmFscGhhKCkpCiB7Ci0gICAgaWYgKGF1dG8gc3Ryb2tlUGF0dGVybiA9
IHN0YXRlLnN0cm9rZUJydXNoLnBhdHRlcm4oKSkKKyAgICBpZiAoYXV0byBzdHJva2VQYXR0ZXJu
ID0gc3RhdGUuc3Ryb2tlQnJ1c2goKS5wYXR0ZXJuKCkpCiAgICAgICAgIHBhdHRlcm4gPSBhZG9w
dFJlZihzdHJva2VQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3Jt
KCkpKTsKLSAgICBlbHNlIGlmIChhdXRvIHN0cm9rZUdyYWRpZW50ID0gc3RhdGUuc3Ryb2tlQnJ1
c2guZ3JhZGllbnQoKSkgewotICAgICAgICBncmFkaWVudC5iYXNlID0gc3Ryb2tlR3JhZGllbnQt
PmNyZWF0ZVBhdHRlcm4oMSwgc3RhdGUuc3Ryb2tlQnJ1c2guZ3JhZGllbnRTcGFjZVRyYW5zZm9y
bSgpKTsKLSAgICAgICAgaWYgKHN0YXRlLmFscGhhICE9IDEpCi0gICAgICAgICAgICBncmFkaWVu
dC5hbHBoYUFkanVzdGVkID0gc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRlcm4oc3RhdGUuYWxw
aGEsIHN0YXRlLnN0cm9rZUJydXNoLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CisgICAgZWxz
ZSBpZiAoYXV0byBzdHJva2VHcmFkaWVudCA9IHN0YXRlLnN0cm9rZUJydXNoKCkuZ3JhZGllbnQo
KSkgeworICAgICAgICBncmFkaWVudC5iYXNlID0gc3Ryb2tlR3JhZGllbnQtPmNyZWF0ZVBhdHRl
cm4oMSwgc3RhdGUuc3Ryb2tlQnJ1c2goKS5ncmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOworICAg
ICAgICBpZiAoc3RhdGUuYWxwaGEoKSAhPSAxKQorICAgICAgICAgICAgZ3JhZGllbnQuYWxwaGFB
ZGp1c3RlZCA9IHN0cm9rZUdyYWRpZW50LT5jcmVhdGVQYXR0ZXJuKHN0YXRlLmFscGhhKCksIHN0
YXRlLnN0cm9rZUJydXNoKCkuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKICAgICB9IGVsc2UK
LSAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpOworICAgICAgICBjb2xv
ciA9IHN0YXRlLnN0cm9rZUJydXNoKCkuY29sb3IoKTsKIH0KIAogU2hhZG93U3RhdGU6OlNoYWRv
d1N0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKLSAgICA6IG9mZnNldChz
dGF0ZS5kcm9wU2hhZG93Lm9mZnNldCkKLSAgICAsIGJsdXIoc3RhdGUuZHJvcFNoYWRvdy5ibHVy
UmFkaXVzKQotICAgICwgY29sb3Ioc3RhdGUuZHJvcFNoYWRvdy5jb2xvcikKLSAgICAsIGlnbm9y
ZVRyYW5zZm9ybXMoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCi0gICAgLCBnbG9iYWxB
bHBoYShzdGF0ZS5hbHBoYSkKLSAgICAsIGdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yKHN0YXRlLmNv
bXBvc2l0ZU1vZGUub3BlcmF0aW9uKQorICAgIDogb2Zmc2V0KHN0YXRlLmRyb3BTaGFkb3coKS5v
ZmZzZXQpCisgICAgLCBibHVyKHN0YXRlLmRyb3BTaGFkb3coKS5ibHVyUmFkaXVzKQorICAgICwg
Y29sb3Ioc3RhdGUuZHJvcFNoYWRvdygpLmNvbG9yKQorICAgICwgaWdub3JlVHJhbnNmb3Jtcyhz
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKQorICAgICwgZ2xvYmFsQWxwaGEoc3RhdGUu
YWxwaGEoKSkKKyAgICAsIGdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yKHN0YXRlLmNvbXBvc2l0ZU1v
ZGUoKS5vcGVyYXRpb24pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IGZlNzM4YmRmNzdlOGNlNzYyYWNj
OWEwZjBmODRkZDgzNjFjNjljMTEuLjNkMTk3NTc5YTJjYzIyOTkzMzg4NWExYTE1OTVjNjM5NmNh
ODZkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
RwogICAgIGF1dG8mIHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3R2x5
cGhzKCpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSks
IENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLAogICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUo
c3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlw
aHMsIHhPZmZzZXQsCi0gICAgICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tl
VGhpY2tuZXNzLCBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xv
ciwKKyAgICAgICAgc3RhdGUudGV4dERyYXdpbmdNb2RlKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVz
cygpLCBzdGF0ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3Is
CiAgICAgICAgIGZvbnRTbW9vdGhpbmdNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwCmluZGV4IGM5YmRkYzgwYzQwYjg1MmIxMTAyNjUzZGZmYzMwMGNiMjk3OTc3ZjkuLjI2
MmYwZDYwMmI4MGRjMzc3YzQwOWY0NDZkYmI0ODhkYWMzMTIyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENh
aXJvOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cwogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86
OmRyYXdQbGF0Zm9ybUltYWdlKCp0aGlzLCBuYXRpdmVJbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0
KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAg
IENhaXJvOjpkcmF3UGxhdGZvcm1JbWFnZSgqdGhpcywgbmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFn
ZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KCkgfSwgc3RhdGUuYWxwaGEoKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRyYXcgYm9yZGVycywgc28gd2Ug
c2hvdWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0yODMsMjYgKzI4MywyNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dENhaXJvOjp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0Q2Fpcm86OmRpZFVwZGF0ZVN0YXRlKEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0
ZSkKIHsKICAgICBpZiAoc3RhdGUuY2hhbmdlcygpLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpDaGFuZ2U6OlN0cm9rZVRoaWNrbmVzcykpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0
U3Ryb2tlVGhpY2tuZXNzKCp0aGlzLCBzdGF0ZS5zdHJva2VUaGlja25lc3MpOworICAgICAgICBD
YWlybzo6U3RhdGU6OnNldFN0cm9rZVRoaWNrbmVzcygqdGhpcywgc3RhdGUuc3Ryb2tlVGhpY2tu
ZXNzKCkpOwogCiAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpTdHJva2VTdHlsZSkpCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0
U3Ryb2tlU3R5bGUoKnRoaXMsIHN0YXRlLnN0cm9rZVN0eWxlKTsKKyAgICAgICAgQ2Fpcm86OlN0
YXRlOjpzZXRTdHJva2VTdHlsZSgqdGhpcywgc3RhdGUuc3Ryb2tlU3R5bGUoKSk7CiAKICAgICAv
LyBGSVhNRTogbV9zdGF0ZSBzaG91bGQgbm90IGJlIGNoYW5nZWQgdG8gZmxpcCB0aGUgc2hhZG93
IG9mZnNldC4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIHNoYWRvdyBpcyBhcHBsaWVkIHRvIHRo
ZSBwbGF0Zm9ybSBjb250ZXh0LgogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6RHJvcFNoYWRvdykpIHsKLSAgICAgICAgaWYgKHN0
YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKSB7CisgICAgICAgIGlmIChzdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3JtcygpKSB7CiAgICAgICAgICAgICAvLyBNZWFuaW5nIHRoYXQgdGhpcyBn
cmFwaGljcyBjb250ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQKICAgICAgICAgICAgIC8vIFdlIGZsaXAgdGhlIGhlaWdodCBzaW5jZSBDRyBhbmQgSFRNTDUg
Q2FudmFzIGhhdmUgb3Bwb3NpdGUgWSBheGlzCi0gICAgICAgICAgICBhdXRvJiBzaGFkb3dPZmZz
ZXQgPSBzdGF0ZS5kcm9wU2hhZG93Lm9mZnNldDsKLSAgICAgICAgICAgIG1fc3RhdGUuZHJvcFNo
YWRvdy5vZmZzZXQgPSB7IHNoYWRvd09mZnNldC53aWR0aCgpLCAtc2hhZG93T2Zmc2V0LmhlaWdo
dCgpIH07CisgICAgICAgICAgICBhdXRvJiBzaGFkb3dPZmZzZXQgPSBzdGF0ZS5kcm9wU2hhZG93
KCkub2Zmc2V0OworICAgICAgICAgICAgbV9zdGF0ZS5tX2Ryb3BTaGFkb3cub2Zmc2V0ID0geyBz
aGFkb3dPZmZzZXQud2lkdGgoKSwgLXNoYWRvd09mZnNldC5oZWlnaHQoKSB9OwogICAgICAgICB9
CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLmNoYW5nZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlKSkKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpz
ZXRDb21wb3NpdGVPcGVyYXRpb24oKnRoaXMsIHN0YXRlLmNvbXBvc2l0ZU1vZGUub3BlcmF0aW9u
LCBzdGF0ZS5jb21wb3NpdGVNb2RlLmJsZW5kTW9kZSk7CisgICAgICAgIENhaXJvOjpTdGF0ZTo6
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCp0aGlzLCBzdGF0ZS5jb21wb3NpdGVNb2RlKCkub3BlcmF0
aW9uLCBzdGF0ZS5jb21wb3NpdGVNb2RlKCkuYmxlbmRNb2RlKTsKIAogICAgIGlmIChzdGF0ZS5j
aGFuZ2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50
aWFsaWFzKSkKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRTaG91bGRBbnRpYWxpYXMoKnRoaXMs
IHN0YXRlLnNob3VsZEFudGlhbGlhcyk7CisgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0U2hvdWxk
QW50aWFsaWFzKCp0aGlzLCBzdGF0ZS5zaG91bGRBbnRpYWxpYXMoKSk7CiAKICAgICBzdGF0ZS5k
aWRBcHBseUNoYW5nZXMoKTsKIH0KQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dENhaXJvOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3
R2x5cGhzKCp0aGlzLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VTb3Vy
Y2Uoc3RhdGUpLAogICAgICAgICBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2Nh
bGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwgY2Fpcm9HbHlwaHMsIHhPZmZzZXQsCi0gICAg
ICAgIHN0YXRlLnRleHREcmF3aW5nTW9kZSwgc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCBzdGF0ZS5k
cm9wU2hhZG93Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5jb2xvciwKKyAgICAgICAgc3RhdGUu
dGV4dERyYXdpbmdNb2RlKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5kcm9wU2hh
ZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3IsCiAgICAgICAgIGZvbnRTbW9v
dGhpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKaW5kZXggOTZj
NzYxMzU0MWJkYzY1OGE3ODdhYjAzZTc3ODE4ODM0ZDMxODVjNC4uYzhlNTY3ODI0MjMxNWFjMzkz
NTFlMDIwOGZmOGEwZWRlZTEzZDliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
LmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIGNvbnN0
IGF1dG8mIGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlID0gZGVzdENvbnRleHQuc3RhdGUoKTsKIAog
ICAgIGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29u
dGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAg
ICAgZHJhd1BsYXRmb3JtSW1hZ2UoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBk
ZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIGRlc3Rp
bmF0aW9uQ29udGV4dFN0YXRlLmFscGhhLCBXZWJDb3JlOjpDYWlybzo6U2hhZG93U3RhdGUoZGVz
dGluYXRpb25Db250ZXh0U3RhdGUpKTsKKyAgICAgICAgZHJhd1BsYXRmb3JtSW1hZ2UoKmRlc3RD
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KCkgfSwgZGVzdGluYXRpb25Db250ZXh0U3RhdGUuYWxwaGEo
KSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0YXRlKSk7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCBi
ZGFlZDlmMTdlNDBhMzIxZjJkMDRhZjcxMDI4MGNjOWJjMDc5NzIwLi40Zjk5ZTkzMWE4NmRiYzcw
YmI4YTVjY2UxZDMxMWZlOTc5NTQ0NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC02MCw5ICs2
MCw5IEBAIGlubGluZSBDR0FmZmluZVRyYW5zZm9ybSBnZXRVc2VyVG9CYXNlQ1RNKENHQ29udGV4
dFJlZiBjb250ZXh0KQogICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChDR0NvbnRl
eHRHZXRDVE0oY29udGV4dCksIENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0KENHQ29udGV4dEdldEJh
c2VDVE0oY29udGV4dCkpKTsKIH0KIAotc3RhdGljIEludGVycG9sYXRpb25RdWFsaXR5IGNvcmVJ
bnRlcnBvbGF0aW9uUXVhbGl0eShDR0ludGVycG9sYXRpb25RdWFsaXR5IHF1YWxpdHkpCitzdGF0
aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgY29yZUludGVycG9sYXRpb25RdWFsaXR5KENHQ29udGV4
dFJlZiBjb250ZXh0KQogewotICAgIHN3aXRjaCAocXVhbGl0eSkgeworICAgIHN3aXRjaCAoQ0dD
b250ZXh0R2V0SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCkpIHsKICAgICBjYXNlIGtDR0lu
dGVycG9sYXRpb25EZWZhdWx0OgogICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvblF1YWxpdHk6
OkRlZmF1bHQ7CiAgICAgY2FzZSBrQ0dJbnRlcnBvbGF0aW9uTm9uZToKQEAgLTE4NSw3ICsxODUs
NyBAQCBzdGF0aWMgdm9pZCBzZXRDR0JsZW5kTW9kZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZQogfQogCiBHcmFwaGljc0NvbnRleHRDRzo6R3Jh
cGhpY3NDb250ZXh0Q0coQ0dDb250ZXh0UmVmIGNnQ29udGV4dCkKLSAgICA6IEdyYXBoaWNzQ29u
dGV4dCh7IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaCwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlQnJ1c2gsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpD
aGFuZ2U6OlN0cm9rZVRoaWNrbmVzcyB9KQorICAgIDogR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpiYXNpY0NoYW5nZUZsYWdzLCBjb3JlSW50ZXJwb2xhdGlvblF1YWxpdHko
Y2dDb250ZXh0KSkKIHsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTkzLDcgKzE5Myw2IEBAIEdyYXBoaWNzQ29udGV4dENHOjpHcmFwaGljc0NvbnRleHRDRyhDR0Nv
bnRleHRSZWYgY2dDb250ZXh0KQogICAgIG1fZGF0YSA9IG5ldyBHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGUoY2dDb250ZXh0KTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbnRleHQgc3Rh
cnRzIGluIHN5bmMgd2l0aCBvdXIgc3RhdGUuCiAgICAgZGlkVXBkYXRlU3RhdGUobV9zdGF0ZSk7
Ci0gICAgbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5ID0gY29yZUludGVycG9sYXRp
b25RdWFsaXR5KENHQ29udGV4dEdldEludGVycG9sYXRpb25RdWFsaXR5KHBsYXRmb3JtQ29udGV4
dCgpKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dENHOjp+R3JhcGhpY3NDb250ZXh0Q0coKQpAQCAt
MTA4NCw0MyArMTA4Myw0MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dENHOjpkaWRVcGRhdGVTdGF0
ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgZm9yIChhdXRvIGNoYW5nZSA6IHN0
YXRlLmNoYW5nZXMoKSkgewogICAgICAgICBzd2l0Y2ggKGNoYW5nZSkgewogICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OkZpbGxCcnVzaDoKLSAgICAgICAgICAgIHNl
dENHRmlsbENvbG9yKGNvbnRleHQsIHN0YXRlLmZpbGxCcnVzaC5jb2xvcigpKTsKKyAgICAgICAg
ICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQsIHN0YXRlLmZpbGxCcnVzaCgpLmNvbG9yKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
Q2hhbmdlOjpTdHJva2VUaGlja25lc3M6Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lk
dGgoY29udGV4dCwgc3RkOjptYXgoc3RhdGUuc3Ryb2tlVGhpY2tuZXNzLCAwLmYpKTsKKyAgICAg
ICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChjb250ZXh0LCBzdGQ6Om1heChzdGF0ZS5zdHJv
a2VUaGlja25lc3MoKSwgMC5mKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlN0cm9rZUJydXNoOgotICAgICAgICAgICAg
Q0dDb250ZXh0U2V0U3Ryb2tlQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY2FjaGVkQ0dDb2xvcihz
dGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpKS5nZXQoKSk7CisgICAgICAgICAgICBDR0NvbnRleHRT
ZXRTdHJva2VDb2xvcldpdGhDb2xvcihjb250ZXh0LCBjYWNoZWRDR0NvbG9yKHN0YXRlLnN0cm9r
ZUJydXNoKCkuY29sb3IoKSkuZ2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2RlOgotICAgICAg
ICAgICAgc2V0Q0dCbGVuZE1vZGUoY29udGV4dCwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRp
b24sIHN0YXRlLmNvbXBvc2l0ZU1vZGUuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIHNldENHQmxl
bmRNb2RlKGNvbnRleHQsIHN0YXRlLmNvbXBvc2l0ZU1vZGUoKS5vcGVyYXRpb24sIHN0YXRlLmNv
bXBvc2l0ZU1vZGUoKS5ibGVuZE1vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpEcm9wU2hhZG93OgotICAgICAgICAg
ICAgc2V0Q0dTaGFkb3coY29udGV4dCwgcmVuZGVyaW5nTW9kZSgpLCBzdGF0ZS5kcm9wU2hhZG93
Lm9mZnNldCwgc3RhdGUuZHJvcFNoYWRvdy5ibHVyUmFkaXVzLCBzdGF0ZS5kcm9wU2hhZG93LmNv
bG9yLCBzdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CisgICAgICAgICAgICBzZXRDR1No
YWRvdyhjb250ZXh0LCByZW5kZXJpbmdNb2RlKCksIHN0YXRlLmRyb3BTaGFkb3coKS5vZmZzZXQs
IHN0YXRlLmRyb3BTaGFkb3coKS5ibHVyUmFkaXVzLCBzdGF0ZS5kcm9wU2hhZG93KCkuY29sb3Is
IHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpBbHBoYToKLSAgICAg
ICAgICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKTsKKyAgICAgICAg
ICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHN0YXRlLmFscGhhKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5OgotICAgICAgICAgICAgQ0dDb250ZXh0U2V0SW50ZXJw
b2xhdGlvblF1YWxpdHkoY29udGV4dCwgY2dJbnRlcnBvbGF0aW9uUXVhbGl0eShzdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBv
bGF0aW9uUXVhbGl0eShjb250ZXh0LCBjZ0ludGVycG9sYXRpb25RdWFsaXR5KHN0YXRlLmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpUZXh0RHJhd2luZ01vZGU6Ci0gICAg
ICAgICAgICBDR0NvbnRleHRTZXRUZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2lu
Z01vZGUoc3RhdGUudGV4dERyYXdpbmdNb2RlKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRU
ZXh0RHJhd2luZ01vZGUoY29udGV4dCwgY2dUZXh0RHJhd2luZ01vZGUoc3RhdGUudGV4dERyYXdp
bmdNb2RlKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFsaWFzOgotICAgICAgICAgICAgQ0dDb250
ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNvbnRleHQsIHN0YXRlLnNob3VsZEFudGlhbGlhcyk7Cisg
ICAgICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMoY29udGV4dCwgc3RhdGUuc2hv
dWxkQW50aWFsaWFzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpTaG91bGRTbW9vdGhGb250czoKLSAgICAgICAgICAg
IENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRleHQsIHN0YXRlLnNob3VsZFNtb290
aEZvbnRzKTsKKyAgICAgICAgICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNvbnRl
eHQsIHN0YXRlLnNob3VsZFNtb290aEZvbnRzKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgZGVmYXVsdDoKQEAgLTExNTUsNyArMTE1NCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Q0c6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAg
ICAgICAgICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQo
Y29udGV4dCwgbGF5ZXJTaXplLCAwKSk7CiAKICAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXll
ckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllci5nZXQoKSk7Ci0gICAgICAgICAgICBt
X3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IGxpbmVXaWR0aDsKICAgICAgICAgICAgIENHQ29udGV4
dFNldExpbmVXaWR0aChsYXllckNvbnRleHQsIGxpbmVXaWR0aCk7CiAKICAgICAgICAgICAgIC8v
IENvbXBlbnNhdGUgZm9yIHRoZSBsaW5lIHdpZHRoLCBvdGhlcndpc2UgdGhlIGxheWVyJ3MgdG9w
LWxlZnQgY29ybmVyIHdvdWxkIGJlCkBAIC0xNDg4LDcgKzE0ODYsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dENHOjphZGREZXN0aW5hdGlvbkF0UG9pbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBGbG9hdFBvaQogCiBib29sIEdyYXBoaWNzQ29udGV4dENHOjpjYW5Vc2VTaGFkb3dCbHVyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gKHJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkKSAmJiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM7CisgICAgcmV0dXJuIChyZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlw
aHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBkMGJlYzhkNjM4NDcwOWI3OGNmMWRlODBiYjAy
ZTFlMzdkMmY5NDZlLi5hMWFlZmQwNzAyZmFkNDdmOTE5ZGJhODJmNjIzNTZmMjA1MTU1NTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC05Niwx
MyArOTYsMTMgQEAgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhp
Y3NDb250ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3REcmF3R2wKIAogdm9pZCBEcmF3R2x5cGhzUmVj
b3JkZXI6OnBvcHVsYXRlSW50ZXJuYWxTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
Y29udGV4dFN0YXRlKQogewotICAgIG1fb3JpZ2luYWxTdGF0ZS5maWxsQnJ1c2ggPSBjb250ZXh0
U3RhdGUuZmlsbEJydXNoOwotICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9IGNvbnRl
eHRTdGF0ZS5zdHJva2VCcnVzaDsKKyAgICBtX29yaWdpbmFsU3RhdGUuZmlsbEJydXNoID0gY29u
dGV4dFN0YXRlLmZpbGxCcnVzaCgpOworICAgIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VCcnVzaCA9
IGNvbnRleHRTdGF0ZS5zdHJva2VCcnVzaCgpOwogCiAgICAgbV9vcmlnaW5hbFN0YXRlLmN0bSA9
IG1fb3duZXIuZ2V0Q1RNKCk7IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCiAKLSAgICBt
X29yaWdpbmFsU3RhdGUuZHJvcFNoYWRvdyA9IGNvbnRleHRTdGF0ZS5kcm9wU2hhZG93OwotICAg
IG1fb3JpZ2luYWxTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zID0gY29udGV4dFN0YXRlLnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOworICAgIG1fb3JpZ2luYWxTdGF0ZS5kcm9wU2hhZG93ID0gY29udGV4
dFN0YXRlLmRyb3BTaGFkb3coKTsKKyAgICBtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3Jt
cyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpOwogfQogCiB2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIERyYXdH
bHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIGNvbgogICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdub3JlVHJh
bnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7CiAgICAgbV9pbnRlcm5h
bENvbnRleHQtPnNldERyb3BTaGFkb3cobV9vcmlnaW5hbFN0YXRlLmRyb3BTaGFkb3cpOwogCi0g
ICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShjb250ZXh0U3RhdGUudGV4
dERyYXdpbmdNb2RlKTsKKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2Rl
KGNvbnRleHRTdGF0ZS50ZXh0RHJhd2luZ01vZGUoKSk7CiB9CiAKIHZvaWQgRHJhd0dseXBoc1Jl
Y29yZGVyOjpwcmVwYXJlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQmIGZvbnQsIEZvbnRTbW9v
dGhpbmdNb2RlIHNtb290aGluZ01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCAy
YjAzY2U0YTY2ZTJkOGFhMGZhZDgxYTY0NGFlYjFlZGZkZTFjODgxLi4yYjRlNDM3ZDZjNTFkMTYy
YTZiODEzZjQ1ZTA2ZGYyNzMxZDI4MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAg
LTkwLDcgKzkwLDcgQEAgYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4
dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIGlmICghKGZsYWdzICYgQXNU
ZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpKSB7CiAgICAgICAgICAgICBjb25z
dCBhdXRvJiBzdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBmb3Igbm93LCBvbmx5IGRyb3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hh
bmdlIGZsYWdzIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYy4KLSAgICAgICAgICAgIGlmIChzdGF0ZUl0
ZW0uc3RhdGUoKS5jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCisgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0
YXRlKCkuY2hhbmdlcygpID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpDaGFuZ2U6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250cykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKaW5kZXggOTM5NDU1MWYzNTllYzFhZjRlYTkyYzdiM2IxNjg0ZWQyZWVkYTYxNi4uMzRm
NmYyMTNkM2E3YmU0OWM3MjVhM2NiNGRiNWMyYTNhZjczOTg1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgUmVjb3Jk
ZXI6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKICAgICByZWNvcmRFbmRUcmFuc3BhcmVuY3lMYXll
cigpOwogICAgIG1fc3RhdGVTdGFjay5yZW1vdmVMYXN0KCk7CiAKLSAgICBtX3N0YXRlLmRpZEVu
ZFRyYW5zcGFyZW5jeUxheWVyKGN1cnJlbnRTdGF0ZSgpLnN0YXRlLmFscGhhKTsKKyAgICBtX3N0
YXRlLmRpZEVuZFRyYW5zcGFyZW5jeUxheWVyKGN1cnJlbnRTdGF0ZSgpLnN0YXRlLmFscGhhKCkp
OwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZs
b2F0IGJvcmRlclRoaWNrbmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcAppbmRleCBmM2M4YzkwY2Q4OGJiZTBjNTFlMWQ0ZmExMzNjNTFlODNiODBiMzliLi43OWEw
YTg1MDBhMjNjZjNmZGZkOGNkMTRlN2I0N2FjMjJiMDM2NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC05NywxMCArOTcsMTAgQEAgaW5saW5lIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0
ZUl0ZW0oR3JhcGgKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCi0gICAg
aWYgKGF1dG8gaW1hZ2VJZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0
ZW0uc3RhdGUoKS5zdHJva2VCcnVzaC5wYXR0ZXJuKCkpKQorICAgIGlmIChhdXRvIGltYWdlSWRl
bnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3RhdGVJdGVtLnN0YXRlKCkuc3Ryb2tl
QnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAot
ICAgIGlmIChhdXRvIGltYWdlSWRlbnRpZmllciA9IGZpeFBhdHRlcm5UaWxlSW1hZ2Uoc2V0U3Rh
dGVJdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4oKSkpCisgICAgaWYgKGF1dG8gaW1hZ2VJ
ZGVudGlmaWVyID0gZml4UGF0dGVyblRpbGVJbWFnZShzZXRTdGF0ZUl0ZW0uc3RhdGUoKS5maWxs
QnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAgICByZXR1cm4gKmltYWdlSWRlbnRpZmllcjsKIAog
ICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMTQxNjlhMDc1NThk
NjE2YjA5MjBjYjA1N2RjOGViMWMyYTU4OGIwMy4uYzIxY2QwZTRkNTI3YTNjYzEyMDJiZjZmY2Y3
ZWQyMWFmZjkzZDVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1h
bmQ8U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0ZS5zdHJva2VUaGlja25lc3MpKTsKKyAgICAg
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlPihzdGF0ZS5zdHJv
a2VUaGlja25lc3MoKSkpOwogICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFuZ2VzKCkuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U3Ryb2tlU3R5bGUpKSB7CkBAIC0xMTcs
NyArMTE3LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkaWRVcGRhdGVTdGF0ZShH
cmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAK
LSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8U3Ryb2tlU3R5bGVDaGFuZ2U+KHN0YXRlLnN0
cm9rZVN0eWxlKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFN0cm9rZVN0eWxlQ2hh
bmdlPihzdGF0ZS5zdHJva2VTdHlsZSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLmNoYW5n
ZXMoKS5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6Q2hhbmdlOjpDb21wb3NpdGVNb2Rl
KSkgewpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZGlk
VXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgfQog
ICAgICAgICB9OwogCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENvbXBvc2l0ZU9wZXJh
dGlvbkNoYW5nZT4oc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIHN0YXRlLmNvbXBvc2l0
ZU1vZGUuYmxlbmRNb2RlKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENvbXBvc2l0
ZU9wZXJhdGlvbkNoYW5nZT4oc3RhdGUuY29tcG9zaXRlTW9kZSgpLm9wZXJhdGlvbiwgc3RhdGUu
Y29tcG9zaXRlTW9kZSgpLmJsZW5kTW9kZSkpOwogICAgIH0KIAogICAgIGlmIChzdGF0ZS5jaGFu
Z2VzKCkuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkNoYW5nZTo6U2hvdWxkQW50aWFs
aWFzKSkgewpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZGlkVXBkYXRlU3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAg
fQogICAgICAgICB9OwogCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPFNob3VsZEFudGlh
bGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7CisgICAgICAgIGFwcGVuZChjcmVh
dGVDb21tYW5kPFNob3VsZEFudGlhbGlhc0NoYW5nZT4oc3RhdGUuc2hvdWxkQW50aWFsaWFzKCkp
KTsKICAgICB9CiAKICAgICBzdGF0ZS5kaWRBcHBseUNoYW5nZXMoKTsKQEAgLTI5NCw3ICsyOTQs
NyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgR3JhZGllbnQmIGdyYWRpZW50KQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJlY3Q+KHJlY3Qs
IGdyYWRpZW50LmNyZWF0ZVBhdHRlcm4oMS4wLCBzdGF0ZS5maWxsQnJ1c2guZ3JhZGllbnRTcGFj
ZVRyYW5zZm9ybSgpKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0
LCBncmFkaWVudC5jcmVhdGVQYXR0ZXJuKDEuMCwgc3RhdGUuZmlsbEJydXNoKCkuZ3JhZGllbnRT
cGFjZVRyYW5zZm9ybSgpKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZp
bGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKQEAgLTMx
OCw3ICszMTgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLAogICAgIH07CiAKICAgICBhdXRv
JiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RmlsbFJl
Y3Q+KHJlY3QsIGNvbG9yLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpLCBzdGF0ZS5jb21wb3NpdGVNb2RlLm9wZXJhdGlvbikpOworICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPEZpbGxSZWN0PihyZWN0LCBjb2xvciwgY29tcG9zaXRlT3BlcmF0
b3IsIGJsZW5kTW9kZSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgc3RhdGUuY29tcG9zaXRl
TW9kZSgpLm9wZXJhdGlvbikpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmZp
bGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkUmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91
bmRlZFJlY3QmIHJvdW5kZWRSZWN0CiAgICAgfTsKIAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+
c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxGaWxsUm91bmRlZFJlY3Q+KHJvdW5k
ZWRSZWN0LCBjb2xvciwgc3RhdGUuY29tcG9zaXRlTW9kZS5vcGVyYXRpb24sIGJsZW5kTW9kZSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPEZp
bGxSb3VuZGVkUmVjdD4ocm91bmRlZFJlY3QsIGNvbG9yLCBzdGF0ZS5jb21wb3NpdGVNb2RlKCku
b3BlcmF0aW9uLCBibGVuZE1vZGUsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAog
dm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVj
dCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTM0LDggKzUzNCw4IEBAIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoCiAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd0dseXBocz4oQ2Fpcm86OkZp
bGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0YXRlKSwKICAgICAgICAgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsCiAgICAgICAgIFJlZlB0cjxjYWlyb19zY2Fs
ZWRfZm9udF90Pihmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSksCi0gICAgICAgIGZv
bnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3ZlKGNhaXJvR2x5cGhzKSwgeE9mZnNldCwg
c3RhdGUudGV4dERyYXdpbmdNb2RlLAotICAgICAgICBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0
YXRlLmRyb3BTaGFkb3cub2Zmc2V0LCBzdGF0ZS5kcm9wU2hhZG93LmNvbG9yLCBmb250U21vb3Ro
aW5nKSk7CisgICAgICAgIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBXVEZNb3ZlKGNhaXJv
R2x5cGhzKSwgeE9mZnNldCwgc3RhdGUudGV4dERyYXdpbmdNb2RlKCksCisgICAgICAgIHN0YXRl
LnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5kcm9wU2hhZG93KCkub2Zmc2V0LCBzdGF0ZS5kcm9w
U2hhZG93KCkuY29sb3IsIGZvbnRTbW9vdGhpbmcpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCkBAIC01NjEs
NyArNTYxLDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG8KIAogICAgIFVOVVNFRF9QQVJBTShp
bWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2Uo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRl
LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4o
bmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKSwg
c3RhdGUuYWxwaGEoKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCiB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tu
ZQogICAgIH07CiAKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7Ci0gICAgYXBwZW5k
KGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRoaWNrbmVzcywgc3RhdGUuZmls
bEJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xv
cigpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1JlY3Q+KHJlY3QsIGJvcmRlclRo
aWNrbmVzcywgc3RhdGUuZmlsbEJydXNoKCkuY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUoKSwg
c3RhdGUuc3Ryb2tlQnJ1c2goKS5jb2xvcigpKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludDIpCkBAIC02MjQsNyArNjI0LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAg
IGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5lPihwb2ludDEsIHBvaW50Miwgc3RhdGUuc3Ry
b2tlU3R5bGUsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVz
cywgc3RhdGUuc2hvdWxkQW50aWFsaWFzKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJh
d0xpbmU+KHBvaW50MSwgcG9pbnQyLCBzdGF0ZS5zdHJva2VTdHlsZSgpLCBzdGF0ZS5zdHJva2VC
cnVzaCgpLmNvbG9yKCksIHN0YXRlLnN0cm9rZVRoaWNrbmVzcygpLCBzdGF0ZS5zaG91bGRBbnRp
YWxpYXMoKSkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdMaW5lc0Zv
clRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRGFz
aEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlVW5kZXJsaW5lcywgU3Ry
b2tlU3R5bGUpCkBAIC02NDcsNyArNjQ3LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPERyYXdMaW5lc0ZvclRleHQ+KHBvaW50LCB0aGlja25lc3MsIHdp
ZHRocywgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGluZXMsIHN0YXRlLnN0cm9rZUJydXNoLmNvbG9y
KCkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TGluZXNGb3JUZXh0Pihwb2ludCwg
dGhpY2tuZXNzLCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVVbmRlcmxpbmVzLCBzdGF0ZS5zdHJv
a2VCcnVzaCgpLmNvbG9yKCkpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRG9jdW1lbnRN
YXJrZXJMaW5lU3R5bGUgc3R5bGUpCkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfTsK
IAogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29t
bWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUuZmlsbEJydXNoLmNvbG9yKCksIHN0YXRlLnN0
cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VCcnVzaC5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25l
c3MpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3RWxsaXBzZT4ocmVjdCwgc3RhdGUu
ZmlsbEJydXNoKCkuY29sb3IoKSwgc3RhdGUuc3Ryb2tlU3R5bGUoKSwgc3RhdGUuc3Ryb2tlQnJ1
c2goKS5jb2xvcigpLCBzdGF0ZS5zdHJva2VUaGlja25lc3MoKSkpOwogfQogCiB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQg
d2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IDllMzc4NmUwZmRjZGI4OWZiMDY2MjhjOGZjYzZkYzg3Yjc3YzNl
OWUuLjlhMjM5ZTY0MjVmZDM5YzRiYzgxMzRmNWQ1MTk1YmRkYTFkNmFkM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyOCwxMCArMTI4LDEwIEBAIHZvaWQgUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlcjo6c2V0U3RhdGUoRGlzcGxheUxpc3Q6OlNldFN0YXRlJiYgaXRlbSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAotICAgIGlmICghZml4UGF0dGVyblRpbGVJ
bWFnZShpdGVtLnN0YXRlKCkuZmlsbEJydXNoLnBhdHRlcm4oKSkpCisgICAgaWYgKCFmaXhQYXR0
ZXJuVGlsZUltYWdlKGl0ZW0uc3RhdGUoKS5maWxsQnJ1c2goKS5wYXR0ZXJuKCkpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIWZpeFBhdHRlcm5UaWxlSW1hZ2UoaXRlbS5zdGF0ZSgpLnN0
cm9rZUJydXNoLnBhdHRlcm4oKSkpCisgICAgaWYgKCFmaXhQYXR0ZXJuVGlsZUltYWdlKGl0ZW0u
c3RhdGUoKS5zdHJva2VCcnVzaCgpLnBhdHRlcm4oKSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGhhbmRsZUl0ZW0oV1RGTW92ZShpdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKaW5kZXggMjMzZjFkNzAxZjM4ZDY2MDFi
OWE4MzJiMzA4MzYwY2NkOWQxMWU4MC4uOTdiNWU2M2YxNWE4MzFmZTRlZTA1YTFhZWIzMjg3Y2Mw
YmQ3MTlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxl
Qml0bWFwQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJs
ZUJpdG1hcENhaXJvLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBmbG9hdCBzY2FsZUZhY3RvciwgY29uc3Qg
SQogCiAgICAgQVNTRVJUKGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8m
IHN0YXRlID0gY29udGV4dC5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3U3VyZmFjZSgqY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHN0
YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93
U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd1N1cmZhY2UoKmNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCksIHN0YXRlLmFscGhhKCksIENhaXJvOjpTaGFkb3dTdGF0ZShz
dGF0ZSkpOwogfQogCiBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZUNhaXJvU3VyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRleCA1
NTA4OGFlYjJhYjk5MjAyNDE5OTE3M2IzYWNhMTc5YmQ1MTFiODhmLi41ZTVjZWZmNzAxYzllNGFl
MWQ4YmUzZTU4MTQwZThkYjE0M2ZjNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZl
cnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChjYWlyb19zdXJmYWMKIAogICAgIEFTU0VS
VChncmFwaGljc0NvbnRleHQtPmhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0
ZSA9IGdyYXBoaWNzQ29udGV4dC0+c3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd1N1cmZhY2UoKmdy
YXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UsIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VTaXplKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdTdXJmYWNlKCpncmFwaGljc0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCBzdXJmYWNlLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlU2l6ZSksIElu
dFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VTaXplKSwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpLCBzdGF0ZS5hbHBoYSgpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKICAgICBy
ZXR1cm4gYml0bWFwOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>