<?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>142641</bug_id>
          
          <creation_ts>2015-03-12 13:45:29 -0700</creation_ts>
          <short_desc>Remove DrawingBuffer</short_desc>
          <delta_ts>2015-03-12 19:02:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1076738</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-03-12 13:45:29 -0700</bug_when>
    <thetext>Remove DrawingBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076754</commentid>
    <comment_count>1</comment_count>
      <attachid>248545</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-03-12 14:20:49 -0700</bug_when>
    <thetext>Created attachment 248545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076756</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-12 14:22:41 -0700</bug_when>
    <thetext>Attachment 248545 did not pass style-queue:


ERROR: Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:1394:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076820</commentid>
    <comment_count>3</comment_count>
      <attachid>248545</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-12 19:02:14 -0700</bug_when>
    <thetext>Comment on attachment 248545
Patch

Clearing flags on attachment: 248545

Committed r181468: &lt;http://trac.webkit.org/changeset/181468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076821</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-12 19:02:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248545</attachid>
            <date>2015-03-12 14:20:49 -0700</date>
            <delta_ts>2015-03-12 19:02:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142641-20150312142321.patch</filename>
            <type>text/plain</type>
            <size>68682</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgzYjgxNzMxZDM5ZjBl
MmM1NzM5Yjc4OGQ3MjA2YzdiZWFjM2JkZC4uZTJiZDdjMzM5NjMyY2Q1ZjM3MGFlOTFiNDk5MDcy
Zjk3NmFjYTZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE1LTAzLTEyICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUgRHJhd2lu
Z0J1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQyNjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIHRoZSBEcmF3aW5nQnVmZmVyIGNsYXNzLiBPYmplY3RzIG9mIHRoaXMgdHlwZSB3ZXJl
IG9ubHkgaGVsZCBpbiB0aGUKKyAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0IChsYXRlciBy
ZW5hbWVkIHRvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UpIG9uIHRoZQorICAgICAgICBDaHJv
bWl1bSBwb3J0LCB3aXRoIHRoZSByZWxldmFudCBjb2RlIHJlbW92ZWQgaW4gcjE0Nzg4OC4gU2lu
Y2UgdGhlbiwgdGhlCisgICAgICAgIG1fZHJhd2luZ0J1ZmZlciBtZW1iZXIgdmFyaWFibGUgaGFz
IGFsd2F5cyBiZWVuIG51bGwuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojpjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29w
eVRleEltYWdlMkQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjppbml0aWFsaXplTmV3Q29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXN0cm95R3JhcGhpY3NDb250ZXh0M0QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFya0NvbnRleHRD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNs
ZWFySWZDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc2hh
cGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd2lu
Z0J1ZmZlcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmRyYXdpbmdCdWZmZXJIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGlzYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbmFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Q29udGV4dEF0
dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0Qm91bmRGcmFtZWJ1ZmZlcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29u
dGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlcjo6U2NvcGVkRHJh
d2luZ0J1ZmZlckJpbmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY29wZWREcmF3
aW5nQnVmZmVyQmluZGVyOjp+U2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlcik6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9EcmF3aW5nQnVmZmVyQ2Fpcm8uY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSk6CisKIDIw
MTUtMDMtMTIgIFNlYmFzdGlhbiBEcsO2Z2UgIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgog
CiAgICAgICAgIFN0b3AgdXNpbmcgc2luZ2xlLWluY2x1ZGUgaGVhZGVycyB0aGF0IGFyZSBvbmx5
IGF2YWlsYWJsZSBzaW5jZSBHU3RyZWFtZXIgPj0gMS4yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBkODE5ZGI4MGU1NWZiNmEwYzE4MjU3YmZkOWRiYWNjMGFmNWM0YTczLi5kOGM2MDIwYmQzY2M4
ZWEyNWYwNmUwYTU2ZjkwYmZlMWNkNTM2ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzA3
NCw4ICszMDc0LDYgQEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0
Q29udmVydGVyLmNwcAotCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVm
ZmVyLmNwcAogICAgICkKIGVuZGlmICgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
ZGNlMzY3MGJjMzU1ZmY3NmJhODhlYjgxM2MyNTQ0NTUzNTYzOWI1MS4uZjBhM2M0MzEwNGM5N2Q5
ZWU2MTIxNTI4YjEzZDQyN2M3ZDIyNjZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAg
LTExMyw3ICsxMTMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9JbXBsLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRHJhd2luZ0J1ZmZlckNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJm
YnV6ek5HLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYWRpZW50Q2Fpcm8uY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDQ1MjZjMDY2OGI5NjMwMzE5MzQ0NDM4NzMw
MzU4NTkyMDkyMDNhNjMuLmExMDc4NDE1NTU2ZDU2MWMxMjIxNDEzMGIyNTFkOGM1OGJlZWRiZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC03MSw3ICs3MSw2IEBAIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JhY2tpbmdTdG9y
ZUJhY2tlbmRDYWlyb1gxMS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJ
bWFnZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVz
LmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9GbG9hdFJlY3RDYWlyby5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDlmNmMyYjg4N2Y0OTU2ZjY4Njg3NTY0ZDY3
YWU0M2E4MzU5OThiNTYuLjUxYTQ4ZmRkN2MyZDM1M2E3ZmRmNjEyOGE2YjE3ZTM4MThkMzU3Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpA
QCAtNzQzMiw3ICs3NDMyLDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZWdsXEdMQ29udGV4dEVHTC5jcHAiIC8+Ci0g
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xncHVcRHJhd2luZ0J1
ZmZlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xncHVcVGV4dHVyZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xncHVcVGlsaW5nRGF0YS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGb3JtYXRDb252ZXJ0ZXIuY3BwIiAvPgpAQCAtMTk0NDks
NyArMTk0NDgsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xlZ2xcR0xDb250ZXh0RUdMLmgiIC8+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xncHVcRHJhd2luZ0J1ZmZlci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3B1XFRleHR1
cmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdw
dVxUaWxpbmdEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xGb3JtYXRDb252ZXJ0ZXIuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAyYjQwMjhiYzNh
NWYzZjc1ZDZlNjVhNDYwNDUxZDRlNGM2ZjEyN2VhLi5hODQ2YjIyYjFhODAxNDBlM2QwMzAzNmVl
Nzg5MjhhOGE2MzdkODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC02NTExLDkgKzY1MTEsNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcT3BlbkdMU2hpbXMuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdwdVxE
cmF3aW5nQnVmZmVyLmNwcCI+Ci0gICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGdwdTwv
RmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcZ3B1XFRleHR1cmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1c
Z3JhcGhpY3NcZ3B1PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMzg4OSw5ICsxMzg4
Niw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xPcGVu
R0xTaGltcy5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdwdVxEcmF3aW5nQnVmZmVyLmgiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGlj
c1xncHU8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGdwdVxUZXh0dXJlLmgiPgogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljc1xncHU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NjhhNzJk
MmNlNzc4YTk5ZTI5M2MyYWM0MWUwYjgyMTRlYTU5NjI0Li4zMDAyMDFhYTQ2NTEyMjBhY2U1ODli
MTYzMzc2YWZkY2QzZjVhZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjY1LDEzICsxNjY1LDEwIEBACiAJCTQ5ODM5MTUy
MEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4MzkxNEYwRjFFNzZCNDAw
QzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggKi87IH07CiAJCTQ5ODM5MTU4
MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4MzkxNTUwRjFFNzc2OTAwQzIzNzgyIC8q
IFdlYktpdENTU01hdHJpeC5jcHAgKi87IH07CiAJCTQ5ODM5MTU5MEYxRTc3NjkwMEMyMzc4MiAv
KiBXZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5ODM5MTU2MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXguaCAq
LzsgfTsKLQkJNDk4NzcwREIxMjQyQzUzNTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4NzcwQzIxMjQy
QzUzNTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXIuY3BwICovOyB9OwotCQk0OTg3NzBEQzEyNDJD
NTM1MDAyMjI2QkEgLyogRHJhd2luZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4NzcwQzMxMjQyQzUzNTAwMjIyNkJBIC8qIERyYXdpbmdC
dWZmZXIuaCAqLzsgfTsKIAkJNDk4NzcwRjAxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4NzcwRDcx
MjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuY3BwICovOyB9OwogCQk0OTg3NzBGMTEyNDJDNTM1
MDAyMjI2QkEgLyogVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDk4NzcwRDgxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuaCAqLzsgfTsK
IAkJNDk4NzcwRjIxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4NzcwRDkxMjQyQzUzNTAwMjIy
NkJBIC8qIFRpbGluZ0RhdGEuY3BwICovOyB9OwogCQk0OTg3NzBGMzEyNDJDNTM1MDAyMjI2QkEg
LyogVGlsaW5nRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk4NzcwREExMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuaCAqLzsgfTsKLQkJ
NDk4NzcxNTMxMjQzRjlGQTAwMjIyNkJBIC8qIERyYXdpbmdCdWZmZXJNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTg3NzE1MjEyNDNGOUZBMDAy
MjI2QkEgLyogRHJhd2luZ0J1ZmZlck1hYy5tbSAqLzsgfTsKIAkJNDk5OEFFQzYxM0Y5RDBFQTAw
OTBCMUFBIC8qIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTk4QUVDNDEzRjlEMEVBMDA5MEIxQUEg
LyogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCAqLzsgfTsKIAkJNDk5OEFFQ0QxM0Y5
RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5OEFFQ0IxM0Y5RDZD
OTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwICovOyB9Owog
CQk0OTk4QUVDRTEzRjlENkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5
OEFFQ0MxM0Y5RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2su
aCAqLzsgfTsKQEAgLTg3OTgsMTMgKzg3OTUsMTAgQEAKIAkJNDk4MzkxNTUwRjFFNzc2OTAwQzIz
NzgyIC8qIFdlYktpdENTU01hdHJpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJLaXRDU1NNYXRyaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTgzOTE1NjBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0cml4LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU01hdHJpeC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0OTgzOTE1NzBGMUU3NzY5MDBDMjM3ODIgLyogV2ViS2l0Q1NTTWF0
cml4LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRDU1NNYXRyaXguaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTg3NzBDMjEyNDJDNTM1MDAyMjI2QkEgLyogRHJh
d2luZ0J1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEcmF3
aW5nQnVmZmVyLmNwcDsgcGF0aCA9IGdwdS9EcmF3aW5nQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDk4NzcwQzMxMjQyQzUzNTAwMjIyNkJBIC8qIERyYXdpbmdCdWZm
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHJhd2luZ0J1ZmZlci5oOyBw
YXRoID0gZ3B1L0RyYXdpbmdCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDk4NzcwRDcxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gVGV4dHVyZS5jcHA7IHBhdGggPSBncHUvVGV4dHVyZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODc3MEQ4MTI0MkM1MzUwMDIyMjZCQSAv
KiBUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHR1cmUuaDsg
cGF0aCA9IGdwdS9UZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5ODc3
MEQ5MTI0MkM1MzUwMDIyMjZCQSAvKiBUaWxpbmdEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFRpbGluZ0RhdGEuY3BwOyBwYXRoID0gZ3B1L1RpbGluZ0RhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTg3NzBEQTEyNDJDNTM1MDAyMjI2
QkEgLyogVGlsaW5nRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUaWxp
bmdEYXRhLmg7IHBhdGggPSBncHUvVGlsaW5nRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0OTg3NzE1MjEyNDNGOUZBMDAyMjI2QkEgLyogRHJhd2luZ0J1ZmZlck1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IERyYXdpbmdCdWZmZXJNYWMu
bW07IHBhdGggPSBncHUvbWFjL0RyYXdpbmdCdWZmZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ5OThBRUM0MTNGOUQwRUEwMDkwQjFBQSAvKiBSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTk4QUVDNTEzRjlEMEVBMDA5MEIxQUEgLyogUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2su
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNr
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5OEFFQ0IxM0Y5RDZDOTAwOTBC
MUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjA3Miw4ICsxNjA2Niw2IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQ5ODc3MTE2MTI0MkNEN0Yw
MDIyMjZCQSAvKiBtYWMgKi8sCi0JCQkJNDk4NzcwQzIxMjQyQzUzNTAwMjIyNkJBIC8qIERyYXdp
bmdCdWZmZXIuY3BwICovLAotCQkJCTQ5ODc3MEMzMTI0MkM1MzUwMDIyMjZCQSAvKiBEcmF3aW5n
QnVmZmVyLmggKi8sCiAJCQkJNDk4NzcwRDcxMjQyQzUzNTAwMjIyNkJBIC8qIFRleHR1cmUuY3Bw
ICovLAogCQkJCTQ5ODc3MEQ4MTI0MkM1MzUwMDIyMjZCQSAvKiBUZXh0dXJlLmggKi8sCiAJCQkJ
NDk4NzcwRDkxMjQyQzUzNTAwMjIyNkJBIC8qIFRpbGluZ0RhdGEuY3BwICovLApAQCAtMTYwODIs
MTQgKzE2MDc0LDYgQEAKIAkJCW5hbWUgPSBncHU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwogCQl9OwotCQk0OTg3NzExNjEyNDJDRDdGMDAyMjI2QkEgLyogbWFjICovID0gewotCQkJaXNh
ID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk0OTg3NzE1MjEyNDNGOUZBMDAyMjI2
QkEgLyogRHJhd2luZ0J1ZmZlck1hYy5tbSAqLywKLQkJCSk7Ci0JCQluYW1lID0gbWFjOwotCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNDk5QjNFQzAxMjhDQ0MxODAwRTcyNkMy
IC8qIGNhICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI0
NDQ0LDcgKzI0NDI4LDYgQEAKIAkJCQlBN0I2RTY5RjBCMjkxQTk2MDBEMDUyOUYgLyogRHJhZ0Rh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0ZCM0QyMEI3RUQxMEEwMDcwQzMyRCAvKiBEcmFn
SW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgxRjY1RkY2MTM3ODhGQUEwMEZGNkYyRCAvKiBE
cmFnU3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5ODc3MERDMTI0MkM1MzUwMDIyMjZCQSAv
KiBEcmF3aW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUJBNjZGMTE3NDJCRDg2MDBD
MjAyNTEgLyogRHluYW1pY0xpbmtlckludGVycG9zaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RTEyNTI0NTFBMTZDMjI1MDA4NjQ0ODAgLyogRHluYW1pY0xpbmtlclNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQ2RUQyQzgxMzZCOEU2NjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzk1OCw4ICsyNzk0MSw2IEBACiAJCQkJQTdDRkIzRDEwQjdF
RDEwQTAwNzBDMzJEIC8qIERyYWdJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0My
MzE4ODMzMEE5MDBDOTU0QjUgLyogRHJhZ0ltYWdlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTdDRkIzRDUwQjdFRDExODAwNzBDMzJEIC8qIERyYWdJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICov
LAotCQkJCTQ5ODc3MERCMTI0MkM1MzUwMDIyMjZCQSAvKiBEcmF3aW5nQnVmZmVyLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTQ5ODc3MTUzMTI0M0Y5RkEwMDIyMjZCQSAvKiBEcmF3aW5nQnVmZmVy
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ2RUQyQzcxMzZCOEU2NjAwM0NGMDcyIC8qIER5
bmFtaWNzQ29tcHJlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1NjEzN0I2NTNC
MDAwMDhEQ0UgLyogRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZENkVEMkMzMTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0NWMzOTAzNmJlZWMzYTBlMDk5MzZjMDI0
MmM4NTdjNzFhNjkwNGU3Li41YWYyNTdlOGRjNzViMmUxMTMxM2Y3M2VkNjkzMTM5Y2QzMDU4NjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcApAQCAtMTA5MiwxMSArMTA5Miw5IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNECiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsKLSAg
ICBpZiAoaXNSZXNvdXJjZVNhZmUoKSkgewotICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVyQmlu
ZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdl
dCgpKTsKKyAgICBpZiAoaXNSZXNvdXJjZVNhZmUoKSkKICAgICAgICAgbV9jb250ZXh0LT5jb3B5
VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyKTsKLSAgICB9IGVsc2UgewotICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVy
QmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5n
LmdldCgpKTsKKyAgICBlbHNlIHsKICAgICAgICAgR0MzRGludCBjbGlwcGVkWCwgY2xpcHBlZFk7
CiAgICAgICAgIEdDM0RzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7CiAgICAgICAg
IGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1ZmZlcldpZHRo
KCksIGdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xpcHBlZFksICZj
bGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMjcxZTE3ZjIwYWNm
MWQ3NmNhNGE4OTdhZjJkYjQyOTRhNzU4ZTQzZi4uOWNlYmViNjg4ZjY2ODJmMTc1MmUwNmQ2NzJh
NjU2Y2Q3OTg3M2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00NDEsMTEgKzQ0MSw5IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2xlYXJJZkNvbXBvc2l0
ZWQoKTsKLSAgICBpZiAoaXNSZXNvdXJjZVNhZmUoKSkgewotICAgICAgICBTY29wZWREcmF3aW5n
QnVmZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJC
aW5kaW5nLmdldCgpKTsKKyAgICBpZiAoaXNSZXNvdXJjZVNhZmUoKSkKICAgICAgICAgbV9jb250
ZXh0LT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKLSAgICB9IGVsc2UgewotICAgICAgICBTY29wZWREcmF3
aW5nQnVmZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZm
ZXJCaW5kaW5nLmdldCgpKTsKKyAgICBlbHNlIHsKICAgICAgICAgR0MzRGludCBjbGlwcGVkWCwg
Y2xpcHBlZFk7CiAgICAgICAgIEdDM0RzaXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7
CiAgICAgICAgIGlmIChjbGlwMkQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1
ZmZlcldpZHRoKCksIGdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xp
cHBlZFksICZjbGlwcGVkV2lkdGgsICZjbGlwcGVkSGVpZ2h0KSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApp
bmRleCA4ODZhNGM1YjVjYTRhOWFhZTk3MTdiNDAwYjAyYzdmNDdlODFkZDcxLi4yMjc0OGY3ZGI2
ZjNhMDZhMDg3ZjAzMTUwYWMzYTQ2ZWEwZTg1M2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDI5
LDcgKzQyOSw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UoSFRNTENhbnZhc0VsZW1lbnQqIHBhc3NlZENhCiAgICAgOiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0KHBhc3NlZENhbnZhcykKICAgICAsIEFjdGl2ZURPTU9iamVjdCgmcGFzc2VkQ2Fu
dmFzLT5kb2N1bWVudCgpKQogICAgICwgbV9jb250ZXh0KDApCi0gICAgLCBtX2RyYXdpbmdCdWZm
ZXIoMCkKICAgICAsIG1fZGlzcGF0Y2hDb250ZXh0TG9zdEV2ZW50VGltZXIoKnRoaXMsICZXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaXNwYXRjaENvbnRleHRMb3N0RXZlbnQpCiAgICAgLCBt
X3Jlc3RvcmVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9yZXN0b3JlVGltZXIoKnRoaXMsICZXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KQpAQCAtNDQ4LDcgKzQ0
Nyw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UoSFRNTENhbnZhc0VsZW1lbnQqIHBhc3NlZENhCiAgICAgOiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0KHBhc3NlZENhbnZhcykKICAgICAsIEFjdGl2ZURPTU9iamVjdCgmcGFzc2VkQ2FudmFzLT5k
b2N1bWVudCgpKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2RyYXdpbmdCdWZm
ZXIoMCkKICAgICAsIG1fZGlzcGF0Y2hDb250ZXh0TG9zdEV2ZW50VGltZXIoKnRoaXMsICZXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaXNwYXRjaENvbnRleHRMb3N0RXZlbnQpCiAgICAgLCBt
X3Jlc3RvcmVBbGxvd2VkKGZhbHNlKQogICAgICwgbV9yZXN0b3JlVGltZXIoKnRoaXMsICZXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KQpAQCAtNDcwLDkgKzQ2
OCw2IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UoSFRNTENhbnZhc0VsZW1lbnQqIHBhc3NlZENhCiAgICAgbV9tYXhWaWV3cG9ydERpbXNbMF0g
PSBtX21heFZpZXdwb3J0RGltc1sxXSA9IDA7CiAgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHQzRDo6TUFYX1ZJRVdQT1JUX0RJTVMsIG1fbWF4Vmlld3BvcnREaW1zKTsK
IAotICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCi0gICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+Ymlu
ZCgpOwotCiAgICAgc2V0dXBGbGFncygpOwogICAgIGluaXRpYWxpemVOZXdDb250ZXh0KCk7CiB9
CkBAIC01NDcsOSArNTQyLDYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjppbml0
aWFsaXplTmV3Q29udGV4dCgpCiAgICAgICAgIGluaXRWZXJ0ZXhBdHRyaWIwKCk7CiAKICAgICBJ
bnRTaXplIGNhbnZhc1NpemUgPSBjbGFtcGVkQ2FudmFzU2l6ZSgpOwotICAgIGlmIChtX2RyYXdp
bmdCdWZmZXIpCi0gICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+cmVzZXQoY2FudmFzU2l6ZSk7Ci0K
ICAgICBtX2NvbnRleHQtPnJlc2hhcGUoY2FudmFzU2l6ZS53aWR0aCgpLCBjYW52YXNTaXplLmhl
aWdodCgpKTsKICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIGNhbnZhc1NpemUud2lkdGgo
KSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CiAgICAgbV9jb250ZXh0LT5zY2lzc29yKDAsIDAsIGNh
bnZhc1NpemUud2lkdGgoKSwgY2FudmFzU2l6ZS5oZWlnaHQoKSk7CkBAIC02MjMsMTEgKzYxNSw2
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVzdHJveUdyYXBoaWNzQ29udGV4
dDNEKCkKICAgICBpZiAobV9pc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1
cm47CiAKLSAgICAvLyBUaGUgZHJhd2luZyBidWZmZXIgaG9sZHMgYSBjb250ZXh0IHJlZmVyZW5j
ZS4gSXQgbXVzdCBhbHNvIGJlIGRlc3Ryb3llZAotICAgIC8vIGluIG9yZGVyIGZvciB0aGUgY29u
dGV4dCB0byBiZSByZWxlYXNlZC4KLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQotICAgICAgICBt
X2RyYXdpbmdCdWZmZXIuY2xlYXIoKTsKLQogICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAg
bV9jb250ZXh0LT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKG51bGxwdHIpOwogICAgICAgICBtX2Nv
bnRleHQtPnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKG51bGxwdHIpOwpAQCAtNjQyLDkgKzYyOSw2
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bWFya0NvbnRleHRDaGFuZ2VkKCkK
IAogICAgIG1fY29udGV4dC0+bWFya0NvbnRleHRDaGFuZ2VkKCk7CiAKLSAgICBpZiAobV9kcmF3
aW5nQnVmZmVyKQotICAgICAgICBtX2RyYXdpbmdCdWZmZXItPm1hcmtDb250ZW50c0NoYW5nZWQo
KTsKLQogICAgIG1fbGF5ZXJDbGVhcmVkID0gZmFsc2U7CiAgICAgUmVuZGVyQm94KiByZW5kZXJC
b3ggPSBjYW52YXMoKS0+cmVuZGVyQm94KCk7CiAgICAgaWYgKGlzQWNjZWxlcmF0ZWQoKSAmJiBy
ZW5kZXJCb3ggJiYgcmVuZGVyQm94LT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpIHsKQEAg
LTY5NywxMyArNjgxLDkgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjbGVhcklm
Q29tcG9zaXRlZChHQzNEYml0ZmllbGQgbWFzaykKICAgICAgICAgY2xlYXJNYXNrIHw9IEdyYXBo
aWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CiAgICAgICAgIG1fY29udGV4dC0+c3Rl
bmNpbE1hc2tTZXBhcmF0ZShHcmFwaGljc0NvbnRleHQzRDo6RlJPTlQsIDB4RkZGRkZGRkYpOwog
ICAgIH0KLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQotICAgICAgICBtX2RyYXdpbmdCdWZmZXIt
PmNsZWFyRnJhbWVidWZmZXJzKGNsZWFyTWFzayk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmICht
X2ZyYW1lYnVmZmVyQmluZGluZykKLSAgICAgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIG1fY29udGV4
dC0+Y2xlYXIoY2xlYXJNYXNrKTsKLSAgICB9CisgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5n
KQorICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIDApOworICAgIG1fY29udGV4dC0+Y2xlYXIoY2xlYXJNYXNrKTsKIAogICAg
IHJlc3RvcmVTdGF0ZUFmdGVyQ2xlYXIoKTsKICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcp
CkBAIC03NTksMTYgKzczOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQogICAgIGNhbnZhcygpLT5jbGVhckNvcGllZElt
YWdlKCk7CiAgICAgbV9tYXJrZWRDYW52YXNEaXJ0eSA9IGZhbHNlOwogCi0gICAgaWYgKG1fZHJh
d2luZ0J1ZmZlcikKLSAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5jb21taXQoKTsKLSAgICBtX2Nv
bnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKGNhbnZhcygpLT5idWZmZXIoKSwg
bV9kcmF3aW5nQnVmZmVyLmdldCgpKTsKLQotICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpIHsKLSAg
ICAgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nKQotICAgICAgICAgICAgbV9jb250ZXh0LT5i
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBvYmplY3RPclpl
cm8obV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9kcmF3aW5nQnVmZmVyLT5iaW5kKCk7Ci0gICAgfQorICAgIG1fY29udGV4dC0+cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoY2FudmFzKCktPmJ1ZmZlcigpKTsKIH0KIAogUGFzc1Jl
ZlB0cjxJbWFnZURhdGE+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvSW1hZ2VEYXRhKCkKQEAgLTc3NiwxOCArNzQ3LDcgQEAgUGFzc1JlZlB0cjxJbWFn
ZURhdGE+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXQKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBjbGVhcklmQ29tcG9zaXRlZCgpOwotICAgIGlmIChtX2RyYXdpbmdC
dWZmZXIpCi0gICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+Y29tbWl0KCk7Ci0gICAgUmVmUHRyPElt
YWdlRGF0YT4gaW1hZ2VEYXRhID0gbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YShtX2RyYXdpbmdCdWZmZXIuZ2V0KCkpOwotCi0gICAgaWYgKG1fZHJhd2luZ0J1ZmZl
cikgewotICAgICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcpCi0gICAgICAgICAgICBtX2Nv
bnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG9i
amVjdE9yWmVybyhtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSkpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmJpbmQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
aW1hZ2VEYXRhOworICAgIHJldHVybiBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1Rv
SW1hZ2VEYXRhKCk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVzaGFw
ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCkBAIC04MTUsMTEgKzc3NSw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKICAg
ICAvLyBXZSBkb24ndCBoYXZlIHRvIG1hcmsgdGhlIGNhbnZhcyBhcyBkaXJ0eSwgc2luY2UgdGhl
IG5ld2x5IGNyZWF0ZWQgaW1hZ2UgYnVmZmVyIHdpbGwgYWxzbyBzdGFydCBvZmYKICAgICAvLyBj
bGVhciAoYW5kIHRoaXMgbWF0Y2hlcyB3aGF0IHJlc2hhcGUgd2lsbCBkbykuCi0gICAgaWYgKG1f
ZHJhd2luZ0J1ZmZlcikgewotICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnJlc2V0KEludFNpemUo
d2lkdGgsIGhlaWdodCkpOwotICAgICAgICByZXN0b3JlU3RhdGVBZnRlckNsZWFyKCk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBt
X2NvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CiAKICAgICBtX2NvbnRleHQtPmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBvYmplY3RPclplcm8obV90ZXh0
dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0udGV4dHVyZTJEQmluZGluZy5nZXQoKSkpOwog
ICAgIG1fY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVS
QlVGRkVSLCBvYmplY3RPclplcm8obV9yZW5kZXJidWZmZXJCaW5kaW5nLmdldCgpKSk7CkBAIC04
MjksMTcgKzc4NSwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
ZHJhd2luZ0J1ZmZlcldpZHRoKCkgY29uc3QKIHsKLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQot
ICAgICAgICByZXR1cm4gbV9kcmF3aW5nQnVmZmVyLT5zaXplKCkud2lkdGgoKTsKLQogICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkud2lkdGgoKTsKIH0K
IAogaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRyYXdpbmdCdWZmZXJIZWlnaHQoKSBj
b25zdAogewotICAgIGlmIChtX2RyYXdpbmdCdWZmZXIpCi0gICAgICAgIHJldHVybiBtX2RyYXdp
bmdCdWZmZXItPnNpemUoKS5oZWlnaHQoKTsKLQogICAgIHJldHVybiBtX2NvbnRleHQtPmdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCkuaGVpZ2h0KCk7CiB9CiAKQEAgLTg3Niw5ICs4MjYsNiBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0g
dGV4dHVyZSwgRXhjZXB0aW9uQ29kZSYgZQogICAgIH0KICAgICBtX2FjdGl2ZVRleHR1cmVVbml0
ID0gdGV4dHVyZSAtIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMDsKICAgICBtX2NvbnRleHQt
PmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7Ci0KLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQotICAg
ICAgICBtX2RyYXdpbmdCdWZmZXItPnNldEFjdGl2ZVRleHR1cmVVbml0KHRleHR1cmUpOwogfQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFjaFNoYWRlcihXZWJHTFByb2dy
YW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAt
OTY4LDEzICs5MTUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRGcmFt
ZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gYnVmZmVyOwotICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXIpCi0gICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0RnJhbWVidWZmZXJCaW5k
aW5nKG9iamVjdE9yWmVybyhtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSkpOwotICAgIGlmICgh
bV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgbV9kcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAgIC8vIElu
c3RlYWQgb2YgYmluZGluZyBmYiAwLCBiaW5kIHRoZSBkcmF3aW5nIGJ1ZmZlci4KLSAgICAgICAg
bV9kcmF3aW5nQnVmZmVyLT5iaW5kKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fY29udGV4dC0+
YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgb2JqZWN0T3JaZXJvKGJ1ZmZlcikpOworICAgIG1fY29u
dGV4dC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgb2JqZWN0T3JaZXJvKGJ1ZmZlcikpOwogICAg
IGlmIChidWZmZXIpCiAgICAgICAgIGJ1ZmZlci0+c2V0SGFzRXZlckJlZW5Cb3VuZCgpOwogICAg
IGFwcGx5U3RlbmNpbFRlc3QoKTsKQEAgLTEwMTQsMTAgKzk1NSw2IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1
cmUqIHRleHR1CiAgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCkgewogICAgICAgICBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS50ZXh0dXJl
MkRCaW5kaW5nID0gdGV4dHVyZTsKICAgICAgICAgbWF4TGV2ZWwgPSBtX21heFRleHR1cmVMZXZl
bDsKLQotICAgICAgICBpZiAobV9kcmF3aW5nQnVmZmVyICYmICFtX2FjdGl2ZVRleHR1cmVVbml0
KQotICAgICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5zZXRUZXh0dXJlMkRCaW5kaW5nKG9iamVj
dE9yWmVybyh0ZXh0dXJlKSk7Ci0KICAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUCkgewogICAgICAgICBtX3RleHR1cmVVbml0c1ttX2Fj
dGl2ZVRleHR1cmVVbml0XS50ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgPSB0ZXh0dXJlOwogICAgICAg
ICBtYXhMZXZlbCA9IG1fbWF4Q3ViZU1hcFRleHR1cmVMZXZlbDsKQEAgLTE0MzAsMTAgKzEzNjcs
OSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNsZWFySWZDb21wb3NpdGVkKCk7Ci0gICAgaWYgKGlzUmVzb3VyY2VTYWZlKCkpIHsKLSAgICAg
ICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3aW5nQnVmZmVyLmdldCgp
LCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSk7CisgICAgaWYgKGlzUmVzb3VyY2VTYWZlKCkp
CiAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgfSBlbHNlIHsKKyAgICBl
bHNlIHsKICAgICAgICAgR0MzRGludCBjbGlwcGVkWCwgY2xpcHBlZFk7CiAgICAgICAgIEdDM0Rz
aXplaSBjbGlwcGVkV2lkdGgsIGNsaXBwZWRIZWlnaHQ7CiAgICAgICAgIGlmIChjbGlwMkQoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZ2V0Qm91bmRGcmFtZWJ1ZmZlcldpZHRoKCksIGdldEJvdW5kRnJh
bWVidWZmZXJIZWlnaHQoKSwgJmNsaXBwZWRYLCAmY2xpcHBlZFksICZjbGlwcGVkV2lkdGgsICZj
bGlwcGVkSGVpZ2h0KSkgewpAQCAtMTQ1NSwxNSArMTM5MSwxMSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbAogICAgICAgICAgICAgICAgIG1lbXNldCh6ZXJvLmdldCgpLCAwLCBzaXplKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHpl
cm8uZ2V0KCkpOwotICAgICAgICAgICAgaWYgKGNsaXBwZWRXaWR0aCA+IDAgJiYgY2xpcHBlZEhl
aWdodCA+IDApIHsKLSAgICAgICAgICAgICAgICBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIGJp
bmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCksIG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpKTsK
KyAgICAgICAgICAgIGlmIChjbGlwcGVkV2lkdGggPiAwICYmIGNsaXBwZWRIZWlnaHQgPiAwKQog
ICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCArIGNsaXBwZWRYIC0geCwgeW9mZnNldCArIGNsaXBwZWRZIC0geSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBwZWRYLCBjbGlwcGVk
WSwgY2xpcHBlZFdpZHRoLCBjbGlwcGVkSGVpZ2h0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIFNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIgYmluZGVyKG1f
ZHJhd2luZ0J1ZmZlci5nZXQoKSwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCkpOworICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAg
IH0KICAgICB9CiB9CiAKQEAgLTE1NjUsMTIgKzE0OTcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmRlbGV0ZUZyYW1lYnVmZmVyKFdlYkdMRnJhbWVidWZmZXIqIGZyYW1lYnVm
ZmVyKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGZyYW1lYnVmZmVyID09IG1fZnJhbWVidWZm
ZXJCaW5kaW5nKSB7CiAgICAgICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gMDsKLSAgICAgICAg
aWYgKG1fZHJhd2luZ0J1ZmZlcikgewotICAgICAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5zZXRG
cmFtZWJ1ZmZlckJpbmRpbmcoMCk7Ci0gICAgICAgICAgICAvLyBIYXZlIHRvIGNhbGwgYmluZEZy
YW1lYnVmZmVyIGhlcmUgdG8gYmluZCBiYWNrIHRvIGludGVybmFsIGZiby4KLSAgICAgICAgICAg
IG1fZHJhd2luZ0J1ZmZlci0+YmluZCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1f
Y29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
MCk7CisgICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgMCk7CiAgICAgfQogfQogCkBAIC0xNjU4LDExICsxNTg1LDggQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKICAgICAg
ICAgYXBwbHlTdGVuY2lsVGVzdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChj
YXAgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkgeworICAgIGlmIChjYXAgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCkKICAgICAgICAgbV9zY2lzc29yRW5hYmxl
ZCA9IGZhbHNlOwotICAgICAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQotICAgICAgICAgICAgbV9k
cmF3aW5nQnVmZmVyLT5zZXRTY2lzc29yRW5hYmxlZChtX3NjaXNzb3JFbmFibGVkKTsKLSAgICB9
CiAgICAgbV9jb250ZXh0LT5kaXNhYmxlKGNhcCk7CiB9CiAKQEAgLTE5NTIsMTEgKzE4NzYsOCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuYWJsZShHQzNEZW51bSBjYXApCiAg
ICAgICAgIGFwcGx5U3RlbmNpbFRlc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoY2FwID09IEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpIHsKKyAgICBpZiAoY2Fw
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpCiAgICAgICAgIG1fc2Npc3NvckVu
YWJsZWQgPSB0cnVlOwotICAgICAgICBpZiAobV9kcmF3aW5nQnVmZmVyKQotICAgICAgICAgICAg
bV9kcmF3aW5nQnVmZmVyLT5zZXRTY2lzc29yRW5hYmxlZChtX3NjaXNzb3JFbmFibGVkKTsKLSAg
ICB9CiAgICAgbV9jb250ZXh0LT5lbmFibGUoY2FwKTsKIH0KIApAQCAtMjIwMywxNyArMjEyNCwx
MiBAQCBQYXNzUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldENvbnRleHRBdHRyaWJ1dAogCiAgICAgLy8gQWxzbywgd2UgbmVlZCB0byBl
bmZvcmNlIHJlcXVlc3RlZCB2YWx1ZXMgb2YgImZhbHNlIiBmb3IgZGVwdGgKICAgICAvLyBhbmQg
c3RlbmNpbCwgcmVnYXJkbGVzcyBvZiB0aGUgcHJvcGVydGllcyBvZiB0aGUgdW5kZXJseWluZwot
ICAgIC8vIEdyYXBoaWNzQ29udGV4dDNEIG9yIERyYXdpbmdCdWZmZXIuCisgICAgLy8gR3JhcGhp
Y3NDb250ZXh0M0QuCiAgICAgUmVmUHRyPFdlYkdMQ29udGV4dEF0dHJpYnV0ZXM+IGF0dHJpYnV0
ZXMgPSBXZWJHTENvbnRleHRBdHRyaWJ1dGVzOjpjcmVhdGUobV9jb250ZXh0LT5nZXRDb250ZXh0
QXR0cmlidXRlcygpKTsKICAgICBpZiAoIW1fYXR0cmlidXRlcy5kZXB0aCkKICAgICAgICAgYXR0
cmlidXRlcy0+c2V0RGVwdGgoZmFsc2UpOwogICAgIGlmICghbV9hdHRyaWJ1dGVzLnN0ZW5jaWwp
CiAgICAgICAgIGF0dHJpYnV0ZXMtPnNldFN0ZW5jaWwoZmFsc2UpOwotICAgIGlmIChtX2RyYXdp
bmdCdWZmZXIpIHsKLSAgICAgICAgLy8gVGhlIERyYXdpbmdCdWZmZXIgb2J0YWlucyBpdHMgcGFy
YW1ldGVycyBmcm9tIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygpLAot
ICAgICAgICAvLyBidXQgaXQgbWFrZXMgaXRzIG93biBkZXRlcm1pbmF0aW9uIG9mIHdoZXRoZXIg
bXVsdGlzYW1wbGluZyBpcyBzdXBwb3J0ZWQuCi0gICAgICAgIGF0dHJpYnV0ZXMtPnNldEFudGlh
bGlhcyhtX2RyYXdpbmdCdWZmZXItPm11bHRpc2FtcGxlKCkpOwotICAgIH0KICAgICByZXR1cm4g
YXR0cmlidXRlcy5yZWxlYXNlKCk7CiB9CiAKQEAgLTI4NjcsNyArMjc4Myw2IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwg
R0MzRHNpemVpIHdpZHRoCiAgICAgdm9pZCogZGF0YSA9IHBpeGVscy0+YmFzZUFkZHJlc3MoKTsK
IAogICAgIHsKLSAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3
aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSk7CiAgICAgICAgIGlm
IChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIHBpeGVscy0+Ynl0ZUxlbmd0aCgpLCBkYXRhKTsKICAgICAgICAgZWxzZQpAQCAtMzgy
OCwxMiArMzc0Myw2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUNvbnRl
eHRJbXBsKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3RDCiAKICAgICBkZXRhY2hBbmRS
ZW1vdmVBbGxPYmplY3RzKCk7CiAKLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyKSB7Ci0gICAgICAg
IC8vIE1ha2UgYWJzb2x1dGVseSBzdXJlIHdlIGRvIG5vdCByZWZlciB0byBhbiBhbHJlYWR5LWRl
bGV0ZWQgdGV4dHVyZSBvciBmcmFtZWJ1ZmZlci4KLSAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5z
ZXRUZXh0dXJlMkRCaW5kaW5nKDApOwotICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnNldEZyYW1l
YnVmZmVyQmluZGluZygwKTsKLSAgICB9Ci0KICAgICAvLyBUaGVyZSBpcyBubyBkaXJlY3Qgd2F5
IHRvIGNsZWFyIGVycm9ycyBmcm9tIGEgR0wgaW1wbGVtZW50YXRpb24gYW5kCiAgICAgLy8gbG9v
cGluZyB1bnRpbCBnZXRFcnJvcigpIGJlY29tZXMgTk9fRVJST1IgbWlnaHQgY2F1c2UgYW4gaW5m
aW5pdGUgbG9vcCBpZgogICAgIC8vIHRoZSBkcml2ZXIgb3IgY29udGV4dCBpbXBsZW1lbnRhdGlv
biBoYWQgYSBidWcuIFNvLCBsb29wIGEgcmVhc29uYWJseQpAQCAtNDExOCwxNCArNDAyNywxNCBA
QCBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Qm91bmRGcmFtZWJ1ZmZlcldpZHRo
KCkKIHsKICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcgJiYgbV9mcmFtZWJ1ZmZlckJpbmRp
bmctPm9iamVjdCgpKQogICAgICAgICByZXR1cm4gbV9mcmFtZWJ1ZmZlckJpbmRpbmctPmdldENv
bG9yQnVmZmVyV2lkdGgoKTsKLSAgICByZXR1cm4gbV9kcmF3aW5nQnVmZmVyID8gbV9kcmF3aW5n
QnVmZmVyLT5zaXplKCkud2lkdGgoKSA6IG1fY29udGV4dC0+Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZl
clNpemUoKS53aWR0aCgpOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCkud2lkdGgoKTsKIH0KIAogaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKQogewogICAgIGlmIChtX2ZyYW1lYnVmZmVyQmlu
ZGluZyAmJiBtX2ZyYW1lYnVmZmVyQmluZGluZy0+b2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBt
X2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0Q29sb3JCdWZmZXJIZWlnaHQoKTsKLSAgICByZXR1cm4g
bV9kcmF3aW5nQnVmZmVyID8gbV9kcmF3aW5nQnVmZmVyLT5zaXplKCkuaGVpZ2h0KCkgOiBtX2Nv
bnRleHQtPmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaGVpZ2h0KCk7CisgICAgcmV0dXJu
IG1fY29udGV4dC0+Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5oZWlnaHQoKTsKIH0KIAog
V2ViR0xUZXh0dXJlKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVRleHR1cmVC
aW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdGFyZ2V0LCBib29sIHVz
ZVNpeEVudW1zRm9yQ3ViZU1hcCkKQEAgLTQ4NDIsMTUgKzQ3NTEsNiBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gQ29uc3RydWN0IGEgbmV3IGRyYXdpbmcgYnVmZmVyIHdpdGggdGhl
IG5ldyBHcmFwaGljc0NvbnRleHQzRC4KLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyKSB7Ci0gICAg
ICAgIG1fZHJhd2luZ0J1ZmZlci0+ZGlzY2FyZFJlc291cmNlcygpOwotICAgICAgICBEcmF3aW5n
QnVmZmVyOjpQcmVzZXJ2ZURyYXdpbmdCdWZmZXIgcHJlc2VydmUgPSBtX2F0dHJpYnV0ZXMucHJl
c2VydmVEcmF3aW5nQnVmZmVyID8gRHJhd2luZ0J1ZmZlcjo6UHJlc2VydmUgOiBEcmF3aW5nQnVm
ZmVyOjpEaXNjYXJkOwotICAgICAgICBEcmF3aW5nQnVmZmVyOjpBbHBoYVJlcXVpcmVtZW50IGFs
cGhhID0gbV9hdHRyaWJ1dGVzLmFscGhhID8gRHJhd2luZ0J1ZmZlcjo6QWxwaGEgOiBEcmF3aW5n
QnVmZmVyOjpPcGFxdWU7Ci0gICAgICAgIG1fZHJhd2luZ0J1ZmZlciA9IERyYXdpbmdCdWZmZXI6
OmNyZWF0ZShjb250ZXh0LmdldCgpLCBtX2RyYXdpbmdCdWZmZXItPnNpemUoKSwgcHJlc2VydmUs
IGFscGhhKTsKLSAgICAgICAgbV9kcmF3aW5nQnVmZmVyLT5iaW5kKCk7Ci0gICAgfQotCiAgICAg
bV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2NvbnRleHRMb3N0ID0gZmFsc2U7CiAgICAgc2V0
dXBGbGFncygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDBkNjQzZmUzY2M4Mjc4YmJjYzEwMDlkMTE5MmQ4
NzkyY2ViNzA2YjEuLmQwZDlhOWFjYjZkMjNhOTIzNDY1MDFlZGQyZjU5YTJmYTM1YzFlODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJEcmF3
aW5nQnVmZmVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC04NiwyOSArODUsNiBAQCBjbGFz
cyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwogCi1jbGFzcyBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIHsKLXB1YmxpYzoKLSAgICBTY29w
ZWREcmF3aW5nQnVmZmVyQmluZGVyKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIsIFdlYkdM
RnJhbWVidWZmZXIqIGZyYW1lYnVmZmVyQmluZGluZykKLSAgICAgICAgOiBtX2RyYXdpbmdCdWZm
ZXIoZHJhd2luZ0J1ZmZlcikKLSAgICAgICAgLCBtX2ZyYW1lYnVmZmVyQmluZGluZyhmcmFtZWJ1
ZmZlckJpbmRpbmcpCi0gICAgewotICAgICAgICAvLyBDb21taXQgRHJhd2luZ0J1ZmZlciBpZiBu
ZWVkZWQgKGUuZy4sIGZvciBtdWx0aXNhbXBsaW5nKQotICAgICAgICBpZiAoIW1fZnJhbWVidWZm
ZXJCaW5kaW5nICYmIG1fZHJhd2luZ0J1ZmZlcikKLSAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZl
ci0+Y29tbWl0KCk7Ci0gICAgfQotICAgIAotICAgIH5TY29wZWREcmF3aW5nQnVmZmVyQmluZGVy
KCkKLSAgICB7Ci0gICAgICAgIC8vIFJlc3RvcmUgRHJhd2luZ0J1ZmZlciBpZiBuZWVkZWQKLSAg
ICAgICAgaWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiBtX2RyYXdpbmdCdWZmZXIpCi0gICAg
ICAgICAgICBtX2RyYXdpbmdCdWZmZXItPmJpbmQoKTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgot
ICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKLSAgICBXZWJHTEZyYW1lYnVmZmVy
KiBtX2ZyYW1lYnVmZmVyQmluZGluZzsKLX07Ci0KIGlubGluZSB2b2lkIGNsaXAxRChHQzNEaW50
IHN0YXJ0LCBHQzNEc2l6ZWkgcmFuZ2UsIEdDM0RzaXplaSBzb3VyY2VSYW5nZSwgR0MzRGludCog
Y2xpcHBlZFN0YXJ0LCBHQzNEc2l6ZWkqIGNsaXBwZWRSYW5nZSkKIHsKICAgICBBU1NFUlQoY2xp
cHBlZFN0YXJ0ICYmIGNsaXBwZWRSYW5nZSk7CkBAIC00NTYsMTAgKzQzMiw2IEBAIHByb3RlY3Rl
ZDoKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKICAgICBSZWZQdHI8
V2ViR0xDb250ZXh0R3JvdXA+IG1fY29udGV4dEdyb3VwOwogCi0gICAgLy8gT3B0aW9uYWwgc3Ry
dWN0dXJlIGZvciByZW5kZXJpbmcgdG8gYSBEcmF3aW5nQnVmZmVyLCBpbnN0ZWFkIG9mIGRpcmVj
dGx5Ci0gICAgLy8gdG8gdGhlIGJhY2stYnVmZmVyIG9mIG1fY29udGV4dC4KLSAgICBSZWZQdHI8
RHJhd2luZ0J1ZmZlcj4gbV9kcmF3aW5nQnVmZmVyOwotCiAgICAgLy8gRGlzcGF0Y2hlcyBhIGNv
bnRleHQgbG9zdCBldmVudCBvbmNlIGl0IGlzIGRldGVybWluZWQgdGhhdCBvbmUgaXMgbmVlZGVk
LgogICAgIC8vIFRoaXMgaXMgdXNlZCBib3RoIGZvciBzeW50aGV0aWMgYW5kIHJlYWwgY29udGV4
dCBsb3NzZXMuIEZvciByZWFsIG9uZXMsIGl0J3MKICAgICAvLyBsaWtlbHkgdGhhdCB0aGVyZSdz
IG5vIEphdmFTY3JpcHQgb24gdGhlIHN0YWNrLCBidXQgdGhhdCBtaWdodCBiZSBkZXBlbmRlbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggNzg0YjEwYzZhZmE4Y2JmNTdiMjBiZTM5ZmM2YTc4YTE0OGNiY2VmMC4uZTBiY2Zh
NTEzOWRhYTg5YjRhYTE1M2E1NGFlZGYzZmE0MmU2N2Y3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTczLDcgKzczLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNvbnN0IGludCBjTWlzc3BlbGxpbmdMaW5lUGF0
dGVybkdhcFdpZHRoID0gMTsKIAogICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLSAgICBjbGFz
cyBEcmF3aW5nQnVmZmVyOwogICAgIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiAgICAgY2xhc3Mg
R3JhZGllbnQ7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgKaW5kZXggMmQ4YzZlMzhlZDVhOWE4ZWYzMjljMTMxZWE2YWUzNjAxNzNiODkzOS4uNWI5YTQ2
ODY0MTBlMzdlYTI2YTc3MjAxMzliYTlhN2ViYWIzZjg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC04NCw3ICs4
NCw2IEBAIGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgTnVsbFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QgPSAwOwogY29uc3QgUGxhdGZvcm0zRE9iamVjdCBOdWxsUGxhdGZvcm0zRE9i
amVjdCA9IDA7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIERyYXdpbmdCdWZmZXI7CiBj
bGFzcyBFeHRlbnNpb25zM0Q7CiAjaWYgVVNFKE9QRU5HTF9FU18yKQogY2xhc3MgRXh0ZW5zaW9u
czNET3BlbkdMRVM7CkBAIC0xMTMyLDggKzExMzEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXll
ckNvbXBvc2l0ZWQoKSBjb25zdDsKICAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKTsKIAotICAg
IHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqLCBEcmF3aW5n
QnVmZmVyKik7Ci0gICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhKERyYXdpbmdCdWZmZXIqKTsKKyAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7CisgICAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IHBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCk7CiAgICAgYm9vbCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIAogI2lmIFBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0RyYXdpbmdC
dWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9E
cmF3aW5nQnVmZmVyQ2Fpcm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWJj
M2IzNGM5NDBhNjdjMjMxNTVmMTQwOThlMjg3NDgzMzkyYTEwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0RyYXdpbmdCdWZmZXJDYWlyby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCi0KLSNpZiBVU0Uo
Q0FJUk8pICYmIChFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSB8fCBVU0UoM0RfR1JBUEhJ
Q1MpKQotI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXVuc2lnbmVkIERyYXdpbmdCdWZmZXI6OmZyb250Q29sb3JCdWZmZXIoKSBjb25zdAotewotICAg
IHJldHVybiBjb2xvckJ1ZmZlcigpOwotfQotCi12b2lkIERyYXdpbmdCdWZmZXI6OnBhaW50Q29t
cG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCi17Ci19Ci0KLX0KLQotI2VuZGlm
IC8vIFVTRShDQUlSTykgJiYgKEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpIHx8IFVTRSgz
RF9HUkFQSElDUykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJi
OTZjYjU5NGNiZTczZTU2ZDE2N2RhZDBjOTZjZjRiMDJiNTg4YWQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDY2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZB
UykgfHwgVVNFKDNEX0dSQVBISUNTKQotCi0jaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgotCi0j
aW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgUExBVEZPUk0oV0lOKSB8fCBVU0UoQ0FJUk8p
Ci1EcmF3aW5nQnVmZmVyOjpEcmF3aW5nQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRTaXplJiBzaXplLCBib29sIG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVk
LCBib29sIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRlZCwgUHJlc2VydmVEcmF3
aW5nQnVmZmVyIHByZXNlcnZlRHJhd2luZ0J1ZmZlciwgQWxwaGFSZXF1aXJlbWVudCBhbHBoYSkK
LSAgICA6IG1fcHJlc2VydmVEcmF3aW5nQnVmZmVyKHByZXNlcnZlRHJhd2luZ0J1ZmZlcikKLSAg
ICAsIG1fYWxwaGEoYWxwaGEpCi0gICAgLCBtX3NjaXNzb3JFbmFibGVkKGZhbHNlKQotICAgICwg
bV90ZXh0dXJlMkRCaW5kaW5nKDApCi0gICAgLCBtX2ZyYW1lYnVmZmVyQmluZGluZygwKQotICAg
ICwgbV9hY3RpdmVUZXh0dXJlVW5pdChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApCi0gICAg
LCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fc2l6ZSgtMSwgLTEpCi0gICAgLCBtX211bHRp
c2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkKG11bHRpc2FtcGxlRXh0ZW5zaW9uU3VwcG9ydGVkKQot
ICAgICwgbV9wYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdXBwb3J0ZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKQotICAgICwgbV9mYm8oY29udGV4dC0+Y3JlYXRlRnJh
bWVidWZmZXIoKSkKLSAgICAsIG1fY29sb3JCdWZmZXIoMCkKLSAgICAsIG1fZnJvbnRDb2xvckJ1
ZmZlcigwKQotICAgICwgbV9zZXBhcmF0ZUZyb250VGV4dHVyZShmYWxzZSkKLSAgICAsIG1fZGVw
dGhTdGVuY2lsQnVmZmVyKDApCi0gICAgLCBtX2RlcHRoQnVmZmVyKDApCi0gICAgLCBtX3N0ZW5j
aWxCdWZmZXIoMCkKLSAgICAsIG1fbXVsdGlzYW1wbGVGQk8oMCkKLSAgICAsIG1fbXVsdGlzYW1w
bGVDb2xvckJ1ZmZlcigwKQotewotICAgIEFTU0VSVChtX2Zibyk7Ci0gICAgaWYgKCFtX2Zibykg
ewotICAgICAgICBjbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gY3Jl
YXRlIGEgdGV4dHVyZSB0byByZW5kZXIgaW50bwotICAgIG1fY29sb3JCdWZmZXIgPSBjb250ZXh0
LT5jcmVhdGVUZXh0dXJlKCk7Ci0gICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29sb3JCdWZmZXIpOwotICAgIGNvbnRleHQtPnRleFBhcmFt
ZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgIGNvbnRl
eHQtPnRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIp
OwotICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6
OkNMQU1QX1RPX0VER0UpOwotICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwotICAgIGNvbnRleHQtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKLQotICAgIGNyZWF0ZVNlY29uZGFy
eUJ1ZmZlcnMoKTsKLSAgICByZXNldChzaXplKTsKLX0KLQotRHJhd2luZ0J1ZmZlcjo6fkRyYXdp
bmdCdWZmZXIoKQotewotICAgIGNsZWFyKCk7Ci19Ci0jZW5kaWYKLQotLy8gR2xvYmFsIHJlc291
cmNlIGNlaWxpbmcgKGV4cHJlc3NlZCBpbiB0ZXJtcyBvZiBwaXhlbHMpIGZvciBEcmF3aW5nQnVm
ZmVyIGNyZWF0aW9uIGFuZCByZXNpemUuCi0vLyBXaGVuIHRoaXMgbGltaXQgaXMgc2V0LCBEcmF3
aW5nQnVmZmVyOjpjcmVhdGUoKSBhbmQgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoKSBjYWxscyB0aGF0
IHdvdWxkCi0vLyBleGNlZWQgdGhlIGdsb2JhbCBjYXAgd2lsbCBpbnN0ZWFkIGNsZWFyIHRoZSBi
dWZmZXIuCi1zdGF0aWMgaW50IHNfbWF4aW11bVJlc291cmNlVXNlUGl4ZWxzID0gMDsKLXN0YXRp
YyBpbnQgc19jdXJyZW50UmVzb3VyY2VVc2VQaXhlbHMgPSAwOwotc3RhdGljIGNvbnN0IGZsb2F0
IHNfcmVzb3VyY2VBZGp1c3RlZFJhdGlvID0gMC41OwotCi1QYXNzUmVmUHRyPERyYXdpbmdCdWZm
ZXI+IERyYXdpbmdCdWZmZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgUHJlc2VydmVEcmF3aW5nQnVmZmVyIHByZXNlcnZlLCBBbHBoYVJl
cXVpcmVtZW50IGFscGhhKQotewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBib29sIG11bHRpc2FtcGxlU3VwcG9ydGVkID0gZXh0
ZW5zaW9ucy0+bWF5U3VwcG9ydE11bHRpc2FtcGxpbmcoKQotICAgICAgICAmJiBleHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpCi0gICAgICAgICYmIGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCi0gICAg
ICAgICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfcmdiOF9yZ2JhOCIpOwotICAgIGlm
IChtdWx0aXNhbXBsZVN1cHBvcnRlZCkgewotICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFi
bGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0Iik7Ci0gICAgICAgIGV4dGVuc2lvbnMtPmVu
c3VyZUVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7Ci0gICAgICAg
IGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4Iik7Ci0gICAgfQot
ICAgIGJvb2wgcGFja2VkRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwotICAgIGlmIChwYWNrZWREZXB0aFN0
ZW5jaWxTdXBwb3J0ZWQpCi0gICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQoIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwotICAgIFJlZlB0cjxEcmF3aW5nQnVmZmVyPiBkcmF3
aW5nQnVmZmVyID0gYWRvcHRSZWYobmV3IERyYXdpbmdCdWZmZXIoY29udGV4dCwgc2l6ZSwgbXVs
dGlzYW1wbGVTdXBwb3J0ZWQsIHBhY2tlZERlcHRoU3RlbmNpbFN1cHBvcnRlZCwgcHJlc2VydmUs
IGFscGhhKSk7Ci0gICAgcmV0dXJuIChkcmF3aW5nQnVmZmVyLT5tX2NvbnRleHQpID8gZHJhd2lu
Z0J1ZmZlci5yZWxlYXNlKCkgOiAwOwotfQotCi12b2lkIERyYXdpbmdCdWZmZXI6OmNsZWFyKCkK
LXsKLSAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIGlmICghbV9zaXplLmlzRW1wdHkoKSkgewot
ICAgICAgICBzX2N1cnJlbnRSZXNvdXJjZVVzZVBpeGVscyAtPSBtX3NpemUud2lkdGgoKSAqIG1f
c2l6ZS5oZWlnaHQoKTsKLSAgICAgICAgbV9zaXplID0gSW50U2l6ZSgpOwotICAgIH0KLQotICAg
IGlmIChtX2NvbG9yQnVmZmVyKSB7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSht
X2NvbG9yQnVmZmVyKTsKLSAgICAgICAgbV9jb2xvckJ1ZmZlciA9IDA7Ci0gICAgfQotCi0gICAg
aWYgKG1fZnJvbnRDb2xvckJ1ZmZlcikgewotICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVRleHR1
cmUobV9mcm9udENvbG9yQnVmZmVyKTsKLSAgICAgICAgbV9mcm9udENvbG9yQnVmZmVyID0gMDsK
LSAgICB9Ci0KLSAgICBpZiAobV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKSB7Ci0gICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0g
ICAgICAgIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlciA9IDA7Ci0gICAgfQotCi0gICAgaWYgKG1f
ZGVwdGhTdGVuY2lsQnVmZmVyKSB7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVm
ZmVyKG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgbV9kZXB0aFN0ZW5jaWxCdWZmZXIg
PSAwOwotICAgIH0KLQotICAgIGlmIChtX2RlcHRoQnVmZmVyKSB7Ci0gICAgICAgIG1fY29udGV4
dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKG1fZGVwdGhCdWZmZXIpOwotICAgICAgICBtX2RlcHRoQnVm
ZmVyID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV9zdGVuY2lsQnVmZmVyKSB7Ci0gICAgICAgIG1f
Y29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIG1f
c3RlbmNpbEJ1ZmZlciA9IDA7Ci0gICAgfQotCi0gICAgaWYgKG1fbXVsdGlzYW1wbGVGQk8pIHsK
LSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX211bHRpc2FtcGxlRkJPKTsK
LSAgICAgICAgbV9tdWx0aXNhbXBsZUZCTyA9IDA7Ci0gICAgfQotCi0gICAgaWYgKG1fZmJvKSB7
Ci0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mYm8pOwotICAgICAgICBt
X2ZibyA9IDA7Ci0gICAgfQotfQotCi12b2lkIERyYXdpbmdCdWZmZXI6OmNyZWF0ZVNlY29uZGFy
eUJ1ZmZlcnMoKQotewotICAgIC8vIGNyZWF0ZSBhIG11bHRpc2FtcGxlIEZCTwotICAgIGlmICht
dWx0aXNhbXBsZSgpKSB7Ci0gICAgICAgIG1fbXVsdGlzYW1wbGVGQk8gPSBtX2NvbnRleHQtPmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7Ci0gICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAg
IG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlciA9IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVy
KCk7Ci0gICAgfQotfQotCi12b2lkIERyYXdpbmdCdWZmZXI6OnJlc2l6ZURlcHRoU3RlbmNpbChp
bnQgc2FtcGxlQ291bnQpCi17Ci0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMgPSBtX2NvbnRleHQtPmdldENvbnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAg
aWYgKGF0dHJpYnV0ZXMuZGVwdGggJiYgYXR0cmlidXRlcy5zdGVuY2lsICYmIG1fcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uU3VwcG9ydGVkKSB7Ci0gICAgICAgIGlmICghbV9kZXB0aFN0ZW5j
aWxCdWZmZXIpCi0gICAgICAgICAgICBtX2RlcHRoU3RlbmNpbEJ1ZmZlciA9IG1fY29udGV4dC0+
Y3JlYXRlUmVuZGVyYnVmZmVyKCk7Ci0gICAgICAgIG1fY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7
Ci0gICAgICAgIGlmIChtdWx0aXNhbXBsZSgpKQotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgRXh0ZW5zaW9uczNEOjpERVBUSDI0X1NU
RU5DSUw4LCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIEV4dGVuc2lvbnMzRDo6REVQVEgyNF9TVEVOQ0lMOCwgbV9zaXpl
LndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVG
RkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChhdHRy
aWJ1dGVzLmRlcHRoKSB7Ci0gICAgICAgICAgICBpZiAoIW1fZGVwdGhCdWZmZXIpCi0gICAgICAg
ICAgICAgICAgbV9kZXB0aEJ1ZmZlciA9IG1fY29udGV4dC0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7
Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0gICAgICAgICAgICBpZiAobXVsdGlz
YW1wbGUoKSkKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZG
RVIsIHNhbXBsZUNvdW50LCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIG1f
c2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQz
RDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIG1f
c2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgbV9jb250ZXh0LT5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdy
YXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYXR0cmli
dXRlcy5zdGVuY2lsKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3RlbmNpbEJ1ZmZlcikKLSAgICAg
ICAgICAgICAgICBtX3N0ZW5jaWxCdWZmZXIgPSBtX2NvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpOwotICAgICAgICAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgICAgICBpZiAo
bXVsdGlzYW1wbGUoKSkKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5E
RVJCVUZGRVIsIHNhbXBsZUNvdW50LCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9JTkRFWDgs
IG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgZWxzZSAKLSAg
ICAgICAgICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250
ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfSU5ERVg4LCBt
X3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKLSAgICAgICAgICAgIG1fY29udGV4dC0+
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBH
cmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6
UkVOREVSQlVGRkVSLCBtX3N0ZW5jaWxCdWZmZXIpOwotICAgICAgICB9Ci0gICAgfQotICAgIG1f
Y29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCAwKTsKLX0KLQotdm9pZCBEcmF3aW5nQnVmZmVyOjpjbGVhckZyYW1lYnVmZmVycyhHQzNEYml0
ZmllbGQgY2xlYXJNYXNrKQotewotICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tdWx0aXNhbXBsZUZCTyA/IG1fbXVsdGlzYW1w
bGVGQk8gOiBtX2Zibyk7Ci0KLSAgICBtX2NvbnRleHQtPmNsZWFyKGNsZWFyTWFzayk7Ci0KLSAg
ICAvLyBUaGUgbXVsdGlzYW1wbGUgZmJvIHdhcyBqdXN0IGNsZWFyZWQsIGJ1dCB3ZSBhbHNvIG5l
ZWQgdG8gY2xlYXIgdGhlIG5vbi1tdWx0aXNhbXBsZWQgYnVmZmVyIHRvby4KLSAgICBpZiAobV9t
dWx0aXNhbXBsZUZCTykgewotICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKLSAgICAgICAgbV9jb250ZXh0LT5j
bGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgICAgIG1fY29u
dGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9t
dWx0aXNhbXBsZUZCTyk7Ci0gICAgfQotfQotCi0vLyBPbmx5IHdheSB0byBlbnN1cmUgdGhhdCB3
ZSdyZSBub3QgZ2V0dGluZyBhIGJhZCBmcmFtZWJ1ZmZlciBvbiBzb21lIEFNRC9PU1ggZGV2aWNl
cy4KLS8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZW1vdmVkIG9uY2UgcmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlIHN0YXJ0cyByZXBvcnRpbmcgR0xfT1VUX09GX01FTU9SWSBwcm9wZXJseS4K
LWJvb2wgRHJhd2luZ0J1ZmZlcjo6Y2hlY2tCdWZmZXJJbnRlZ3JpdHkoKQotewotICAgIGlmICgh
bV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAobV9zY2lz
c29yRW5hYmxlZCkKLSAgICAgICAgbV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNE
OjpTQ0lTU09SX1RFU1QpOwotCi0gICAgbV9jb250ZXh0LT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSk7Ci0KLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgIG1fY29udGV4dC0+
Y2xlYXJDb2xvcigxLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKLSAgICBtX2NvbnRleHQtPmNsZWFy
KEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKTsKLQotICAgIGNvbW1pdCgwLCAw
LCAxLCAxKTsKLQotICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF0gPSB7MCwgMCwgMCwgMH07Ci0g
ICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgJnBpeGVsKTsKLQotICAgIGlm
IChtX3NjaXNzb3JFbmFibGVkKQotICAgICAgICBtX2NvbnRleHQtPmVuYWJsZShHcmFwaGljc0Nv
bnRleHQzRDo6U0NJU1NPUl9URVNUKTsKLQotICAgIHJldHVybiAocGl4ZWxbMF0gPT0gMHhGRiAm
JiBwaXhlbFsxXSA9PSAweDAwICYmIHBpeGVsWzJdID09IDB4RkYgJiYgcGl4ZWxbM10gPT0gMHhG
Rik7Ci19Ci0KLWJvb2wgRHJhd2luZ0J1ZmZlcjo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6
ZSkKLXsKLSAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIGludCBtYXhUZXh0dXJlU2l6
ZSA9IDA7Ci0gICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1RFWFRVUkVfU0laRSwgJm1heFRleHR1cmVTaXplKTsKLSAgICBpZiAobmV3U2l6ZS5oZWlnaHQo
KSA+IG1heFRleHR1cmVTaXplIHx8IG5ld1NpemUud2lkdGgoKSA+IG1heFRleHR1cmVTaXplKSB7
Ci0gICAgICAgIGNsZWFyKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBp
bnQgcGl4ZWxEZWx0YSA9IG5ld1NpemUud2lkdGgoKSAqIG5ld1NpemUuaGVpZ2h0KCk7Ci0gICAg
aW50IG9sZFNpemUgPSAwOwotICAgIGlmICghbV9zaXplLmlzRW1wdHkoKSkgewotICAgICAgICBv
bGRTaXplID0gbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCk7Ci0gICAgICAgIHBpeGVs
RGVsdGEgLT0gb2xkU2l6ZTsKLSAgICB9Ci0KLSAgICBJbnRTaXplIGFkanVzdGVkU2l6ZSA9IG5l
d1NpemU7Ci0gICAgaWYgKHNfbWF4aW11bVJlc291cmNlVXNlUGl4ZWxzKSB7Ci0gICAgICAgIHdo
aWxlICgoc19jdXJyZW50UmVzb3VyY2VVc2VQaXhlbHMgKyBwaXhlbERlbHRhKSA+IHNfbWF4aW11
bVJlc291cmNlVXNlUGl4ZWxzKSB7Ci0gICAgICAgICAgICBhZGp1c3RlZFNpemUuc2NhbGUoc19y
ZXNvdXJjZUFkanVzdGVkUmF0aW8pOwotICAgICAgICAgICAgaWYgKGFkanVzdGVkU2l6ZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICBjbGVhcigpOwotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBpeGVsRGVsdGEgPSBhZGp1c3Rl
ZFNpemUud2lkdGgoKSAqIGFkanVzdGVkU2l6ZS5oZWlnaHQoKTsKLSAgICAgICAgICAgIHBpeGVs
RGVsdGEgLT0gb2xkU2l6ZTsKLSAgICAgICAgfQotICAgICB9Ci0KLSAgICBjb25zdCBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyYgYXR0cmlidXRlcyA9IG1fY29udGV4dC0+Z2V0Q29udGV4
dEF0dHJpYnV0ZXMoKTsKLQotICAgIGlmIChhZGp1c3RlZFNpemUgIT0gbV9zaXplKSB7Ci0KLSAg
ICAgICAgdW5zaWduZWQgaW50ZXJuYWxDb2xvckZvcm1hdCwgY29sb3JGb3JtYXQsIGludGVybmFs
UmVuZGVyYnVmZmVyRm9ybWF0OwotICAgICAgICBpZiAoYXR0cmlidXRlcy5hbHBoYSkgewotICAg
ICAgICAgICAgaW50ZXJuYWxDb2xvckZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwot
ICAgICAgICAgICAgY29sb3JGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKLSAgICAg
ICAgICAgIGludGVybmFsUmVuZGVyYnVmZmVyRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpSR0JBOF9P
RVM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnRlcm5hbENvbG9yRm9ybWF0ID0g
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQjsKLSAgICAgICAgICAgIGNvbG9yRm9ybWF0ID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQjsKLSAgICAgICAgICAgIGludGVybmFsUmVuZGVyYnVmZmVyRm9ybWF0
ID0gRXh0ZW5zaW9uczNEOjpSR0I4X09FUzsKLSAgICAgICAgfQotCi0gICAgICAgIGRvIHsKLSAg
ICAgICAgICAgIG1fc2l6ZSA9IGFkanVzdGVkU2l6ZTsKLSAgICAgICAgICAgIC8vIHJlc2l6ZSBt
dWx0aXNhbXBsZSBGQk8KLSAgICAgICAgICAgIGlmIChtdWx0aXNhbXBsZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgaW50IG1heFNhbXBsZUNvdW50ID0gMDsKLQotICAgICAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0SW50ZWdlcnYoRXh0ZW5zaW9uczNEOjpNQVhfU0FNUExFUywgJm1heFNhbXBsZUNv
dW50KTsKLSAgICAgICAgICAgICAgICBpbnQgc2FtcGxlQ291bnQgPSBzdGQ6Om1pbig0LCBtYXhT
YW1wbGVDb3VudCk7Ci0KLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwotCi0g
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0gICAgICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBzYW1wbGVDb3VudCwgaW50
ZXJuYWxSZW5kZXJidWZmZXJGb3JtYXQsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkp
OwotCi0gICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dC0+Z2V0RXJyb3IoKSA9PSBHcmFwaGlj
c0NvbnRleHQzRDo6T1VUX09GX01FTU9SWSkgewotICAgICAgICAgICAgICAgICAgICBhZGp1c3Rl
ZFNpemUuc2NhbGUoc19yZXNvdXJjZUFkanVzdGVkUmF0aW8pOwotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtX2NvbnRl
eHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQz
RDo6UkVOREVSQlVGRkVSLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwotICAgICAgICAgICAg
ICAgIHJlc2l6ZURlcHRoU3RlbmNpbChzYW1wbGVDb3VudCk7Ci0gICAgICAgICAgICAgICAgaWYg
KG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewot
ICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFNpemUuc2NhbGUoc19yZXNvdXJjZUFkanVzdGVk
UmF0aW8pOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIHJlc2l6ZSByZWd1bGFyIEZCTwotICAg
ICAgICAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX2Zibyk7Ci0KLSAgICAgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29sb3JCdWZmZXIpOwotICAgICAgICAg
ICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAw
LCBpbnRlcm5hbENvbG9yRm9ybWF0LCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCAw
LCBjb2xvckZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApOwotCi0g
ICAgICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb2xvckJ1ZmZlciwgMCk7Ci0KLSAgICAg
ICAgICAgIC8vIHJlc2l6ZSB0aGUgZnJvbnQgY29sb3IgYnVmZmVyCi0gICAgICAgICAgICBpZiAo
bV9zZXBhcmF0ZUZyb250VGV4dHVyZSkgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fZnJvbnRDb2xvckJ1ZmZl
cik7Ci0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCBtX3NpemUud2lkdGgoKSwg
bV9zaXplLmhlaWdodCgpLCAwLCBjb2xvckZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0JZVEUsIDApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX2NvbnRleHQtPmJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKLQotICAgICAgICAg
ICAgaWYgKCFtdWx0aXNhbXBsZSgpKQotICAgICAgICAgICAgICAgIHJlc2l6ZURlcHRoU3RlbmNp
bCgwKTsKLSAgICAgICAgICAgIGlmIChtX2NvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVJfQ09NUExFVEUpIHsKLSAgICAgICAgICAgICAgICBhZGp1c3RlZFNpemUuc2NhbGUo
c19yZXNvdXJjZUFkanVzdGVkUmF0aW8pOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotCi0jaWYgT1MoREFSV0lOKQotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
Y2FuIGJlIHJlbW92ZWQgb25jZSByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUgc3RhcnRz
IHJlcG9ydGluZyBHTF9PVVRfT0ZfTUVNT1JZIHByb3Blcmx5IG9uIE9TWC4KLSAgICAgICAgICAg
IGlmICghY2hlY2tCdWZmZXJJbnRlZ3JpdHkoKSkgewotICAgICAgICAgICAgICAgIGFkanVzdGVk
U2l6ZS5zY2FsZShzX3Jlc291cmNlQWRqdXN0ZWRSYXRpbyk7Ci0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgfSB3aGlsZSAoIWFkanVzdGVkU2l6ZS5pc0VtcHR5KCkpOwotCi0gICAgICAgIHBpeGVs
RGVsdGEgPSBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKTsKLSAgICAgICAgcGl4ZWxE
ZWx0YSAtPSBvbGRTaXplOwotICAgICAgICBzX2N1cnJlbnRSZXNvdXJjZVVzZVBpeGVscyArPSBw
aXhlbERlbHRhOwotCi0gICAgICAgIGlmICghbmV3U2l6ZS5pc0VtcHR5KCkgJiYgYWRqdXN0ZWRT
aXplLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fY29udGV4dC0+ZGlzYWJsZShHcmFw
aGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKLSAgICBtX2NvbnRleHQtPmNsZWFyQ29sb3Io
MCwgMCwgMCwgMCk7Ci0gICAgbV9jb250ZXh0LT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSk7Ci0KLSAgICBHQzNEYml0ZmllbGQgY2xlYXJNYXNrID0gR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTE9SX0JVRkZFUl9CSVQ7Ci0gICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpIHsKLSAgICAgICAg
bV9jb250ZXh0LT5jbGVhckRlcHRoKDEuMGYpOwotICAgICAgICBjbGVhck1hc2sgfD0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7Ci0gICAgICAgIG1fY29udGV4dC0+ZGVwdGhN
YXNrKHRydWUpOwotICAgIH0KLSAgICBpZiAoYXR0cmlidXRlcy5zdGVuY2lsKSB7Ci0gICAgICAg
IG1fY29udGV4dC0+Y2xlYXJTdGVuY2lsKDApOwotICAgICAgICBjbGVhck1hc2sgfD0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKLSAgICAgICAgbV9jb250ZXh0LT5zdGVu
Y2lsTWFza1NlcGFyYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpGUk9OVCwgMHhGRkZGRkZGRik7Ci0g
ICAgfQotCi0gICAgY2xlYXJGcmFtZWJ1ZmZlcnMoY2xlYXJNYXNrKTsKLQotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIERyYXdpbmdCdWZmZXI6OmNvbW1pdChsb25nIHgsIGxvbmcgeSwgbG9u
ZyB3aWR0aCwgbG9uZyBoZWlnaHQpCi17Ci0gICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmICh3aWR0aCA8IDApCi0gICAgICAgIHdpZHRoID0gbV9zaXplLndpZHRo
KCk7Ci0gICAgaWYgKGhlaWdodCA8IDApCi0gICAgICAgIGhlaWdodCA9IG1fc2l6ZS5oZWlnaHQo
KTsKLQotICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICBpZiAobV9t
dWx0aXNhbXBsZUZCTykgewotICAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihFeHRl
bnNpb25zM0Q6OlJFQURfRlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAgICBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihFeHRlbnNpb25zM0Q6OkRSQVdfRlJBTUVCVUZGRVIs
IG1fZmJvKTsKLQotICAgICAgICBpZiAobV9zY2lzc29yRW5hYmxlZCkKLSAgICAgICAgICAgIG1f
Y29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKLQotICAg
ICAgICAvLyBVc2UgTkVBUkVTVCwgYmVjYXVzZSB0aGVyZSBpcyBubyBzY2FsZSBwZXJmb3JtZWQg
ZHVyaW5nIHRoZSBibGl0LgotICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Ymxp
dEZyYW1lYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklULCBHcmFwaGljc0NvbnRleHQzRDo6TkVB
UkVTVCk7Ci0KLSAgICAgICAgaWYgKG1fc2Npc3NvckVuYWJsZWQpCi0gICAgICAgICAgICBtX2Nv
bnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKLSAgICB9Ci0K
LSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIG1fZmJvKTsKLX0KLQotdm9pZCBEcmF3aW5nQnVmZmVyOjpyZXN0b3JlRnJhbWVidWZm
ZXJCaW5kaW5nKCkKLXsKLSAgICBpZiAoIW1fY29udGV4dCB8fCAhbV9mcmFtZWJ1ZmZlckJpbmRp
bmcpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcpOwotfQot
Ci1ib29sIERyYXdpbmdCdWZmZXI6Om11bHRpc2FtcGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9jb250ZXh0ICYmIG1fY29udGV4dC0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKS5hbnRpYWxpYXMg
JiYgbV9tdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZDsKLX0KLQotdm9pZCBEcmF3aW5nQnVm
ZmVyOjpkaXNjYXJkUmVzb3VyY2VzKCkKLXsKLSAgICBtX2NvbG9yQnVmZmVyID0gMDsKLSAgICBt
X2Zyb250Q29sb3JCdWZmZXIgPSAwOwotICAgIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlciA9IDA7
Ci0KLSAgICBtX2RlcHRoU3RlbmNpbEJ1ZmZlciA9IDA7Ci0gICAgbV9kZXB0aEJ1ZmZlciA9IDA7
Ci0KLSAgICBtX3N0ZW5jaWxCdWZmZXIgPSAwOwotCi0gICAgbV9tdWx0aXNhbXBsZUZCTyA9IDA7
Ci0gICAgbV9mYm8gPSAwOwotfQotCi12b2lkIERyYXdpbmdCdWZmZXI6OmJpbmQoKQotewotICAg
IGlmICghbV9jb250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbXVsdGlzYW1wbGVG
Qk8gPyBtX211bHRpc2FtcGxlRkJPIDogbV9mYm8pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9EcmF3aW5nQnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMzEx
OTY3ODhiZjQ3ODc0OWM0MmViMGNmNTkxMmI2M2U4NmY3MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgRHJhd2luZ0J1ZmZlcl9oCi0jZGVmaW5lIERyYXdpbmdCdWZmZXJfaAotCi0jaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKLSNp
bmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotCi0jaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEdyYXBo
aWNzQ29udGV4dDNEOwotCi0vLyBNYW5hZ2VzIGEgcmVuZGVyaW5nIHRhcmdldCAoZnJhbWVidWZm
ZXIgKyBhdHRhY2htZW50KSBmb3IgYSBjYW52YXMuICBDYW4gcHVibGlzaCBpdHMgcmVuZGVyaW5n
Ci0vLyByZXN1bHRzIHRvIGEgUGxhdGZvcm1MYXllciBmb3IgY29tcG9zaXRpbmcuCi1jbGFzcyBE
cmF3aW5nQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RHJhd2luZ0J1ZmZlcj4gewotcHVibGlj
OgotICAgIGVudW0gUHJlc2VydmVEcmF3aW5nQnVmZmVyIHsKLSAgICAgICAgUHJlc2VydmUsCi0g
ICAgICAgIERpc2NhcmQKLSAgICB9OwotCi0gICAgZW51bSBBbHBoYVJlcXVpcmVtZW50IHsKLSAg
ICAgICAgQWxwaGEsCi0gICAgICAgIE9wYXF1ZQotICAgIH07Ci0KLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxEcmF3aW5nQnVmZmVyPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRT
aXplJiwgUHJlc2VydmVEcmF3aW5nQnVmZmVyLCBBbHBoYVJlcXVpcmVtZW50KTsKLSAgICBmcmll
bmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci0KLSAgICB+RHJhd2luZ0J1ZmZlcigpOwotCi0g
ICAgLy8gSXNzdWVzIGEgZ2xDbGVhcigpIG9uIGFsbCBmcmFtZWJ1ZmZlcnMgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgRHJhd2luZ0J1ZmZlci4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IKLSAg
ICAvLyBtYWtpbmcgdGhlIGNvbnRleHQgY3VycmVudCBhbmQgc2V0dGluZyB0aGUgY2xlYXIgdmFs
dWVzIGFuZCBtYXNrcy4gTW9kaWZpZXMgdGhlIGZyYW1lYnVmZmVyIGJpbmRpbmcuCi0gICAgdm9p
ZCBjbGVhckZyYW1lYnVmZmVycyhHQzNEYml0ZmllbGQgY2xlYXJNYXNrKTsKLQotICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgYnVmZmVyIHdhcyBzdWNjZXNzZnVsbHkgcmVzaXplZC4KLSAgICBi
b29sIHJlc2V0KGNvbnN0IEludFNpemUmKTsKLSAgICB2b2lkIGJpbmQoKTsKLSAgICBJbnRTaXpl
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBQbGF0Zm9ybTNET2JqZWN0IGNv
bG9yQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvckJ1ZmZlcjsgfQotCi0gICAgLy8gQ2xl
YXIgYWxsIHJlc291cmNlcyBmcm9tIHRoaXMgb2JqZWN0LCBhcyB3ZWxsIGFzIGNvbnRleHQuIENh
bGxlZCB3aGVuIGNvbnRleHQgaXMgZGVzdHJveWVkCi0gICAgLy8gdG8gcHJldmVudCBpbnZhbGlk
IGFjY2Vzc2VzIHRvIHRoZSByZXNvdXJjZXMuCi0gICAgdm9pZCBjbGVhcigpOwotCi0gICAgLy8g
Q3JlYXRlIHRoZSBkZXB0aC9zdGVuY2lsIGFuZCBtdWx0aXNhbXBsZSBidWZmZXJzLCBpZiBuZWVk
ZWQuCi0gICAgdm9pZCBjcmVhdGVTZWNvbmRhcnlCdWZmZXJzKCk7Ci0gICAgCi0gICAgdm9pZCBy
ZXNpemVEZXB0aFN0ZW5jaWwoaW50IHNhbXBsZUNvdW50KTsKLQotICAgIC8vIENvcGllcyB0aGUg
bXVsdGlzYW1wbGUgY29sb3IgYnVmZmVyIHRvIHRoZSBub3JtYWwgY29sb3IgYnVmZmVyIGFuZCBs
ZWF2ZXMgbV9mYm8gYm91bmQKLSAgICB2b2lkIGNvbW1pdChsb25nIHggPSAwLCBsb25nIHkgPSAw
LCBsb25nIHdpZHRoID0gLTEsIGxvbmcgaGVpZ2h0ID0gLTEpOwotCi0gICAgLy8gY29tbWl0IHNo
b3VsZCBjb3B5IHRoZSBmdWxsIG11bHRpc2FtcGxlIGJ1ZmZlciwgYW5kIG5vdCByZXNwZWN0IHRo
ZQotICAgIC8vIGN1cnJlbnQgc2Npc3NvciBib3VuZHMuIFRyYWNrIHRoZSBzdGF0ZSBvZiB0aGUg
c2Npc3NvciB0ZXN0IHNvIHRoYXQgaXQKLSAgICAvLyBjYW4gYmUgZGlzYWJsZWQgZHVyaW5nIGNh
bGxzIHRvIGNvbW1pdC4KLSAgICB2b2lkIHNldFNjaXNzb3JFbmFibGVkKGJvb2wgc2Npc3NvckVu
YWJsZWQpIHsgbV9zY2lzc29yRW5hYmxlZCA9IHNjaXNzb3JFbmFibGVkOyB9Ci0KLSAgICAvLyBU
aGUgRHJhd2luZ0J1ZmZlciBuZWVkcyB0byB0cmFjayB0aGUgdGV4dHVyZSBib3VuZCB0byB0ZXh0
dXJlIHVuaXQgMC4KLSAgICAvLyBUaGUgYm91bmQgdGV4dHVyZSBpcyB0cmFja2VkIHRvIGF2b2lk
IGNvc3RseSBxdWVyaWVzIGR1cmluZyByZW5kZXJpbmcuCi0gICAgdm9pZCBzZXRUZXh0dXJlMkRC
aW5kaW5nKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkgeyBtX3RleHR1cmUyREJpbmRpbmcgPSB0
ZXh0dXJlOyB9Ci0KLSAgICAvLyBUaGUgRHJhd2luZ0J1ZmZlciBuZWVkcyB0byB0cmFjayB0aGUg
Y3VycmVudGx5IGJvdW5kIGZyYW1lYnVmZmVyIHNvIGl0Ci0gICAgLy8gcmVzdG9yZSB0aGUgYmlu
ZGluZyB3aGVuIG5lZWRlZC4KLSAgICB2b2lkIHNldEZyYW1lYnVmZmVyQmluZGluZyhQbGF0Zm9y
bTNET2JqZWN0IGZibykgeyBtX2ZyYW1lYnVmZmVyQmluZGluZyA9IGZibzsgfQotCi0gICAgLy8g
QmluZCB0byB0aGUgbV9mcmFtZWJ1ZmZlckJpbmRpbmcgaWYgaXQncyBub3QgMC4KLSAgICB2b2lk
IHJlc3RvcmVGcmFtZWJ1ZmZlckJpbmRpbmcoKTsKLQotICAgIC8vIFRyYWNrIHRoZSBjdXJyZW50
bHkgYWN0aXZlIHRleHR1cmUgdW5pdC4gVGV4dHVyZSB1bml0IDAgaXMgdXNlZCBhcyBob3N0IGZv
ciBhIHNjcmF0Y2gKLSAgICAvLyB0ZXh0dXJlLgotICAgIHZvaWQgc2V0QWN0aXZlVGV4dHVyZVVu
aXQoR0MzRGludCB0ZXh0dXJlVW5pdCkgeyBtX2FjdGl2ZVRleHR1cmVVbml0ID0gdGV4dHVyZVVu
aXQ7IH0KLQotICAgIGJvb2wgbXVsdGlzYW1wbGUoKSBjb25zdDsKLQotICAgIFBsYXRmb3JtM0RP
YmplY3QgZnJhbWVidWZmZXIoKSBjb25zdDsKLQotICAgIC8vIEltbWVkaWF0ZWx5IHJlbGVhc2Vz
IG93bmVyc2hpcCBvZiBhbGwgcmVzb3VyY2VzLiBDYWxsIHVwb24gbG9zcyBvZiB0aGUKLSAgICAv
LyBncmFwaGljcyBjb250ZXh0IHRvIHByZXZlbnQgZnJlZWluZyBpbnZhbGlkIHJlc291cmNlcy4K
LSAgICB2b2lkIGRpc2NhcmRSZXNvdXJjZXMoKTsKLQotICAgIHZvaWQgbWFya0NvbnRlbnRzQ2hh
bmdlZCgpIHsgbV9jb250ZW50c0NoYW5nZWQgPSB0cnVlOyB9Ci0KLSAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCk7Ci0gICAgdW5zaWduZWQgZnJvbnRDb2xvckJ1ZmZlcigpIGNvbnN0
OwotICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7
Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBEcmF3aW5nQnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYsIGJvb2wgbXVsdGlzYW1wbGVFeHRlbnNp
b25TdXBwb3J0ZWQsCi0gICAgICAgICAgICAgICAgICBib29sIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvblN1cHBvcnRlZCwgUHJlc2VydmVEcmF3aW5nQnVmZmVyLCBBbHBoYVJlcXVpcmVtZW50
KTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBJbnRTaXplJik7Ci0KLSAgICBib29sIGNo
ZWNrQnVmZmVySW50ZWdyaXR5KCk7Ci0KLSAgICBQcmVzZXJ2ZURyYXdpbmdCdWZmZXIgbV9wcmVz
ZXJ2ZURyYXdpbmdCdWZmZXI7Ci0gICAgQWxwaGFSZXF1aXJlbWVudCBtX2FscGhhOwotICAgIGJv
b2wgbV9zY2lzc29yRW5hYmxlZDsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZTJEQmlu
ZGluZzsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZnJhbWVidWZmZXJCaW5kaW5nOwotICAgIEdD
M0RlbnVtIG1fYWN0aXZlVGV4dHVyZVVuaXQ7Ci0KLSAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IG1fY29udGV4dDsKLSAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBib29sIG1fbXVsdGlzYW1w
bGVFeHRlbnNpb25TdXBwb3J0ZWQ7Ci0gICAgYm9vbCBtX3BhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvblN1cHBvcnRlZDsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZmJvOwotICAgIFBsYXRmb3Jt
M0RPYmplY3QgbV9jb2xvckJ1ZmZlcjsKLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZnJvbnRDb2xv
ckJ1ZmZlcjsKLSAgICBib29sIG1fc2VwYXJhdGVGcm9udFRleHR1cmU7Ci0KLSAgICAvLyBUaGlz
IGlzIHVzZWQgd2hlbiB3ZSBoYXZlIE9FU19wYWNrZWRfZGVwdGhfc3RlbmNpbC4KLSAgICBQbGF0
Zm9ybTNET2JqZWN0IG1fZGVwdGhTdGVuY2lsQnVmZmVyOwotCi0gICAgLy8gVGhlc2UgYXJlIHVz
ZWQgd2hlbiB3ZSBkb24ndC4KLSAgICBQbGF0Zm9ybTNET2JqZWN0IG1fZGVwdGhCdWZmZXI7Ci0g
ICAgUGxhdGZvcm0zRE9iamVjdCBtX3N0ZW5jaWxCdWZmZXI7Ci0KLSAgICAvLyBGb3IgbXVsdGlz
YW1wbGluZwotICAgIFBsYXRmb3JtM0RPYmplY3QgbV9tdWx0aXNhbXBsZUZCTzsKLSAgICBQbGF0
Zm9ybTNET2JqZWN0IG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcjsKLQotICAgIC8vIFRydWUgaWYg
b3VyIGNvbnRlbnRzIGhhdmUgYmVlbiBtb2RpZmllZCBzaW5jZSB0aGUgbGFzdCBwcmVzZW50YXRp
b24gb2YgdGhpcyBidWZmZXIuCi0gICAgYm9vbCBtX2NvbnRlbnRzQ2hhbmdlZDsKLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3BsYXRmb3JtTGF5ZXI7
Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIERyYXdp
bmdCdWZmZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L21hYy9EcmF3aW5nQnVmZmVyTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNjNjYTI4NzhlNDM4NmQwMTU2ODdlMWI0NDQ2NzA0MGJkOTgwODZkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9tYWMvRHJhd2luZ0J1ZmZlck1hYy5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDEwOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpIHx8IFVTRSgzRF9HUkFQSElDUykKLQotI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIu
aCIKLQotI2luY2x1ZGUgIkV4dGVuc2lvbnMzRC5oIgotI2luY2x1ZGUgIldlYkdMTGF5ZXIuaCIK
LQotI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
RHJhd2luZ0J1ZmZlcjo6RHJhd2luZ0J1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRl
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb25TdXBwb3J0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNlcnZl
RHJhd2luZ0J1ZmZlciBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFscGhhUmVxdWlyZW1lbnQgYWxwaGEpCi0gICAgOiBtX3ByZXNlcnZlRHJhd2lu
Z0J1ZmZlcihwcmVzZXJ2ZURyYXdpbmdCdWZmZXIpCi0gICAgLCBtX2FscGhhKGFscGhhKQotICAg
ICwgbV9zY2lzc29yRW5hYmxlZChmYWxzZSkKLSAgICAsIG1fdGV4dHVyZTJEQmluZGluZygwKQot
ICAgICwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcoMCkKLSAgICAsIG1fYWN0aXZlVGV4dHVyZVVuaXQo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0g
ICAgLCBtX3NpemUoLTEsIC0xKQotICAgICwgbV9tdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRl
ZChtdWx0aXNhbXBsZUV4dGVuc2lvblN1cHBvcnRlZCkKLSAgICAsIG1fcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uU3VwcG9ydGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN1cHBvcnRl
ZCkKLSAgICAsIG1fZmJvKGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpCi0gICAgLCBtX2Nv
bG9yQnVmZmVyKDApCi0gICAgLCBtX2Zyb250Q29sb3JCdWZmZXIoMCkKLSAgICAsIG1fc2VwYXJh
dGVGcm9udFRleHR1cmUoZmFsc2UpCi0gICAgLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcigwKQotICAg
ICwgbV9kZXB0aEJ1ZmZlcigwKQotICAgICwgbV9zdGVuY2lsQnVmZmVyKDApCi0gICAgLCBtX211
bHRpc2FtcGxlRkJPKDApCi0gICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKLXsKLSAg
ICBBU1NFUlQobV9mYm8pOwotICAgIGlmICghbV9mYm8pIHsKLSAgICAgICAgY2xlYXIoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgLy8gQ3JlYXRlIHRoZSBXZWJHTExh
eWVyCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIG1fcGxhdGZvcm1M
YXllciA9IGFkb3B0TlMoW1tXZWJHTExheWVyIGFsbG9jXSBpbml0V2l0aEdyYXBoaWNzQ29udGV4
dDNEOm1fY29udGV4dC5nZXQoKV0pOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgW21fcGxhdGZv
cm1MYXllci5nZXQoKSBzZXROYW1lOkAiRHJhd2luZ0J1ZmZlciBMYXllciJdOwotI2VuZGlmICAg
IAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQotICAgIC8vIGNyZWF0ZSBhIHRleHR1
cmUgdG8gcmVuZGVyIGludG8KLSAgICBtX2NvbG9yQnVmZmVyID0gY29udGV4dC0+Y3JlYXRlVGV4
dHVyZSgpOwotICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBtX2NvbG9yQnVmZmVyKTsKLSAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJmKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdf
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICBjb250ZXh0LT50ZXhQYXJh
bWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICBjb250
ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19F
REdFKTsKLSAgICBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4
dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7Ci0gICAgCi0gICAgY3JlYXRlU2Vjb25kYXJ5QnVmZmVy
cygpOwotICAgIHJlc2V0KHNpemUpOwotfQotCi1EcmF3aW5nQnVmZmVyOjp+RHJhd2luZ0J1ZmZl
cigpCi17Ci0gICAgY2xlYXIoKTsKLX0KLQotUGxhdGZvcm1MYXllciogRHJhd2luZ0J1ZmZlcjo6
cGxhdGZvcm1MYXllcigpCi17Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsKLX0K
LQotdW5zaWduZWQgRHJhd2luZ0J1ZmZlcjo6ZnJvbnRDb2xvckJ1ZmZlcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGNvbG9yQnVmZmVyKCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCAyNDUxYjY3NGQ4MmRiOGI1
Y2Q3ODJiMDlkZDcxMmU3OGM2NGMzNjJjLi42NDJlNTkzZmQ4MzgzZDkwOWU2NWM0OGRkZDAzYjYx
NDZjMzViNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1Jlc291
cmNlU2FmZSgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIs
IERyYXdpbmdCdWZmZXIqKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdS
ZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewogICAgIGludCByb3dC
eXRlcyA9IG1fY3VycmVudFdpZHRoICogNDsKICAgICBpbnQgdG90YWxCeXRlcyA9IHJvd0J5dGVz
ICogbV9jdXJyZW50SGVpZ2h0OwpAQCAtMTg0LDcgKzE4NCw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKERyYXdpbmdCdWZmZXIqKQorUGFz
c1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgLy8gUmVhZGluZyBwcmVtdWx0aXBsaWVkIGFscGhhIHdv
dWxkIGludm9sdmUgdW5wcmVtdWx0aXBseWluZywgd2hpY2ggaXMKICAgICAvLyBsb3NzeS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>