<?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>161014</bug_id>
          
          <creation_ts>2016-08-19 14:26:42 -0700</creation_ts>
          <short_desc>Mark CanvasPath operations&apos; parameters as mandatory when they should be</short_desc>
          <delta_ts>2016-08-19 17:47:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>https://html.spec.whatwg.org/multipage/scripting.html#canvaspath</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1221477</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-19 14:26:42 -0700</bug_when>
    <thetext>Mark CanvasPath operations as mandatory when they should be:
- https://html.spec.whatwg.org/multipage/scripting.html#canvaspath

We should move the CanvasPath methods from CanvasRenderingContext2D and Path2D to a new CanvasPath interface, to avoid duplication and match the specification.
The parameters were correctly marked as mandatory in WebKit on CanvasRenderingContext2D but not on Path2D.

Those parameters are correctly marked as mandatory in Chrome and Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221482</commentid>
    <comment_count>1</comment_count>
      <attachid>286481</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-19 14:32:51 -0700</bug_when>
    <thetext>Created attachment 286481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221485</commentid>
    <comment_count>2</comment_count>
      <attachid>286483</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-19 14:39:05 -0700</bug_when>
    <thetext>Created attachment 286483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221515</commentid>
    <comment_count>3</comment_count>
      <attachid>286483</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-19 15:34:12 -0700</bug_when>
    <thetext>Comment on attachment 286483
Patch

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

&gt; Source/WebCore/html/canvas/CanvasPath.h:51
&gt; +    void closePath();
&gt; +    void moveTo(float x, float y);
&gt; +    void lineTo(float x, float y);
&gt; +    void quadraticCurveTo(float cpx, float cpy, float x, float y);
&gt; +    void bezierCurveTo(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y);
&gt; +    void arcTo(float x0, float y0, float x1, float y1, float radius, ExceptionCode&amp;);
&gt; +    void arc(float x, float y, float r, float sa, float ea, bool anticlockwise, ExceptionCode&amp;);
&gt; +    void ellipse(float x, float y, float radiusX, float radiusY, float rotation, float startAngle, float endAngled, bool anticlockwise, ExceptionCode&amp;);
&gt; +    void rect(float x, float y, float width, float height);

Why is it OK that these all say float in the IDL file, but double here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221518</commentid>
    <comment_count>4</comment_count>
      <attachid>286483</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-08-19 15:44:01 -0700</bug_when>
    <thetext>Comment on attachment 286483
Patch

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

&gt;&gt; Source/WebCore/html/canvas/CanvasPath.h:51
&gt;&gt; +    void rect(float x, float y, float width, float height);
&gt; 
&gt; Why is it OK that these all say float in the IDL file, but double here?

Currently, all our implementation uses float for Canvas. I updated the IDL to match the specification and use double but updating the implementation to use double would be a much larger effort.

If you look at our bindings code, you&apos;ll see that we anyway call value.toNumber() which returns a double. If we use float in the IDL, we merely cast the value returned to a float. There is therefore no change here AFAIK, we still call toNumber(), get a double and then implicitly convert it to a float when calling the implementation function instead of doing an explicit cast to float.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221562</commentid>
    <comment_count>5</comment_count>
      <attachid>286483</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-19 17:47:11 -0700</bug_when>
    <thetext>Comment on attachment 286483
Patch

Clearing flags on attachment: 286483

Committed r204669: &lt;http://trac.webkit.org/changeset/204669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221563</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-19 17:47:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286481</attachid>
            <date>2016-08-19 14:32:51 -0700</date>
            <delta_ts>2016-08-19 14:39:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161014-20160819143102.patch</filename>
            <type>text/plain</type>
            <size>49961</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBjMTIyZGE5ZTAxOWEy
MjlmMzc1ZWIyZTgwYjZmNDNmYzg1NzFlMS4uNmQxMTZkYWQwYjk2NzNjOWZhMzNjYzc1ZWVlOTUz
NWI3N2MxODYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDE2LTA4LTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTWFyayBDYW52YXNQYXRoIG9w
ZXJhdGlvbnMnIHBhcmFtZXRlcnMgYXMgbWFuZGF0b3J5IHdoZW4gdGhleSBzaG91bGQgYmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTAxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgQ2FudmFz
UGF0aCBvcGVyYXRpb25zIGFzIG1hbmRhdG9yeSB3aGVuIHRoZXkgc2hvdWxkIGJlOgorICAgICAg
ICAtIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1s
I2NhbnZhc3BhdGgKKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBDYW52YXNQYXRoIG1l
dGhvZHMgZnJvbSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQKKyAgICAgICAgYW5kIFBhdGgyRCB0
byBhIG5ldyBDYW52YXNQYXRoIGludGVyZmFjZSwgdG8gYXZvaWQgZHVwbGljYXRpb24gYW5kCisg
ICAgICAgIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgIFRoZSBwYXJhbWV0ZXJz
IHdlcmUgY29ycmVjdGx5IG1hcmtlZCBhcyBtYW5kYXRvcnkgaW4gV2ViS2l0IG9uCisgICAgICAg
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBidXQgbm90IG9uIFBhdGgyRC4KKworICAgICAgICBU
aG9zZSBwYXJhbWV0ZXJzIGFyZSBjb3JyZWN0bHkgbWFya2VkIGFzIG1hbmRhdG9yeSBpbiBDaHJv
bWUgYW5kIEZpcmVmb3guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5lZCBleGlz
dGluZyB0ZXN0LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoTWV0aG9kcy5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNQYXRoOjpjbG9zZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUGF0aDo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6OmxpbmVUbyk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXRoOjpxdWFkcmF0aWNDdXJ2ZVRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6OmJlemllckN1cnZlVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUGF0aDo6YXJjVG8pOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQW5nbGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6OmFyYyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNQYXRoOjplbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6OnJl
Y3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhNZXRob2RzLmguCisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNQYXRoOjp+Q2FudmFzUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNQYXRoOjpDYW52YXNQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6Omhhc0lu
dmVydGlibGVUcmFuc2Zvcm0pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRs
OiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0RPTVBhdGguaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9E
T01QYXRoLmlkbDoKKworMjAxNi0wOC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCiAgICAgICAgIEF0dHIucHJlZml4IC8gRWxlbWVudC5wcmVmaXggYXR0cmlidXRlIHNob3Vs
ZCBiZSByZWFkb25seQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYwOTk4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDg1NjZiNzI4NjExNjM4MDI1
NDIxNGNmNGE0ZDEwYTA1NmMzNzhkYi4uN2FkNjJlMDUxNjdlNGY5NDEyN2IyMWEwMzI0MTFiMTUw
MzQ2ZDBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3OTMsNyArMTc5Myw3IEBAIHNldChX
ZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAK
ICAgICBodG1sL2NhbnZhcy9DYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAKICAgICBodG1sL2Nh
bnZhcy9DYW52YXNHcmFkaWVudC5jcHAKLSAgICBodG1sL2NhbnZhcy9DYW52YXNQYXRoTWV0aG9k
cy5jcHAKKyAgICBodG1sL2NhbnZhcy9DYW52YXNQYXRoLmNwcAogICAgIGh0bWwvY2FudmFzL0Nh
bnZhc1BhdHRlcm4uY3BwCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzUHJveHkuY3BwCiAgICAgaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDU5Yjk3YjI3MjZhNDc2ZDQ2YTdhODE0ZmNhNTZmOGYyZTNmYWM0MTEuLjk5
MjdkMGJmMGUzNjkyMDRmYjQ0ZjBkOTU1MzZlMWNhNjdkYjBlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQpAQCAtNDUwLDYgKzQ1MCw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAg
ICAkKFdlYkNvcmUpL2h0bWwvVm9pZENhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1s
L2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9j
YW52YXMvQ2FudmFzR3JhZGllbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0Nh
bnZhc1BhdGguaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
aWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0NhbnZhc1Byb3h5LmlkbCBcCiAgICAg
JChXZWJDb3JlKS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmlkbCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MjhjMzgyZTRlMmRkODAzM2FiNDc0OTJkNzExMDMxMDEwMjhlYjQ5Yy4uZWFjYTU0MTg1OTA2Yjg0
ZGJkYzU5NzM4NTJmOGZiY2VmZTQ5MTQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgxMiw2ICsxODEyLDggQEAKIAkJNDYz
RUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAv
KiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NUE4RTc5MUM4QTI0Q0UwMEU3RDNFNCAvKiBS
dW50aW1lQXBwbGljYXRpb25DaGVja3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjVBOEU3ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLm1tICovOyB9OwogCQk0NjY5QjI4NzFCODUyQTBCMDAwRjkwNUYgLyogSlNE
T01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjI3NjhFMUI4NTI5N0YwMDVDMjU1NiAvKiBKU0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb25DdXN0b20uY3BwICovOyB9OworCQk0NjcxRTA2NTFENjdBNTk2MDBD
NkI0OTcgLyogQ2FudmFzUGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjcxRTA2MzFENjdBNTdCMDBDNkI0OTcgLyogQ2FudmFzUGF0aC5jcHAg
Ki87IH07CisJCTQ2NzFFMDY2MUQ2N0E1OTYwMEM2QjQ5NyAvKiBDYW52YXNQYXRoLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRTA2NDFENjdBNTdC
MDBDNkI0OTcgLyogQ2FudmFzUGF0aC5oICovOyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0Iz
NTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBC
Q0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07
CiAJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JBRTEwMEU4
RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgfTsKIAkJNDZBNThBQzUxRDQ2QjNGQTAwNDMyMDM2
IC8qIEpTQ2xpZW50UmVjdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkE1OEFDNDFENDZCM0ZBMDA0MzIwMzYgLyogSlNDbGllbnRSZWN0
Q3VzdG9tLmNwcCAqLzsgfTsKQEAgLTY3MjksOCArNjczMSw2IEBACiAJCUZCNDg0RjREMTcxRjgy
MUUwMDA0MDc1NSAvKiBUcmFuc2Zvcm1GdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCNDg0RjRCMTcxRjgyMUUwMDA0MDc1NSAvKiBUcmFu
c2Zvcm1GdW5jdGlvbnMuaCAqLzsgfTsKIAkJRkI3OEFEMkUxNTFCRjVFNjAwRkU1NEQzIC8qIENT
U1BhcnNlck1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZCNzhBRDJDMTUxQkY1RDIwMEZFNTREMyAvKiBDU1NQYXJzZXJNb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkI5MTM5MjQxNkFFNEMx
NzAwMUZFNjgyIC8qIERPTVBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZCOTEzOTIwMTZBRTRCMEIwMDFGRTY4MiAvKiBET01QYXRoLmggKi87IH07
Ci0JCUZCOTEzOTI2MTZBRTRDMkYwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MTM5MUYxNkFFNEIw
QjAwMUZFNjgyIC8qIENhbnZhc1BhdGhNZXRob2RzLmggKi87IH07Ci0JCUZCOTEzOTI3MTZBRTRD
MzQwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkxMzkxRTE2QUU0QjBCMDAxRkU2ODIgLyogQ2Fu
dmFzUGF0aE1ldGhvZHMuY3BwICovOyB9OwogCQlGQjkxMzkyQTE2QUU0RkMwMDAxRkU2ODIgLyog
SlNET01QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGQjkxMzkyODE2QUU0RkMwMDAxRkU2ODIgLyogSlNET01QYXRoLmggKi87IH07CiAJCUZCOTEz
OTJCMTZBRTRGQzAwMDFGRTY4MiAvKiBKU0RPTVBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MTM5MjkxNkFFNEZDMDAwMUZFNjgyIC8qIEpT
RE9NUGF0aC5jcHAgKi87IH07CiAJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0
aE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQYXRoT3BlcmF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkxMzQsNiArOTEz
NCw4IEBACiAJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRhZ0NvbGxlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyog
VGFnQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWdDb2xs
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUE4RTc4MUM4QTI0Q0Uw
MEU3RDNFNCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW50aW1lQXBwbGljYXRpb25DaGVja3MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NzFFMDYzMUQ2N0E1N0IwMEM2QjQ5NyAvKiBDYW52
YXNQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc1Bh
dGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjcxRTA2NDFENjdBNTdCMDBD
NkI0OTcgLyogQ2FudmFzUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YW52YXNQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzMwMjAxMUM0RUZF
NjYwMEJDQjM1NyAvKiBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRD
b3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlGMUFF
MTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2QTU4QUM0MUQ0NkIzRkEwMDQzMjAzNiAvKiBKU0NsaWVudFJlY3RDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDbGllbnRSZWN0Q3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NzA5LDggKzE0NzExLDYgQEAKIAkJRkI0
ODRGNEExNzFGODIxRTAwMDQwNzU1IC8qIFRyYW5zZm9ybUZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2Zvcm1GdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjQ4NEY0QjE3MUY4MjFFMDAwNDA3NTUgLyogVHJh
bnNmb3JtRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5z
Zm9ybUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjc4QUQyQzE1
MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDU1NQYXJzZXJNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZCOTEzOTFFMTZBRTRCMEIwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNQYXRoTWV0aG9kcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZCOTEzOTFGMTZBRTRCMEIwMDFGRTY4MiAvKiBD
YW52YXNQYXRoTWV0aG9kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW52
YXNQYXRoTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjkxMzkyMDE2
QUU0QjBCMDAxRkU2ODIgLyogRE9NUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01QYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCOTEzOTIxMTZB
RTRCMEIwMDFGRTY4MiAvKiBET01QYXRoLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01Q
YXRoLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI5MTM5MjgxNkFFNEZDMDAw
MUZFNjgyIC8qIEpTRE9NUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTQ3LDggKzE3MTQ3
LDggQEAKIAkJCQk0OTQ4NEZCMzEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3Bw
ICovLAogCQkJCTQ5NDg0RkI0MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5oICov
LAogCQkJCTQ5NDg0RkI1MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5pZGwgKi8s
Ci0JCQkJRkI5MTM5MUUxNkFFNEIwQjAwMUZFNjgyIC8qIENhbnZhc1BhdGhNZXRob2RzLmNwcCAq
LywKLQkJCQlGQjkxMzkxRjE2QUU0QjBCMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMuaCAq
LywKKwkJCQk0NjcxRTA2MzFENjdBNTdCMDBDNkI0OTcgLyogQ2FudmFzUGF0aC5jcHAgKi8sCisJ
CQkJNDY3MUUwNjQxRDY3QTU3QjAwQzZCNDk3IC8qIENhbnZhc1BhdGguaCAqLywKIAkJCQk0OTQ4
NEZCNjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGF0dGVybi5jcHAgKi8sCiAJCQkJNDk0ODRG
QjcxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uaCAqLywKIAkJCQk0OTQ4NEZCODEw
MkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGF0dGVybi5pZGwgKi8sCkBAIC0yNDk4Nyw3ICsyNDk4
Nyw2IEBACiAJCQkJQjFENUVDQjUxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTZFNEU5MUFEMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXND
b250ZXh0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0ODRGQzIxMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGQjkxMzkyNjE2
QUU0QzJGMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5NDg0RkM1MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OTQ4NEZDNTEwMkNGMjNDMDAxODhERDMgLyogQ2FudmFzUHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5QzdCOUREMTA0MkQzMkYwMDA5RDQ0NyAvKiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDYyLDYgKzI4MDYxLDcgQEAKIAkJCQkxQUY4
OUE0MjE1MThGREVBMDBFNTQ3QjUgLyogVGlsZWRCYWNraW5nLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QUEzQTY5QzE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUdyaWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5ODc3MEYzMTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NjcxRTA2NjFENjdBNTk2MDBDNkI0OTcgLyogQ2FudmFzUGF0aC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjU1QjNEREMxMjUxRjEyRDAwM0VGMjY5IC8qIFRpbWVJbnB1dFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTc1NTNDRkU4MTA4RjQ3M0YwMEVBMjgxRSAvKiBUaW1lbGluZVJl
Y29yZEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDVCMjREMDk4RjFCNkIwMEMyODg1
NSAvKiBUaW1lci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODg2OCw3ICsyODg2OCw2IEBACiAJCQkJ
QjE4Mjc0OTMxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNkU0RTkxQUMxMEY3RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRy
aWJ1dGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDg0RkMxMTAyQ0YyM0MwMDE4N0REMyAv
KiBDYW52YXNHcmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGQjkxMzkyNzE2QUU0QzM0
MDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0
ODRGQzQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDlDN0I5REMxMDQyRDMyRjAwMDlENDQ3IC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3REQzIC8qIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NzAwLDYgKzI5Njk5
LDcgQEAKIAkJCQk1MTg1RkM5MDFCQjRDNEU4MDAxMjg5OEYgLyogSURCSW5kZXguY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFGNzk4RUYxQkU4ODBFNzAwOEFFNDkxIC8qIElEQkluZGV4SW5mby5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTg1RkM5NDFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ2NzFFMDY1MUQ2N0E1OTYwMEM2QjQ5NyAvKiBDYW52
YXNQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODVGQzk2MUJCNEM0RTgwMDEyODk4RiAv
KiBJREJLZXlEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODVGQzk4MUJCNEM0RTgwMDEy
ODk4RiAvKiBJREJLZXlQYXRoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODVGQzlBMUJCNEM0
RTgwMDEyODk4RiAvKiBJREJLZXlSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcwYmFlN2QwY2QyMDgx
NzM2ZjcyMWIzMTAxOTlhZjU5ODM0YzE3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguY3BwCkBAIC0wLDAgKzEsMjQxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAy
MDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICog
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
CisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDYW52YXNQYXRoLmgiCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIENh
bnZhc1BhdGg6OmNsb3NlUGF0aCgpCit7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEZsb2F0UmVjdCBib3VuZFJlY3QgPSBtX3BhdGguZmFzdEJvdW5k
aW5nUmVjdCgpOworICAgIGlmIChib3VuZFJlY3Qud2lkdGgoKSB8fCBib3VuZFJlY3QuaGVpZ2h0
KCkpCisgICAgICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsKK30KKwordm9pZCBDYW52YXNQYXRo
Ojptb3ZlVG8oZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoeCkg
fHwgIXN0ZDo6aXNmaW5pdGUoeSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWhhc0ludmVy
dGlibGVUcmFuc2Zvcm0oKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGF0aC5tb3ZlVG8oRmxv
YXRQb2ludCh4LCB5KSk7Cit9CisKK3ZvaWQgQ2FudmFzUGF0aDo6bGluZVRvKEZsb2F0UG9pbnQg
cG9pbnQpCit7CisgICAgbGluZVRvKHBvaW50LngoKSwgcG9pbnQueSgpKTsKK30KKwordm9pZCBD
YW52YXNQYXRoOjpsaW5lVG8oZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBpZiAoIXN0ZDo6aXNm
aW5pdGUoeCkgfHwgIXN0ZDo6aXNmaW5pdGUoeSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
IWhhc0ludmVydGlibGVUcmFuc2Zvcm0oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRQ
b2ludCBwMSA9IEZsb2F0UG9pbnQoeCwgeSk7CisgICAgaWYgKCFtX3BhdGguaGFzQ3VycmVudFBv
aW50KCkpCisgICAgICAgIG1fcGF0aC5tb3ZlVG8ocDEpOworICAgIGVsc2UgaWYgKHAxICE9IG1f
cGF0aC5jdXJyZW50UG9pbnQoKSkKKyAgICAgICAgbV9wYXRoLmFkZExpbmVUbyhwMSk7Cit9CisK
K3ZvaWQgQ2FudmFzUGF0aDo6cXVhZHJhdGljQ3VydmVUbyhmbG9hdCBjcHgsIGZsb2F0IGNweSwg
ZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoY3B4KSB8fCAhc3Rk
Ojppc2Zpbml0ZShjcHkpIHx8ICFzdGQ6OmlzZmluaXRlKHgpIHx8ICFzdGQ6OmlzZmluaXRlKHkp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFoYXNJbnZlcnRpYmxlVHJhbnNmb3JtKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fcGF0aC5oYXNDdXJyZW50UG9pbnQoKSkKKyAgICAg
ICAgbV9wYXRoLm1vdmVUbyhGbG9hdFBvaW50KGNweCwgY3B5KSk7CisKKyAgICBGbG9hdFBvaW50
IHAxID0gRmxvYXRQb2ludCh4LCB5KTsKKyAgICBGbG9hdFBvaW50IGNwID0gRmxvYXRQb2ludChj
cHgsIGNweSk7CisgICAgaWYgKHAxICE9IG1fcGF0aC5jdXJyZW50UG9pbnQoKSB8fCBwMSAhPSBj
cCkKKyAgICAgICAgbV9wYXRoLmFkZFF1YWRDdXJ2ZVRvKGNwLCBwMSk7Cit9CisKK3ZvaWQgQ2Fu
dmFzUGF0aDo6YmV6aWVyQ3VydmVUbyhmbG9hdCBjcDF4LCBmbG9hdCBjcDF5LCBmbG9hdCBjcDJ4
LCBmbG9hdCBjcDJ5LCBmbG9hdCB4LCBmbG9hdCB5KQoreworICAgIGlmICghc3RkOjppc2Zpbml0
ZShjcDF4KSB8fCAhc3RkOjppc2Zpbml0ZShjcDF5KSB8fCAhc3RkOjppc2Zpbml0ZShjcDJ4KSB8
fCAhc3RkOjppc2Zpbml0ZShjcDJ5KSB8fCAhc3RkOjppc2Zpbml0ZSh4KSB8fCAhc3RkOjppc2Zp
bml0ZSh5KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghaGFzSW52ZXJ0aWJsZVRyYW5zZm9y
bSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX3BhdGguaGFzQ3VycmVudFBvaW50KCkp
CisgICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChjcDF4LCBjcDF5KSk7CisKKyAgICBG
bG9hdFBvaW50IHAxID0gRmxvYXRQb2ludCh4LCB5KTsKKyAgICBGbG9hdFBvaW50IGNwMSA9IEZs
b2F0UG9pbnQoY3AxeCwgY3AxeSk7CisgICAgRmxvYXRQb2ludCBjcDIgPSBGbG9hdFBvaW50KGNw
MngsIGNwMnkpOworICAgIGlmIChwMSAhPSBtX3BhdGguY3VycmVudFBvaW50KCkgfHwgcDEgIT0g
Y3AxIHx8ICBwMSAhPSBjcDIpCisgICAgICAgIG1fcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKGNwMSwg
Y3AyLCBwMSk7Cit9CisKK3ZvaWQgQ2FudmFzUGF0aDo6YXJjVG8oZmxvYXQgeDEsIGZsb2F0IHkx
LCBmbG9hdCB4MiwgZmxvYXQgeTIsIGZsb2F0IHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGVjID0gMDsKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoeDEpIHx8ICFzdGQ6OmlzZmluaXRlKHkx
KSB8fCAhc3RkOjppc2Zpbml0ZSh4MikgfHwgIXN0ZDo6aXNmaW5pdGUoeTIpIHx8ICFzdGQ6Omlz
ZmluaXRlKHIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAociA8IDApIHsKKyAgICAgICAg
ZWMgPSBJTkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
aGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFBv
aW50IHAxID0gRmxvYXRQb2ludCh4MSwgeTEpOworICAgIEZsb2F0UG9pbnQgcDIgPSBGbG9hdFBv
aW50KHgyLCB5Mik7CisKKyAgICBpZiAoIW1fcGF0aC5oYXNDdXJyZW50UG9pbnQoKSkKKyAgICAg
ICAgbV9wYXRoLm1vdmVUbyhwMSk7CisgICAgZWxzZSBpZiAocDEgPT0gbV9wYXRoLmN1cnJlbnRQ
b2ludCgpIHx8IHAxID09IHAyIHx8ICFyKQorICAgICAgICBsaW5lVG8oeDEsIHkxKTsKKyAgICBl
bHNlCisgICAgICAgIG1fcGF0aC5hZGRBcmNUbyhwMSwgcDIsIHIpOworfQorCitzdGF0aWMgdm9p
ZCBub3JtYWxpemVBbmdsZXMoZmxvYXQmIHN0YXJ0QW5nbGUsIGZsb2F0JiBlbmRBbmdsZSwgYm9v
bCBhbnRpY2xvY2t3aXNlKQoreworICAgIGZsb2F0IG5ld1N0YXJ0QW5nbGUgPSBzdGFydEFuZ2xl
OworICAgIGlmIChuZXdTdGFydEFuZ2xlIDwgMCkKKyAgICAgICAgbmV3U3RhcnRBbmdsZSA9ICgy
ICogcGlGbG9hdCkgKyBmbW9kZihuZXdTdGFydEFuZ2xlLCAtKDIgKiBwaUZsb2F0KSk7CisgICAg
ZWxzZQorICAgICAgICBuZXdTdGFydEFuZ2xlID0gZm1vZGYobmV3U3RhcnRBbmdsZSwgMiAqIHBp
RmxvYXQpOworCisgICAgZmxvYXQgZGVsdGEgPSBuZXdTdGFydEFuZ2xlIC0gc3RhcnRBbmdsZTsK
KyAgICBzdGFydEFuZ2xlID0gbmV3U3RhcnRBbmdsZTsKKyAgICBlbmRBbmdsZSA9IGVuZEFuZ2xl
ICsgZGVsdGE7CisgICAgQVNTRVJUKG5ld1N0YXJ0QW5nbGUgPj0gMCAmJiBuZXdTdGFydEFuZ2xl
IDwgMiAqIHBpRmxvYXQpOworCisgICAgaWYgKGFudGljbG9ja3dpc2UgJiYgc3RhcnRBbmdsZSAt
IGVuZEFuZ2xlID49IDIgKiBwaUZsb2F0KQorICAgICAgICBlbmRBbmdsZSA9IHN0YXJ0QW5nbGUg
LSAyICogcGlGbG9hdDsKKyAgICBlbHNlIGlmICghYW50aWNsb2Nrd2lzZSAmJiBlbmRBbmdsZSAt
IHN0YXJ0QW5nbGUgPj0gMiAqIHBpRmxvYXQpCisgICAgICAgIGVuZEFuZ2xlID0gc3RhcnRBbmds
ZSArIDIgKiBwaUZsb2F0OworfQorCit2b2lkIENhbnZhc1BhdGg6OmFyYyhmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCByYWRpdXMsIGZsb2F0IHN0YXJ0QW5nbGUsIGZsb2F0IGVuZEFuZ2xlLCBib29s
IGFudGljbG9ja3dpc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghc3RkOjppc2Zp
bml0ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSB8fCAhc3RkOjppc2Zpbml0ZShyYWRpdXMpIHx8
ICFzdGQ6OmlzZmluaXRlKHN0YXJ0QW5nbGUpIHx8ICFzdGQ6OmlzZmluaXRlKGVuZEFuZ2xlKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHJhZGl1cyA8IDApIHsKKyAgICAgICAgZWMgPSBJ
TkRFWF9TSVpFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaGFzSW52
ZXJ0aWJsZVRyYW5zZm9ybSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBub3JtYWxpemVBbmds
ZXMoc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFudGljbG9ja3dpc2UpOworCisgICAgaWYgKCFyYWRp
dXMgfHwgc3RhcnRBbmdsZSA9PSBlbmRBbmdsZSkgeworICAgICAgICAvLyBUaGUgYXJjIGlzIGVt
cHR5IGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGRyYXcgdGhlIGNvbm5lY3RpbmcgbGluZS4KKyAgICAg
ICAgbGluZVRvKHggKyByYWRpdXMgKiBjb3NmKHN0YXJ0QW5nbGUpLCB5ICsgcmFkaXVzICogc2lu
ZihzdGFydEFuZ2xlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3BhdGguYWRk
QXJjKEZsb2F0UG9pbnQoeCwgeSksIHJhZGl1cywgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFudGlj
bG9ja3dpc2UpOworfQorICAgIAordm9pZCBDYW52YXNQYXRoOjplbGxpcHNlKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uLCBmbG9h
dCBzdGFydEFuZ2xlLCBmbG9hdCBlbmRBbmdsZSwgYm9vbCBhbnRpY2xvY2t3aXNlLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoeCkgfHwgIXN0ZDo6aXNmaW5p
dGUoeSkgfHwgIXN0ZDo6aXNmaW5pdGUocmFkaXVzWCkgfHwgIXN0ZDo6aXNmaW5pdGUocmFkaXVz
WSkgfHwgIXN0ZDo6aXNmaW5pdGUocm90YXRpb24pIHx8ICFzdGQ6OmlzZmluaXRlKHN0YXJ0QW5n
bGUpIHx8ICFzdGQ6OmlzZmluaXRlKGVuZEFuZ2xlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKHJhZGl1c1ggPCAwIHx8IHJhZGl1c1kgPCAwKSB7CisgICAgICAgIGVjID0gSU5ERVhfU0la
RV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWhhc0ludmVydGlibGVU
cmFuc2Zvcm0oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbm9ybWFsaXplQW5nbGVzKHN0YXJ0
QW5nbGUsIGVuZEFuZ2xlLCBhbnRpY2xvY2t3aXNlKTsKKworICAgIGlmICgoIXJhZGl1c1ggJiYg
IXJhZGl1c1kpIHx8IHN0YXJ0QW5nbGUgPT0gZW5kQW5nbGUpIHsKKyAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIHRyYW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSh4LCB5KS5yb3Rh
dGUocmFkMmRlZyhyb3RhdGlvbikpOworCisgICAgICAgIGxpbmVUbyh0cmFuc2Zvcm0ubWFwUG9p
bnQoRmxvYXRQb2ludChyYWRpdXNYICogY29zZihzdGFydEFuZ2xlKSwgcmFkaXVzWSAqIHNpbmYo
c3RhcnRBbmdsZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXJhZGl1
c1ggfHwgIXJhZGl1c1kpIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAg
ICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSh4LCB5KS5yb3RhdGUocmFkMmRlZyhyb3RhdGlvbikp
OworCisgICAgICAgIGxpbmVUbyh0cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludChyYWRpdXNY
ICogY29zZihzdGFydEFuZ2xlKSwgcmFkaXVzWSAqIHNpbmYoc3RhcnRBbmdsZSkpKSk7CisKKyAg
ICAgICAgaWYgKCFhbnRpY2xvY2t3aXNlKSB7CisgICAgICAgICAgICBmb3IgKGZsb2F0IGFuZ2xl
ID0gc3RhcnRBbmdsZSAtIGZtb2RmKHN0YXJ0QW5nbGUsIHBpT3ZlclR3b0Zsb2F0KSArIHBpT3Zl
clR3b0Zsb2F0OyBhbmdsZSA8IGVuZEFuZ2xlOyBhbmdsZSArPSBwaU92ZXJUd29GbG9hdCkKKyAg
ICAgICAgICAgICAgICBsaW5lVG8odHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQocmFkaXVz
WCAqIGNvc2YoYW5nbGUpLCByYWRpdXNZICogc2luZihhbmdsZSkpKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBmb3IgKGZsb2F0IGFuZ2xlID0gc3RhcnRBbmdsZSAtIGZtb2RmKHN0
YXJ0QW5nbGUsIHBpT3ZlclR3b0Zsb2F0KTsgYW5nbGUgPiBlbmRBbmdsZTsgYW5nbGUgLT0gcGlP
dmVyVHdvRmxvYXQpCisgICAgICAgICAgICAgICAgbGluZVRvKHRyYW5zZm9ybS5tYXBQb2ludChG
bG9hdFBvaW50KHJhZGl1c1ggKiBjb3NmKGFuZ2xlKSwgcmFkaXVzWSAqIHNpbmYoYW5nbGUpKSkp
OworICAgICAgICB9CisKKyAgICAgICAgbGluZVRvKHRyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBv
aW50KHJhZGl1c1ggKiBjb3NmKGVuZEFuZ2xlKSwgcmFkaXVzWSAqIHNpbmYoZW5kQW5nbGUpKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wYXRoLmFkZEVsbGlwc2UoRmxvYXRQ
b2ludCh4LCB5KSwgcmFkaXVzWCwgcmFkaXVzWSwgcm90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFu
Z2xlLCBhbnRpY2xvY2t3aXNlKTsKK30KKwordm9pZCBDYW52YXNQYXRoOjpyZWN0KGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCit7CisgICAgaWYgKCFoYXNJbnZl
cnRpYmxlVHJhbnNmb3JtKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghc3RkOjppc2Zp
bml0ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSB8fCAhc3RkOjppc2Zpbml0ZSh3aWR0aCkgfHwg
IXN0ZDo6aXNmaW5pdGUoaGVpZ2h0KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCF3aWR0
aCAmJiAhaGVpZ2h0KSB7CisgICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludCh4LCB5KSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3BhdGguYWRkUmVjdChGbG9hdFJlY3Qo
eCwgeSwgd2lkdGgsIGhlaWdodCkpOworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUGF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNmJmODBmMDJiOGIzYzg2NTAxMWFhODE5NWQzOTNkNWQ1
ODMzODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNQYXRoLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgor
ICogU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQYXRoLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRSZWN0OworCit0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBDYW52YXNQYXRoIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5DYW52YXNQYXRoKCkgeyB9CisKKyAgICB2b2lkIGNsb3NlUGF0aCgpOworICAgIHZvaWQg
bW92ZVRvKGZsb2F0IHgsIGZsb2F0IHkpOworICAgIHZvaWQgbGluZVRvKGZsb2F0IHgsIGZsb2F0
IHkpOworICAgIHZvaWQgcXVhZHJhdGljQ3VydmVUbyhmbG9hdCBjcHgsIGZsb2F0IGNweSwgZmxv
YXQgeCwgZmxvYXQgeSk7CisgICAgdm9pZCBiZXppZXJDdXJ2ZVRvKGZsb2F0IGNwMXgsIGZsb2F0
IGNwMXksIGZsb2F0IGNwMngsIGZsb2F0IGNwMnksIGZsb2F0IHgsIGZsb2F0IHkpOworICAgIHZv
aWQgYXJjVG8oZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHJh
ZGl1cywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYXJjKGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHIsIGZsb2F0IHNhLCBmbG9hdCBlYSwgYm9vbCBhbnRpY2xvY2t3aXNlLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCBlbGxpcHNlKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHJhZGl1c1gs
IGZsb2F0IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uLCBmbG9hdCBzdGFydEFuZ2xlLCBmbG9hdCBl
bmRBbmdsZWQsIGJvb2wgYW50aWNsb2Nrd2lzZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
cmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKKworcHJv
dGVjdGVkOgorICAgIENhbnZhc1BhdGgoKSB7IH0KKyAgICBDYW52YXNQYXRoKGNvbnN0IFBhdGgm
IHBhdGgpCisgICAgICAgIDogbV9wYXRoKHBhdGgpCisgICAgeyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAg
IHZvaWQgbGluZVRvKEZsb2F0UG9pbnQpOworCisgICAgUGF0aCBtX3BhdGg7Cit9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMmVm
M2MzNWZhMjE0ZDdmNTAyYjdmMTM4N2UxMDVmODcxZDVkNmYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlkbApAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
Ki8KKworWworICAgIE5vSW50ZXJmYWNlT2JqZWN0CitdIGludGVyZmFjZSBDYW52YXNQYXRoIHsK
KyAgICB2b2lkIGNsb3NlUGF0aCgpOworICAgIHZvaWQgbW92ZVRvKHVucmVzdHJpY3RlZCBkb3Vi
bGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKKyAgICB2b2lkIGxpbmVUbyh1bnJlc3RyaWN0
ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CisgICAgdm9pZCBxdWFkcmF0aWND
dXJ2ZVRvKHVucmVzdHJpY3RlZCBkb3VibGUgY3B4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGNweSwg
dW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkpOworICAgIHZvaWQg
YmV6aWVyQ3VydmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIGNwMXgsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgY3AxeSwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcDJ4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGNw
MnksIHVucmVzdHJpY3RlZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKKyAgICBb
UmFpc2VzRXhjZXB0aW9uXSB2b2lkIGFyY1RvKHVucmVzdHJpY3RlZCBkb3VibGUgeDEsIHVucmVz
dHJpY3RlZCBkb3VibGUgeTEsIHVucmVzdHJpY3RlZCBkb3VibGUgeDIsIHVucmVzdHJpY3RlZCBk
b3VibGUgeTIsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzKTsKKyAgICAvLyBbUmFpc2VzRXhj
ZXB0aW9uXSB2b2lkIGFyY1RvKHVucmVzdHJpY3RlZCBkb3VibGUgeDEsIHVucmVzdHJpY3RlZCBk
b3VibGUgeTEsIHVucmVzdHJpY3RlZCBkb3VibGUgeDIsIHVucmVzdHJpY3RlZCBkb3VibGUgeTIs
IHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWCwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRpdXNZ
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvdGF0aW9uKTsKKyAgICB2b2lkIHJlY3QodW5yZXN0cmlj
dGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUg
dywgdW5yZXN0cmljdGVkIGRvdWJsZSBoKTsKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGFy
Yyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSwgdW5yZXN0cmlj
dGVkIGRvdWJsZSByYWRpdXMsIHVucmVzdHJpY3RlZCBkb3VibGUgc3RhcnRBbmdsZSwgdW5yZXN0
cmljdGVkIGRvdWJsZSBlbmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVhbiBhbnRpY2xvY2t3aXNlID0g
ZmFsc2UpOworICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgZWxsaXBzZSh1bnJlc3RyaWN0ZWQg
ZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSwgdW5yZXN0cmljdGVkIGRvdWJsZSByYWRp
dXNYLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1c1ksIHVucmVzdHJpY3RlZCBkb3VibGUgcm90
YXRpb24sIHVucmVzdHJpY3RlZCBkb3VibGUgc3RhcnRBbmdsZSwgdW5yZXN0cmljdGVkIGRvdWJs
ZSBlbmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVhbiBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOworfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhNZXRob2Rz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhNZXRob2RzLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg0NTVkZDNhYmE2MzE4YTMyMTlmM2E5OWE4
OTAzYzQ4Yzg3ZGExYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoTWV0aG9kcy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IERpcmsg
U2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1v
YmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ2FudmFzUGF0
aE1ldGhvZHMuaCIKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQ2FudmFzUGF0aE1ldGhv
ZHM6OmNsb3NlUGF0aCgpCi17Ci0gICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEZsb2F0UmVjdCBib3VuZFJlY3QgPSBtX3BhdGguZmFzdEJvdW5kaW5nUmVj
dCgpOwotICAgIGlmIChib3VuZFJlY3Qud2lkdGgoKSB8fCBib3VuZFJlY3QuaGVpZ2h0KCkpCi0g
ICAgICAgIG1fcGF0aC5jbG9zZVN1YnBhdGgoKTsKLX0KLQotdm9pZCBDYW52YXNQYXRoTWV0aG9k
czo6bW92ZVRvKGZsb2F0IHgsIGZsb2F0IHkpCi17Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgp
IHx8ICFzdGQ6OmlzZmluaXRlKHkpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFoYXNJbnZl
cnRpYmxlVHJhbnNmb3JtKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3BhdGgubW92ZVRvKEZs
b2F0UG9pbnQoeCwgeSkpOwotfQotCi12b2lkIENhbnZhc1BhdGhNZXRob2RzOjpsaW5lVG8oRmxv
YXRQb2ludCBwb2ludCkKLXsKLSAgICBsaW5lVG8ocG9pbnQueCgpLCBwb2ludC55KCkpOwotfQot
Ci12b2lkIENhbnZhc1BhdGhNZXRob2RzOjpsaW5lVG8oZmxvYXQgeCwgZmxvYXQgeSkKLXsKLSAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUoeCkgfHwgIXN0ZDo6aXNmaW5pdGUoeSkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBpZiAoIWhhc0ludmVydGlibGVUcmFuc2Zvcm0oKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgRmxvYXRQb2ludCBwMSA9IEZsb2F0UG9pbnQoeCwgeSk7Ci0gICAgaWYgKCFtX3Bh
dGguaGFzQ3VycmVudFBvaW50KCkpCi0gICAgICAgIG1fcGF0aC5tb3ZlVG8ocDEpOwotICAgIGVs
c2UgaWYgKHAxICE9IG1fcGF0aC5jdXJyZW50UG9pbnQoKSkKLSAgICAgICAgbV9wYXRoLmFkZExp
bmVUbyhwMSk7Ci19Ci0KLXZvaWQgQ2FudmFzUGF0aE1ldGhvZHM6OnF1YWRyYXRpY0N1cnZlVG8o
ZmxvYXQgY3B4LCBmbG9hdCBjcHksIGZsb2F0IHgsIGZsb2F0IHkpCi17Ci0gICAgaWYgKCFzdGQ6
OmlzZmluaXRlKGNweCkgfHwgIXN0ZDo6aXNmaW5pdGUoY3B5KSB8fCAhc3RkOjppc2Zpbml0ZSh4
KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghaGFzSW52
ZXJ0aWJsZVRyYW5zZm9ybSgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX3BhdGguaGFz
Q3VycmVudFBvaW50KCkpCi0gICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChjcHgsIGNw
eSkpOwotCi0gICAgRmxvYXRQb2ludCBwMSA9IEZsb2F0UG9pbnQoeCwgeSk7Ci0gICAgRmxvYXRQ
b2ludCBjcCA9IEZsb2F0UG9pbnQoY3B4LCBjcHkpOwotICAgIGlmIChwMSAhPSBtX3BhdGguY3Vy
cmVudFBvaW50KCkgfHwgcDEgIT0gY3ApCi0gICAgICAgIG1fcGF0aC5hZGRRdWFkQ3VydmVUbyhj
cCwgcDEpOwotfQotCi12b2lkIENhbnZhc1BhdGhNZXRob2RzOjpiZXppZXJDdXJ2ZVRvKGZsb2F0
IGNwMXgsIGZsb2F0IGNwMXksIGZsb2F0IGNwMngsIGZsb2F0IGNwMnksIGZsb2F0IHgsIGZsb2F0
IHkpCi17Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKGNwMXgpIHx8ICFzdGQ6OmlzZmluaXRlKGNw
MXkpIHx8ICFzdGQ6OmlzZmluaXRlKGNwMngpIHx8ICFzdGQ6OmlzZmluaXRlKGNwMnkpIHx8ICFz
dGQ6OmlzZmluaXRlKHgpIHx8ICFzdGQ6OmlzZmluaXRlKHkpKQotICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKCFoYXNJbnZlcnRpYmxlVHJhbnNmb3JtKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAoIW1fcGF0aC5oYXNDdXJyZW50UG9pbnQoKSkKLSAgICAgICAgbV9wYXRoLm1vdmVUbyhGbG9h
dFBvaW50KGNwMXgsIGNwMXkpKTsKLQotICAgIEZsb2F0UG9pbnQgcDEgPSBGbG9hdFBvaW50KHgs
IHkpOwotICAgIEZsb2F0UG9pbnQgY3AxID0gRmxvYXRQb2ludChjcDF4LCBjcDF5KTsKLSAgICBG
bG9hdFBvaW50IGNwMiA9IEZsb2F0UG9pbnQoY3AyeCwgY3AyeSk7Ci0gICAgaWYgKHAxICE9IG1f
cGF0aC5jdXJyZW50UG9pbnQoKSB8fCBwMSAhPSBjcDEgfHwgIHAxICE9IGNwMikKLSAgICAgICAg
bV9wYXRoLmFkZEJlemllckN1cnZlVG8oY3AxLCBjcDIsIHAxKTsKLX0KLQotdm9pZCBDYW52YXNQ
YXRoTWV0aG9kczo6YXJjVG8oZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIs
IGZsb2F0IHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUoeDEpIHx8ICFzdGQ6OmlzZmluaXRlKHkxKSB8fCAhc3RkOjppc2Zpbml0ZSh4
MikgfHwgIXN0ZDo6aXNmaW5pdGUoeTIpIHx8ICFzdGQ6OmlzZmluaXRlKHIpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAociA8IDApIHsKLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaGFzSW52ZXJ0aWJsZVRyYW5zZm9y
bSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFBvaW50IHAxID0gRmxvYXRQb2ludCh4
MSwgeTEpOwotICAgIEZsb2F0UG9pbnQgcDIgPSBGbG9hdFBvaW50KHgyLCB5Mik7Ci0KLSAgICBp
ZiAoIW1fcGF0aC5oYXNDdXJyZW50UG9pbnQoKSkKLSAgICAgICAgbV9wYXRoLm1vdmVUbyhwMSk7
Ci0gICAgZWxzZSBpZiAocDEgPT0gbV9wYXRoLmN1cnJlbnRQb2ludCgpIHx8IHAxID09IHAyIHx8
ICFyKQotICAgICAgICBsaW5lVG8oeDEsIHkxKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcGF0aC5h
ZGRBcmNUbyhwMSwgcDIsIHIpOwotfQotCi1zdGF0aWMgdm9pZCBub3JtYWxpemVBbmdsZXMoZmxv
YXQmIHN0YXJ0QW5nbGUsIGZsb2F0JiBlbmRBbmdsZSwgYm9vbCBhbnRpY2xvY2t3aXNlKQotewot
ICAgIGZsb2F0IG5ld1N0YXJ0QW5nbGUgPSBzdGFydEFuZ2xlOwotICAgIGlmIChuZXdTdGFydEFu
Z2xlIDwgMCkKLSAgICAgICAgbmV3U3RhcnRBbmdsZSA9ICgyICogcGlGbG9hdCkgKyBmbW9kZihu
ZXdTdGFydEFuZ2xlLCAtKDIgKiBwaUZsb2F0KSk7Ci0gICAgZWxzZQotICAgICAgICBuZXdTdGFy
dEFuZ2xlID0gZm1vZGYobmV3U3RhcnRBbmdsZSwgMiAqIHBpRmxvYXQpOwotCi0gICAgZmxvYXQg
ZGVsdGEgPSBuZXdTdGFydEFuZ2xlIC0gc3RhcnRBbmdsZTsKLSAgICBzdGFydEFuZ2xlID0gbmV3
U3RhcnRBbmdsZTsKLSAgICBlbmRBbmdsZSA9IGVuZEFuZ2xlICsgZGVsdGE7Ci0gICAgQVNTRVJU
KG5ld1N0YXJ0QW5nbGUgPj0gMCAmJiBuZXdTdGFydEFuZ2xlIDwgMiAqIHBpRmxvYXQpOwotCi0g
ICAgaWYgKGFudGljbG9ja3dpc2UgJiYgc3RhcnRBbmdsZSAtIGVuZEFuZ2xlID49IDIgKiBwaUZs
b2F0KQotICAgICAgICBlbmRBbmdsZSA9IHN0YXJ0QW5nbGUgLSAyICogcGlGbG9hdDsKLSAgICBl
bHNlIGlmICghYW50aWNsb2Nrd2lzZSAmJiBlbmRBbmdsZSAtIHN0YXJ0QW5nbGUgPj0gMiAqIHBp
RmxvYXQpCi0gICAgICAgIGVuZEFuZ2xlID0gc3RhcnRBbmdsZSArIDIgKiBwaUZsb2F0OwotfQot
Ci12b2lkIENhbnZhc1BhdGhNZXRob2RzOjphcmMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcmFk
aXVzLCBmbG9hdCBzdGFydEFuZ2xlLCBmbG9hdCBlbmRBbmdsZSwgYm9vbCBhbnRpY2xvY2t3aXNl
LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoeCkgfHwgIXN0
ZDo6aXNmaW5pdGUoeSkgfHwgIXN0ZDo6aXNmaW5pdGUocmFkaXVzKSB8fCAhc3RkOjppc2Zpbml0
ZShzdGFydEFuZ2xlKSB8fCAhc3RkOjppc2Zpbml0ZShlbmRBbmdsZSkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChyYWRpdXMgPCAwKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWhhc0ludmVydGlibGVUcmFuc2Zv
cm0oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbm9ybWFsaXplQW5nbGVzKHN0YXJ0QW5nbGUs
IGVuZEFuZ2xlLCBhbnRpY2xvY2t3aXNlKTsKLQotICAgIGlmICghcmFkaXVzIHx8IHN0YXJ0QW5n
bGUgPT0gZW5kQW5nbGUpIHsKLSAgICAgICAgLy8gVGhlIGFyYyBpcyBlbXB0eSBidXQgd2Ugc3Rp
bGwgbmVlZCB0byBkcmF3IHRoZSBjb25uZWN0aW5nIGxpbmUuCi0gICAgICAgIGxpbmVUbyh4ICsg
cmFkaXVzICogY29zZihzdGFydEFuZ2xlKSwgeSArIHJhZGl1cyAqIHNpbmYoc3RhcnRBbmdsZSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYXRoLmFkZEFyYyhGbG9hdFBvaW50
KHgsIHkpLCByYWRpdXMsIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBhbnRpY2xvY2t3aXNlKTsKLX0K
LSAgICAKLXZvaWQgQ2FudmFzUGF0aE1ldGhvZHM6OmVsbGlwc2UoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb24sIGZsb2F0IHN0YXJ0
QW5nbGUsIGZsb2F0IGVuZEFuZ2xlLCBib29sIGFudGljbG9ja3dpc2UsIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSB8
fCAhc3RkOjppc2Zpbml0ZShyYWRpdXNYKSB8fCAhc3RkOjppc2Zpbml0ZShyYWRpdXNZKSB8fCAh
c3RkOjppc2Zpbml0ZShyb3RhdGlvbikgfHwgIXN0ZDo6aXNmaW5pdGUoc3RhcnRBbmdsZSkgfHwg
IXN0ZDo6aXNmaW5pdGUoZW5kQW5nbGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocmFk
aXVzWCA8IDAgfHwgcmFkaXVzWSA8IDApIHsKLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghaGFzSW52ZXJ0aWJsZVRyYW5zZm9y
bSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBub3JtYWxpemVBbmdsZXMoc3RhcnRBbmdsZSwg
ZW5kQW5nbGUsIGFudGljbG9ja3dpc2UpOwotCi0gICAgaWYgKCghcmFkaXVzWCAmJiAhcmFkaXVz
WSkgfHwgc3RhcnRBbmdsZSA9PSBlbmRBbmdsZSkgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
dHJhbnNmb3JtOwotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHgsIHkpLnJvdGF0ZShyYWQy
ZGVnKHJvdGF0aW9uKSk7Ci0KLSAgICAgICAgbGluZVRvKHRyYW5zZm9ybS5tYXBQb2ludChGbG9h
dFBvaW50KHJhZGl1c1ggKiBjb3NmKHN0YXJ0QW5nbGUpLCByYWRpdXNZICogc2luZihzdGFydEFu
Z2xlKSkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghcmFkaXVzWCB8fCAh
cmFkaXVzWSkgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAgICAgICB0
cmFuc2Zvcm0udHJhbnNsYXRlKHgsIHkpLnJvdGF0ZShyYWQyZGVnKHJvdGF0aW9uKSk7Ci0KLSAg
ICAgICAgbGluZVRvKHRyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KHJhZGl1c1ggKiBjb3Nm
KHN0YXJ0QW5nbGUpLCByYWRpdXNZICogc2luZihzdGFydEFuZ2xlKSkpKTsKLQotICAgICAgICBp
ZiAoIWFudGljbG9ja3dpc2UpIHsKLSAgICAgICAgICAgIGZvciAoZmxvYXQgYW5nbGUgPSBzdGFy
dEFuZ2xlIC0gZm1vZGYoc3RhcnRBbmdsZSwgcGlPdmVyVHdvRmxvYXQpICsgcGlPdmVyVHdvRmxv
YXQ7IGFuZ2xlIDwgZW5kQW5nbGU7IGFuZ2xlICs9IHBpT3ZlclR3b0Zsb2F0KQotICAgICAgICAg
ICAgICAgIGxpbmVUbyh0cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludChyYWRpdXNYICogY29z
ZihhbmdsZSksIHJhZGl1c1kgKiBzaW5mKGFuZ2xlKSkpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGZvciAoZmxvYXQgYW5nbGUgPSBzdGFydEFuZ2xlIC0gZm1vZGYoc3RhcnRBbmds
ZSwgcGlPdmVyVHdvRmxvYXQpOyBhbmdsZSA+IGVuZEFuZ2xlOyBhbmdsZSAtPSBwaU92ZXJUd29G
bG9hdCkKLSAgICAgICAgICAgICAgICBsaW5lVG8odHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9p
bnQocmFkaXVzWCAqIGNvc2YoYW5nbGUpLCByYWRpdXNZICogc2luZihhbmdsZSkpKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBsaW5lVG8odHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQocmFk
aXVzWCAqIGNvc2YoZW5kQW5nbGUpLCByYWRpdXNZICogc2luZihlbmRBbmdsZSkpKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BhdGguYWRkRWxsaXBzZShGbG9hdFBvaW50KHgs
IHkpLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbiwgc3RhcnRBbmdsZSwgZW5kQW5nbGUsIGFu
dGljbG9ja3dpc2UpOwotfQotCi12b2lkIENhbnZhc1BhdGhNZXRob2RzOjpyZWN0KGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCi17Ci0gICAgaWYgKCFoYXNJbnZl
cnRpYmxlVHJhbnNmb3JtKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghc3RkOjppc2Zp
bml0ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSB8fCAhc3RkOjppc2Zpbml0ZSh3aWR0aCkgfHwg
IXN0ZDo6aXNmaW5pdGUoaGVpZ2h0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF3aWR0
aCAmJiAhaGVpZ2h0KSB7Ci0gICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludCh4LCB5KSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BhdGguYWRkUmVjdChGbG9hdFJlY3Qo
eCwgeSwgd2lkdGgsIGhlaWdodCkpOwotfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0aE1ldGhvZHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdGhNZXRob2RzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4
ZmMwY2QzNjI0NDRlYjZlOGVjYTY4ZTRhZjNlZmVlZGViYWRiM2QuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUGF0aE1ldGhvZHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgot
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
Q2FudmFzUGF0aE1ldGhvZHNfaAotI2RlZmluZSBDYW52YXNQYXRoTWV0aG9kc19oCi0KLSNpbmNs
dWRlICJQYXRoLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRmxvYXRSZWN0Owot
Ci10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi1jbGFzcyBDYW52YXNQYXRoTWV0aG9kcyB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+Q2FudmFzUGF0aE1ldGhvZHMoKSB7IH0KLQotICAgIHZv
aWQgY2xvc2VQYXRoKCk7Ci0gICAgdm9pZCBtb3ZlVG8oZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAg
dm9pZCBsaW5lVG8oZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgdm9pZCBxdWFkcmF0aWNDdXJ2ZVRv
KGZsb2F0IGNweCwgZmxvYXQgY3B5LCBmbG9hdCB4LCBmbG9hdCB5KTsKLSAgICB2b2lkIGJlemll
ckN1cnZlVG8oZmxvYXQgY3AxeCwgZmxvYXQgY3AxeSwgZmxvYXQgY3AyeCwgZmxvYXQgY3AyeSwg
ZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgdm9pZCBhcmNUbyhmbG9hdCB4MCwgZmxvYXQgeTAsIGZs
b2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgcmFkaXVzLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9p
ZCBhcmMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgciwgZmxvYXQgc2EsIGZsb2F0IGVhLCBib29s
IGFudGljbG9ja3dpc2UsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGVsbGlwc2UoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb24s
IGZsb2F0IHN0YXJ0QW5nbGUsIGZsb2F0IGVuZEFuZ2xlZCwgYm9vbCBhbnRpY2xvY2t3aXNlLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCByZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgQ2FudmFzUGF0aE1ldGhvZHMo
KSB7IH0KLSAgICBDYW52YXNQYXRoTWV0aG9kcyhjb25zdCBQYXRoJiBwYXRoKSA6IG1fcGF0aChw
YXRoKSB7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBoYXNJbnZlcnRpYmxlVHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdm9pZCBsaW5lVG8oRmxvYXRQb2ludCk7Ci0KLSAg
ICBQYXRoIG1fcGF0aDsKLX07Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDhhYTAwZDI1
NGNmNjZiNzNjYzY5OGQyMmFiMDhhZDFmZTIwOThiMmYuLmUxNDI3ZDFlNThmNGZkMTllNTAxZGJj
ZDA2NmU4ZGM0Zjg3YWM1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkNhbnZhc1Bh
dGhNZXRob2RzLmgiCisjaW5jbHVkZSAiQ2FudmFzUGF0aC5oIgogI2luY2x1ZGUgIkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNv
bG9yLmgiCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIFRleHRNZXRyaWNzOwogCiB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwg
OiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbnZhc1BhdGhNZXRob2Rz
IHsKK2NsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBmaW5hbCA6IHB1YmxpYyBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0LCBwdWJsaWMgQ2FudmFzUGF0aCB7CiBwdWJsaWM6CiAgICAgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50KiwgYm9vbCB1c2VzQ1NTQ29tcGF0
aWJpbGl0eVBhcnNlTW9kZSwgYm9vbCB1c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUpOwog
ICAgIHZpcnR1YWwgfkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKaW5k
ZXggMjFhMDU1NjAxYWNmYTFiM2VkMTcxNzYxMDU3NmY4NDlmMTUwZGM3My4uNTRjYmQwYzI5YjU4
MWZhOTFmZWIzNjIyYTExZjBiYzc4MzViYjUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCkBAIC03MCwyMCAr
NzAsNiBAQCBpbnRlcmZhY2UgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIDogQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCB7CiAKICAgICB2b2lkIGJlZ2luUGF0aCgpOwogCi0gICAgLy8gRklYTUU6IFRo
ZXNlIG1ldGhvZHMgc2hvdWxkIGJlIHNoYXJlZCB3aXRoIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCBpbiB0aGUgQ2FudmFzUGF0aE1ldGhvZHMgaW50ZXJmYWNlLgotICAgIHZvaWQgY2xvc2VQYXRo
KCk7Ci0gICAgdm9pZCBtb3ZlVG8odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBm
bG9hdCB5KTsKLSAgICB2b2lkIGxpbmVUbyh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmlj
dGVkIGZsb2F0IHkpOwotICAgIHZvaWQgcXVhZHJhdGljQ3VydmVUbyh1bnJlc3RyaWN0ZWQgZmxv
YXQgY3B4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgY3B5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5y
ZXN0cmljdGVkIGZsb2F0IHkpOwotICAgIHZvaWQgYmV6aWVyQ3VydmVUbyh1bnJlc3RyaWN0ZWQg
ZmxvYXQgY3AxeCwgdW5yZXN0cmljdGVkIGZsb2F0IGNwMXksIHVucmVzdHJpY3RlZCBmbG9hdCBj
cDJ4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgY3AyeSwgCi0gICAgICAgIHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBh
cmNUbyh1bnJlc3RyaWN0ZWQgZmxvYXQgeDEsIHVucmVzdHJpY3RlZCBmbG9hdCB5MSwgdW5yZXN0
cmljdGVkIGZsb2F0IHgyLCB1bnJlc3RyaWN0ZWQgZmxvYXQgeTIsCi0gICAgICAgIHVucmVzdHJp
Y3RlZCBmbG9hdCByYWRpdXMpOwotICAgIHZvaWQgcmVjdCh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwg
dW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB3aWR0aCwgdW5yZXN0cmlj
dGVkIGZsb2F0IGhlaWdodCk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBhcmModW5yZXN0
cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQg
cmFkaXVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc3RhcnRBbmdsZSwKLSAgICAgICAgdW5yZXN0cmlj
dGVkIGZsb2F0IGVuZEFuZ2xlLCBvcHRpb25hbCBib29sZWFuIGFudGljbG9ja3dpc2UgPSBmYWxz
ZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBlbGxpcHNlKHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHJhZGl1c1gsIHVu
cmVzdHJpY3RlZCBmbG9hdCByYWRpdXNZLCB1bnJlc3RyaWN0ZWQgZmxvYXQgcm90YXRpb24sIHVu
cmVzdHJpY3RlZCBmbG9hdCBzdGFydEFuZ2xlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgZW5kQW5nbGUs
IG9wdGlvbmFsIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKLQogICAgIHZvaWQgZmls
bChET01QYXRoIHBhdGgsIG9wdGlvbmFsIENhbnZhc1dpbmRpbmdSdWxlIHdpbmRpbmcgPSAibm9u
emVybyIpOwogICAgIHZvaWQgc3Ryb2tlKERPTVBhdGggcGF0aCk7CiAgICAgdm9pZCBjbGlwKERP
TVBhdGggcGF0aCwgb3B0aW9uYWwgQ2FudmFzV2luZGluZ1J1bGUgd2luZGluZyA9ICJub256ZXJv
Iik7CkBAIC0xOTksMyArMTg1LDQgQEAgaW50ZXJmYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewogICAgIGF0dHJpYnV0ZSBJbWFnZVNtb290aGlu
Z1F1YWxpdHkgaW1hZ2VTbW9vdGhpbmdRdWFsaXR5OwogfTsKIAorQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEIGltcGxlbWVudHMgQ2FudmFzUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0RPTVBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RPTVBh
dGguaAppbmRleCA3OTQ3YjAwYzE0ODQ1MDNiYzVhOThiMWNjOThkMjUxYzdjZTEyNjc0Li4zZWM5
ZDFhYjc3YzE4ZDBkYTRjYWJlODdjOTE4ZTBiMGRkZDlkNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9ET01QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRE9NUGF0aC5oCkBAIC0yOCwxNCArMjgsMTQgQEAKICNpZm5kZWYgRE9NUGF0aF9oCiAj
ZGVmaW5lIERPTVBhdGhfaAogCi0jaW5jbHVkZSAiQ2FudmFzUGF0aE1ldGhvZHMuaCIKKyNpbmNs
dWRlICJDYW52YXNQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZH
UGF0aFV0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgRE9NUGF0aCBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPERPTVBhdGg+LCBwdWJsaWMgQ2FudmFzUGF0aE1ldGhvZHMgeworY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgRE9NUGF0aCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPERPTVBhdGg+
LCBwdWJsaWMgQ2FudmFzUGF0aCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+RE9NUGF0aCgpOwpAQCAtNjUsNyArNjUsOSBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgRE9NUGF0aCgpIHsgfQotICAgIERPTVBhdGgoY29uc3QgUGF0aCYgcGF0
aCkgOiBDYW52YXNQYXRoTWV0aG9kcyhwYXRoKSB7IH0KKyAgICBET01QYXRoKGNvbnN0IFBhdGgm
IHBhdGgpCisgICAgICAgIDogQ2FudmFzUGF0aChwYXRoKQorICAgIHsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRE9NUGF0aC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9ET01QYXRoLmlkbAppbmRleCBlM2M1MTZhMTllNmIzYjg5OGUw
NmIxMTMxZmNmNDQxM2M3ZmQzMmI4Li40MGJkMmJhNWM4Y2ZiNWE5ZTlhN2Y5NGEwYTBhMDY5OTE3
ZGNlOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9ET01QYXRoLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9ET01QYXRoLmlkbApAQCAtMzcsMzgg
KzM3LDYgQEAKICAgICAvLyBbQ29uZGl0aW9uYWw9Q0FOVkFTX1BBVEhdIHZvaWQgYWRkUGF0aChE
T01QYXRoIHBhdGgsIG9wdGlvbmFsIFNWR01hdHJpeCB0cmFuc2Zvcm0pOwogICAgIFtDb25kaXRp
b25hbD1DQU5WQVNfUEFUSF0gdm9pZCBhZGRQYXRoKERPTVBhdGg/IHBhdGgpOwogICAgIFtDb25k
aXRpb25hbD1DQU5WQVNfUEFUSF0gdm9pZCBhZGRQYXRoKERPTVBhdGg/IHBhdGgsIFNWR01hdHJp
eCB0cmFuc2Zvcm0pOwotCi0gICAgLy8gRklYTUU6IFRoZXNlIG1ldGhvZHMgc2hvdWxkIGJlIHNo
YXJlZCB3aXRoIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBpbiB0aGUgQ2FudmFzUGF0aE1ldGhv
ZHMgaW50ZXJmYWNlLgotICAgIHZvaWQgY2xvc2VQYXRoKCk7Ci0gICAgdm9pZCBtb3ZlVG8ob3B0
aW9uYWwgZmxvYXQgeCA9IE5hTiwKLSAgICAgICAgICAgICAgICBvcHRpb25hbCBmbG9hdCB5ID0g
TmFOKTsKLSAgICB2b2lkIGxpbmVUbyhvcHRpb25hbCBmbG9hdCB4ID0gTmFOLAotICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIGZsb2F0IHkgPSBOYU4pOwotICAgIHZvaWQgcXVhZHJhdGljQ3VydmVU
byhvcHRpb25hbCBmbG9hdCBjcHggPSBOYU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbmFsIGZsb2F0IGNweSA9IE5hTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
YWwgZmxvYXQgeCA9IE5hTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgZmxv
YXQgeSA9IE5hTik7Ci0gICAgdm9pZCBiZXppZXJDdXJ2ZVRvKG9wdGlvbmFsIGZsb2F0IGNwMXgg
PSBOYU4sCi0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGZsb2F0IGNwMXkgPSBOYU4s
Ci0gICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGZsb2F0IGNwMnggPSBOYU4sCi0gICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGZsb2F0IGNwMnkgPSBOYU4sCi0gICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbmFsIGZsb2F0IHggPSBOYU4sCi0gICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbmFsIGZsb2F0IHkgPSBOYU4pOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQg
YXJjVG8ob3B0aW9uYWwgZmxvYXQgeDEgPSBOYU4sCi0gICAgICAgICAgICAgICBvcHRpb25hbCBm
bG9hdCB5MSA9IE5hTiwKLSAgICAgICAgICAgICAgIG9wdGlvbmFsIGZsb2F0IHgyID0gTmFOLAot
ICAgICAgICAgICAgICAgb3B0aW9uYWwgZmxvYXQgeTIgPSBOYU4sCi0gICAgICAgICAgICAgICBv
cHRpb25hbCBmbG9hdCByYWRpdXMgPSBOYU4pOwotICAgIHZvaWQgcmVjdChvcHRpb25hbCBmbG9h
dCB4ID0gTmFOLAotICAgICAgICAgICAgICBvcHRpb25hbCBmbG9hdCB5ID0gTmFOLAotICAgICAg
ICAgICAgICBvcHRpb25hbCBmbG9hdCB3aWR0aCA9IE5hTiwKLSAgICAgICAgICAgICAgb3B0aW9u
YWwgZmxvYXQgaGVpZ2h0ID0gTmFOKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGFyYyhv
cHRpb25hbCBmbG9hdCB4ID0gTmFOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbmFsIGZsb2F0IHkgPSBOYU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW9uYWwgZmxvYXQgcmFkaXVzID0gTmFOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbmFsIGZsb2F0IHN0YXJ0QW5nbGUgPSBOYU4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uYWwgZmxvYXQgZW5kQW5nbGUgPSBOYU4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOwot
ICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgZWxsaXBzZSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwg
dW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCByYWRpdXNYLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgcmFkaXVzWSwgdW5yZXN0cmljdGVkIGZsb2F0IHJvdGF0aW9uLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc3RhcnRBbmdsZSwgdW5yZXN0cmljdGVkIGZsb2F0IGVuZEFuZ2xlLCBvcHRp
b25hbCBib29sZWFuIGFudGljbG9ja3dpc2UgPSBmYWxzZSk7Ci0KIH07CisKK0RPTVBhdGggaW1w
bGVtZW50cyBDYW52YXNQYXRoOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMGQw
YjhmM2QyMGNmZDBmMjUzYWQzZjgxOWMyMWY2Y2NhZGFhOTcyZi4uMjUzNmNkOGVkZWZiYWE3N2Rh
YjM0Njc0OGQ3MzlhNjYxZmIwMmUxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMTYgQEAKIDIwMTYtMDgtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAorICAgICAgICBNYXJrIENhbnZhc1BhdGggb3BlcmF0aW9ucycgcGFyYW1ldGVycyBhcyBt
YW5kYXRvcnkgd2hlbiB0aGV5IHNob3VsZCBiZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBXM0MgdGVzdCBub3cgdGhhdCBtb3JlIGNo
ZWNrcyBhcmUgcGFzc2luZy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Rv
bS9pbnRlcmZhY2VzLWV4cGVjdGVkLnR4dDoKKworMjAxNi0wOC0xOSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEF0dHIucHJlZml4IC8gRWxlbWVudC5wcmVmaXgg
YXR0cmlidXRlIHNob3VsZCBiZSByZWFkb25seQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwOTk4CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
ZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CmluZGV4IDQ1NTVkZGRkMTQ1YWI4YzBkMWJmOTYy
Zjg2YTU4ZGJiMjliM2E3NzEuLmIyNmM1ZTQ0NGU3MGQ5NGY2ZmJjOGEzYTRmNjM1NTc2NTZhZDNh
MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pbnRlcmZhY2VzLWV4cGVjdGVk
LnR4dApAQCAtNTEwOCwxNCArNTEwOCwxNCBAQCBGQUlMIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBhZGRQYXRoQnlTdHJva2luZ1RleHQoRE9NU3RyaW5nLENhbnZhc0RyYXdpbmdTdAogRkFJ
TCBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRpb24gYWRkVGV4dChET01TdHJpbmcsQ2FudmFzRHJh
d2luZ1N0eWxlcyxTVkdNYXRyaXgsUGF0aDJELHVucmVzdHJpY3RlZCBkb3VibGUpIGFzc2VydF9v
d25fcHJvcGVydHk6IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRp
YyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJvcGVydHkgImFkZFRleHQiIG1pc3NpbmcKIEZBSUwgUGF0
aDJEIGludGVyZmFjZTogb3BlcmF0aW9uIGFkZFBhdGhCeVN0cm9raW5nVGV4dChET01TdHJpbmcs
Q2FudmFzRHJhd2luZ1N0eWxlcyxTVkdNYXRyaXgsUGF0aDJELHVucmVzdHJpY3RlZCBkb3VibGUp
IGFzc2VydF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcg
bm9uLXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJvcGVydHkgImFkZFBhdGhCeVN0cm9raW5n
VGV4dCIgbWlzc2luZwogUEFTUyBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xvc2VQYXRo
KCkgCi1GQUlMIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBtb3ZlVG8odW5yZXN0cmljdGVk
IGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlKSBhc3NlcnRfZXF1YWxzOiBwcm9wZXJ0eSBoYXMg
d3JvbmcgLmxlbmd0aCBleHBlY3RlZCAyIGJ1dCBnb3QgMAotRkFJTCBQYXRoMkQgaW50ZXJmYWNl
OiBvcGVyYXRpb24gbGluZVRvKHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJs
ZSkgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQgMiBi
dXQgZ290IDAKLUZBSUwgUGF0aDJEIGludGVyZmFjZTogb3BlcmF0aW9uIHF1YWRyYXRpY0N1cnZl
VG8odW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBk
b3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSkgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdy
b25nIC5sZW5ndGggZXhwZWN0ZWQgNCBidXQgZ290IDAKLUZBSUwgUGF0aDJEIGludGVyZmFjZTog
b3BlcmF0aW9uIGJlemllckN1cnZlVG8odW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQg
ZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0
ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUpIGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGhh
cyB3cm9uZyAubGVuZ3RoIGV4cGVjdGVkIDYgYnV0IGdvdCAwCi1GQUlMIFBhdGgyRCBpbnRlcmZh
Y2U6IG9wZXJhdGlvbiBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3Vi
bGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBk
b3VibGUpIGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIGV4cGVjdGVk
IDUgYnV0IGdvdCAwCi1GQUlMIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhcmNUbyh1bnJl
c3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1
bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJs
ZSx1bnJlc3RyaWN0ZWQgZG91YmxlKSBhc3NlcnRfZXF1YWxzOiBwcm9wZXJ0eSBoYXMgd3Jvbmcg
Lmxlbmd0aCBleHBlY3RlZCA1IGJ1dCBnb3QgMAotRkFJTCBQYXRoMkQgaW50ZXJmYWNlOiBvcGVy
YXRpb24gcmVjdCh1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0
cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlKSBhc3NlcnRfZXF1YWxzOiBwcm9wZXJ0
eSBoYXMgd3JvbmcgLmxlbmd0aCBleHBlY3RlZCA0IGJ1dCBnb3QgMAotRkFJTCBQYXRoMkQgaW50
ZXJmYWNlOiBvcGVyYXRpb24gYXJjKHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRv
dWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVk
IGRvdWJsZSxib29sZWFuKSBhc3NlcnRfZXF1YWxzOiBwcm9wZXJ0eSBoYXMgd3JvbmcgLmxlbmd0
aCBleHBlY3RlZCA1IGJ1dCBnb3QgMAorUEFTUyBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRpb24g
bW92ZVRvKHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSkgCitQQVNTIFBh
dGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBsaW5lVG8odW5yZXN0cmljdGVkIGRvdWJsZSx1bnJl
c3RyaWN0ZWQgZG91YmxlKSAKK1BBU1MgUGF0aDJEIGludGVyZmFjZTogb3BlcmF0aW9uIHF1YWRy
YXRpY0N1cnZlVG8odW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVz
dHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSkgCitQQVNTIFBhdGgyRCBpbnRlcmZh
Y2U6IG9wZXJhdGlvbiBiZXppZXJDdXJ2ZVRvKHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmlj
dGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0
cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlKSAKK1BBU1MgUGF0aDJEIGludGVyZmFj
ZTogb3BlcmF0aW9uIGFyY1RvKHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJs
ZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRv
dWJsZSkgCitQQVNTIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhcmNUbyh1bnJlc3RyaWN0
ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3Ry
aWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJl
c3RyaWN0ZWQgZG91YmxlKSAKK1BBU1MgUGF0aDJEIGludGVyZmFjZTogb3BlcmF0aW9uIHJlY3Qo
dW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3Vi
bGUsdW5yZXN0cmljdGVkIGRvdWJsZSkgCitQQVNTIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlv
biBhcmModW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3Rl
ZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLGJvb2xlYW4p
IAogUEFTUyBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRpb24gZWxsaXBzZSh1bnJlc3RyaWN0ZWQg
ZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0
ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3Ry
aWN0ZWQgZG91YmxlLGJvb2xlYW4pIAogUEFTUyBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCAKIFBBU1MgRGF0YVRyYW5z
ZmVyIGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286483</attachid>
            <date>2016-08-19 14:39:05 -0700</date>
            <delta_ts>2016-08-19 17:47:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161014-20160819143716.patch</filename>
            <type>text/plain</type>
            <size>50235</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBjMTIyZGE5ZTAxOWEy
MjlmMzc1ZWIyZTgwYjZmNDNmYzg1NzFlMS4uNmQxMTZkYWQwYjk2NzNjOWZhMzNjYzc1ZWVlOTUz
NWI3N2MxODYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDE2LTA4LTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTWFyayBDYW52YXNQYXRoIG9w
ZXJhdGlvbnMnIHBhcmFtZXRlcnMgYXMgbWFuZGF0b3J5IHdoZW4gdGhleSBzaG91bGQgYmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTAxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgQ2FudmFz
UGF0aCBvcGVyYXRpb25zIGFzIG1hbmRhdG9yeSB3aGVuIHRoZXkgc2hvdWxkIGJlOgorICAgICAg
ICAtIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1s
I2NhbnZhc3BhdGgKKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBDYW52YXNQYXRoIG1l
dGhvZHMgZnJvbSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQKKyAgICAgICAgYW5kIFBhdGgyRCB0
byBhIG5ldyBDYW52YXNQYXRoIGludGVyZmFjZSwgdG8gYXZvaWQgZHVwbGljYXRpb24gYW5kCisg
ICAgICAgIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgIFRoZSBwYXJhbWV0ZXJz
IHdlcmUgY29ycmVjdGx5IG1hcmtlZCBhcyBtYW5kYXRvcnkgaW4gV2ViS2l0IG9uCisgICAgICAg
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBidXQgbm90IG9uIFBhdGgyRC4KKworICAgICAgICBU
aG9zZSBwYXJhbWV0ZXJzIGFyZSBjb3JyZWN0bHkgbWFya2VkIGFzIG1hbmRhdG9yeSBpbiBDaHJv
bWUgYW5kIEZpcmVmb3guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5lZCBleGlz
dGluZyB0ZXN0LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoTWV0aG9kcy5jcHAuCisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNQYXRoOjpjbG9zZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUGF0aDo6bW92ZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6OmxpbmVUbyk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNQYXRoOjpxdWFkcmF0aWNDdXJ2ZVRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6OmJlemllckN1cnZlVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzUGF0aDo6YXJjVG8pOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQW5nbGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6OmFyYyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNQYXRoOjplbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6OnJl
Y3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhNZXRob2RzLmguCisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNQYXRoOjp+Q2FudmFzUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNQYXRoOjpDYW52YXNQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdGg6Omhhc0lu
dmVydGlibGVUcmFuc2Zvcm0pOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdGguaWRs
OiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0RPTVBhdGguaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9E
T01QYXRoLmlkbDoKKworMjAxNi0wOC0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCiAgICAgICAgIEF0dHIucHJlZml4IC8gRWxlbWVudC5wcmVmaXggYXR0cmlidXRlIHNob3Vs
ZCBiZSByZWFkb25seQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYwOTk4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDg1NjZiNzI4NjExNjM4MDI1
NDIxNGNmNGE0ZDEwYTA1NmMzNzhkYi4uZGQxMGQzZDI2NWNjZmVjZjBlNDRlMmFhODgyODQ5Zjlm
NzYxOTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0MSw2ICs1NDEsNyBAQCBzZXQoV2Vi
Q29yZV9OT05fU1ZHX0lETF9GSUxFUwogCiAgICAgaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRB
cnJheXMuaWRsCiAgICAgaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaWRsCisgICAgaHRtbC9j
YW52YXMvQ2FudmFzUGF0aC5pZGwKICAgICBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbAog
ICAgIGh0bWwvY2FudmFzL0NhbnZhc1Byb3h5LmlkbAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaWRsCkBAIC0xNzkzLDcgKzE3OTQsNyBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCiAgICAgaHRtbC9j
YW52YXMvQ2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwCiAgICAgaHRtbC9jYW52YXMvQ2FudmFz
R3JhZGllbnQuY3BwCi0gICAgaHRtbC9jYW52YXMvQ2FudmFzUGF0aE1ldGhvZHMuY3BwCisgICAg
aHRtbC9jYW52YXMvQ2FudmFzUGF0aC5jcHAKICAgICBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJu
LmNwcAogICAgIGh0bWwvY2FudmFzL0NhbnZhc1Byb3h5LmNwcAogICAgIGh0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCA1OWI5N2IyNzI2YTQ3NmQ0NmE3YTgxNGZjYTU2ZjhmMmUzZmFjNDExLi45OTI3ZDBiZjBlMzY5
MjA0ZmI0NGYwZDk1NTM2ZTFjYTY3ZGIwZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTQ1MCw2ICs0NTAsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3Jl
KS9odG1sL1ZvaWRDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvQU5H
TEVJbnN0YW5jZWRBcnJheXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL0NhbnZh
c0dyYWRpZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9odG1sL2NhbnZhcy9DYW52YXNQcm94eS5pZGwgXAogICAgICQoV2ViQ29yZSkv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI4YzM4MmU0ZTJk
ZDgwMzNhYjQ3NDkyZDcxMTAzMTAxMDI4ZWI0OWMuLmVhY2E1NDE4NTkwNmI4NGRiZGM1OTczODUy
ZjhmYmNlZmU0OTE0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTIsNiArMTgxMiw4IEBACiAJCTQ2M0VCNjIzMUI4Nzg5
RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVj
dGlvbi5oICovOyB9OwogCQk0NjVBOEU3OTFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY1QThFNzgxQzhBMjRDRTAwRTdEM0U0IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5tbSAqLzsgfTsKIAkJNDY2OUIyODcxQjg1MkEwQjAwMEY5MDVGIC8qIEpTRE9NTmFtZWRGbG93
Q29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkYyNzY4RTFCODUyOTdGMDA1QzI1NTYgLyogSlNET01OYW1lZEZsb3dDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDY3MUUwNjUxRDY3QTU5NjAwQzZCNDk3IC8qIENh
bnZhc1BhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY3MUUwNjMxRDY3QTU3QjAwQzZCNDk3IC8qIENhbnZhc1BhdGguY3BwICovOyB9OworCQk0
NjcxRTA2NjFENjdBNTk2MDBDNkI0OTcgLyogQ2FudmFzUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MUUwNjQxRDY3QTU3QjAwQzZCNDk3IC8q
IENhbnZhc1BhdGguaCAqLzsgfTsKIAkJNDY3MzAyMDIxQzRFRkU3ODAwQkNCMzU3IC8qIElnbm9y
ZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIEln
bm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovOyB9OwogCQk0Njg5RjFB
RjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmls
ZU1ldGFkYXRhLmggKi87IH07CiAJCTQ2QTU4QUM1MUQ0NkIzRkEwMDQzMjAzNiAvKiBKU0NsaWVu
dFJlY3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZBNThBQzQxRDQ2QjNGQTAwNDMyMDM2IC8qIEpTQ2xpZW50UmVjdEN1c3RvbS5jcHAg
Ki87IH07CkBAIC02NzI5LDggKzY3MzEsNiBAQAogCQlGQjQ4NEY0RDE3MUY4MjFFMDAwNDA3NTUg
LyogVHJhbnNmb3JtRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQjQ4NEY0QjE3MUY4MjFFMDAwNDA3NTUgLyogVHJhbnNmb3JtRnVuY3Rp
b25zLmggKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZFNTREMyAvKiBDU1NQYXJzZXJNb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjc4QUQy
QzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCOTEzOTI0MTZBRTRDMTcwMDFGRTY4MiAv
KiBET01QYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGQjkxMzkyMDE2QUU0QjBCMDAxRkU2ODIgLyogRE9NUGF0aC5oICovOyB9OwotCQlGQjkxMzky
NjE2QUU0QzJGMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTEzOTFGMTZBRTRCMEIwMDFGRTY4MiAv
KiBDYW52YXNQYXRoTWV0aG9kcy5oICovOyB9OwotCQlGQjkxMzkyNzE2QUU0QzM0MDAxRkU2ODIg
LyogQ2FudmFzUGF0aE1ldGhvZHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkI5MTM5MUUxNkFFNEIwQjAwMUZFNjgyIC8qIENhbnZhc1BhdGhNZXRo
b2RzLmNwcCAqLzsgfTsKIAkJRkI5MTM5MkExNkFFNEZDMDAwMUZFNjgyIC8qIEpTRE9NUGF0aC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MTM5Mjgx
NkFFNEZDMDAwMUZFNjgyIC8qIEpTRE9NUGF0aC5oICovOyB9OwogCQlGQjkxMzkyQjE2QUU0RkMw
MDAxRkU2ODIgLyogSlNET01QYXRoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZCOTEzOTI5MTZBRTRGQzAwMDFGRTY4MiAvKiBKU0RPTVBhdGguY3Bw
ICovOyB9OwogCQlGQjkyREY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCOTJERjQ5
MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MTM0LDYgKzkxMzQsOCBAQAogCQk0
NjNFQjYyMDFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVBOEU3ODFDOEEyNENFMDBFN0QzRTQgLyog
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjcxRTA2MzFENjdBNTdCMDBDNkI0OTcgLyogQ2FudmFzUGF0aC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNQYXRoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY3MUUwNjQxRDY3QTU3QjAwQzZCNDk3IC8qIENh
bnZhc1BhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzUGF0aC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcg
LyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1l
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5RjFBRTEyNjdCQUUxMDBF
OEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbGVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkE1OEFDNDFE
NDZCM0ZBMDA0MzIwMzYgLyogSlNDbGllbnRSZWN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2xpZW50UmVjdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDcwOSw4ICsxNDcxMSw2IEBACiAJCUZCNDg0RjRBMTcxRjgy
MUUwMDA0MDc1NSAvKiBUcmFuc2Zvcm1GdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNmb3JtRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkI0ODRGNEIxNzFGODIxRTAwMDQwNzU1IC8qIFRyYW5zZm9ybUZ1bmN0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2Zvcm1GdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI3OEFEMkMxNTFCRjVEMjAwRkU1
NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGQjkxMzkxRTE2
QUU0QjBCMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1ldGhvZHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzUGF0aE1ldGhvZHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlGQjkxMzkxRjE2QUU0QjBCMDAxRkU2ODIgLyogQ2FudmFzUGF0aE1l
dGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzUGF0aE1ldGhv
ZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI5MTM5MjAxNkFFNEIwQjAwMUZF
NjgyIC8qIERPTVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NUGF0
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjkxMzkyMTE2QUU0QjBCMDAxRkU2
ODIgLyogRE9NUGF0aC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUGF0aC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCOTEzOTI4MTZBRTRGQzAwMDFGRTY4MiAvKiBK
U0RPTVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01QYXRoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzE0Nyw4ICsxNzE0Nyw4IEBACiAJCQkJ
NDk0ODRGQjMxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmNwcCAqLywKIAkJCQk0
OTQ4NEZCNDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaCAqLywKIAkJCQk0OTQ4
NEZCNTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaWRsICovLAotCQkJCUZCOTEz
OTFFMTZBRTRCMEIwMDFGRTY4MiAvKiBDYW52YXNQYXRoTWV0aG9kcy5jcHAgKi8sCi0JCQkJRkI5
MTM5MUYxNkFFNEIwQjAwMUZFNjgyIC8qIENhbnZhc1BhdGhNZXRob2RzLmggKi8sCisJCQkJNDY3
MUUwNjMxRDY3QTU3QjAwQzZCNDk3IC8qIENhbnZhc1BhdGguY3BwICovLAorCQkJCTQ2NzFFMDY0
MUQ2N0E1N0IwMEM2QjQ5NyAvKiBDYW52YXNQYXRoLmggKi8sCiAJCQkJNDk0ODRGQjYxMDJDRjIz
QzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uY3BwICovLAogCQkJCTQ5NDg0RkI3MTAyQ0YyM0Mw
MDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmggKi8sCiAJCQkJNDk0ODRGQjgxMDJDRjIzQzAwMTg3
REQzIC8qIENhbnZhc1BhdHRlcm4uaWRsICovLApAQCAtMjQ5ODcsNyArMjQ5ODcsNiBAQAogCQkJ
CUIxRDVFQ0I1MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RTRFOTFBRDEwRjdGQjMxMDBBMjc3OUMgLyogQ2FudmFzQ29udGV4dEF0dHJp
YnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NDg0RkMyMTAyQ0YyM0MwMDE4N0REMyAvKiBD
YW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkI5MTM5MjYxNkFFNEMyRjAwMUZF
NjgyIC8qIENhbnZhc1BhdGhNZXRob2RzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDNTEw
MkNGMjNDMDAxODdERDMgLyogQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0
ODRGQzUxMDJDRjIzQzAwMTg4REQzIC8qIENhbnZhc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OUM3QjlERDEwNDJEMzJGMDAwOUQ0NDcgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yODA2Miw2ICsyODA2MSw3IEBACiAJCQkJMUFGODlBNDIxNTE4RkRF
QTAwRTU0N0I1IC8qIFRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBM0E2OUMx
OTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVHcmlkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTg3NzBG
MzEyNDJDNTM1MDAyMjI2QkEgLyogVGlsaW5nRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY3
MUUwNjYxRDY3QTU5NjAwQzZCNDk3IC8qIENhbnZhc1BhdGguaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzRERDMTI1MUYxMkQwMDNFRjI2OSAvKiBUaW1lSW5wdXRUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3NTUzQ0ZFODEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjg4NjgsNyArMjg4NjgsNiBAQAogCQkJCUIxODI3NDkzMTM0
Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTZFNEU5MUFDMTBGN0ZCMzEwMEEyNzc5QyAvKiBDYW52YXNDb250ZXh0QXR0cmlidXRlcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDMTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3Jh
ZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkI5MTM5MjcxNkFFNEMzNDAwMUZFNjgyIC8q
IENhbnZhc1BhdGhNZXRob2RzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDg0RkM0MTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QzdC
OURDMTA0MkQzMkYwMDA5RDQ0NyAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5NDg0RkNBMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTcwMCw2ICsyOTY5OSw3IEBACiAJCQkJ
NTE4NUZDOTAxQkI0QzRFODAwMTI4OThGIC8qIElEQkluZGV4LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxRjc5OEVGMUJFODgwRTcwMDhBRTQ5MSAvKiBJREJJbmRleEluZm8uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE4NUZDOTQxQkI0QzRFODAwMTI4OThGIC8qIElEQktleS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk0NjcxRTA2NTFENjdBNTk2MDBDNkI0OTcgLyogQ2FudmFzUGF0aC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTg1RkM5NjFCQjRDNEU4MDAxMjg5OEYgLyogSURCS2V5RGF0
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTg1RkM5ODFCQjRDNEU4MDAxMjg5OEYgLyogSURC
S2V5UGF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTg1RkM5QTFCQjRDNEU4MDAxMjg5OEYg
LyogSURCS2V5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdGguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MGJhZTdkMGNkMjA4MTczNmY3MjFiMzEw
MTk5YWY1OTgzNGMxNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNQYXRoLmNwcApAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDA4IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEw
IFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAq
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q2FudmFzUGF0aC5oIgorCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBDYW52YXNQYXRoOjpj
bG9zZVBhdGgoKQoreworICAgIGlmIChtX3BhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBGbG9hdFJlY3QgYm91bmRSZWN0ID0gbV9wYXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsK
KyAgICBpZiAoYm91bmRSZWN0LndpZHRoKCkgfHwgYm91bmRSZWN0LmhlaWdodCgpKQorICAgICAg
ICBtX3BhdGguY2xvc2VTdWJwYXRoKCk7Cit9CisKK3ZvaWQgQ2FudmFzUGF0aDo6bW92ZVRvKGZs
b2F0IHgsIGZsb2F0IHkpCit7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpIHx8ICFzdGQ6Omlz
ZmluaXRlKHkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFoYXNJbnZlcnRpYmxlVHJhbnNm
b3JtKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoeCwg
eSkpOworfQorCit2b2lkIENhbnZhc1BhdGg6OmxpbmVUbyhGbG9hdFBvaW50IHBvaW50KQorewor
ICAgIGxpbmVUbyhwb2ludC54KCksIHBvaW50LnkoKSk7Cit9CisKK3ZvaWQgQ2FudmFzUGF0aDo6
bGluZVRvKGZsb2F0IHgsIGZsb2F0IHkpCit7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpIHx8
ICFzdGQ6OmlzZmluaXRlKHkpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFoYXNJbnZlcnRp
YmxlVHJhbnNmb3JtKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UG9pbnQgcDEgPSBG
bG9hdFBvaW50KHgsIHkpOworICAgIGlmICghbV9wYXRoLmhhc0N1cnJlbnRQb2ludCgpKQorICAg
ICAgICBtX3BhdGgubW92ZVRvKHAxKTsKKyAgICBlbHNlIGlmIChwMSAhPSBtX3BhdGguY3VycmVu
dFBvaW50KCkpCisgICAgICAgIG1fcGF0aC5hZGRMaW5lVG8ocDEpOworfQorCit2b2lkIENhbnZh
c1BhdGg6OnF1YWRyYXRpY0N1cnZlVG8oZmxvYXQgY3B4LCBmbG9hdCBjcHksIGZsb2F0IHgsIGZs
b2F0IHkpCit7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGNweCkgfHwgIXN0ZDo6aXNmaW5pdGUo
Y3B5KSB8fCAhc3RkOjppc2Zpbml0ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmICghaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSgpKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKCFtX3BhdGguaGFzQ3VycmVudFBvaW50KCkpCisgICAgICAgIG1fcGF0aC5t
b3ZlVG8oRmxvYXRQb2ludChjcHgsIGNweSkpOworCisgICAgRmxvYXRQb2ludCBwMSA9IEZsb2F0
UG9pbnQoeCwgeSk7CisgICAgRmxvYXRQb2ludCBjcCA9IEZsb2F0UG9pbnQoY3B4LCBjcHkpOwor
ICAgIGlmIChwMSAhPSBtX3BhdGguY3VycmVudFBvaW50KCkgfHwgcDEgIT0gY3ApCisgICAgICAg
IG1fcGF0aC5hZGRRdWFkQ3VydmVUbyhjcCwgcDEpOworfQorCit2b2lkIENhbnZhc1BhdGg6OmJl
emllckN1cnZlVG8oZmxvYXQgY3AxeCwgZmxvYXQgY3AxeSwgZmxvYXQgY3AyeCwgZmxvYXQgY3Ay
eSwgZmxvYXQgeCwgZmxvYXQgeSkKK3sKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoY3AxeCkgfHwg
IXN0ZDo6aXNmaW5pdGUoY3AxeSkgfHwgIXN0ZDo6aXNmaW5pdGUoY3AyeCkgfHwgIXN0ZDo6aXNm
aW5pdGUoY3AyeSkgfHwgIXN0ZDo6aXNmaW5pdGUoeCkgfHwgIXN0ZDo6aXNmaW5pdGUoeSkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIWhhc0ludmVydGlibGVUcmFuc2Zvcm0oKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmICghbV9wYXRoLmhhc0N1cnJlbnRQb2ludCgpKQorICAgICAgICBt
X3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoY3AxeCwgY3AxeSkpOworCisgICAgRmxvYXRQb2ludCBw
MSA9IEZsb2F0UG9pbnQoeCwgeSk7CisgICAgRmxvYXRQb2ludCBjcDEgPSBGbG9hdFBvaW50KGNw
MXgsIGNwMXkpOworICAgIEZsb2F0UG9pbnQgY3AyID0gRmxvYXRQb2ludChjcDJ4LCBjcDJ5KTsK
KyAgICBpZiAocDEgIT0gbV9wYXRoLmN1cnJlbnRQb2ludCgpIHx8IHAxICE9IGNwMSB8fCAgcDEg
IT0gY3AyKQorICAgICAgICBtX3BhdGguYWRkQmV6aWVyQ3VydmVUbyhjcDEsIGNwMiwgcDEpOwor
fQorCit2b2lkIENhbnZhc1BhdGg6OmFyY1RvKGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeDIs
IGZsb2F0IHkyLCBmbG9hdCByLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7Cisg
ICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgxKSB8fCAhc3RkOjppc2Zpbml0ZSh5MSkgfHwgIXN0ZDo6
aXNmaW5pdGUoeDIpIHx8ICFzdGQ6OmlzZmluaXRlKHkyKSB8fCAhc3RkOjppc2Zpbml0ZShyKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHIgPCAwKSB7CisgICAgICAgIGVjID0gSU5ERVhf
U0laRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWhhc0ludmVydGli
bGVUcmFuc2Zvcm0oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRQb2ludCBwMSA9IEZs
b2F0UG9pbnQoeDEsIHkxKTsKKyAgICBGbG9hdFBvaW50IHAyID0gRmxvYXRQb2ludCh4MiwgeTIp
OworCisgICAgaWYgKCFtX3BhdGguaGFzQ3VycmVudFBvaW50KCkpCisgICAgICAgIG1fcGF0aC5t
b3ZlVG8ocDEpOworICAgIGVsc2UgaWYgKHAxID09IG1fcGF0aC5jdXJyZW50UG9pbnQoKSB8fCBw
MSA9PSBwMiB8fCAhcikKKyAgICAgICAgbGluZVRvKHgxLCB5MSk7CisgICAgZWxzZQorICAgICAg
ICBtX3BhdGguYWRkQXJjVG8ocDEsIHAyLCByKTsKK30KKworc3RhdGljIHZvaWQgbm9ybWFsaXpl
QW5nbGVzKGZsb2F0JiBzdGFydEFuZ2xlLCBmbG9hdCYgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nr
d2lzZSkKK3sKKyAgICBmbG9hdCBuZXdTdGFydEFuZ2xlID0gc3RhcnRBbmdsZTsKKyAgICBpZiAo
bmV3U3RhcnRBbmdsZSA8IDApCisgICAgICAgIG5ld1N0YXJ0QW5nbGUgPSAoMiAqIHBpRmxvYXQp
ICsgZm1vZGYobmV3U3RhcnRBbmdsZSwgLSgyICogcGlGbG9hdCkpOworICAgIGVsc2UKKyAgICAg
ICAgbmV3U3RhcnRBbmdsZSA9IGZtb2RmKG5ld1N0YXJ0QW5nbGUsIDIgKiBwaUZsb2F0KTsKKwor
ICAgIGZsb2F0IGRlbHRhID0gbmV3U3RhcnRBbmdsZSAtIHN0YXJ0QW5nbGU7CisgICAgc3RhcnRB
bmdsZSA9IG5ld1N0YXJ0QW5nbGU7CisgICAgZW5kQW5nbGUgPSBlbmRBbmdsZSArIGRlbHRhOwor
ICAgIEFTU0VSVChuZXdTdGFydEFuZ2xlID49IDAgJiYgbmV3U3RhcnRBbmdsZSA8IDIgKiBwaUZs
b2F0KTsKKworICAgIGlmIChhbnRpY2xvY2t3aXNlICYmIHN0YXJ0QW5nbGUgLSBlbmRBbmdsZSA+
PSAyICogcGlGbG9hdCkKKyAgICAgICAgZW5kQW5nbGUgPSBzdGFydEFuZ2xlIC0gMiAqIHBpRmxv
YXQ7CisgICAgZWxzZSBpZiAoIWFudGljbG9ja3dpc2UgJiYgZW5kQW5nbGUgLSBzdGFydEFuZ2xl
ID49IDIgKiBwaUZsb2F0KQorICAgICAgICBlbmRBbmdsZSA9IHN0YXJ0QW5nbGUgKyAyICogcGlG
bG9hdDsKK30KKwordm9pZCBDYW52YXNQYXRoOjphcmMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
cmFkaXVzLCBmbG9hdCBzdGFydEFuZ2xlLCBmbG9hdCBlbmRBbmdsZSwgYm9vbCBhbnRpY2xvY2t3
aXNlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoeCkgfHwg
IXN0ZDo6aXNmaW5pdGUoeSkgfHwgIXN0ZDo6aXNmaW5pdGUocmFkaXVzKSB8fCAhc3RkOjppc2Zp
bml0ZShzdGFydEFuZ2xlKSB8fCAhc3RkOjppc2Zpbml0ZShlbmRBbmdsZSkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChyYWRpdXMgPCAwKSB7CisgICAgICAgIGVjID0gSU5ERVhfU0laRV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWhhc0ludmVydGlibGVUcmFu
c2Zvcm0oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbm9ybWFsaXplQW5nbGVzKHN0YXJ0QW5n
bGUsIGVuZEFuZ2xlLCBhbnRpY2xvY2t3aXNlKTsKKworICAgIGlmICghcmFkaXVzIHx8IHN0YXJ0
QW5nbGUgPT0gZW5kQW5nbGUpIHsKKyAgICAgICAgLy8gVGhlIGFyYyBpcyBlbXB0eSBidXQgd2Ug
c3RpbGwgbmVlZCB0byBkcmF3IHRoZSBjb25uZWN0aW5nIGxpbmUuCisgICAgICAgIGxpbmVUbyh4
ICsgcmFkaXVzICogY29zZihzdGFydEFuZ2xlKSwgeSArIHJhZGl1cyAqIHNpbmYoc3RhcnRBbmds
ZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wYXRoLmFkZEFyYyhGbG9hdFBv
aW50KHgsIHkpLCByYWRpdXMsIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBhbnRpY2xvY2t3aXNlKTsK
K30KKyAgICAKK3ZvaWQgQ2FudmFzUGF0aDo6ZWxsaXBzZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCByYWRpdXNYLCBmbG9hdCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbiwgZmxvYXQgc3RhcnRBbmds
ZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lzZSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpIHx8ICFzdGQ6OmlzZmluaXRlKHkpIHx8ICFz
dGQ6OmlzZmluaXRlKHJhZGl1c1gpIHx8ICFzdGQ6OmlzZmluaXRlKHJhZGl1c1kpIHx8ICFzdGQ6
OmlzZmluaXRlKHJvdGF0aW9uKSB8fCAhc3RkOjppc2Zpbml0ZShzdGFydEFuZ2xlKSB8fCAhc3Rk
Ojppc2Zpbml0ZShlbmRBbmdsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChyYWRpdXNY
IDwgMCB8fCByYWRpdXNZIDwgMCkgeworICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFoYXNJbnZlcnRpYmxlVHJhbnNmb3JtKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG5vcm1hbGl6ZUFuZ2xlcyhzdGFydEFuZ2xlLCBlbmRB
bmdsZSwgYW50aWNsb2Nrd2lzZSk7CisKKyAgICBpZiAoKCFyYWRpdXNYICYmICFyYWRpdXNZKSB8
fCBzdGFydEFuZ2xlID09IGVuZEFuZ2xlKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoeCwgeSkucm90YXRlKHJhZDJkZWco
cm90YXRpb24pKTsKKworICAgICAgICBsaW5lVG8odHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9p
bnQocmFkaXVzWCAqIGNvc2Yoc3RhcnRBbmdsZSksIHJhZGl1c1kgKiBzaW5mKHN0YXJ0QW5nbGUp
KSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFyYWRpdXNYIHx8ICFyYWRp
dXNZKSB7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUoeCwgeSkucm90YXRlKHJhZDJkZWcocm90YXRpb24pKTsKKworICAgICAg
ICBsaW5lVG8odHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQocmFkaXVzWCAqIGNvc2Yoc3Rh
cnRBbmdsZSksIHJhZGl1c1kgKiBzaW5mKHN0YXJ0QW5nbGUpKSkpOworCisgICAgICAgIGlmICgh
YW50aWNsb2Nrd2lzZSkgeworICAgICAgICAgICAgZm9yIChmbG9hdCBhbmdsZSA9IHN0YXJ0QW5n
bGUgLSBmbW9kZihzdGFydEFuZ2xlLCBwaU92ZXJUd29GbG9hdCkgKyBwaU92ZXJUd29GbG9hdDsg
YW5nbGUgPCBlbmRBbmdsZTsgYW5nbGUgKz0gcGlPdmVyVHdvRmxvYXQpCisgICAgICAgICAgICAg
ICAgbGluZVRvKHRyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KHJhZGl1c1ggKiBjb3NmKGFu
Z2xlKSwgcmFkaXVzWSAqIHNpbmYoYW5nbGUpKSkpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgZm9yIChmbG9hdCBhbmdsZSA9IHN0YXJ0QW5nbGUgLSBmbW9kZihzdGFydEFuZ2xlLCBw
aU92ZXJUd29GbG9hdCk7IGFuZ2xlID4gZW5kQW5nbGU7IGFuZ2xlIC09IHBpT3ZlclR3b0Zsb2F0
KQorICAgICAgICAgICAgICAgIGxpbmVUbyh0cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludChy
YWRpdXNYICogY29zZihhbmdsZSksIHJhZGl1c1kgKiBzaW5mKGFuZ2xlKSkpKTsKKyAgICAgICAg
fQorCisgICAgICAgIGxpbmVUbyh0cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludChyYWRpdXNY
ICogY29zZihlbmRBbmdsZSksIHJhZGl1c1kgKiBzaW5mKGVuZEFuZ2xlKSkpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fcGF0aC5hZGRFbGxpcHNlKEZsb2F0UG9pbnQoeCwgeSks
IHJhZGl1c1gsIHJhZGl1c1ksIHJvdGF0aW9uLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW50aWNs
b2Nrd2lzZSk7Cit9CisKK3ZvaWQgQ2FudmFzUGF0aDo6cmVjdChmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQoreworICAgIGlmICghaGFzSW52ZXJ0aWJsZVRyYW5z
Zm9ybSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoeCkgfHwg
IXN0ZDo6aXNmaW5pdGUoeSkgfHwgIXN0ZDo6aXNmaW5pdGUod2lkdGgpIHx8ICFzdGQ6OmlzZmlu
aXRlKGhlaWdodCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghd2lkdGggJiYgIWhlaWdo
dCkgeworICAgICAgICBtX3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoeCwgeSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9wYXRoLmFkZFJlY3QoRmxvYXRSZWN0KHgsIHksIHdpZHRo
LCBoZWlnaHQpKTsKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGguaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44YTZiZjgwZjAyYjhiM2M4NjUwMTFhYTgxOTVkMzkzZDVkNTgzMzg2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5oCkBA
IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGF0aC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0UmVjdDsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKKworY2xhc3MgQ2FudmFzUGF0aCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q2FudmFz
UGF0aCgpIHsgfQorCisgICAgdm9pZCBjbG9zZVBhdGgoKTsKKyAgICB2b2lkIG1vdmVUbyhmbG9h
dCB4LCBmbG9hdCB5KTsKKyAgICB2b2lkIGxpbmVUbyhmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICB2
b2lkIHF1YWRyYXRpY0N1cnZlVG8oZmxvYXQgY3B4LCBmbG9hdCBjcHksIGZsb2F0IHgsIGZsb2F0
IHkpOworICAgIHZvaWQgYmV6aWVyQ3VydmVUbyhmbG9hdCBjcDF4LCBmbG9hdCBjcDF5LCBmbG9h
dCBjcDJ4LCBmbG9hdCBjcDJ5LCBmbG9hdCB4LCBmbG9hdCB5KTsKKyAgICB2b2lkIGFyY1RvKGZs
b2F0IHgwLCBmbG9hdCB5MCwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCByYWRpdXMsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIGFyYyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByLCBmbG9h
dCBzYSwgZmxvYXQgZWEsIGJvb2wgYW50aWNsb2Nrd2lzZSwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgZWxsaXBzZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRp
dXNZLCBmbG9hdCByb3RhdGlvbiwgZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGVkLCBi
b29sIGFudGljbG9ja3dpc2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlY3QoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CisKK3Byb3RlY3RlZDoKKyAg
ICBDYW52YXNQYXRoKCkgeyB9CisgICAgQ2FudmFzUGF0aChjb25zdCBQYXRoJiBwYXRoKQorICAg
ICAgICA6IG1fcGF0aChwYXRoKQorICAgIHsgfQorCisgICAgdmlydHVhbCBib29sIGhhc0ludmVy
dGlibGVUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2b2lkIGxpbmVU
byhGbG9hdFBvaW50KTsKKworICAgIFBhdGggbV9wYXRoOworfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjJlZjNjMzVmYTIxNGQ3
ZjUwMmI3ZjEzODdlMTA1Zjg3MWQ1ZDZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aC5pZGwKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAg
ICBOb0ludGVyZmFjZU9iamVjdAorXSBpbnRlcmZhY2UgQ2FudmFzUGF0aCB7CisgICAgdm9pZCBj
bG9zZVBhdGgoKTsKKyAgICB2b2lkIG1vdmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVucmVz
dHJpY3RlZCBkb3VibGUgeSk7CisgICAgdm9pZCBsaW5lVG8odW5yZXN0cmljdGVkIGRvdWJsZSB4
LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkpOworICAgIHZvaWQgcXVhZHJhdGljQ3VydmVUbyh1bnJl
c3RyaWN0ZWQgZG91YmxlIGNweCwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcHksIHVucmVzdHJpY3Rl
ZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKKyAgICB2b2lkIGJlemllckN1cnZl
VG8odW5yZXN0cmljdGVkIGRvdWJsZSBjcDF4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIGNwMXksIHVu
cmVzdHJpY3RlZCBkb3VibGUgY3AyeCwgdW5yZXN0cmljdGVkIGRvdWJsZSBjcDJ5LCB1bnJlc3Ry
aWN0ZWQgZG91YmxlIHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CisgICAgW1JhaXNlc0V4Y2Vw
dGlvbl0gdm9pZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3RyaWN0ZWQgZG91
YmxlIHkxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkyLCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHJhZGl1cyk7CisgICAgLy8gW1JhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlIHgxLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkxLCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHgyLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHkyLCB1bnJlc3RyaWN0
ZWQgZG91YmxlIHJhZGl1c1gsIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWSwgdW5yZXN0cmlj
dGVkIGRvdWJsZSByb3RhdGlvbik7CisgICAgdm9pZCByZWN0KHVucmVzdHJpY3RlZCBkb3VibGUg
eCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHcsIHVucmVzdHJp
Y3RlZCBkb3VibGUgaCk7CisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBhcmModW5yZXN0cmlj
dGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUg
cmFkaXVzLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgZW5kQW5nbGUsIG9wdGlvbmFsIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKKyAg
ICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGVsbGlwc2UodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHksIHVucmVzdHJpY3RlZCBkb3VibGUgcmFkaXVzWCwgdW5yZXN0
cmljdGVkIGRvdWJsZSByYWRpdXNZLCB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvdGF0aW9uLCB1bnJl
c3RyaWN0ZWQgZG91YmxlIHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kQW5nbGUs
IG9wdGlvbmFsIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoTWV0aG9kcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXRoTWV0aG9kcy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI4NDU1ZGQzYWJhNjMxOGEzMjE5ZjNhOTlhODkwM2M0OGM4N2Rh
MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0aE1ldGhvZHMuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMjQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBU
b2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwg
PGVyaWNAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBEaXJrIFNjaHVsemUgPGty
aXRAd2Via2l0Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWpp
bmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNhbnZhc1BhdGhNZXRob2RzLmgi
Ci0KLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIENhbnZhc1BhdGhNZXRob2RzOjpjbG9zZVBh
dGgoKQotewotICAgIGlmIChtX3BhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBGbG9hdFJlY3QgYm91bmRSZWN0ID0gbV9wYXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsKLSAgICBp
ZiAoYm91bmRSZWN0LndpZHRoKCkgfHwgYm91bmRSZWN0LmhlaWdodCgpKQotICAgICAgICBtX3Bh
dGguY2xvc2VTdWJwYXRoKCk7Ci19Ci0KLXZvaWQgQ2FudmFzUGF0aE1ldGhvZHM6Om1vdmVUbyhm
bG9hdCB4LCBmbG9hdCB5KQotewotICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSB8fCAhc3RkOjpp
c2Zpbml0ZSh5KSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghaGFzSW52ZXJ0aWJsZVRyYW5z
Zm9ybSgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9wYXRoLm1vdmVUbyhGbG9hdFBvaW50KHgs
IHkpKTsKLX0KLQotdm9pZCBDYW52YXNQYXRoTWV0aG9kczo6bGluZVRvKEZsb2F0UG9pbnQgcG9p
bnQpCi17Ci0gICAgbGluZVRvKHBvaW50LngoKSwgcG9pbnQueSgpKTsKLX0KLQotdm9pZCBDYW52
YXNQYXRoTWV0aG9kczo6bGluZVRvKGZsb2F0IHgsIGZsb2F0IHkpCi17Ci0gICAgaWYgKCFzdGQ6
OmlzZmluaXRlKHgpIHx8ICFzdGQ6OmlzZmluaXRlKHkpKQotICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFoYXNJbnZlcnRpYmxlVHJhbnNmb3JtKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZs
b2F0UG9pbnQgcDEgPSBGbG9hdFBvaW50KHgsIHkpOwotICAgIGlmICghbV9wYXRoLmhhc0N1cnJl
bnRQb2ludCgpKQotICAgICAgICBtX3BhdGgubW92ZVRvKHAxKTsKLSAgICBlbHNlIGlmIChwMSAh
PSBtX3BhdGguY3VycmVudFBvaW50KCkpCi0gICAgICAgIG1fcGF0aC5hZGRMaW5lVG8ocDEpOwot
fQotCi12b2lkIENhbnZhc1BhdGhNZXRob2RzOjpxdWFkcmF0aWNDdXJ2ZVRvKGZsb2F0IGNweCwg
ZmxvYXQgY3B5LCBmbG9hdCB4LCBmbG9hdCB5KQotewotICAgIGlmICghc3RkOjppc2Zpbml0ZShj
cHgpIHx8ICFzdGQ6OmlzZmluaXRlKGNweSkgfHwgIXN0ZDo6aXNmaW5pdGUoeCkgfHwgIXN0ZDo6
aXNmaW5pdGUoeSkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoIWhhc0ludmVydGlibGVUcmFu
c2Zvcm0oKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9wYXRoLmhhc0N1cnJlbnRQb2lu
dCgpKQotICAgICAgICBtX3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoY3B4LCBjcHkpKTsKLQotICAg
IEZsb2F0UG9pbnQgcDEgPSBGbG9hdFBvaW50KHgsIHkpOwotICAgIEZsb2F0UG9pbnQgY3AgPSBG
bG9hdFBvaW50KGNweCwgY3B5KTsKLSAgICBpZiAocDEgIT0gbV9wYXRoLmN1cnJlbnRQb2ludCgp
IHx8IHAxICE9IGNwKQotICAgICAgICBtX3BhdGguYWRkUXVhZEN1cnZlVG8oY3AsIHAxKTsKLX0K
LQotdm9pZCBDYW52YXNQYXRoTWV0aG9kczo6YmV6aWVyQ3VydmVUbyhmbG9hdCBjcDF4LCBmbG9h
dCBjcDF5LCBmbG9hdCBjcDJ4LCBmbG9hdCBjcDJ5LCBmbG9hdCB4LCBmbG9hdCB5KQotewotICAg
IGlmICghc3RkOjppc2Zpbml0ZShjcDF4KSB8fCAhc3RkOjppc2Zpbml0ZShjcDF5KSB8fCAhc3Rk
Ojppc2Zpbml0ZShjcDJ4KSB8fCAhc3RkOjppc2Zpbml0ZShjcDJ5KSB8fCAhc3RkOjppc2Zpbml0
ZSh4KSB8fCAhc3RkOjppc2Zpbml0ZSh5KSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghaGFz
SW52ZXJ0aWJsZVRyYW5zZm9ybSgpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX3BhdGgu
aGFzQ3VycmVudFBvaW50KCkpCi0gICAgICAgIG1fcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChjcDF4
LCBjcDF5KSk7Ci0KLSAgICBGbG9hdFBvaW50IHAxID0gRmxvYXRQb2ludCh4LCB5KTsKLSAgICBG
bG9hdFBvaW50IGNwMSA9IEZsb2F0UG9pbnQoY3AxeCwgY3AxeSk7Ci0gICAgRmxvYXRQb2ludCBj
cDIgPSBGbG9hdFBvaW50KGNwMngsIGNwMnkpOwotICAgIGlmIChwMSAhPSBtX3BhdGguY3VycmVu
dFBvaW50KCkgfHwgcDEgIT0gY3AxIHx8ICBwMSAhPSBjcDIpCi0gICAgICAgIG1fcGF0aC5hZGRC
ZXppZXJDdXJ2ZVRvKGNwMSwgY3AyLCBwMSk7Ci19Ci0KLXZvaWQgQ2FudmFzUGF0aE1ldGhvZHM6
OmFyY1RvKGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBmbG9hdCByLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9IDA7Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRl
KHgxKSB8fCAhc3RkOjppc2Zpbml0ZSh5MSkgfHwgIXN0ZDo6aXNmaW5pdGUoeDIpIHx8ICFzdGQ6
OmlzZmluaXRlKHkyKSB8fCAhc3RkOjppc2Zpbml0ZShyKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWhhc0ludmVydGlibGVUcmFuc2Zvcm0oKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgRmxvYXRQb2ludCBwMSA9IEZsb2F0UG9pbnQoeDEsIHkxKTsKLSAg
ICBGbG9hdFBvaW50IHAyID0gRmxvYXRQb2ludCh4MiwgeTIpOwotCi0gICAgaWYgKCFtX3BhdGgu
aGFzQ3VycmVudFBvaW50KCkpCi0gICAgICAgIG1fcGF0aC5tb3ZlVG8ocDEpOwotICAgIGVsc2Ug
aWYgKHAxID09IG1fcGF0aC5jdXJyZW50UG9pbnQoKSB8fCBwMSA9PSBwMiB8fCAhcikKLSAgICAg
ICAgbGluZVRvKHgxLCB5MSk7Ci0gICAgZWxzZQotICAgICAgICBtX3BhdGguYWRkQXJjVG8ocDEs
IHAyLCByKTsKLX0KLQotc3RhdGljIHZvaWQgbm9ybWFsaXplQW5nbGVzKGZsb2F0JiBzdGFydEFu
Z2xlLCBmbG9hdCYgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lzZSkKLXsKLSAgICBmbG9hdCBu
ZXdTdGFydEFuZ2xlID0gc3RhcnRBbmdsZTsKLSAgICBpZiAobmV3U3RhcnRBbmdsZSA8IDApCi0g
ICAgICAgIG5ld1N0YXJ0QW5nbGUgPSAoMiAqIHBpRmxvYXQpICsgZm1vZGYobmV3U3RhcnRBbmds
ZSwgLSgyICogcGlGbG9hdCkpOwotICAgIGVsc2UKLSAgICAgICAgbmV3U3RhcnRBbmdsZSA9IGZt
b2RmKG5ld1N0YXJ0QW5nbGUsIDIgKiBwaUZsb2F0KTsKLQotICAgIGZsb2F0IGRlbHRhID0gbmV3
U3RhcnRBbmdsZSAtIHN0YXJ0QW5nbGU7Ci0gICAgc3RhcnRBbmdsZSA9IG5ld1N0YXJ0QW5nbGU7
Ci0gICAgZW5kQW5nbGUgPSBlbmRBbmdsZSArIGRlbHRhOwotICAgIEFTU0VSVChuZXdTdGFydEFu
Z2xlID49IDAgJiYgbmV3U3RhcnRBbmdsZSA8IDIgKiBwaUZsb2F0KTsKLQotICAgIGlmIChhbnRp
Y2xvY2t3aXNlICYmIHN0YXJ0QW5nbGUgLSBlbmRBbmdsZSA+PSAyICogcGlGbG9hdCkKLSAgICAg
ICAgZW5kQW5nbGUgPSBzdGFydEFuZ2xlIC0gMiAqIHBpRmxvYXQ7Ci0gICAgZWxzZSBpZiAoIWFu
dGljbG9ja3dpc2UgJiYgZW5kQW5nbGUgLSBzdGFydEFuZ2xlID49IDIgKiBwaUZsb2F0KQotICAg
ICAgICBlbmRBbmdsZSA9IHN0YXJ0QW5nbGUgKyAyICogcGlGbG9hdDsKLX0KLQotdm9pZCBDYW52
YXNQYXRoTWV0aG9kczo6YXJjKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHJhZGl1cywgZmxvYXQg
c3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lzZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpIHx8ICFzdGQ6OmlzZmluaXRl
KHkpIHx8ICFzdGQ6OmlzZmluaXRlKHJhZGl1cykgfHwgIXN0ZDo6aXNmaW5pdGUoc3RhcnRBbmds
ZSkgfHwgIXN0ZDo6aXNmaW5pdGUoZW5kQW5nbGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAocmFkaXVzIDwgMCkgewotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFoYXNJbnZlcnRpYmxlVHJhbnNmb3JtKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG5vcm1hbGl6ZUFuZ2xlcyhzdGFydEFuZ2xlLCBlbmRBbmdsZSwg
YW50aWNsb2Nrd2lzZSk7Ci0KLSAgICBpZiAoIXJhZGl1cyB8fCBzdGFydEFuZ2xlID09IGVuZEFu
Z2xlKSB7Ci0gICAgICAgIC8vIFRoZSBhcmMgaXMgZW1wdHkgYnV0IHdlIHN0aWxsIG5lZWQgdG8g
ZHJhdyB0aGUgY29ubmVjdGluZyBsaW5lLgotICAgICAgICBsaW5lVG8oeCArIHJhZGl1cyAqIGNv
c2Yoc3RhcnRBbmdsZSksIHkgKyByYWRpdXMgKiBzaW5mKHN0YXJ0QW5nbGUpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIG1fcGF0aC5hZGRBcmMoRmxvYXRQb2ludCh4LCB5KSwgcmFk
aXVzLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSwgYW50aWNsb2Nrd2lzZSk7Ci19Ci0gICAgCi12b2lk
IENhbnZhc1BhdGhNZXRob2RzOjplbGxpcHNlKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHJhZGl1
c1gsIGZsb2F0IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uLCBmbG9hdCBzdGFydEFuZ2xlLCBmbG9h
dCBlbmRBbmdsZSwgYm9vbCBhbnRpY2xvY2t3aXNlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUoeCkgfHwgIXN0ZDo6aXNmaW5pdGUoeSkgfHwgIXN0ZDo6aXNm
aW5pdGUocmFkaXVzWCkgfHwgIXN0ZDo6aXNmaW5pdGUocmFkaXVzWSkgfHwgIXN0ZDo6aXNmaW5p
dGUocm90YXRpb24pIHx8ICFzdGQ6OmlzZmluaXRlKHN0YXJ0QW5nbGUpIHx8ICFzdGQ6OmlzZmlu
aXRlKGVuZEFuZ2xlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHJhZGl1c1ggPCAwIHx8
IHJhZGl1c1kgPCAwKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWhhc0ludmVydGlibGVUcmFuc2Zvcm0oKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbm9ybWFsaXplQW5nbGVzKHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBh
bnRpY2xvY2t3aXNlKTsKLQotICAgIGlmICgoIXJhZGl1c1ggJiYgIXJhZGl1c1kpIHx8IHN0YXJ0
QW5nbGUgPT0gZW5kQW5nbGUpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsK
LSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSh4LCB5KS5yb3RhdGUocmFkMmRlZyhyb3RhdGlv
bikpOwotCi0gICAgICAgIGxpbmVUbyh0cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludChyYWRp
dXNYICogY29zZihzdGFydEFuZ2xlKSwgcmFkaXVzWSAqIHNpbmYoc3RhcnRBbmdsZSkpKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXJhZGl1c1ggfHwgIXJhZGl1c1kpIHsK
LSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZSh4LCB5KS5yb3RhdGUocmFkMmRlZyhyb3RhdGlvbikpOwotCi0gICAgICAgIGxpbmVU
byh0cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludChyYWRpdXNYICogY29zZihzdGFydEFuZ2xl
KSwgcmFkaXVzWSAqIHNpbmYoc3RhcnRBbmdsZSkpKSk7Ci0KLSAgICAgICAgaWYgKCFhbnRpY2xv
Y2t3aXNlKSB7Ci0gICAgICAgICAgICBmb3IgKGZsb2F0IGFuZ2xlID0gc3RhcnRBbmdsZSAtIGZt
b2RmKHN0YXJ0QW5nbGUsIHBpT3ZlclR3b0Zsb2F0KSArIHBpT3ZlclR3b0Zsb2F0OyBhbmdsZSA8
IGVuZEFuZ2xlOyBhbmdsZSArPSBwaU92ZXJUd29GbG9hdCkKLSAgICAgICAgICAgICAgICBsaW5l
VG8odHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQocmFkaXVzWCAqIGNvc2YoYW5nbGUpLCBy
YWRpdXNZICogc2luZihhbmdsZSkpKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBm
b3IgKGZsb2F0IGFuZ2xlID0gc3RhcnRBbmdsZSAtIGZtb2RmKHN0YXJ0QW5nbGUsIHBpT3ZlclR3
b0Zsb2F0KTsgYW5nbGUgPiBlbmRBbmdsZTsgYW5nbGUgLT0gcGlPdmVyVHdvRmxvYXQpCi0gICAg
ICAgICAgICAgICAgbGluZVRvKHRyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KHJhZGl1c1gg
KiBjb3NmKGFuZ2xlKSwgcmFkaXVzWSAqIHNpbmYoYW5nbGUpKSkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgbGluZVRvKHRyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KHJhZGl1c1ggKiBjb3Nm
KGVuZEFuZ2xlKSwgcmFkaXVzWSAqIHNpbmYoZW5kQW5nbGUpKSkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgbV9wYXRoLmFkZEVsbGlwc2UoRmxvYXRQb2ludCh4LCB5KSwgcmFkaXVz
WCwgcmFkaXVzWSwgcm90YXRpb24sIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBhbnRpY2xvY2t3aXNl
KTsKLX0KLQotdm9pZCBDYW52YXNQYXRoTWV0aG9kczo6cmVjdChmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQotewotICAgIGlmICghaGFzSW52ZXJ0aWJsZVRyYW5z
Zm9ybSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoeCkgfHwg
IXN0ZDo6aXNmaW5pdGUoeSkgfHwgIXN0ZDo6aXNmaW5pdGUod2lkdGgpIHx8ICFzdGQ6OmlzZmlu
aXRlKGhlaWdodCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghd2lkdGggJiYgIWhlaWdo
dCkgewotICAgICAgICBtX3BhdGgubW92ZVRvKEZsb2F0UG9pbnQoeCwgeSkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYXRoLmFkZFJlY3QoRmxvYXRSZWN0KHgsIHksIHdpZHRo
LCBoZWlnaHQpKTsKLX0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1BhdGhNZXRob2RzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXRoTWV0aG9kcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGZjMGNkMzYyNDQ0
ZWI2ZThlY2E2OGU0YWYzZWZlZWRlYmFkYjNkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdGhN
ZXRob2RzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBZG9iZSBTeXN0ZW1z
IEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENhbnZhc1BhdGhN
ZXRob2RzX2gKLSNkZWZpbmUgQ2FudmFzUGF0aE1ldGhvZHNfaAotCi0jaW5jbHVkZSAiUGF0aC5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZsb2F0UmVjdDsKLQotdHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKLQotY2xhc3MgQ2FudmFzUGF0aE1ldGhvZHMgewotcHVibGljOgot
ICAgIHZpcnR1YWwgfkNhbnZhc1BhdGhNZXRob2RzKCkgeyB9Ci0KLSAgICB2b2lkIGNsb3NlUGF0
aCgpOwotICAgIHZvaWQgbW92ZVRvKGZsb2F0IHgsIGZsb2F0IHkpOwotICAgIHZvaWQgbGluZVRv
KGZsb2F0IHgsIGZsb2F0IHkpOwotICAgIHZvaWQgcXVhZHJhdGljQ3VydmVUbyhmbG9hdCBjcHgs
IGZsb2F0IGNweSwgZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgdm9pZCBiZXppZXJDdXJ2ZVRvKGZs
b2F0IGNwMXgsIGZsb2F0IGNwMXksIGZsb2F0IGNwMngsIGZsb2F0IGNwMnksIGZsb2F0IHgsIGZs
b2F0IHkpOwotICAgIHZvaWQgYXJjVG8oZmxvYXQgeDAsIGZsb2F0IHkwLCBmbG9hdCB4MSwgZmxv
YXQgeTEsIGZsb2F0IHJhZGl1cywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYXJjKGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHIsIGZsb2F0IHNhLCBmbG9hdCBlYSwgYm9vbCBhbnRpY2xvY2t3
aXNlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBlbGxpcHNlKGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1ksIGZsb2F0IHJvdGF0aW9uLCBmbG9hdCBzdGFy
dEFuZ2xlLCBmbG9hdCBlbmRBbmdsZWQsIGJvb2wgYW50aWNsb2Nrd2lzZSwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIHZvaWQgcmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KTsKLQotcHJvdGVjdGVkOgotICAgIENhbnZhc1BhdGhNZXRob2RzKCkgeyB9Ci0gICAg
Q2FudmFzUGF0aE1ldGhvZHMoY29uc3QgUGF0aCYgcGF0aCkgOiBtX3BhdGgocGF0aCkgeyB9Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLQotICAgIHZvaWQgbGluZVRvKEZsb2F0UG9pbnQpOwotCi0gICAgUGF0aCBtX3Bh
dGg7Ci19OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCA4YWEwMGQyNTRjZjY2YjczY2M2
OThkMjJhYjA4YWQxZmUyMDk4YjJmLi5lMTQyN2QxZTU4ZjRmZDE5ZTUwMWRiY2QwNjZlOGRjNGY4
N2FjNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJDYW52YXNQYXRoTWV0aG9kcy5o
IgorI2luY2x1ZGUgIkNhbnZhc1BhdGguaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiQ2FudmFzU3R5bGUuaCIKICNpbmNsdWRlICJDb2xvci5oIgpAQCAt
NTcsNyArNTcsNyBAQCBjbGFzcyBUZXh0TWV0cmljczsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9u
Q29kZTsKIAotY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIGZpbmFsIDogcHVibGljIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBDYW52YXNQYXRoTWV0aG9kcyB7CitjbGFzcyBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCwgcHVibGljIENhbnZhc1BhdGggewogcHVibGljOgogICAgIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRChIVE1MQ2FudmFzRWxlbWVudCosIGJvb2wgdXNlc0NTU0NvbXBhdGliaWxpdHlQYXJz
ZU1vZGUsIGJvb2wgdXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICB2aXJ0dWFs
IH5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCmluZGV4IDIxYTA1NTYw
MWFjZmExYjNlZDE3MTc2MTA1NzZmODQ5ZjE1MGRjNzMuLjU0Y2JkMGMyOWI1ODFmYTkxZmViMzYy
MmExMWYwYmM3ODM1YmI1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAtNzAsMjAgKzcwLDYgQEAgaW50
ZXJmYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQg
ewogCiAgICAgdm9pZCBiZWdpblBhdGgoKTsKIAotICAgIC8vIEZJWE1FOiBUaGVzZSBtZXRob2Rz
IHNob3VsZCBiZSBzaGFyZWQgd2l0aCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgaW4gdGhlIENh
bnZhc1BhdGhNZXRob2RzIGludGVyZmFjZS4KLSAgICB2b2lkIGNsb3NlUGF0aCgpOwotICAgIHZv
aWQgbW92ZVRvKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7Ci0g
ICAgdm9pZCBsaW5lVG8odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5
KTsKLSAgICB2b2lkIHF1YWRyYXRpY0N1cnZlVG8odW5yZXN0cmljdGVkIGZsb2F0IGNweCwgdW5y
ZXN0cmljdGVkIGZsb2F0IGNweSwgdW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBm
bG9hdCB5KTsKLSAgICB2b2lkIGJlemllckN1cnZlVG8odW5yZXN0cmljdGVkIGZsb2F0IGNwMXgs
IHVucmVzdHJpY3RlZCBmbG9hdCBjcDF5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgY3AyeCwgdW5yZXN0
cmljdGVkIGZsb2F0IGNwMnksIAotICAgICAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0
cmljdGVkIGZsb2F0IHkpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgYXJjVG8odW5yZXN0
cmljdGVkIGZsb2F0IHgxLCB1bnJlc3RyaWN0ZWQgZmxvYXQgeTEsIHVucmVzdHJpY3RlZCBmbG9h
dCB4MiwgdW5yZXN0cmljdGVkIGZsb2F0IHkyLAotICAgICAgICB1bnJlc3RyaWN0ZWQgZmxvYXQg
cmFkaXVzKTsKLSAgICB2b2lkIHJlY3QodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3Rl
ZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgd2lkdGgsIHVucmVzdHJpY3RlZCBmbG9hdCBo
ZWlnaHQpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgYXJjKHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHJhZGl1cywgdW5y
ZXN0cmljdGVkIGZsb2F0IHN0YXJ0QW5nbGUsCi0gICAgICAgIHVucmVzdHJpY3RlZCBmbG9hdCBl
bmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVhbiBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOwotICAgIFtS
YWlzZXNFeGNlcHRpb25dIHZvaWQgZWxsaXBzZSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0
cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCByYWRpdXNYLCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgcmFkaXVzWSwgdW5yZXN0cmljdGVkIGZsb2F0IHJvdGF0aW9uLCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc3RhcnRBbmdsZSwgdW5yZXN0cmljdGVkIGZsb2F0IGVuZEFuZ2xlLCBvcHRpb25hbCBi
b29sZWFuIGFudGljbG9ja3dpc2UgPSBmYWxzZSk7Ci0KICAgICB2b2lkIGZpbGwoRE9NUGF0aCBw
YXRoLCBvcHRpb25hbCBDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nID0gIm5vbnplcm8iKTsKICAg
ICB2b2lkIHN0cm9rZShET01QYXRoIHBhdGgpOwogICAgIHZvaWQgY2xpcChET01QYXRoIHBhdGgs
IG9wdGlvbmFsIENhbnZhc1dpbmRpbmdSdWxlIHdpbmRpbmcgPSAibm9uemVybyIpOwpAQCAtMTk5
LDMgKzE4NSw0IEBAIGludGVyZmFjZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0IHsKICAgICBhdHRyaWJ1dGUgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGlt
YWdlU21vb3RoaW5nUXVhbGl0eTsKIH07CiAKK0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBpbXBs
ZW1lbnRzIENhbnZhc1BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9ET01QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9ET01QYXRoLmgKaW5kZXgg
Nzk0N2IwMGMxNDg0NTAzYmM1YTk4YjFjYzk4ZDI1MWM3Y2UxMjY3NC4uM2VjOWQxYWI3N2MxOGQw
ZGE0Y2FiZTg3YzkxOGUwYjBkZGQ5ZDU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRE9NUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RPTVBh
dGguaApAQCAtMjgsMTQgKzI4LDE0IEBACiAjaWZuZGVmIERPTVBhdGhfaAogI2RlZmluZSBET01Q
YXRoX2gKIAotI2luY2x1ZGUgIkNhbnZhc1BhdGhNZXRob2RzLmgiCisjaW5jbHVkZSAiQ2FudmFz
UGF0aC5oIgogI2luY2x1ZGUgIlNWR01hdHJpeC5oIgogI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRp
ZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIERPTVBhdGggZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxET01QYXRoPiwgcHVibGljIENhbnZhc1BhdGhNZXRob2RzIHsKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIERPTVBhdGggZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxET01QYXRoPiwgcHVibGljIENh
bnZhc1BhdGggewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZp
cnR1YWwgfkRPTVBhdGgoKTsKQEAgLTY1LDcgKzY1LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIERPTVBhdGgoKSB7IH0KLSAgICBET01QYXRoKGNvbnN0IFBhdGgmIHBhdGgpIDogQ2FudmFz
UGF0aE1ldGhvZHMocGF0aCkgeyB9CisgICAgRE9NUGF0aChjb25zdCBQYXRoJiBwYXRoKQorICAg
ICAgICA6IENhbnZhc1BhdGgocGF0aCkKKyAgICB7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0RPTVBhdGguaWRsIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRE9NUGF0aC5pZGwKaW5kZXggZTNjNTE2YTE5ZTZiM2I4OThlMDZiMTEzMWZjZjQ0
MTNjN2ZkMzJiOC4uNDBiZDJiYTVjOGNmYjVhOWU5YTdmOTRhMGEwYTA2OTkxN2RjZTlmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRE9NUGF0aC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRE9NUGF0aC5pZGwKQEAgLTM3LDM4ICszNyw2IEBACiAg
ICAgLy8gW0NvbmRpdGlvbmFsPUNBTlZBU19QQVRIXSB2b2lkIGFkZFBhdGgoRE9NUGF0aCBwYXRo
LCBvcHRpb25hbCBTVkdNYXRyaXggdHJhbnNmb3JtKTsKICAgICBbQ29uZGl0aW9uYWw9Q0FOVkFT
X1BBVEhdIHZvaWQgYWRkUGF0aChET01QYXRoPyBwYXRoKTsKICAgICBbQ29uZGl0aW9uYWw9Q0FO
VkFTX1BBVEhdIHZvaWQgYWRkUGF0aChET01QYXRoPyBwYXRoLCBTVkdNYXRyaXggdHJhbnNmb3Jt
KTsKLQotICAgIC8vIEZJWE1FOiBUaGVzZSBtZXRob2RzIHNob3VsZCBiZSBzaGFyZWQgd2l0aCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQgaW4gdGhlIENhbnZhc1BhdGhNZXRob2RzIGludGVyZmFj
ZS4KLSAgICB2b2lkIGNsb3NlUGF0aCgpOwotICAgIHZvaWQgbW92ZVRvKG9wdGlvbmFsIGZsb2F0
IHggPSBOYU4sCi0gICAgICAgICAgICAgICAgb3B0aW9uYWwgZmxvYXQgeSA9IE5hTik7Ci0gICAg
dm9pZCBsaW5lVG8ob3B0aW9uYWwgZmxvYXQgeCA9IE5hTiwKLSAgICAgICAgICAgICAgICBvcHRp
b25hbCBmbG9hdCB5ID0gTmFOKTsKLSAgICB2b2lkIHF1YWRyYXRpY0N1cnZlVG8ob3B0aW9uYWwg
ZmxvYXQgY3B4ID0gTmFOLAotICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBmbG9h
dCBjcHkgPSBOYU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGZsb2F0IHgg
PSBOYU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGZsb2F0IHkgPSBOYU4p
OwotICAgIHZvaWQgYmV6aWVyQ3VydmVUbyhvcHRpb25hbCBmbG9hdCBjcDF4ID0gTmFOLAotICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBmbG9hdCBjcDF5ID0gTmFOLAotICAgICAgICAg
ICAgICAgICAgICAgICBvcHRpb25hbCBmbG9hdCBjcDJ4ID0gTmFOLAotICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpb25hbCBmbG9hdCBjcDJ5ID0gTmFOLAotICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25hbCBmbG9hdCB4ID0gTmFOLAotICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBmbG9hdCB5ID0gTmFOKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGFyY1RvKG9wdGlv
bmFsIGZsb2F0IHgxID0gTmFOLAotICAgICAgICAgICAgICAgb3B0aW9uYWwgZmxvYXQgeTEgPSBO
YU4sCi0gICAgICAgICAgICAgICBvcHRpb25hbCBmbG9hdCB4MiA9IE5hTiwKLSAgICAgICAgICAg
ICAgIG9wdGlvbmFsIGZsb2F0IHkyID0gTmFOLAotICAgICAgICAgICAgICAgb3B0aW9uYWwgZmxv
YXQgcmFkaXVzID0gTmFOKTsKLSAgICB2b2lkIHJlY3Qob3B0aW9uYWwgZmxvYXQgeCA9IE5hTiwK
LSAgICAgICAgICAgICAgb3B0aW9uYWwgZmxvYXQgeSA9IE5hTiwKLSAgICAgICAgICAgICAgb3B0
aW9uYWwgZmxvYXQgd2lkdGggPSBOYU4sCi0gICAgICAgICAgICAgIG9wdGlvbmFsIGZsb2F0IGhl
aWdodCA9IE5hTik7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBhcmMob3B0aW9uYWwgZmxv
YXQgeCA9IE5hTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBmbG9h
dCB5ID0gTmFOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGZsb2F0
IHJhZGl1cyA9IE5hTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBm
bG9hdCBzdGFydEFuZ2xlID0gTmFOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbmFsIGZsb2F0IGVuZEFuZ2xlID0gTmFOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbmFsIGJvb2xlYW4gYW50aWNsb2Nrd2lzZSA9IGZhbHNlKTsKLSAgICBbUmFpc2Vz
RXhjZXB0aW9uXSB2b2lkIGVsbGlwc2UodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3Rl
ZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgcmFkaXVzWCwgdW5yZXN0cmljdGVkIGZsb2F0
IHJhZGl1c1ksIHVucmVzdHJpY3RlZCBmbG9hdCByb3RhdGlvbiwgdW5yZXN0cmljdGVkIGZsb2F0
IHN0YXJ0QW5nbGUsIHVucmVzdHJpY3RlZCBmbG9hdCBlbmRBbmdsZSwgb3B0aW9uYWwgYm9vbGVh
biBhbnRpY2xvY2t3aXNlID0gZmFsc2UpOwotCiB9OworCitET01QYXRoIGltcGxlbWVudHMgQ2Fu
dmFzUGF0aDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDBkMGI4ZjNkMjBjZmQw
ZjI1M2FkM2Y4MTljMjFmNmNjYWRhYTk3MmYuLjI1MzZjZDhlZGVmYmFhNzdkYWIzNDY3NDhkNzM5
YTY2MWZiMDJlMTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2
IEBACiAyMDE2LTA4LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAg
ICAgTWFyayBDYW52YXNQYXRoIG9wZXJhdGlvbnMnIHBhcmFtZXRlcnMgYXMgbWFuZGF0b3J5IHdo
ZW4gdGhleSBzaG91bGQgYmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTAxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlYmFzZWxpbmUgVzNDIHRlc3Qgbm93IHRoYXQgbW9yZSBjaGVja3MgYXJlIHBh
c3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNl
cy1leHBlY3RlZC50eHQ6CisKKzIwMTYtMDgtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKwogICAgICAgICBBdHRyLnByZWZpeCAvIEVsZW1lbnQucHJlZml4IGF0dHJpYnV0ZSBz
aG91bGQgYmUgcmVhZG9ubHkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MDk5OAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9pbnRlcmZh
Y2VzLWV4cGVjdGVkLnR4dAppbmRleCA0NTU1ZGRkZDE0NWFiOGMwZDFiZjk2MmY4NmE1OGRiYjI5
YjNhNzcxLi5iMjZjNWU0NDRlNzBkOTRmNmZiYzhhM2E0ZjYzNTU3NjU2YWQzYTAxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9t
L2ludGVyZmFjZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vaW50ZXJmYWNlcy1leHBlY3RlZC50eHQKQEAgLTUx
MDgsMTQgKzUxMDgsMTQgQEAgRkFJTCBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRpb24gYWRkUGF0
aEJ5U3Ryb2tpbmdUZXh0KERPTVN0cmluZyxDYW52YXNEcmF3aW5nU3QKIEZBSUwgUGF0aDJEIGlu
dGVyZmFjZTogb3BlcmF0aW9uIGFkZFRleHQoRE9NU3RyaW5nLENhbnZhc0RyYXdpbmdTdHlsZXMs
U1ZHTWF0cml4LFBhdGgyRCx1bnJlc3RyaWN0ZWQgZG91YmxlKSBhc3NlcnRfb3duX3Byb3BlcnR5
OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9u
IGV4cGVjdGVkIHByb3BlcnR5ICJhZGRUZXh0IiBtaXNzaW5nCiBGQUlMIFBhdGgyRCBpbnRlcmZh
Y2U6IG9wZXJhdGlvbiBhZGRQYXRoQnlTdHJva2luZ1RleHQoRE9NU3RyaW5nLENhbnZhc0RyYXdp
bmdTdHlsZXMsU1ZHTWF0cml4LFBhdGgyRCx1bnJlc3RyaWN0ZWQgZG91YmxlKSBhc3NlcnRfb3du
X3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5vbi1zdGF0aWMg
b3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJhZGRQYXRoQnlTdHJva2luZ1RleHQiIG1pc3Np
bmcKIFBBU1MgUGF0aDJEIGludGVyZmFjZTogb3BlcmF0aW9uIGNsb3NlUGF0aCgpIAotRkFJTCBQ
YXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRpb24gbW92ZVRvKHVucmVzdHJpY3RlZCBkb3VibGUsdW5y
ZXN0cmljdGVkIGRvdWJsZSkgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5n
dGggZXhwZWN0ZWQgMiBidXQgZ290IDAKLUZBSUwgUGF0aDJEIGludGVyZmFjZTogb3BlcmF0aW9u
IGxpbmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUpIGFzc2VydF9l
cXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIGV4cGVjdGVkIDIgYnV0IGdvdCAwCi1G
QUlMIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBxdWFkcmF0aWNDdXJ2ZVRvKHVucmVzdHJp
Y3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVz
dHJpY3RlZCBkb3VibGUpIGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3Ro
IGV4cGVjdGVkIDQgYnV0IGdvdCAwCi1GQUlMIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBi
ZXppZXJDdXJ2ZVRvKHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJl
c3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1
bnJlc3RyaWN0ZWQgZG91YmxlKSBhc3NlcnRfZXF1YWxzOiBwcm9wZXJ0eSBoYXMgd3JvbmcgLmxl
bmd0aCBleHBlY3RlZCA2IGJ1dCBnb3QgMAotRkFJTCBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRp
b24gYXJjVG8odW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJp
Y3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlKSBhc3Nl
cnRfZXF1YWxzOiBwcm9wZXJ0eSBoYXMgd3JvbmcgLmxlbmd0aCBleHBlY3RlZCA1IGJ1dCBnb3Qg
MAotRkFJTCBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRpb24gYXJjVG8odW5yZXN0cmljdGVkIGRv
dWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVk
IGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmlj
dGVkIGRvdWJsZSkgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhw
ZWN0ZWQgNSBidXQgZ290IDAKLUZBSUwgUGF0aDJEIGludGVyZmFjZTogb3BlcmF0aW9uIHJlY3Qo
dW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3Vi
bGUsdW5yZXN0cmljdGVkIGRvdWJsZSkgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25n
IC5sZW5ndGggZXhwZWN0ZWQgNCBidXQgZ290IDAKLUZBSUwgUGF0aDJEIGludGVyZmFjZTogb3Bl
cmF0aW9uIGFyYyh1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0
cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsYm9v
bGVhbikgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQg
NSBidXQgZ290IDAKK1BBU1MgUGF0aDJEIGludGVyZmFjZTogb3BlcmF0aW9uIG1vdmVUbyh1bnJl
c3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUpIAorUEFTUyBQYXRoMkQgaW50ZXJm
YWNlOiBvcGVyYXRpb24gbGluZVRvKHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRv
dWJsZSkgCitQQVNTIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBxdWFkcmF0aWNDdXJ2ZVRv
KHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91
YmxlLHVucmVzdHJpY3RlZCBkb3VibGUpIAorUEFTUyBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRp
b24gYmV6aWVyQ3VydmVUbyh1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUs
dW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3Vi
bGUsdW5yZXN0cmljdGVkIGRvdWJsZSkgCitQQVNTIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlv
biBhcmNUbyh1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmlj
dGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUpIAorUEFT
UyBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRpb24gYXJjVG8odW5yZXN0cmljdGVkIGRvdWJsZSx1
bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJs
ZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRv
dWJsZSkgCitQQVNTIFBhdGgyRCBpbnRlcmZhY2U6IG9wZXJhdGlvbiByZWN0KHVucmVzdHJpY3Rl
ZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJp
Y3RlZCBkb3VibGUpIAorUEFTUyBQYXRoMkQgaW50ZXJmYWNlOiBvcGVyYXRpb24gYXJjKHVucmVz
dHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1bnJlc3RyaWN0ZWQgZG91YmxlLHVu
cmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSxib29sZWFuKSAKIFBBU1MgUGF0
aDJEIGludGVyZmFjZTogb3BlcmF0aW9uIGVsbGlwc2UodW5yZXN0cmljdGVkIGRvdWJsZSx1bnJl
c3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJsZSx1
bnJlc3RyaWN0ZWQgZG91YmxlLHVucmVzdHJpY3RlZCBkb3VibGUsdW5yZXN0cmljdGVkIGRvdWJs
ZSxib29sZWFuKSAKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZh
Y2Ugb2JqZWN0IGxlbmd0aCAK
</data>

          </attachment>
      

    </bug>

</bugzilla>