<?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>139187</bug_id>
          
          <creation_ts>2014-12-02 10:27:11 -0800</creation_ts>
          <short_desc>Get rid of the WinINet based network implementation</short_desc>
          <delta_ts>2014-12-02 11:01:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1051878</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-02 10:27:11 -0800</bug_when>
    <thetext>Get rid of the WinINet based network implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051879</commentid>
    <comment_count>1</comment_count>
      <attachid>242424</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-02 10:28:17 -0800</bug_when>
    <thetext>Created attachment 242424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051890</commentid>
    <comment_count>2</comment_count>
      <attachid>242424</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-12-02 11:00:49 -0800</bug_when>
    <thetext>Comment on attachment 242424
Patch

r=hue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051891</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-02 11:01:52 -0800</bug_when>
    <thetext>Committed r176672: &lt;http://trac.webkit.org/changeset/176672&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242424</attachid>
            <date>2014-12-02 10:28:17 -0800</date>
            <delta_ts>2014-12-02 11:00:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139187-20141202102848.patch</filename>
            <type>text/plain</type>
            <size>47567</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhkNjk3MzAwNGU5ODkz
MTViMGNlMDYwMTQxYzE5MDQ1YTNlODhkMS4uMWU4NDU3MGI3MTk4NDgwMjZhN2RmYjI4M2U3NTBl
MzBlZTY5N2JhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE0LTEyLTAyICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgR2V0IHJpZCBvZiB0
aGUgV2luSU5ldCBiYXNlZCBuZXR3b3JrIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkxODcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNvZGUgd2FzIG9ubHkgdXNlZCBi
eSB0aGUgV2luZG93cyBDRSBwb3J0LiBOb3cgaXQncyB1bnVzZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3dpbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vQ3JlZGVudGlhbFN0b3JhZ2VXaW4uY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvd2luL1Byb3h5U2VydmVyV2luLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUVycm9yLmg6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVX
aW4uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNl
UmVxdWVzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291
cmNlUmVzcG9uc2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9T
b2NrZXRTdHJlYW1FcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
d2luL1NvY2tldFN0cmVhbUhhbmRsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZVdpbi5jcHA6IFJlbW92ZWQuCisKKzIwMTQtMTIt
MDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1v
dmUgdmlzaXRlZCBsaW5rIGhhbmRsaW5nIGZyb20gUGFnZUdyb3VwCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkxODUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDYwNzNmMTAyNTA1
ZWI1ODQ0MDM2ZDg1MjJjZGZhMjgxYjEyYjdmMTMuLjMzOTQ0ZGI3NzNlYjdmZTY0ZTk1ZjI3NjA4
YTZiOTgxYjQ1YTcyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgKQEAgLTUxLDEzICs1MSw2IEBAIHR5cGVkZWYgc3RydWN0IF9Tb3Vw
UmVxdWVzdCBTb3VwUmVxdWVzdDsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZEYXRhICogQ0ZE
YXRhUmVmOwogI2VuZGlmCiAKLSNpZiBVU0UoV0lOSU5FVCkKLXR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBEV09SRDsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBEV09SRF9QVFI7Ci10eXBlZGVmIHZvaWQq
IExQVk9JRDsKLXR5cGVkZWYgTFBWT0lEIEhJTlRFUk5FVDsKLSNlbmRpZgotCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBPQkpDX0NMQVNTIE5T
RGF0YTsKQEAgLTE4MCwxNCArMTczLDYgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgZm9yY2VDb250ZW50U25pZmZpbmcoKTsKIAotI2lmIFVTRShXSU5JTkVUKQot
ICAgIHZvaWQgc2V0U3luY2hyb25vdXNJbnRlcm5ldEhhbmRsZShISU5URVJORVQpOwotICAgIHZv
aWQgZmlsZUxvYWRUaW1lcihUaW1lciopOwotICAgIHZvaWQgb25SZWRpcmVjdCgpOwotICAgIGJv
b2wgb25SZXF1ZXN0Q29tcGxldGUoKTsKLSAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyBpbnRlcm5l
dFN0YXR1c0NhbGxiYWNrKEhJTlRFUk5FVCwgRFdPUkRfUFRSLCBEV09SRCwgTFBWT0lELCBEV09S
RCk7Ci0jZW5kaWYKLQogI2lmIFVTRShDVVJMKSB8fCBVU0UoU09VUCkKICAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBnZXRJbnRlcm5hbCgpIHsgcmV0dXJuIGQuZ2V0KCk7IH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaAppbmRleCA5OThhMmUzYmM5YzQ2NzUyNmFkNmY3NGQzYWUyMWE4N2U5NmE2
MmJjLi5iMzgwZjIwNjA0MzUzZjI5NmU1YjIyZDU5YmEzNjNhOTNjY2JiMjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5l
Y3Rpb25Qcml2Lmg+CiAjZW5kaWYKIAotI2lmIFVTRShXSU5JTkVUKSB8fCAoVVNFKENVUkwpICYm
IFBMQVRGT1JNKFdJTikpCisjaWYgVVNFKENVUkwpICYmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRl
IDx3aW5zb2NrMi5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgpAQCAtODYsMTYgKzg2
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgICAgICAg
ICAsIG1fY3VycmVudFJlcXVlc3QocmVxdWVzdCkKICNlbmRpZgotI2lmIFVTRShXSU5JTkVUKQot
ICAgICAgICAgICAgLCBtX2ZpbGVMb2FkVGltZXIobG9hZGVyLCAmUmVzb3VyY2VIYW5kbGU6OmZp
bGVMb2FkVGltZXIpCi0gICAgICAgICAgICAsIG1faW50ZXJuZXRIYW5kbGUoMCkKLSAgICAgICAg
ICAgICwgbV9jb25uZWN0SGFuZGxlKDApCi0gICAgICAgICAgICAsIG1fcmVxdWVzdEhhbmRsZSgw
KQotICAgICAgICAgICAgLCBtX3NlbnRFbmRSZXF1ZXN0KGZhbHNlKQotICAgICAgICAgICAgLCBt
X2J5dGVzUmVtYWluaW5nVG9Xcml0ZSgwKQotICAgICAgICAgICAgLCBtX2xvYWRTeW5jaHJvbm91
c2x5KGZhbHNlKQotICAgICAgICAgICAgLCBtX2hhc1JlY2VpdmVkUmVzcG9uc2UoZmFsc2UpCi0j
ZW5kaWYKICNpZiBVU0UoQ1VSTCkKICAgICAgICAgICAgICwgbV9oYW5kbGUoMCkKICAgICAgICAg
ICAgICwgbV91cmwoMCkKQEAgLTE2MCwxOCArMTUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQogICAgICAgICBSZXRhaW5QdHI8
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9zdG9yYWdlU2Vzc2lvbjsKICNlbmRpZgotI2lmIFVT
RShXSU5JTkVUKQotICAgICAgICBUaW1lciBtX2ZpbGVMb2FkVGltZXI7Ci0gICAgICAgIEhJTlRF
Uk5FVCBtX2ludGVybmV0SGFuZGxlOwotICAgICAgICBISU5URVJORVQgbV9jb25uZWN0SGFuZGxl
OwotICAgICAgICBISU5URVJORVQgbV9yZXF1ZXN0SGFuZGxlOwotICAgICAgICBib29sIG1fc2Vu
dEVuZFJlcXVlc3Q7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiBtX2Zvcm1EYXRhOwotICAgICAgICBz
aXplX3QgbV9ieXRlc1JlbWFpbmluZ1RvV3JpdGU7Ci0gICAgICAgIGJvb2wgbV9sb2FkU3luY2hy
b25vdXNseTsKLSAgICAgICAgYm9vbCBtX2hhc1JlY2VpdmVkUmVzcG9uc2U7Ci0gICAgICAgIFN0
cmluZyBtX3JlZGlyZWN0VXJsOwotI2VuZGlmCiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwq
IG1faGFuZGxlOwogICAgICAgICBjaGFyKiBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDYzNTM5NmU1MjA5ZGVjNDc2MWZmNTlh
Mzc4NTY5Y2RmYmVkYTcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZV9oCi0jZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlX2gKLQot
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogcHVibGljIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZSB7Ci1wdWJsaWM6Ci0gICAgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQotICAgIHsKLSAgICB9Ci0KLSAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgcHJvcG9z
ZWRDcmVkZW50aWFsLCB1bnNpZ25lZCBwcmV2aW91c0ZhaWx1cmVDb3VudCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQotICAgICAg
ICA6IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZShwcm90ZWN0aW9uU3BhY2UsIHByb3Bvc2Vk
Q3JlZGVudGlhbCwgcHJldmlvdXNGYWlsdXJlQ291bnQsIHJlc3BvbnNlLCBlcnJvcikKLSAgICB7
Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZiZDNjNTQ5OGQzNmRkYjM0ODIyNzUzMGY0Y2RhMzdjN2NiMjQyYTMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5o
IgotCi0jaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgotI2luY2x1ZGUg
PHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxXaW5pbmV0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0
UGFydHkgYXJndW1lbnQuCi0gICAgU3RyaW5nIHN0ciA9IHVybC5zdHJpbmcoKTsKLSAgICBTdHJp
bmcgdmFsID0gdmFsdWU7Ci0gICAgSW50ZXJuZXRTZXRDb29raWUoc3RyLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCB2YWwuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpOwotfQotCi1TdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICAvLyBG
SVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCi0KLSAgICBTdHJpbmcgc3RyID0g
dXJsLnN0cmluZygpOwotCi0gICAgRFdPUkQgY291bnQgPSAwOwotICAgIGlmICghSW50ZXJuZXRH
ZXRDb29raWUoc3RyLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCAw
LCAmY291bnQpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBpZiAoY291bnQgPD0g
MSkgLy8gTnVsbCB0ZXJtaW5hdG9yIGNvdW50cyBhcyAxLgotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0KLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihjb3VudCk7Ci0gICAgaWYgKCFJbnRlcm5l
dEdldENvb2tpZShzdHIuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIDAs
IGJ1ZmZlci5kYXRhKCksICZjb3VudCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAg
IGJ1ZmZlci5zaHJpbmsoY291bnQgLSAxKTsgLy8gSWdub3JlIHRoZSBudWxsIHRlcm1pbmF0b3Iu
Ci0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKLX0KLQotU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKLXsKLSAgICAvLyBGSVhN
RTogaW5jbHVkZSBIdHRwT25seSBjb29raWUKLSAgICByZXR1cm4gY29va2llc0ZvckRPTShzZXNz
aW9uLmNvbnRleHQoKSwgZmlyc3RQYXJ0eSwgdXJsKTsKLX0KLQotYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ym9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovLCBWZWN0b3I8Q29v
a2llPiYgcmF3Q29va2llcykKLXsKLSAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAot
ICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVl
IHdoZW4gaW1wbGVtZW50ZWQKLX0KLQotdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhN
RTogTm90IHlldCBpbXBsZW1lbnRlZAotfQotCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVz
KQotewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCi19Ci0KLXZvaWQgZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKLX0K
LQotdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCi17
Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKLX0KLQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ3JlZGVudGlhbFN0b3JhZ2VXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ3JlZGVudGlhbFN0b3Jh
Z2VXaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzhkYTFjZDc5NjYyMTRi
OTAwZjgyNTYxMmZlOTBkYTdlOGI4MDBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0NyZWRl
bnRpYWxTdG9yYWdlV2luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCi0KLSNpbmNsdWRlICJDcmVkZW50aWFsLmgi
Ci0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1D
cmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXRGcm9tUGVyc2lzdGVudFN0b3JhZ2UoY29u
c3QgUHJvdGVjdGlvblNwYWNlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBDcmVkZW50aWFsKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Byb3h5U2VydmVyV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Byb3h5U2VydmVyV2luLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ5NWI0NWI4MWQ0ZjZlYzZkNGIwZjUxYzJi
Y2EwZTJlZmJkMGNmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Qcm94eVNlcnZlcldpbi5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEJyZW50IEZ1bGdoYW0gPGJmdWxnaGFtQHdlYmtpdC5vcmc+LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUHJveHlTZXJ2
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5
U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCi17Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUVycm9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDcyMzdiNmRjMjJlNTI3NjAwNWNmMTI0NGY3OWIwNWZiOGY2ODI5MGUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VFcnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgUmVzb3VyY2VFcnJvcl9oCi0jZGVmaW5lIFJlc291cmNlRXJyb3Jf
aAotCi0jaW5jbHVkZSAiUmVzb3VyY2VFcnJvckJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBSZXNvdXJjZUVycm9yIDogcHVibGljIFJlc291cmNlRXJyb3JCYXNlIHsKLXB1
YmxpYzoKLSAgICBSZXNvdXJjZUVycm9yKCkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb3VyY2VF
cnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBm
YWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQotICAgICAgICA6
IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6
ZWREZXNjcmlwdGlvbikKLSAgICB7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gUmVzb3VyY2VFcnJvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNjBhNTVjM2I3NmYzOTkzNTI2NzAxZTEwYjBmMjhmNDkz
ZDFkNzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+Ci0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKLQotI2luY2x1ZGUgIkRhdGFVUkwuaCIKLSNpbmNsdWRl
ICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5j
bHVkZSAiUmVzb3VyY2VFcnJvci5oIgotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50Lmgi
Ci0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4K
LSNpbmNsdWRlIDx3aW5pbmV0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGlu
bGluZSBISU5URVJORVQgY3JlYXRlSW50ZXJuZXRIYW5kbGUoY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIGJvb2wgYXN5bmNocm9ub3VzKQotewotICAgIFN0cmluZyB1c2VyQWdlbnRTdHJpbmcgPSB1
c2VyQWdlbnQ7Ci0gICAgSElOVEVSTkVUIGludGVybmV0SGFuZGxlID0gSW50ZXJuZXRPcGVuVyh1
c2VyQWdlbnRTdHJpbmcuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIElO
VEVSTkVUX09QRU5fVFlQRV9QUkVDT05GSUcsIDAsIDAsIGFzeW5jaHJvbm91cyA/IElOVEVSTkVU
X0ZMQUdfQVNZTkMgOiAwKTsKLQotICAgIGlmIChhc3luY2hyb25vdXMpCi0gICAgICAgIEludGVy
bmV0U2V0U3RhdHVzQ2FsbGJhY2soaW50ZXJuZXRIYW5kbGUsICZSZXNvdXJjZUhhbmRsZTo6aW50
ZXJuZXRTdGF0dXNDYWxsYmFjayk7Ci0KLSAgICByZXR1cm4gaW50ZXJuZXRIYW5kbGU7Ci19Ci0K
LXN0YXRpYyBISU5URVJORVQgYXN5bmNocm9ub3VzSW50ZXJuZXRIYW5kbGUoY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQpCi17Ci0gICAgc3RhdGljIEhJTlRFUk5FVCBpbnRlcm5ldEhhbmRsZSA9IGNy
ZWF0ZUludGVybmV0SGFuZGxlKHVzZXJBZ2VudCwgdHJ1ZSk7Ci0gICAgcmV0dXJuIGludGVybmV0
SGFuZGxlOwotfQotCi1zdGF0aWMgU3RyaW5nIHF1ZXJ5SFRUUEhlYWRlcihISU5URVJORVQgcmVx
dWVzdEhhbmRsZSwgRFdPUkQgaW5mb0xldmVsKQotewotICAgIERXT1JEIGJ1ZmZlclNpemUgPSAw
OwotICAgIEh0dHBRdWVyeUluZm9XKHJlcXVlc3RIYW5kbGUsIGluZm9MZXZlbCwgMCwgJmJ1ZmZl
clNpemUsIDApOwotCi0gICAgVmVjdG9yPFVDaGFyPiBjaGFyYWN0ZXJzKGJ1ZmZlclNpemUgLyBz
aXplb2YoVUNoYXIpKTsKLQotICAgIGlmICghSHR0cFF1ZXJ5SW5mb1cocmVxdWVzdEhhbmRsZSwg
aW5mb0xldmVsLCBjaGFyYWN0ZXJzLmRhdGEoKSwgJmJ1ZmZlclNpemUsIDApKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBjaGFyYWN0ZXJzLnJlbW92ZUxhc3QoKTsgLy8gUmVtb3Zl
IE51bGxUZXJtaW5hdGlvbi4KLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChjaGFyYWN0ZXJzKTsK
LX0KLQotCi1jbGFzcyBXZWJDb3JlU3luY2hyb25vdXNMb2FkZXIgOiBwdWJsaWMgUmVzb3VyY2VI
YW5kbGVDbGllbnQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVTeW5jaHJvbm91
c0xvYWRlcik7Ci1wdWJsaWM6Ci0gICAgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyKFJlc291cmNl
RXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpOwotICAgIH5XZWJDb3JlU3luY2hyb25vdXNMb2FkZXIoKTsKLQotICAgIEhJTlRF
Uk5FVCBpbnRlcm5ldEhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuZXRIYW5kbGU7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxl
KiwgZG91YmxlIC8qZmluaXNoVGltZSovKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLQotcHJpdmF0ZToKLSAgICBSZXNv
dXJjZUVycm9yJiBtX2Vycm9yOwotICAgIFJlc291cmNlUmVzcG9uc2UmIG1fcmVzcG9uc2U7Ci0g
ICAgVmVjdG9yPGNoYXI+JiBtX2RhdGE7Ci0gICAgSElOVEVSTkVUIG1faW50ZXJuZXRIYW5kbGU7
Ci19OwotCi1XZWJDb3JlU3luY2hyb25vdXNMb2FkZXI6OldlYkNvcmVTeW5jaHJvbm91c0xvYWRl
cihSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3Rv
cjxjaGFyPiYgZGF0YSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCi0gICAgOiBtX2Vycm9yKGVy
cm9yKQotICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKLSAgICAsIG1fZGF0YShkYXRhKQotICAg
ICwgbV9pbnRlcm5ldEhhbmRsZShjcmVhdGVJbnRlcm5ldEhhbmRsZSh1c2VyQWdlbnQsIGZhbHNl
KSkKLXsKLX0KLQotV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjp+V2ViQ29yZVN5bmNocm9ub3Vz
TG9hZGVyKCkKLXsKLSAgICBJbnRlcm5ldENsb3NlSGFuZGxlKG1faW50ZXJuZXRIYW5kbGUpOwot
fQotCi12b2lkIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17Ci0gICAg
bV9yZXNwb25zZSA9IHJlc3BvbnNlOwotfQotCi12b2lkIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgsIGludCkKLXsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci19
Ci0KLXZvaWQgV2ViQ29yZVN5bmNocm9ub3VzTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlSGFuZGxlKiwgZG91YmxlKQotewotfQotCi12b2lkIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRl
cjo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQot
ewotICAgIG1fZXJyb3IgPSBlcnJvcjsKLX0KLQotCi1SZXNvdXJjZUhhbmRsZUludGVybmFsOjp+
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCi17Ci19Ci0KLVJlc291cmNlSGFuZGxlOjp+UmVzb3Vy
Y2VIYW5kbGUoKQotewotfQotCi1zdGF0aWMgdm9pZCBjYWxsT25SZWRpcmVjdCh2b2lkKiBjb250
ZXh0KQotewotICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGNvbnRleHQpOwotICAgIGhhbmRsZS0+b25SZWRpcmVjdCgpOwotfQotCi1zdGF0
aWMgdm9pZCBjYWxsT25SZXF1ZXN0Q29tcGxldGUodm9pZCogY29udGV4dCkKLXsKLSAgICBSZXNv
dXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb250ZXh0
KTsKLSAgICBoYW5kbGUtPm9uUmVxdWVzdENvbXBsZXRlKCk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VI
YW5kbGU6OmludGVybmV0U3RhdHVzQ2FsbGJhY2soSElOVEVSTkVUIGludGVybmV0SGFuZGxlLCBE
V09SRF9QVFIgY29udGV4dCwgRFdPUkQgaW50ZXJuZXRTdGF0dXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQVk9JRCBzdGF0dXNJbmZvcm1h
dGlvbiwgRFdPUkQgc3RhdHVzSW5mb3JtYXRpb25MZW5ndGgpCi17Ci0gICAgUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb250ZXh0KTsK
LQotICAgIHN3aXRjaCAoaW50ZXJuZXRTdGF0dXMpIHsKLSAgICBjYXNlIElOVEVSTkVUX1NUQVRV
U19SRURJUkVDVDoKLSAgICAgICAgaGFuZGxlLT5kLT5tX3JlZGlyZWN0VXJsID0gU3RyaW5nKHN0
YXRpY19jYXN0PFVDaGFyKj4oc3RhdHVzSW5mb3JtYXRpb24pLCBzdGF0dXNJbmZvcm1hdGlvbkxl
bmd0aCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoY2FsbE9uUmVkaXJlY3QsIGhhbmRsZSk7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBJTlRFUk5FVF9TVEFUVVNfUkVRVUVTVF9DT01Q
TEVURToKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChjYWxsT25SZXF1ZXN0Q29tcGxldGUsIGhh
bmRsZSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotfQotCi12b2lkIFJlc291cmNlSGFuZGxlOjpvblJlZGlyZWN0KCkKLXsKLSAgICBSZXNv
dXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IGZpcnN0UmVxdWVzdCgpOwotICAgIG5ld1JlcXVlc3Qu
c2V0VVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIGQtPm1fcmVkaXJlY3RVcmwpKTsKLQotICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UoZmlyc3RSZXF1ZXN0KCkudXJsKCksIFN0cmluZygpLCAw
LCBTdHJpbmcoKSwgU3RyaW5nKCkpOwotCi0gICAgaWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiBy
ZXNvdXJjZUhhbmRsZUNsaWVudCA9IGNsaWVudCgpKQotICAgICAgICByZXNvdXJjZUhhbmRsZUNs
aWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIG5ld1JlcXVlc3QsIHJlc3BvbnNlKTsKLX0KLQot
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6b25SZXF1ZXN0Q29tcGxldGUoKQotewotICAgIGlmICghZC0+
bV9pbnRlcm5ldEhhbmRsZSkgeyAvLyAwIGlmIGNhbmNlbGVkLgotICAgICAgICBkZXJlZigpOyAv
LyBiYWxhbmNlcyByZWYgaW4gc3RhcnQKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIGlmIChkLT5tX2J5dGVzUmVtYWluaW5nVG9Xcml0ZSkgewotICAgICAgICBEV09SRCBieXRl
c1dyaXR0ZW47Ci0gICAgICAgIEludGVybmV0V3JpdGVGaWxlKGQtPm1fcmVxdWVzdEhhbmRsZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+bV9mb3JtRGF0YS5kYXRhKCkgKyAoZC0+bV9m
b3JtRGF0YS5zaXplKCkgLSBkLT5tX2J5dGVzUmVtYWluaW5nVG9Xcml0ZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGQtPm1fYnl0ZXNSZW1haW5pbmdUb1dyaXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAmYnl0ZXNXcml0dGVuKTsKLSAgICAgICAgZC0+bV9ieXRlc1JlbWFpbmlu
Z1RvV3JpdGUgLT0gYnl0ZXNXcml0dGVuOwotICAgICAgICBpZiAoZC0+bV9ieXRlc1JlbWFpbmlu
Z1RvV3JpdGUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZC0+bV9mb3JtRGF0
YS5jbGVhcigpOwotICAgIH0KLQotICAgIGlmICghZC0+bV9zZW50RW5kUmVxdWVzdCkgewotICAg
ICAgICBIdHRwRW5kUmVxdWVzdFcoZC0+bV9yZXF1ZXN0SGFuZGxlLCAwLCAwLCByZWludGVycHJl
dF9jYXN0PERXT1JEX1BUUj4odGhpcykpOwotICAgICAgICBkLT5tX3NlbnRFbmRSZXF1ZXN0ID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGlu
dCBidWZmZXJTaXplID0gMzI3Njg7Ci0gICAgY2hhciBidWZmZXJbYnVmZmVyU2l6ZV07Ci0gICAg
SU5URVJORVRfQlVGRkVSU0EgYnVmZmVyczsKLSAgICBidWZmZXJzLmR3U3RydWN0U2l6ZSA9IHNp
emVvZihJTlRFUk5FVF9CVUZGRVJTQSk7Ci0gICAgYnVmZmVycy5scHZCdWZmZXIgPSBidWZmZXI7
Ci0gICAgYnVmZmVycy5kd0J1ZmZlckxlbmd0aCA9IGJ1ZmZlclNpemU7Ci0KLSAgICBCT09MIG9r
ID0gRkFMU0U7Ci0gICAgd2hpbGUgKChvayA9IEludGVybmV0UmVhZEZpbGVFeEEoZC0+bV9yZXF1
ZXN0SGFuZGxlLCAmYnVmZmVycywgZC0+bV9sb2FkU3luY2hyb25vdXNseSA/IDAgOiBJUkZfTk9f
V0FJVCwgcmVpbnRlcnByZXRfY2FzdDxEV09SRF9QVFI+KHRoaXMpKSkgJiYgYnVmZmVycy5kd0J1
ZmZlckxlbmd0aCkgewotICAgICAgICBpZiAoIWQtPm1faGFzUmVjZWl2ZWRSZXNwb25zZSkgewot
ICAgICAgICAgICAgZC0+bV9oYXNSZWNlaXZlZFJlc3BvbnNlID0gdHJ1ZTsKLQotICAgICAgICAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICAgICAgICAgIHJlc3BvbnNlLnNldFVS
TChmaXJzdFJlcXVlc3QoKS51cmwoKSk7Ci0KLSAgICAgICAgICAgIFN0cmluZyBodHRwU3RhdHVz
VGV4dCA9IHF1ZXJ5SFRUUEhlYWRlcihkLT5tX3JlcXVlc3RIYW5kbGUsIEhUVFBfUVVFUllfU1RB
VFVTX1RFWFQpOwotICAgICAgICAgICAgaWYgKCFodHRwU3RhdHVzVGV4dC5pc051bGwoKSkKLSAg
ICAgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChodHRwU3RhdHVzVGV4dCk7
Ci0KLSAgICAgICAgICAgIFN0cmluZyBodHRwU3RhdHVzQ29kZSA9IHF1ZXJ5SFRUUEhlYWRlcihk
LT5tX3JlcXVlc3RIYW5kbGUsIEhUVFBfUVVFUllfU1RBVFVTX0NPREUpOwotICAgICAgICAgICAg
aWYgKCFodHRwU3RhdHVzQ29kZS5pc051bGwoKSkKLSAgICAgICAgICAgICAgICByZXNwb25zZS5z
ZXRIVFRQU3RhdHVzQ29kZShodHRwU3RhdHVzQ29kZS50b0ludCgpKTsKLQotICAgICAgICAgICAg
U3RyaW5nIGh0dHBDb250ZW50TGVuZ3RoID0gcXVlcnlIVFRQSGVhZGVyKGQtPm1fcmVxdWVzdEhh
bmRsZSwgSFRUUF9RVUVSWV9DT05URU5UX0xFTkdUSCk7Ci0gICAgICAgICAgICBpZiAoIWh0dHBD
b250ZW50TGVuZ3RoLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEV4cGVj
dGVkQ29udGVudExlbmd0aChodHRwQ29udGVudExlbmd0aC50b0ludCgpKTsKLQotICAgICAgICAg
ICAgU3RyaW5nIGh0dHBDb250ZW50VHlwZSA9IHF1ZXJ5SFRUUEhlYWRlcihkLT5tX3JlcXVlc3RI
YW5kbGUsIEhUVFBfUVVFUllfQ09OVEVOVF9UWVBFKTsKLSAgICAgICAgICAgIGlmICghaHR0cENv
bnRlbnRUeXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0TWltZVR5
cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShodHRwQ29udGVudFR5cGUpKTsKLSAgICAg
ICAgICAgICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShodHRwQ29udGVudFR5cGUpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKFJlc291cmNlSGFuZGxlQ2xpZW50KiByZXNvdXJjZUhhbmRsZUNsaWVudCA9IGNsaWVu
dCgpKQotICAgICAgICAgICAgICAgIHJlc291cmNlSGFuZGxlQ2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UodGhpcywgcmVzcG9uc2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklYTUU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5MwotICAgICAgICAvLyAt
MSBtZWFucyB3ZSBkbyBub3QgcHJvdmlkZSBhbnkgZGF0YSBhYm91dCB0cmFuc2ZlciBzaXplIHRv
IGluc3BlY3RvciBzbyBpdCB3b3VsZCB1c2UKLSAgICAgICAgLy8gQ29udGVudC1MZW5ndGggaGVh
ZGVycyBvciBjb250ZW50IHNpemUgdG8gc2hvdyB0cmFuc2ZlciBzaXplLgotICAgICAgICBpZiAo
UmVzb3VyY2VIYW5kbGVDbGllbnQqIHJlc291cmNlSGFuZGxlQ2xpZW50ID0gY2xpZW50KCkpCi0g
ICAgICAgICAgICByZXNvdXJjZUhhbmRsZUNsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyLCBidWZmZXJzLmR3QnVmZmVyTGVuZ3RoLCAtMSk7Ci0gICAgICAgIGJ1ZmZlcnMuZHdCdWZm
ZXJMZW5ndGggPSBidWZmZXJTaXplOwotICAgIH0KLQotICAgIGlmICghb2sgJiYgR2V0TGFzdEVy
cm9yKCkgPT0gRVJST1JfSU9fUEVORElORykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBp
ZiAoUmVzb3VyY2VIYW5kbGVDbGllbnQqIHJlc291cmNlSGFuZGxlQ2xpZW50ID0gY2xpZW50KCkp
Ci0gICAgICAgIHJlc291cmNlSGFuZGxlQ2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKHRoaXMsIDAp
OwotCi0gICAgSW50ZXJuZXRDbG9zZUhhbmRsZShkLT5tX3JlcXVlc3RIYW5kbGUpOwotICAgIElu
dGVybmV0Q2xvc2VIYW5kbGUoZC0+bV9jb25uZWN0SGFuZGxlKTsKLSAgICBkZXJlZigpOyAvLyBi
YWxhbmNlcyByZWYgaW4gc3RhcnQKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVzb3Vy
Y2VIYW5kbGU6OnN0YXJ0KCkKLXsKLSAgICBpZiAoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaXNMb2Nh
bEZpbGUoKSB8fCBmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgpKSB7Ci0gICAg
ICAgIHJlZigpOyAvLyBiYWxhbmNlZCBieSBkZXJlZiBpbiBmaWxlTG9hZFRpbWVyCi0gICAgICAg
IGlmIChkLT5tX2xvYWRTeW5jaHJvbm91c2x5KQotICAgICAgICAgICAgZmlsZUxvYWRUaW1lcigw
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZC0+bV9maWxlTG9hZFRpbWVyLnN0YXJ0T25l
U2hvdCgwLjApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoIWQtPm1f
aW50ZXJuZXRIYW5kbGUpCi0gICAgICAgIGQtPm1faW50ZXJuZXRIYW5kbGUgPSBhc3luY2hyb25v
dXNJbnRlcm5ldEhhbmRsZShkLT5tX2NvbnRleHQtPnVzZXJBZ2VudCgpKTsKLQotICAgIGlmICgh
ZC0+bV9pbnRlcm5ldEhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgRFdPUkQg
ZmxhZ3MgPSBJTlRFUk5FVF9GTEFHX0tFRVBfQ09OTkVDVElPTgotICAgICAgICB8IElOVEVSTkVU
X0ZMQUdfSUdOT1JFX1JFRElSRUNUX1RPX0hUVFBTCi0gICAgICAgIHwgSU5URVJORVRfRkxBR19J
R05PUkVfUkVESVJFQ1RfVE9fSFRUUAotICAgICAgICB8IElOVEVSTkVUX0ZMQUdfRE9OVF9DQUNI
RQotICAgICAgICB8IElOVEVSTkVUX0ZMQUdfUkVMT0FEOwotCi0gICAgZC0+bV9jb25uZWN0SGFu
ZGxlID0gSW50ZXJuZXRDb25uZWN0VyhkLT5tX2ludGVybmV0SGFuZGxlLCBmaXJzdFJlcXVlc3Qo
KS51cmwoKS5ob3N0KCkuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIGZp
cnN0UmVxdWVzdCgpLnVybCgpLnBvcnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDAsIElOVEVSTkVUX1NFUlZJQ0VfSFRUUCwgZmxhZ3MsIHJlaW50ZXJw
cmV0X2Nhc3Q8RFdPUkRfUFRSPih0aGlzKSk7Ci0KLSAgICBpZiAoIWQtPm1fY29ubmVjdEhhbmRs
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgU3RyaW5nIHVybFN0ciA9IGZpcnN0UmVx
dWVzdCgpLnVybCgpLnBhdGgoKTsKLSAgICBTdHJpbmcgdXJsUXVlcnkgPSBmaXJzdFJlcXVlc3Qo
KS51cmwoKS5xdWVyeSgpOwotCi0gICAgaWYgKCF1cmxRdWVyeS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgdXJsU3RyLmFwcGVuZCgnPycpOwotICAgICAgICB1cmxTdHIuYXBwZW5kKHVybFF1ZXJ5KTsK
LSAgICB9Ci0KLSAgICBTdHJpbmcgaHR0cE1ldGhvZCA9IGZpcnN0UmVxdWVzdCgpLmh0dHBNZXRo
b2QoKTsKLSAgICBTdHJpbmcgaHR0cFJlZmVycmVyID0gZmlyc3RSZXF1ZXN0KCkuaHR0cFJlZmVy
cmVyKCk7Ci0KLSAgICBMUENXU1RSIGh0dHBBY2NlcHRbXSA9IHsgTCIqLyoiLCAwIH07Ci0KLSAg
ICBkLT5tX3JlcXVlc3RIYW5kbGUgPSBIdHRwT3BlblJlcXVlc3RXKGQtPm1fY29ubmVjdEhhbmRs
ZSwgaHR0cE1ldGhvZC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgdXJs
U3RyLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgaHR0cFJlZmVycmVyLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBodHRwQWNjZXB0LCBmbGFncywgcmVpbnRlcnBy
ZXRfY2FzdDxEV09SRF9QVFI+KHRoaXMpKTsKLQotICAgIGlmICghZC0+bV9yZXF1ZXN0SGFuZGxl
KSB7Ci0gICAgICAgIEludGVybmV0Q2xvc2VIYW5kbGUoZC0+bV9jb25uZWN0SGFuZGxlKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChmaXJzdFJlcXVlc3QoKS5odHRw
Qm9keSgpKSB7Ci0gICAgICAgIGZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCktPmZsYXR0ZW4oZC0+
bV9mb3JtRGF0YSk7Ci0gICAgICAgIGQtPm1fYnl0ZXNSZW1haW5pbmdUb1dyaXRlID0gZC0+bV9m
b3JtRGF0YS5zaXplKCk7Ci0gICAgfQotCi0gICAgVmVjdG9yPFVDaGFyPiBodHRwSGVhZGVyczsK
LSAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBodHRwSGVhZGVyRmllbGRzID0gZmlyc3RSZXF1ZXN0
KCkuaHR0cEhlYWRlckZpZWxkcygpOwotCi0gICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGh0dHBIZWFkZXJGaWVsZHMuYmVnaW4oKTsgaXQgIT0gaHR0cEhlYWRlckZp
ZWxkcy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoaXQtPmtl
eSwgIkFjY2VwdCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGl0LT5rZXksICJSZWZlcmVyIikgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UoaXQtPmtleSwgIlVzZXItQWdlbnQiKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIGlmICghaHR0cEhlYWRlcnMuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgaHR0cEhlYWRlcnMuYXBwZW5kKCdcbicpOwotCi0gICAgICAgIGh0dHBIZWFkZXJzLmFwcGVu
ZChpdC0+a2V5LmNoYXJhY3RlcnMoKSwgaXQtPmtleS5sZW5ndGgoKSk7Ci0gICAgICAgIGh0dHBI
ZWFkZXJzLmFwcGVuZCgnOicpOwotICAgICAgICBodHRwSGVhZGVycy5hcHBlbmQoaXQtPnZhbHVl
LmNoYXJhY3RlcnMoKSwgaXQtPnZhbHVlLmxlbmd0aCgpKTsKLSAgICB9Ci0KLSAgICBJTlRFUk5F
VF9CVUZGRVJTVyBpbnRlcm5ldEJ1ZmZlcnM7Ci0gICAgWmVyb01lbW9yeSgmaW50ZXJuZXRCdWZm
ZXJzLCBzaXplb2YoaW50ZXJuZXRCdWZmZXJzKSk7Ci0gICAgaW50ZXJuZXRCdWZmZXJzLmR3U3Ry
dWN0U2l6ZSA9IHNpemVvZihpbnRlcm5ldEJ1ZmZlcnMpOwotICAgIGludGVybmV0QnVmZmVycy5s
cGNzekhlYWRlciA9IGh0dHBIZWFkZXJzLmRhdGEoKTsKLSAgICBpbnRlcm5ldEJ1ZmZlcnMuZHdI
ZWFkZXJzTGVuZ3RoID0gaHR0cEhlYWRlcnMuc2l6ZSgpOwotICAgIGludGVybmV0QnVmZmVycy5k
d0J1ZmZlclRvdGFsID0gZC0+bV9ieXRlc1JlbWFpbmluZ1RvV3JpdGU7Ci0KLSAgICBIdHRwU2Vu
ZFJlcXVlc3RFeFcoZC0+bV9yZXF1ZXN0SGFuZGxlLCAmaW50ZXJuZXRCdWZmZXJzLCAwLCAwLCBy
ZWludGVycHJldF9jYXN0PERXT1JEX1BUUj4odGhpcykpOwotCi0gICAgcmVmKCk7IC8vIGJhbGFu
Y2VkIGJ5IGRlcmVmIGluIG9uUmVxdWVzdENvbXBsZXRlCi0KLSAgICBpZiAoZC0+bV9sb2FkU3lu
Y2hyb25vdXNseSkKLSAgICAgICAgd2hpbGUgKG9uUmVxdWVzdENvbXBsZXRlKCkpIHsKLSAgICAg
ICAgICAgIC8vIExvb3AgdW50aWwgZmluaXNoZWQuCi0gICAgICAgIH0KLQotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIFJlc291cmNlSGFuZGxlOjpmaWxlTG9hZFRpbWVyKFRpbWVyKikKLXsK
LSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBkZXJlZigp
OyAvLyBiYWxhbmNlcyByZWYgaW4gc3RhcnQKLQotICAgIGlmIChmaXJzdFJlcXVlc3QoKS51cmwo
KS5wcm90b2NvbElzRGF0YSgpKSB7Ci0gICAgICAgIGhhbmRsZURhdGFVUkwodGhpcyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZmlsZU5hbWUgPSBmaXJzdFJlcXVlc3Qo
KS51cmwoKS5maWxlU3lzdGVtUGF0aCgpOwotICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRl
RmlsZVcoZmlsZU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIEdF
TkVSSUNfUkVBRCwgMCwgMCwgT1BFTl9FWElTVElORywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAw
KTsKLQotICAgIGlmIChmaWxlSGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAg
ICAgIGNsaWVudCgpLT5kaWRGYWlsKHRoaXMsIFJlc291cmNlRXJyb3IoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotCi0gICAgaW50
IGRvdFBvcyA9IGZpbGVOYW1lLnJldmVyc2VGaW5kKCcuJyk7Ci0gICAgaW50IHNsYXNoUG9zID0g
ZmlsZU5hbWUucmV2ZXJzZUZpbmQoJy8nKTsKLQotICAgIGlmIChzbGFzaFBvcyA8IGRvdFBvcyAm
JiBkb3RQb3MgIT0gLTEpIHsKLSAgICAgICAgU3RyaW5nIGV4dCA9IGZpbGVOYW1lLnN1YnN0cmlu
Zyhkb3RQb3MgKyAxKTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0KSk7Ci0gICAgfQotCi0gICAgY2xpZW50
KCktPmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCByZXNwb25zZSk7Ci0KLSAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwotICAgIERXT1JEIGJ5dGVzUmVhZCA9IDA7Ci0KLSAgICBkbyB7Ci0gICAgICAg
IGNvbnN0IGludCBidWZmZXJTaXplID0gODE5MjsKLSAgICAgICAgY2hhciBidWZmZXJbYnVmZmVy
U2l6ZV07Ci0gICAgICAgIHJlc3VsdCA9IFJlYWRGaWxlKGZpbGVIYW5kbGUsICZidWZmZXIsIGJ1
ZmZlclNpemUsICZieXRlc1JlYWQsIDApOwotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCi0gICAgICAgIC8vIC0xIG1lYW5zIHdl
IGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9y
IHNvIGl0IHdvdWxkIHVzZQotICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNv
bnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIGlmIChyZXN1bHQgJiYg
Ynl0ZXNSZWFkKQotICAgICAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciwgYnl0ZXNSZWFkLCAtMSk7Ci0gICAgICAgIC8vIENoZWNrIGZvciBlbmQgb2YgZmlsZS4K
LSAgICB9IHdoaWxlIChyZXN1bHQgJiYgYnl0ZXNSZWFkKTsKLQotICAgIENsb3NlSGFuZGxlKGZp
bGVIYW5kbGUpOwotCi0gICAgY2xpZW50KCktPmRpZEZpbmlzaExvYWRpbmcodGhpcywgMCk7Ci19
Ci0KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhbmNlbCgpCi17Ci0gICAgaWYgKGQtPm1fcmVxdWVz
dEhhbmRsZSkgewotICAgICAgICBkLT5tX2ludGVybmV0SGFuZGxlID0gMDsKLSAgICAgICAgSW50
ZXJuZXRDbG9zZUhhbmRsZShkLT5tX3JlcXVlc3RIYW5kbGUpOwotICAgICAgICBJbnRlcm5ldENs
b3NlSGFuZGxlKGQtPm1fY29ubmVjdEhhbmRsZSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGQtPm1f
ZmlsZUxvYWRUaW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3Jt
TG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVk
ZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBWZWN0b3I8Y2hhcj4mIGRhdGEpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHN0b3JlZENyZWRlbnRp
YWxzKTsKLQotICAgIFdlYkNvcmVTeW5jaHJvbm91c0xvYWRlciBzeW5jTG9hZGVyKGVycm9yLCBy
ZXNwb25zZSwgZGF0YSwgcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwotICAgIFJlc291cmNlSGFu
ZGxlIGhhbmRsZShjb250ZXh0LCByZXF1ZXN0LCAmc3luY0xvYWRlciwgdHJ1ZSwgZmFsc2UpOwot
Ci0gICAgaGFuZGxlLnNldFN5bmNocm9ub3VzSW50ZXJuZXRIYW5kbGUoc3luY0xvYWRlci5pbnRl
cm5ldEhhbmRsZSgpKTsKLSAgICBoYW5kbGUuc3RhcnQoKTsKLX0KLQotdm9pZCBSZXNvdXJjZUhh
bmRsZTo6c2V0U3luY2hyb25vdXNJbnRlcm5ldEhhbmRsZShISU5URVJORVQgaW50ZXJuZXRIYW5k
bGUpCi17Ci0gICAgZC0+bV9pbnRlcm5ldEhhbmRsZSA9IGludGVybmV0SGFuZGxlOwotICAgIGQt
Pm1fbG9hZFN5bmNocm9ub3VzbHkgPSB0cnVlOwotfQotCi12b2lkIHByZWZldGNoRE5TKGNvbnN0
IFN0cmluZyYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotYm9vbCBSZXNvdXJjZUhh
bmRsZTo6bG9hZHNCbG9ja2VkKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUmVz
b3VyY2VIYW5kbGU6OnBsYXRmb3JtU2V0RGVmZXJzTG9hZGluZyhib29sKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZGIxYjA2MTdmMDFjMmY0MzZkYTk4ZTI0NmIyMjhl
YjFjYjg0NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+Ci0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZXNvdXJjZVJlcXVlc3RfaAot
I2RlZmluZSBSZXNvdXJjZVJlcXVlc3RfaAotCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlc291cmNlUmVxdWVzdCA6IHB1
YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKLXB1YmxpYzoKLSAgICBSZXNvdXJjZVJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQotICAgIHsKLSAgICB9
Ci0KLSAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwpCi0gICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCi0gICAgewotICAgIH0K
LQotICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNo
ZVBvbGljeSkKLSAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQotICAg
IHsKLSAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKLSAgICB9Ci0KLSAgICBSZXNv
dXJjZVJlcXVlc3QoKQotICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVBy
b3RvY29sQ2FjaGVQb2xpY3kpCi0gICAgewotICAgIH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQg
c3RydWN0IFJlc291cmNlUmVxdWVzdEJhc2U7Ci0KLSAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KCkgeyB9Ci0gICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpIHsgfQotICAg
IHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9Ci0gICAgdm9pZCBkb1VwZGF0ZVJl
c291cmNlSFRUUEJvZHkoKSB7IH0KLQotICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAgICB2b2lk
IGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0
YT4pIHsgfQotfTsKLQotc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YSA6IHB1
YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGFCYXNlIHsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291cmNlUmVxdWVzdF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MTZhYmM3ZGJiZGViM2NhNGFjNDdmNGRl
NjRmY2ZmODliZDJlY2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXNwb25z
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUmVzb3VyY2VSZXNwb25z
ZV9oCi0jZGVmaW5lIFJlc291cmNlUmVzcG9uc2VfaAotCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZUJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlIDogcHVibGljIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKLXB1YmxpYzoKLSAgICBSZXNvdXJj
ZVJlc3BvbnNlKCkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCi0gICAgICAgIDogUmVzb3VyY2VSZXNw
b25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUp
Ci0gICAgewotICAgIH0KLQotICAgIGJvb2wgcGxhdGZvcm1SZXNwb25zZUlzVXBUb0RhdGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlQmFzZTsKLQotICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJl
c3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgIHZvaWQg
ZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0
YT4pIHsgfQotICAgIFN0cmluZyBwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLX07Ci0KLXN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9u
c2VEYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlIHsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291cmNlUmVzcG9uc2Vf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0
U3RyZWFtRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tl
dFN0cmVhbUVycm9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZGZhMzliZGZm
MDk3OWJiZjY5YzY3NzhmNWM0YmE4OGIwODhiMjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4v
U29ja2V0U3RyZWFtRXJyb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBTb2NrZXRTdHJlYW1FcnJvcl9oCi0jZGVmaW5lIFNvY2tldFN0cmVhbUVycm9yX2gKLQotI2lu
Y2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yQmFzZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFNvY2tldFN0cmVhbUVycm9yIDogcHVibGljIFNvY2tldFN0cmVhbUVycm9yQmFzZSB7
Ci1wdWJsaWM6Ci0gICAgU29ja2V0U3RyZWFtRXJyb3IoKSB7IH0KLSAgICBleHBsaWNpdCBTb2Nr
ZXRTdHJlYW1FcnJvcihpbnQgZXJyb3JDb2RlKQotICAgICAgICA6IFNvY2tldFN0cmVhbUVycm9y
QmFzZShlcnJvckNvZGUpCi0gICAgewotICAgIH0KLQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gU29ja2V0U3RyZWFtRXJyb3JfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUzMjIzYjYyZGI4N2VkOGIzY2Y1MWE5YjJkNmFm
ZjA1ZGVkYmZmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU29ja2V0U3RyZWFtSGFuZGxl
X2gKLSNkZWZpbmUgU29ja2V0U3RyZWFtSGFuZGxlX2gKLQotI2luY2x1ZGUgIlNvY2tldFN0cmVh
bUhhbmRsZUJhc2UuaCIKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKLWNsYXNzIENyZWRlbnRpYWw7Ci1jbGFzcyBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQ7Ci0KLWNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQotCi0g
ICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCk7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIGludCBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7Ci0gICAg
dmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKLQotcHJpdmF0ZToKLSAgICBTb2NrZXRTdHJl
YW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7Ci0KLSAgICAv
LyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkgYXNr
IGZvciBjcmVkZW50aWFscy4KLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZvaWQgcmVjZWl2ZWRD
cmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlh
bCYpOwotICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFs
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAgdm9pZCByZWNlaXZlZENhbmNl
bGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZvaWQgcmVjZWl2
ZWRSZXF1ZXN0VG9QZXJmb3JtRGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJik7Ci0gICAgdm9pZCByZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gU29ja2V0U3RyZWFtSGFuZGxlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGVXaW4uY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzFiOGNlN2UyM2MxOTg5YTBjYzU4ZDA2N2Vj
YzZmYTY2ZWQ1ZWNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRs
ZVdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEJyZW50IEZ1bGdoYW0uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKLQotI2luY2x1ZGUgIlVSTC5o
IgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2lu
Y2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKLSAgICA6IFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UodXJsLCBjbGllbnQpCi17Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1I
YW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotfQotCi1Tb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQot
ewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0ZSIsIHRoaXMp
OwotICAgIHNldENsaWVudCgwKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi1pbnQgU29j
a2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciosIGludCkKLXsKLSAgICBM
T0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybVNlbmQiLCB0aGlzKTsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi12b2lkIFNvY2tldFN0
cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgpCi17Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRT
dHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1DbG9zZSIsIHRoaXMpOwotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci19Ci0KLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENyZWRl
bnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVkZW50aWFsJikK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6
cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgU29ja2V0
U3RyZWFtSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
Ci0KLXZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWNlaXZlZENoYWxsZW5nZVJlamVjdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="267299"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>