<?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>191620</bug_id>
          
          <creation_ts>2018-11-13 19:19:46 -0800</creation_ts>
          <short_desc>[curl] Unify CookieJarCurlDatabase and the abstract class CookieJarCurl</short_desc>
          <delta_ts>2018-11-14 08:15:27 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1478284</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-13 19:19:46 -0800</bug_when>
    <thetext>[curl] Unify CookieJarCurlDatabase and the abstract class CookieJarCurl

Based on the Basuke&apos;s comment.

(In reply to Basuke Suzuki from bug #191582 comment #3)
&gt; &gt; I&apos;m honestly wondering why there&apos;s a CookieJarCurl at all. There&apos;s no cpp
&gt; &gt; file and I just see an implementation in CookieJarCurlDatabase. Maybe this
&gt; &gt; should just be collapsed?
&gt; 
&gt; This must be the left over of cookie backend abstraction. It had been a file
&gt; based storage and when the introduction of sqlite based backend, the
&gt; clients, such as NetworkStorageSession,  just used interface to communicate
&gt; with backend.
&gt; 
&gt; I agree with removing this abstraction because we already took out the file
&gt; based backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478285</commentid>
    <comment_count>1</comment_count>
      <attachid>354754</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-13 19:26:01 -0800</bug_when>
    <thetext>Created attachment 354754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478320</commentid>
    <comment_count>2</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-13 21:01:56 -0800</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478442</commentid>
    <comment_count>3</comment_count>
      <attachid>354754</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-14 08:14:25 -0800</bug_when>
    <thetext>Comment on attachment 354754
Patch

Clearing flags on attachment: 354754

Committed r238176: &lt;https://trac.webkit.org/changeset/238176&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478443</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-14 08:14:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478445</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-14 08:15:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/46063373&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354754</attachid>
            <date>2018-11-13 19:26:01 -0800</date>
            <delta_ts>2018-11-14 08:14:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191620-20181114122559.patch</filename>
            <type>text/plain</type>
            <size>26098</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThhODQzMmViYTI1NzJi
YjJkMmZkMTgyZmZjZDFmYTc1MGY3ZWZiNC4uNWUzMDkwYmU2ZGMxNTU4OTg4ZDEwN2FlOTJiNjU2
ZjU5NGYzYzlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTExLTEzICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtjdXJsXSBV
bmlmeSBDb29raWVKYXJDdXJsRGF0YWJhc2UgYW5kIHRoZSBhYnN0cmFjdCBjbGFzcyBDb29raWVK
YXJDdXJsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1vdmUgYSBhYnN0cmFjdCBjbGFzcyBDb29raWVKYXJDdXJsIHdoaWNoIGlzIG5vdCBuZWVkZWQg
YW55bW9yZS4KKyAgICAgICAgQW5kLCByZW5hbWUgQ29va2llSmFyQ3VybERhdGFiYXNlIHRvIENv
b2tpZUphckN1cmwuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUncyBubyBi
ZWhhdmlvdXIgY2hhbmdlIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9DdXJsLmNt
YWtlOiBSZXBsYWNlZCBDb29raWVKYXJDdXJsRGF0YWJhc2UuY3BwIHdpdGggQ29va2llSmFyQ3Vy
bC5jcHAuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckN1cmxEYXRhYmFzZS5jcHAuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckN1cmwuaDogTWVyZ2VkIENvb2tpZUphckN1cmwuaCBhbmQgQ29va2llSmFyQ3VybERh
dGFiYXNlLmguCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxE
YXRhYmFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKTogUmVwbGFjZWQgQ29va2llSmFyQ3Vy
bERhdGFiYXNlIHdpdGggQ29va2llSmFyQ3VybC4KKwogMjAxOC0xMS0xMyAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGEgbGlnaHQgc2Nyb2xsYmFy
IGZvciB0cmFuc3BhcmVudCB3ZWIgdmlld3MgaW4gZGFyayBtb2RlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0N1cmwuY21ha2UKaW5kZXggNzIzYzQyYjEwOTIzOTIwYmFiMTIzODA2MjczODQ0ZWU2NzU0MDcx
OS4uYWU5ZjZjMWE4YjVjNWU3ZWIzMjg5OWE2OTlmY2E2YjQ4M2NhNjIxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3VybC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9DdXJsLmNtYWtlCkBAIC01LDcgKzUsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lO
Q0xVREVfRElSRUNUT1JJRVMKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwCiAgICAgcGxh
dGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCi0gICAgcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRhYmFzZS5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVN0b3JhZ2VDdXJs
LmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJlYzNjOTU3ZjkyMjQyNDk1MmI1NjJmOWFlNWJmMjZlYjA5MjY3N2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybC5jcHAKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ29va2llSmFyQ3VybC5oIgorCisjaWYgVVNFKENVUkwpCisjaW5jbHVkZSAi
Q29va2llLmgiCisjaW5jbHVkZSAiQ29va2llSmFyREIuaCIKKyNpbmNsdWRlICJDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eS5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiVVJMLmgiCisKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdXJsLCBib29sIGZvckhUVFBI
ZWFkZXIpCit7CisgICAgU3RyaW5nQnVpbGRlciBjb29raWVzOworCisgICAgQ29va2llSmFyREIm
IGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOworICAgIGF1dG8gc2VhcmNo
SFRUUE9ubHkgPSAoZm9ySFRUUEhlYWRlciA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8
Ym9vbD4ge2ZhbHNlfSk7CisgICAgYXV0byBzZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMi
KSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8Ym9vbD4ge2ZhbHNlfTsKKworICAgIGlm
IChhdXRvIHJlc3VsdCA9IGNvb2tpZUphckRCLnNlYXJjaENvb2tpZXModXJsLnN0cmluZygpLCBz
ZWFyY2hIVFRQT25seSwgc2VjdXJlLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgIGZvciAoYXV0
byYgY29va2llIDogKnJlc3VsdCkgeworICAgICAgICAgICAgaWYgKCFjb29raWVzLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICBjb29raWVzLmFwcGVuZCgiOyAiKTsKKyAgICAgICAgICAgIGNv
b2tpZXMuYXBwZW5kKGNvb2tpZS5uYW1lKTsKKyAgICAgICAgICAgIGNvb2tpZXMuYXBwZW5kKCI9
Iik7CisgICAgICAgICAgICBjb29raWVzLmFwcGVuZChjb29raWUudmFsdWUpOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7Cit9CisKK3ZvaWQgQ29va2ll
SmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOworICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOworICAgIFVOVVNF
RF9QQVJBTShmaXJzdFBhcnR5KTsKKworICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNl
c3Npb24uY29va2llRGF0YWJhc2UoKTsKKyAgICBjb29raWVKYXJEQi5zZXRDb29raWUodXJsLnN0
cmluZygpLCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KTsKK30KKwordm9pZCBD
b29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAoreworICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2ll
RGF0YWJhc2UoKTsKKyAgICBjb29raWVKYXJEQi5zZXRDb29raWUodXJsLnN0cmluZygpLCB2YWx1
ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yayk7Cit9CisKK3N0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAor
eworICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsK
KworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBmaWx0ZXIgc2VjdXJlIGNvb2tpZXMgb3V0IGlm
IHRoZSBjYWxsZXIgcmVxdWVzdHMgaXQuCisgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24o
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07Cit9CisKK3N0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3QKK3sKKyAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZmls
dGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgorICAgIHJl
dHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgdHJ1ZSks
IGZhbHNlIH07Cit9CisKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxk
UHJveHkpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KHNlc3Npb24sIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5z
YW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1l
SUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1
cmVDb29raWVzKTsKK30KKworYm9vbCBDb29raWVKYXJDdXJsOjpjb29raWVzRW5hYmxlZChjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7CisgICAgcmV0dXJuIHNl
c3Npb24uY29va2llRGF0YWJhc2UoKS5pc0VuYWJsZWQoKTsKK30KKworYm9vbCBDb29raWVKYXJD
dXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAoreworICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKKworICAgIENvb2tpZUph
ckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKKyAgICBpZiAoYXV0
byBjb29raWVzID0gY29va2llSmFyREIuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5LnN0cmluZygp
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KSkgeworICAgICAgICBy
YXdDb29raWVzID0gV1RGTW92ZSgqY29va2llcyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ29va2llSmFyQ3VybDo6ZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICBDb29raWVKYXJEQiYgY29va2llSmFy
REIgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCk7CisgICAgY29va2llSmFyREIuZGVsZXRlQ29v
a2llKHVybCwgbmFtZSk7Cit9CisKK3ZvaWQgQ29va2llSmFyQ3VybDo6Z2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+Jikg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorfQorCit2b2lkIENv
b2tpZUphckN1cmw6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBOb3QgeWV0IGltcGxlbWVudGVkCit9CisKK3ZvaWQgQ29va2llSmFyQ3VybDo6ZGVsZXRlQWxs
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pIGNvbnN0Cit7Cisg
ICAgQ29va2llSmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOwor
ICAgIGNvb2tpZUphckRCLmRlbGV0ZUFsbENvb2tpZXMoKTsKK30KKwordm9pZCBDb29raWVKYXJD
dXJsOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBXYWxsVGltZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1l
bnRlZAorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ1VSTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJDdXJsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
Q3VybC5oCmluZGV4IGVkNmQ4YjY5YjI5MWZjYTZiMTcyZDYzODA1YjkzYWI3YmYzM2ZiZWYuLjZj
OWQzMTMyYmEyODE2MjQxZmU0MjExYTMwMjRkNzAxNGYwMzE5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaApAQCAtMSwx
OSArMSwyNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCiAgKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CiAgKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC0yNSwy
OSArMzEsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBVUkw7CiBjbGFzcyBO
ZXR3b3JrU3RvcmFnZVNlc3Npb247Ci0KK2NsYXNzIFVSTDsKK2VudW0gY2xhc3MgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgOiBib29sOwogc3RydWN0IENvb2tpZTsKIHN0cnVjdCBDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRQcm94eTsKIHN0cnVjdCBTYW1lU2l0ZUluZm87CiAKLWVudW0gY2xhc3MgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwotCiBjbGFzcyBDb29raWVKYXJDdXJsIHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tSFRUUFJlc3BvbnNlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJikg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8
U3RyaW5nPiYgaG9zdG5hbWVzKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgV2FsbFRpbWUpIGNvbnN0ID0gMDsKKyAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
Jiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJikgY29uc3Q7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsK
KyAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNv
bnN0OworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3Q7CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKKyAgICBib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+Jikg
Y29uc3Q7CisgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdm9pZCBnZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmlu
Zz4mIGhvc3RuYW1lcykgY29uc3Q7CisgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29r
aWVIb3N0TmFtZXMpIGNvbnN0OworICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdDsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIFdhbGxUaW1lKSBjb25zdDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRhYmFzZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYWMwOWQ4MjVmZmFiOThmNzM4MzRkMGRm
ZDAxODZmMjgyNmU4ZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmxE
YXRhYmFzZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJDb29raWVKYXJDdXJsRGF0YWJhc2UuaCIKLQotI2lmIFVT
RShDVVJMKQotI2luY2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1ZGUgIkNvb2tpZUphckRCLmgiCi0j
aW5jbHVkZSAiQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCIKLSNpbmNsdWRlICJOZXR3
b3JrU3RvcmFnZVNlc3Npb24uaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1
ZGUgIlVSTC5oIgotCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQotewotICAgIFN0cmluZ0J1aWxkZXIgY29va2llczsK
LQotICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2Uo
KTsKLSAgICBhdXRvIHNlYXJjaEhUVFBPbmx5ID0gKGZvckhUVFBIZWFkZXIgPyBzdGQ6Om51bGxv
cHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+IHtmYWxzZX0pOwotICAgIGF1dG8gc2VjdXJlID0gdXJs
LnByb3RvY29sSXMoImh0dHBzIikgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHtmYWxzZX07Ci0KLSAgICBpZiAoYXV0byByZXN1bHQgPSBjb29raWVKYXJEQi5zZWFyY2hDb29r
aWVzKHVybC5zdHJpbmcoKSwgc2VhcmNoSFRUUE9ubHksIHNlY3VyZSwgc3RkOjpudWxsb3B0KSkg
ewotICAgICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6ICpyZXN1bHQpIHsKLSAgICAgICAgICAgIGlm
ICghY29va2llcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29va2llcy5hcHBlbmQoIjsg
Iik7Ci0gICAgICAgICAgICBjb29raWVzLmFwcGVuZChjb29raWUubmFtZSk7Ci0gICAgICAgICAg
ICBjb29raWVzLmFwcGVuZCgiPSIpOwotICAgICAgICAgICAgY29va2llcy5hcHBlbmQoY29va2ll
LnZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gY29va2llcy50b1N0cmluZygp
OwotfQotCi12b2lkIENvb2tpZUphckN1cmxEYXRhYmFzZTo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIGNvbnN0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwotICAgIFVOVVNF
RF9QQVJBTShwYWdlSUQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5KTsKLQotICAgIENv
b2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsKLSAgICBj
b29raWVKYXJEQi5zZXRDb29raWUodXJsLnN0cmluZygpLCB2YWx1ZSwgQ29va2llSmFyREI6OlNv
dXJjZTo6U2NyaXB0KTsKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsRGF0YWJhc2U6OnNldENvb2tp
ZXNGcm9tSFRUUFJlc3BvbnNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Ci17Ci0gICAgQ29va2ll
SmFyREImIGNvb2tpZUphckRCID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpOwotICAgIGNvb2tp
ZUphckRCLnNldENvb2tpZSh1cmwuc3RyaW5nKCksIHZhbHVlLCBDb29raWVKYXJEQjo6U291cmNl
OjpOZXR3b3JrKTsKLX0KLQotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybERh
dGFiYXNlOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
IHVybCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKLXsKLSAgICBVTlVTRURf
UEFSQU0oZnJhbWVJRCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7Ci0KLSAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgZmlsdGVyIHNlY3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJl
cXVlc3RzIGl0LgotICAgIHJldHVybiB7IGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCwgZmFsc2UpLCBmYWxzZSB9OwotfQotCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBDb29raWVKYXJDdXJsRGF0YWJhc2U6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3QKLXsKLSAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHBhZ2VJRCk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgZmlsdGVyIHNl
Y3VyZSBjb29raWVzIG91dCBpZiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgotICAgIHJldHVybiB7
IGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgdHJ1ZSksIGZhbHNl
IH07Ci19Ci0KLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmxEYXRhYmFzZTo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmll
bGRQcm94eSkgY29uc3QKLXsKLSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoc2Vzc2lvbiwgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5
LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJh
bWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpOwotfQotCi1ib29sIENvb2tpZUphckN1cmxEYXRhYmFzZTo6Y29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAotewotICAg
IHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuaXNFbmFibGVkKCk7Ci19Ci0KLWJvb2wg
Q29va2llSmFyQ3VybERhdGFiYXNlOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAotewotICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLSAgICBVTlVTRURfUEFSQU0ocGFnZUlE
KTsKLQotICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJh
c2UoKTsKLSAgICBpZiAoYXV0byBjb29raWVzID0gY29va2llSmFyREIuc2VhcmNoQ29va2llcyhm
aXJzdFBhcnR5LnN0cmluZygpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0KSkgewotICAgICAgICByYXdDb29raWVzID0gV1RGTW92ZSgqY29va2llcyk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgQ29va2ll
SmFyQ3VybERhdGFiYXNlOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAotewot
ICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29va2llRGF0YWJhc2UoKTsK
LSAgICBjb29raWVKYXJEQi5kZWxldGVDb29raWUodXJsLCBuYW1lKTsKLX0KLQotdm9pZCBDb29r
aWVKYXJDdXJsRGF0YWJhc2U6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6
IE5vdCB5ZXQgaW1wbGVtZW50ZWQKLX0KLQotdm9pZCBDb29raWVKYXJDdXJsRGF0YWJhc2U6OmRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxl
bWVudGVkCi19Ci0KLXZvaWQgQ29va2llSmFyQ3VybERhdGFiYXNlOjpkZWxldGVBbGxDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikgY29uc3QKLXsKLSAgICBDb29r
aWVKYXJEQiYgY29va2llSmFyREIgPSBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCk7Ci0gICAgY29v
a2llSmFyREIuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi12b2lkIENvb2tpZUphckN1cmxEYXRh
YmFzZTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgV2FsbFRpbWUpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVt
ZW50ZWQKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENVUkwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyQ3VybERhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyQ3VybERhdGFiYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZk
YTE1NTcyOTA5NzdlMjk3OGZmMzczYTM1OTcxMDBiZjA2ZWQ4MjIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckN1cmxEYXRhYmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29va2llSmFyQ3VybC5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENvb2tpZUphckN1cmxEYXRhYmFzZSA6IHB1
YmxpYyBDb29raWVKYXJDdXJsIHsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3Ru
YW1lcykgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29r
aWVIb3N0TmFtZXMpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgZGVsZXRlQWxsQ29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGRl
bGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IFdhbGxUaW1lKSBjb25zdCBvdmVycmlkZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBiMDcwODNiYTZkODU3NGNi
YzJhZmE4M2U0NTI1NzJhODg5NjEzNzUxLi4yZDY0NWM5ZDczOTI1ZjdlZWFkNTQwM2VkNzkwM2Iz
YzNjMTk3NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC0yOSw3
ICsyOSw3IEBACiAjaWYgVVNFKENVUkwpCiAKICNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNsdWRl
ICJDb29raWVKYXJDdXJsRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJDb29raWVKYXJDdXJsLmgiCiAj
aW5jbHVkZSAiQ29va2llSmFyREIuaCIKICNpbmNsdWRlICJDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRQcm94eS5oIgogI2luY2x1ZGUgIkN1cmxDb250ZXh0LmgiCkBAIC01Nyw3ICs1Nyw3IEBAIHN0
YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAs
IG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV9jb29raWVTdG9yYWdlKG1ha2VVbmlxdWVSZWY8
Q29va2llSmFyQ3VybERhdGFiYXNlPigpKQorICAgICwgbV9jb29raWVTdG9yYWdlKG1ha2VVbmlx
dWVSZWY8Q29va2llSmFyQ3VybD4oKSkKICAgICAsIG1fY29va2llRGF0YWJhc2UobWFrZVVuaXF1
ZVJlZjxDb29raWVKYXJEQj4oZGVmYXVsdENvb2tpZUphclBhdGgoKSkpCiB7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>