<?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>174080</bug_id>
          
          <creation_ts>2017-07-02 17:31:59 -0700</creation_ts>
          <short_desc>Drop ResourceLoadStatisticsStore&apos;s statisticsLock</short_desc>
          <delta_ts>2017-07-05 11:01:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1324972</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-02 17:31:59 -0700</bug_when>
    <thetext>Drop ResourceLoadStatisticsStore&apos;s statisticsLock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324974</commentid>
    <comment_count>1</comment_count>
      <attachid>314431</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-02 17:42:06 -0700</bug_when>
    <thetext>Created attachment 314431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324975</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-02 17:43:38 -0700</bug_when>
    <thetext>Attachment 314431 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:534:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:561:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:598:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 6 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325131</commentid>
    <comment_count>3</comment_count>
      <attachid>314431</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-03 08:53:34 -0700</bug_when>
    <thetext>Comment on attachment 314431
Patch

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

Excellent! r=me

&gt; Source/WebKit2/ChangeLog:11
&gt; +        from the same backbround thread. As a result, there is no longer any need for locking.

background -&gt; background</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325133</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-03 09:02:47 -0700</bug_when>
    <thetext>Committed r219071: &lt;http://trac.webkit.org/changeset/219071&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314431</attachid>
            <date>2017-07-02 17:42:06 -0700</date>
            <delta_ts>2017-07-05 11:01:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174080-20170702174205.patch</filename>
            <type>text/plain</type>
            <size>35149</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2ZlZTI3ZGU3N2UwYzJj
NjJjNTI1ODhjZTExZDNjNDNiOTdkMzY4NS4uZWQ1N2NlNDY2N2I1YmE5YjRmNDM2M2I4MzJjNzZh
NWJhNTQ1MmRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE3LTA3LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzTG9jaworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRHJvcCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUn
cyBzdGF0aXN0aWNzTG9jay4gSXQgYWRkZWQgY29tcGxleGl0eSBhbmQgd2FzIG9ubHkgbmVlZGVk
CisgICAgICAgIGRvIHRoYXQgdGhlIFNQSSBleHBvc2VkIHRvIFdlYktpdFRlc3RSdW5uZXIgd291
bGQgcXVlcnkgdGhlIHN0b3JlIHN5bmNocm9ub3VzbHkgZnJvbSB0aGUKKyAgICAgICAgbWFpbiB0
aHJlYWQuIEluc3RlYWQsIEkgbWFkZSB0aGUgU1BJIGFzeW5jaHJvbm91cyBhbmQgbWFrZSBzdXJl
IHdlIGFsd2F5cyBhY2Nlc3MgdGhlIHN0b3JlCisgICAgICAgIGZyb20gdGhlIHNhbWUgYmFja2Jy
b3VuZCB0aHJlYWQuIEFzIGEgcmVzdWx0LCB0aGVyZSBpcyBubyBsb25nZXIgYW55IG5lZWQgZm9y
IGxvY2tpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzSXNQcmV2YWxlbnRSZXNvdXJjZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSGFkVXNlckludGVy
YWN0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NJc0dyYW5kZmF0aGVyZWQ6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjppc1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjppc0dyYW5kRmF0aGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNyZWF0ZUVuY29kZXJGcm9tRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSk6CisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFydGl0
aW9uQ29va2llc0hhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUmVtb3Zl
V2Vic2l0ZURhdGFGb3IpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNvcnRlZFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVTdGF0aXN0aWNzRm9yUmVtb3Zl
ZERhdGFSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYW5kbGVGcmVzaFN0YXJ0V2l0aEVtcHR5T3JOb1N0b3JlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZnJlc2hGcm9tRGlzayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1p
dFRlbGVtZXRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVyYWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRQ
cmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRo
ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
aXNHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisKIDIwMTctMDctMDEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSBDIEFQSSB3aXRoIENvY29hIFNQSQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpp
bmRleCAzNmQ2NDIyM2VjOTljZmE2MmVhODljZjEwZGJkZTUwMzVkZWE0YjQxLi5mOTIyNDZhYzRm
NzY4OTIwNDU1MGU2NTE0ZjMyZWE2YzJhMDM5OTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMjE5
LDEzICsyMTksMTggQEAgLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldElzUHJldmFs
ZW50UmVzb3VyY2U6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHIKICAgICAgICAgc3RvcmUtPmNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0KSk7CiB9CiAKLS0gKEJPT0wpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NJc1ByZXZhbGVudFJlc291cmNlOihOU1N0cmluZyAqKWhvc3QK
Ky0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NJc1ByZXZhbGVudFJlc291cmNlOihOU1N0
cmluZyAqKWhvc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAgICAgYXV0byogc3RvcmUgPSBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURh
dGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKLSAgICBpZiAoIXN0b3JlKQotICAg
ICAgICByZXR1cm4gTk87CisgICAgaWYgKCFzdG9yZSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICByZXR1cm4gc3RvcmUtPmlz
UHJldmFsZW50UmVzb3VyY2UoVVJMKFVSTCgpLCBob3N0KSk7CisgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOworICAgIHN0b3Jl
LT5pc1ByZXZhbGVudFJlc291cmNlKFVSTChVUkwoKSwgaG9zdCksIFtjb21wbGV0aW9uSGFuZGxl
ckNvcHldKGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlckNvcHkoaXNQcmV2YWxlbnRSZXNvdXJjZSk7CisgICAgfSk7CiB9CiAKIC0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXRIYWRVc2VySW50ZXJhY3Rpb246KEJPT0wpdmFsdWUgZm9y
SG9zdDooTlNTdHJpbmcgKilob3N0CkBAIC0yNDAsMTMgKzI0NSwxOCBAQCAtICh2b2lkKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2V0SGFkVXNlckludGVyYWN0aW9uOihCT09MKXZhbHVlIGZvckhv
c3Q6KE5TU3RyaQogICAgICAgICBzdG9yZS0+Y2xlYXJVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgp
LCBob3N0KSk7CiB9CiAKLS0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NIYWRVc2VySW50
ZXJhY3Rpb246KE5TU3RyaW5nICopaG9zdAorLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0hhZFVzZXJJbnRlcmFjdGlvbjooTlNTdHJpbmcgKilob3N0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8qIHN0b3JlID0gX3dl
YnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7Ci0gICAgaWYgKCFzdG9yZSkKLSAgICAgICAgcmV0dXJuIE5POworICAgIGlmICghc3RvcmUp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTk8pOworICAgICAgICByZXR1cm47CisgICAg
fQogCi0gICAgcmV0dXJuIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVSTCgpLCBo
b3N0KSk7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpOworICAgIHN0b3JlLT5oYXNIYWRVc2VySW50ZXJhY3Rpb24oVVJMKFVS
TCgpLCBob3N0KSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0oYm9vbCBoYXNIYWRVc2VySW50ZXJh
Y3Rpb24pIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KGhhc0hhZFVzZXJJbnRlcmFj
dGlvbik7CisgICAgfSk7CiB9CiAKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRJ
c0dyYW5kZmF0aGVyZWQ6KEJPT0wpdmFsdWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0CkBAIC0y
NTgsMTMgKzI2OCwxOCBAQCAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNHcmFu
ZGZhdGhlcmVkOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nCiAgICAgc3RvcmUtPnNldEdy
YW5kZmF0aGVyZWQoVVJMKFVSTCgpLCBob3N0KSwgdmFsdWUpOwogfQogCi0tIChCT09MKV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOihOU1N0cmluZyAqKWhvc3QKKy0gKHZv
aWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NJc0dyYW5kZmF0aGVyZWQ6KE5TU3RyaW5nICopaG9z
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsK
ICAgICBhdXRvKiBzdG9yZSA9IF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCku
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwotICAgIGlmICghc3RvcmUpCi0gICAgICAgIHJldHVy
biBOTzsKKyAgICBpZiAoIXN0b3JlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIHJldHVybiBzdG9yZS0+aXNHcmFuZGZhdGhl
cmVkKFVSTChVUkwoKSwgaG9zdCkpOworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBzdG9yZS0+aXNHcmFuZGZhdGhl
cmVkKFVSTChVUkwoKSwgaG9zdCksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldKGJvb2wgaXNHcmFu
ZGZhdGhlcmVkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShpc0dyYW5kZmF0aGVy
ZWQpOworICAgIH0pOwogfQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luOihOU1N0cmluZyAqKXRvcEZyYW1lSG9zdE5hbWUgZm9y
SG9zdDooTlNTdHJpbmcgKilob3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGI4
OWEyNmNiZjVhZjk3NWMwYWI1MmFjZDRjMzg1YmJhZTFhZjg1ODMuLjkzZGIzZjc4NzBkZGQ0ZDNm
Y2M2Nzg4ZTU2ZWYzYjJhMzE0YmM2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBA
IC00NSwxMSArNDUsMTEgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNp
dGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogLy8gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBT
UEkgZm9yIHRlc3RpbmcuCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNQcmV2
YWxlbnRSZXNvdXJjZTooQk9PTCl2YWx1ZSBmb3JIb3N0OihOU1N0cmluZyAqKWhvc3QgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tIChCT09M
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNQcmV2YWxlbnRSZXNvdXJjZTooTlNTdHJpbmcgKilo
b3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0lzUHJldmFsZW50UmVzb3VyY2U6KE5T
U3RyaW5nICopaG9zdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SGFkVXNlckludGVyYWN0
aW9uOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKEJPT0wpX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NIYWRVc2VySW50ZXJhY3Rpb246KE5TU3RyaW5nICopaG9zdCBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NIYWRVc2VySW50ZXJhY3Rpb246KE5TU3RyaW5nICopaG9z
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2
b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0SXNHcmFuZGZhdGhlcmVkOihCT09MKXZhbHVl
IGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NJ
c0dyYW5kZmF0aGVyZWQ6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NJc0dyYW5kZmF0aGVyZWQ6KE5TU3RyaW5nICopaG9zdCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU2V0U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luOihOU1N0cmluZyAqKXRvcEZyYW1l
SG9zdE5hbWUgZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1NldFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbjooTlNTdHJpbmcgKil0b3BG
cmFtZUhvc3ROYW1lIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG86KE5TU3RyaW5nICopaG9z
dE5hbWVSZWRpcmVjdGVkVG8gZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggODI3MDcyY2Y0MjBhYjM1YmYzYTcwY2ZlZmU1YjdjNDdhMjky
M2QzMi4uOTM4MGJkYzhlMjY3MGU5NmY0ODE5ODYzOGQ5ZmE2NjJlNzdiMmY1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC01MiwxNyArNTIsMjcgQEAgUmVmPFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUo
KQogICAgIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50UmVz
b3VyY2UoY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKSBjb25zdAogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9zdGF0aXN0aWNzTG9jayk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAgICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZp
bmQocHJpbWFyeURvbWFpbik7CiAgICAgaWYgKG1hcEVudHJ5ID09IG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbWFwRW50
cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2U7CiB9CisKK2Jvb2wgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjppc0dyYW5kRmF0aGVyZWQoY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWlu
KSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGF1dG8gbWFw
RW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHByaW1hcnlEb21haW4pOworICAg
IGlmIChtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1hcEVudHJ5LT52YWx1ZS5ncmFuZGZhdGhlcmVk
OworfQogICAgIAogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0
cmluZyYgcHJpbWFyeURvbWFpbikKIHsKLSAgICBBU1NFUlQobV9zdGF0aXN0aWNzTG9jay5pc0xv
Y2tlZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShwcmltYXJ5RG9tYWluLCBbJnBy
aW1hcnlEb21haW5dIHsKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3MocHJp
bWFyeURvbWFpbik7CiAgICAgfSk7CkBAIC03Niw4ICs4Niw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxL
ZXllZEVuY29kZXI+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2RlckZy
b21EYXRhCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgYXV0byBlbmNv
ZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Ci0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fc3RhdGlzdGljc0xvY2spOwogICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigidmVyc2lv
biIsIHN0YXRpc3RpY3NNb2RlbFZlcnNpb24pOwogICAgIGVuY29kZXItPmVuY29kZURvdWJsZSgi
ZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCIsIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVz
dGFtcC5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOwogICAgIApAQCAtOTEsNyArOTksNiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWRFbmNvZGVyPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YQogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlYWREYXRhRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVChtX3N0YXRpc3RpY3NMb2NrLmlz
TG9ja2VkKCkpOwogICAgIGlmIChtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTE4LDE2ICsxMjUsMTIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyJiBkZWNvZGVyKQog
CiAgICAgVmVjdG9yPFN0cmluZz4gcHJldmFsZW50UmVzb3VyY2VEb21haW5zV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbjsKICAgICBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0VXNlckludGVy
YWN0aW9uLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobG9hZGVkU3RhdGlzdGljcy5zaXplKCkpOwot
ICAgIAotICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXRpc3RpY3NM
b2NrKTsKLSAgICAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWNzIDogbG9hZGVkU3RhdGlzdGljcykg
ewotICAgICAgICAgICAgaWYgKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhc3Rh
dGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBwcmV2YWxlbnRS
ZXNvdXJjZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9uLnVuY2hlY2tlZEFwcGVuZChzdGF0
aXN0aWNzLmhpZ2hMZXZlbERvbWFpbik7Ci0gICAgICAgICAgICAgICAgc3RhdGlzdGljcy5pc01h
cmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQoc3RhdGlzdGljcy5oaWdoTGV2ZWxEb21h
aW4sIFdURk1vdmUoc3RhdGlzdGljcykpOworICAgIGZvciAoYXV0byYgc3RhdGlzdGljcyA6IGxv
YWRlZFN0YXRpc3RpY3MpIHsKKyAgICAgICAgaWYgKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNv
dXJjZSAmJiAhc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICAgICAgICAgIHBy
ZXZhbGVudFJlc291cmNlRG9tYWluc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24udW5jaGVja2VkQXBw
ZW5kKHN0YXRpc3RpY3MuaGlnaExldmVsRG9tYWluKTsKKyAgICAgICAgICAgIHN0YXRpc3RpY3Mu
aXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSB0cnVlOwogICAgICAgICB9CisgICAgICAg
IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbiwg
V1RGTW92ZShzdGF0aXN0aWNzKSk7CiAgICAgfQogICAgIAogICAgIGZpcmVTaG91bGRQYXJ0aXRp
b25Db29raWVzSGFuZGxlcih7IH0sIHByZXZhbGVudFJlc291cmNlRG9tYWluc1dpdGhvdXRVc2Vy
SW50ZXJhY3Rpb24sIHRydWUpOwpAQCAtMTM2LDEwICsxMzksNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGVjb2RlcihLZXllZERlY29kZXImIGRlY29k
ZXIpCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSgpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgewotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9zdGF0aXN0aWNzTG9jayk7CiAgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuY2xlYXIoKTsKLSAgICB9CiAgICAgCiAgICAgZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNI
YW5kbGVyKHsgfSwgeyB9LCB0cnVlKTsKIH0KQEAgLTE1Nyw3ICsxNTcsNiBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoKQogdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljcyhjb25zdCBWZWN0
b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIHN0YXRpc3RpY3MpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXRpc3Rp
Y3NMb2NrKTsKICAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IHN0YXRpc3RpY3MpIHsKICAgICAg
ICAgYXV0byByZXN1bHQgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUoc3RhdGlzdGlj
LmhpZ2hMZXZlbERvbWFpbiwgWyZzdGF0aXN0aWNdIHsKICAgICAgICAgICAgIHJldHVybiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKHN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOwpAQCAtMjI0LDcg
KzIyMyw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmaXJlU2hvdWxkUGFy
dGl0aW9uQ29va2llc0hhbmRsZXIoKQogICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1JlbW92
ZTsKICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9BZGQ7CiAgICAgCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3N0YXRpc3RpY3NMb2NrKTsKICAgICBmb3IgKGF1dG8mIHJlc291cmNl
U3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAg
Ym9vbCBzaG91bGRQYXJ0aXRpb24gPSBzaG91bGRQYXJ0aXRpb25Db29raWVzKHJlc291cmNlU3Rh
dGlzdGljKTsKICAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2ll
UGFydGl0aW9uaW5nICYmICFzaG91bGRQYXJ0aXRpb24pIHsKQEAgLTI1Niw3ICsyNTQsNiBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tp
ZXNIYW5kbGVyKGNvbnN0IFZlY3RvcgogICAgICAgICAgICAgbV9zaG91bGRQYXJ0aXRpb25Db29r
aWVzRm9yRG9tYWluc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5zVG9BZGQsIGNsZWFy
Rmlyc3QpOwogICAgIH0pOwogICAgIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0
aXN0aWNzTG9jayk7CiAgICAgaWYgKGNsZWFyRmlyc3QpIHsKICAgICAgICAgZm9yIChhdXRvJiBy
ZXNvdXJjZVN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQogICAg
ICAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcg
PSBmYWxzZTsKQEAgLTI5Niw3ICsyOTMsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25kcykKIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljcyhXVEY6OkZ1bmN0aW9uPHZv
aWQoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYmIHByb2Nlc3NGdW5jdGlvbikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
c3RhdGlzdGljc0xvY2spOwogICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMgOiBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKICAgICAgICAgcHJvY2Vzc0Z1bmN0aW9uKHJl
c291cmNlU3RhdGlzdGljKTsKIH0KQEAgLTMyMSw2ICszMTcsOCBAQCBib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkUmVjZW50VXNlckludGVyYWN0aW9uKFJlc291cmNlTG9h
ZFN0YXRpcwogCiBWZWN0b3I8U3RyaW5nPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpCiB7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKICAgICBib29sIHNob3VsZENoZWNrRm9y
R3JhbmRmYXRoZXJpbmcgPSBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAgPiBXYWxsVGlt
ZTo6bm93KCk7CiAgICAgYm9vbCBzaG91bGRDbGVhckdyYW5kZmF0aGVyaW5nID0gIXNob3VsZENo
ZWNrRm9yR3JhbmRmYXRoZXJpbmcgJiYgbV9lbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wOwog
CkBAIC0zMjgsNyArMzI2LDYgQEAgVmVjdG9yPFN0cmluZz4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUmVtb3YKICAgICAgICAgbV9l
bmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wID0geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4g
cHJldmFsZW50UmVzb3VyY2VzOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0aXN0
aWNzTG9jayk7CiAgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC52YWx1ZXMoKSkgewogICAgICAgICBpZiAoc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3Vy
Y2UKICAgICAgICAgICAgICYmICFoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGlj
KQpAQCAtMzQ1LDcgKzM0Miw2IEBAIFZlY3RvcjxTdHJpbmc+IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1JlbW92CiBWZWN0b3I8UHJl
dmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c29y
dGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0aXN0aWNz
TG9jayk7CiAgICAgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiBzb3J0ZWQ7CiAg
ICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMo
KSkgewogICAgICAgICBpZiAoIXN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNlKQpAQCAtMzc1
LDcgKzM3MSw3IEBAIFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzb3J0ZWRQcmV2YWxlbnRSCiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjp1cGRhdGVTdGF0aXN0aWNzRm9yUmVtb3ZlZERhdGFSZWNvcmRzKGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgcHJldmFsZW50UmVzb3VyY2VEb21haW5zKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0aXN0aWNzTG9jayk7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAgICAgZm9yIChhdXRvJiBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbiA6
IHByZXZhbGVudFJlc291cmNlRG9tYWlucykgewogICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJiBzdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWlu
KHByZXZhbGVudFJlc291cmNlRG9tYWluKTsKICAgICAgICAgKytzdGF0aXN0aWMuZGF0YVJlY29y
ZHNSZW1vdmVkOwpAQCAtMzg0LDcgKzM4MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjp1cGRhdGVTdGF0aXN0aWNzRm9yUmVtb3ZlZERhdGFSZWNvcmRzKGNvbnN0IEhhCiAK
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYW5kbGVGcmVzaFN0YXJ0V2l0aEVt
cHR5T3JOb1N0b3JlKEhhc2hTZXQ8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW5zVG9HcmFuZGZhdGhlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RhdGlz
dGljc0xvY2spOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGZvciAoYXV0
byYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbiA6IHRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW5zVG9HcmFuZGZhdGhlcikgewogICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBz
dGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW4pOwogICAgICAgICBzdGF0aXN0aWMuZ3JhbmRmYXRoZXJl
ZCA9IHRydWU7CkBAIC00MTcsOSArNDEzLDQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmRhdGFSZWNvcmRzV2VyZVJlbW92ZWQoKQogICAgIG1fZGF0YVJlY29yZHNSZW1vdmFs
UGVuZGluZyA9IGZhbHNlOwogfQogICAgIAotV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjxMb2Nr
PiYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzTG9jaygpCi17Ci0gICAg
cmV0dXJuIG1fc3RhdGlzdGljc0xvY2s7Ci19Ci0gICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oCmluZGV4IDUwNTFhMGU2ZjdmMTUzMjRkNDVmNDZkNDFjZWFjNWUyYmNhMmQ5MDQuLjY0
OGZmMTIyNzMxZjk1ZmUyOTFmOTE5NDdlNTNiM2QwOTkzOWMzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dh
bGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTY5LDYgKzY4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiYpOwog
CiAgICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAg
IGJvb2wgaXNHcmFuZEZhdGhlcmVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIAogICAgIHZv
aWQgbWVyZ2VTdGF0aXN0aWNzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzPiYpOwogCkBAIC05OSwxNCArOTksMTEgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxk
UmVtb3ZlRGF0YVJlY29yZHMoKSBjb25zdDsKICAgICB2b2lkIGRhdGFSZWNvcmRzQmVpbmdSZW1v
dmVkKCk7CiAgICAgdm9pZCBkYXRhUmVjb3Jkc1dlcmVSZW1vdmVkKCk7Ci0gICAgCi0gICAgV1RG
OjpSZWN1cnNpdmVMb2NrQWRhcHRlcjxMb2NrPiYgc3RhdGlzdGljc0xvY2soKTsKIAogcHJpdmF0
ZToKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSA9IGRlZmF1bHQ7CiAKICAgICBI
YXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gbV9yZXNvdXJj
ZVN0YXRpc3RpY3NNYXA7Ci0gICAgbXV0YWJsZSBXVEY6OlJlY3Vyc2l2ZUxvY2tBZGFwdGVyPExv
Y2s+IG1fc3RhdGlzdGljc0xvY2s7CiAKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9kYXRh
QWRkZWRIYW5kbGVyOwogICAgIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgYm9vbCBjbGVhckZpcnN0KT4gbV9zaG91bGRQYXJ0
aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4
IDY4NDkyMTBiYTU0YWI5MDlkNjM2NjU5ZTVlMTc4NDhiNTFjZTE2YzIuLmIwMjMxMzlhN2I2MTRh
M2NlYjU0OTcwZWUxYTkxNWY1Nzg2MTUyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0x
NTUsNyArMTU1LDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92
ZURhdGFSZWNvcmRzKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9j
ZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCkKIHsKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkp
OwogICAgICAgICBpZiAoc2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1Jl
bW92YWwpIHsKICAgICAgICAgICAgIGNvcmVTdG9yZSgpLnByb2Nlc3NTdGF0aXN0aWNzKFt0aGlz
XSAoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMpIHsKICAgICAgICAg
ICAgICAgICBjbGFzc2lmeVJlc291cmNlKHJlc291cmNlU3RhdGlzdGljKTsKQEAgLTI3NSw3ICsy
NzQsNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9t
RGlza0lmTmVlZGVkKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9j
aygpKTsKICAgICAgICAgY29yZVN0b3JlKCkuY2xlYXJJbk1lbW9yeSgpOwogICAgICAgICBjb3Jl
U3RvcmUoKS5yZWFkRGF0YUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKIApAQCAtMjkxLDcgKzI4OSw2
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWZyZXNoRnJvbURpc2so
KQogICAgIGlmICghZGVjb2RlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsKICAgICBjb3JlU3RvcmUo
KS5yZWFkRGF0YUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKIH0KICAgICAKQEAgLTQwMiw3ICszOTks
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGVsZXRlU3RvcmVGcm9t
RGlzaygpCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVt
b3J5RGF0YSgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0
aXN0aWNzTG9jaygpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBjb3Jl
U3RvcmUoKS5jbGVhckluTWVtb3J5KCk7CiB9CiAKQEAgLTUwNCw3ICs1MDEsNiBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGVsZW1ldHJ5VGltZXJGaXJlZCgpCiB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KCkKIHsKICAg
ICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgp
LnN0YXRpc3RpY3NMb2NrKCkpOwogICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5OjpjYWxjdWxhdGVBbmRTdWJtaXQoY29yZVN0b3JlKCkpOwogICAgIH0pOwogfQpAQCAt
NTE1LDEyICs1MTEsOSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bG9n
VXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcHJpbWFyeURvbWFpblN0cmluZyA9IHByaW1hcnlEb21haW4odXJsKS5pc29sYXRl
ZENvcHkoKV0gewotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGNvcmVTdG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkpOwotICAgICAgICAgICAgYXV0byYgc3RhdGlz
dGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4ocHJpbWFyeURvbWFpblN0cmluZyk7Ci0gICAgICAgICAgICBzdGF0aXN0aWNzLmhhZFVzZXJJ
bnRlcmFjdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6Om5vdygpOwotICAgICAgICB9CisgICAgICAgIGF1
dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHByaW1hcnlEb21haW5TdHJpbmcpOworICAgICAgICBzdGF0aXN0aWNzLmhh
ZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgICAgIHN0YXRpc3RpY3MubW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAKICAgICAgICAgY29yZVN0b3Jl
KCkuZmlyZVNob3VsZFBhcnRpdGlvbkNvb2tpZXNIYW5kbGVyKHsgcHJpbWFyeURvbWFpblN0cmlu
ZyB9LCB7IH0sIGZhbHNlKTsKICAgICB9KTsKQEAgLTUzMSwyMSArNTI0LDI3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBV
UkwmIHVybCkKICAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0
YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1
cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7
Ci0gICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBmYWxzZTsKLSAgICBzdGF0aXN0
aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0geyB9OworICAgIG1fc3RhdGlzdGlj
c1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB1
cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGNv
cmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFy
eURvbWFpbih1cmwpKTsKKyAgICAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSBm
YWxzZTsKKyAgICAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9
IHsgfTsKKyAgICB9KTsKIH0KIAotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Omhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiB1cmws
IFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
aWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsK
LSAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgcG90ZW50aWFsbHkgY3JlYXRpbmcgYSBzdG9yZSBl
bnRyeSBqdXN0IGZvciBxdWVyeWluZz8KLSAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3Jl
KCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWlu
KHVybCkpOwotICAgIHJldHVybiBjb3JlU3RvcmUoKS5oYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rp
b24oc3RhdGlzdGljcyk7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBwb3RlbnRpYWxseSBjcmVhdGluZyBh
IHN0b3JlIGVudHJ5IGp1c3QgZm9yIHF1ZXJ5aW5nPworICAgICAgICBhdXRvJiBzdGF0aXN0aWNz
ID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihw
cmltYXJ5RG9tYWluKHVybCkpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2hh
c0hhZFVzZXJJbnRlcmFjdGlvbiA9IGNvcmVTdG9yZSgpLmhhc0hhZFJlY2VudFVzZXJJbnRlcmFj
dGlvbihzdGF0aXN0aWNzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0geworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaGFzSGFkVXNlckludGVy
YWN0aW9uKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKQEAg
LTU1MywyMCArNTUyLDI1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKICAgICBpZiAodXJsLmlzQmxhbmtV
UkwoKSB8fCB1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRpc3RpY3NMb2NrKCkpOwotICAgIGF1dG8mIHN0
YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJl
c291cmNlID0gdHJ1ZTsKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSB7
CisgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CisgICAgICAgIHN0
YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSA9IHRydWU7CisgICAgfSk7CiB9CiAKLWJvb2wg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0
IFVSTCYgdXJsKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh1cmwuaXNCbGFua1VSTCgp
IHx8IHVybC5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3Jl
U3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsKLSAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgcG90
ZW50aWFsbHkgY3JlYXRpbmcgYSBzdG9yZSBlbnRyeSBqdXN0IGZvciBxdWVyeWluZz8KLSAgICBh
dXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOwotICAgIHJldHVybiBzdGF0aXN0aWNz
LmlzUHJldmFsZW50UmVzb3VyY2U7CisgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVybCA9IHVybC5pc29sYXRlZENv
cHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7CisgICAgICAgIGJvb2wgcHJldmFsZW50UmVzb3VyY2UgPSBjb3JlU3RvcmUoKS5p
c1ByZXZhbGVudFJlc291cmNlKHByaW1hcnlEb21haW4odXJsKSk7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJldmFsZW50UmVzb3VyY2UsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHByZXZhbGVudFJlc291cmNlKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclByZXZhbGVudFJlc291cmNlKGNv
bnN0IFVSTCYgdXJsKQpAQCAtNTc0LDkgKzU3OCwxMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKICAg
ICBpZiAodXJsLmlzQmxhbmtVUkwoKSB8fCB1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvcmVTdG9yZSgpLnN0YXRpc3RpY3NMb2Nr
KCkpOwotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3JlU3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7Ci0gICAgc3RhdGlz
dGljcy5pc1ByZXZhbGVudFJlc291cmNlID0gZmFsc2U7CisgICAgbV9zdGF0aXN0aWNzUXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVybCA9IHVy
bC5pc29sYXRlZENvcHkoKV0geworICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3Jl
KCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWlu
KHVybCkpOworICAgICAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UgPSBmYWxzZTsK
KyAgICB9KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldEdy
YW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwsIGJvb2wgdmFsdWUpCkBAIC01ODQsMjAgKzU4OSwy
NSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRoZXJl
ZChjb25zdCBVUkwmIHVybCwgYm9vbCB2YWx1ZQogICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8
IHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2soY29yZVN0b3JlKCkuc3RhdGlzdGljc0xvY2soKSk7Ci0gICAgYXV0byYgc3RhdGlzdGlj
cyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4o
cHJpbWFyeURvbWFpbih1cmwpKTsKLSAgICBzdGF0aXN0aWNzLmdyYW5kZmF0aGVyZWQgPSB2YWx1
ZTsKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCB2YWx1ZV0geworICAg
ICAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOworICAgICAgICBzdGF0aXN0
aWNzLmdyYW5kZmF0aGVyZWQgPSB2YWx1ZTsKKyAgICB9KTsKIH0KIAotYm9vbCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRmYXRoZXJlZChjb25zdCBVUkwmIHVybCkKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc0dyYW5kZmF0aGVyZWQoY29uc3Qg
VVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkgfHwgdXJsLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpIHx8IHVybC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNz
TG9jaygpKTsKLSAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgcG90ZW50aWFsbHkgY3JlYXRpbmcg
YSBzdG9yZSBlbnRyeSBqdXN0IGZvciBxdWVyeWluZz8KLSAgICBhdXRvJiBzdGF0aXN0aWNzID0g
Y29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmlt
YXJ5RG9tYWluKHVybCkpOwotICAgIHJldHVybiBzdGF0aXN0aWNzLmdyYW5kZmF0aGVyZWQ7Cisg
ICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIHVybCA9IHVybC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGJvb2wg
Z3JhbmRGYXRoZXJlZCA9IGNvcmVTdG9yZSgpLmlzR3JhbmRGYXRoZXJlZChwcmltYXJ5RG9tYWlu
KHVybCkpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2dyYW5kRmF0aGVyZWQs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGdyYW5kRmF0aGVyZWQpOworICAgICAgICB9KTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbihjb25zdCBVUkwmIHN1YmZyYW1lLCBjb25zdCBVUkwmIHRv
cEZyYW1lKQpAQCAtNjA2LDcgKzYxNiw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMJiBzCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcg
PSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YkZyYW1l
RG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJmcmFtZSkuaXNvbGF0ZWRDb3B5KCldIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9j
aygpKTsKICAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5n
KTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChw
cmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOwogICAgIH0pOwpAQCAtNjE4LDcgKzYyNyw2IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc3RhdGlz
dGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5p
c29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURv
bWFpbihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsKICAgICAgICAgYXV0byYg
c3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1h
cnlEb21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nKTsKICAgICAgICAgc3RhdGlz
dGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVE
b21haW5TdHJpbmcpOwogICAgIH0pOwpAQCAtNjMwLDcgKzYzOCw2IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8oY29u
c3QgVVJMJiBzCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5UmVkaXJl
Y3REb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKGhvc3ROYW1lUmVkaXJlY3RlZFRvKS5pc29s
YXRlZENvcHkoKSwgcHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFp
bihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhjb3JlU3RvcmUoKS5zdGF0aXN0aWNzTG9jaygpKTsKICAgICAgICAgYXV0byYgc3Rh
dGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nKTsKICAgICAgICAgc3RhdGlzdGlj
cy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLmFkZChwcmltYXJ5UmVkaXJlY3REb21haW5T
dHJpbmcpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDI0NTViYjc0YTNmOTQ2ZmY1
YTc5ODEwOWIzMGExNjFhZjgxM2MzZTYuLjZkZDcwOTZhZmVjZjk1NTkyMTE2YTVmM2VkYmM3NjRk
MTJmY2FmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTc3LDEyICs3NywxMiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAg
ICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwotICAgIGJv
b2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQg
aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdURjo6RnVuY3Rpb248
dm9pZCAoYm9vbCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgV2Vi
Q29yZTo6VVJMJik7Ci0gICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpVUkwm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmKTsKICAgICB2b2lkIGNsZWFyUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVk
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wpOwotICAgIGJvb2wgaXNHcmFuZGZhdGhlcmVkKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYpOwogICAgIHZvaWQgc2V0U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgaG9zdE5hbWVSZWRpcmVjdGVkVG8pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEwZjM0NmNjZGRhYzdjNjBiZjhhNDgyZTgxYzYxNzRlNzI3
NTc4MzIuLjZiNTkwNGVhMzFhNWUyMjU4MGIxMjk4YTBhZGUwZDE5Y2FmZjdkNjUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxNy0wNy0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IERyb3AgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljc0xvY2sKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDA4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBvcnQgV2ViS2l0VGVz
dFJ1bm5lciB0byBuZXcgQXN5bmNocm9ub3VzIENvY29hIFNQSS4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NHcmFuZGZhdGhlcmVk
KToKKwogMjAxNy0wNy0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlcGxhY2UgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIEMgQVBJIHdpdGggQ29jb2Eg
U1BJCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9s
bGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW0KaW5kZXggNzgzMTExY2E2NTE0ZWNhMDk3OWIzZjRiYjg0NWJhOGM5NGJlYTE3Ny4u
ZmFkZjVkYjdiMWRlYTJhZmU2M2UwOGQ0OWZlNDExYjQzOTRiNTcyNCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMjI5
LDcgKzIyOSwxNSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdgogCiBib29sIFRlc3RDb250cm9s
bGVyOjppc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSkK
IHsKLSAgICByZXR1cm4gW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NJc1ByZXZhbGVudFJlc291cmNlOnRvTlNTdHJpbmco
aG9zdE5hbWUpXTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEYXRhUmVhZHkgPSBmYWxzZTsKKyAgICBf
X2Jsb2NrIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZSA9IGZhbHNlOworICAgIFtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
SXNQcmV2YWxlbnRSZXNvdXJjZTp0b05TU3RyaW5nKGhvc3ROYW1lKSBjb21wbGV0aW9uSGFuZGxl
cjpeKEJPT0wgX2lzUHJldmFsZW50UmVzb3VyY2UpIHsKKyAgICAgICAgaXNQcmV2YWxlbnRSZXNv
dXJjZSA9IF9pc1ByZXZhbGVudFJlc291cmNlOworICAgICAgICBpc0RhdGFSZWFkeSA9IHRydWU7
CisgICAgfV07CisgICAgcGxhdGZvcm1SdW5VbnRpbChpc0RhdGFSZWFkeSwgMCk7CisKKyAgICBy
ZXR1cm4gaXNQcmV2YWxlbnRSZXNvdXJjZTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0
U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCB2YWx1ZSkKQEAgLTIzOSw3ICsyNDcsMTUgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3Rh
dGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm8KIAog
Ym9vbCBUZXN0Q29udHJvbGxlcjo6aXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKFdL
U3RyaW5nUmVmIGhvc3ROYW1lKQogewotICAgIHJldHVybiBbZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0hhZFVzZXJJbnRl
cmFjdGlvbjp0b05TU3RyaW5nKGhvc3ROYW1lKV07CisgICAgX19ibG9jayBib29sIGlzRGF0YVJl
YWR5ID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbiA9IGZh
bHNlOworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzSGFkVXNlckludGVyYWN0aW9uOnRvTlNTdHJpbmcoaG9zdE5h
bWUpIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBfaGFzSGFkVXNlckludGVyYWN0aW9uKSB7Cisg
ICAgICAgIGhhc0hhZFVzZXJJbnRlcmFjdGlvbiA9IF9oYXNIYWRVc2VySW50ZXJhY3Rpb247Cisg
ICAgICAgIGlzRGF0YVJlYWR5ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBwbGF0Zm9ybVJ1blVudGls
KGlzRGF0YVJlYWR5LCAwKTsKKworICAgIHJldHVybiBoYXNIYWRVc2VySW50ZXJhY3Rpb247CiB9
CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkKFdLU3Ry
aW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKQpAQCAtMjQ5LDcgKzI2NSwxNSBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZChXS1N0cmluZ1JlZiBob3N0
TmFtZSwgYm9vbCB2YWx1ZQogCiBib29sIFRlc3RDb250cm9sbGVyOjppc1N0YXRpc3RpY3NHcmFu
ZGZhdGhlcmVkKFdLU3RyaW5nUmVmIGhvc3ROYW1lKQogewotICAgIHJldHVybiBbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0lzR3JhbmRmYXRoZXJlZDp0b05TU3RyaW5nKGhvc3ROYW1lKV07CisgICAgX19ibG9jayBib29s
IGlzRGF0YVJlYWR5ID0gZmFsc2U7CisgICAgX19ibG9jayBib29sIGlzR3JhbmRmYXRoZXJlZCA9
IGZhbHNlOworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3Jl
IF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzSXNHcmFuZGZhdGhlcmVkOnRvTlNTdHJpbmcoaG9zdE5h
bWUpIGNvbXBsZXRpb25IYW5kbGVyOl4oQk9PTCBfaXNHcmFuZGZhdGhlcmVkKSB7CisgICAgICAg
IGlzR3JhbmRmYXRoZXJlZCA9IF9pc0dyYW5kZmF0aGVyZWQ7CisgICAgICAgIGlzRGF0YVJlYWR5
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBwbGF0Zm9ybVJ1blVudGlsKGlzRGF0YVJlYWR5LCAwKTsK
KworICAgIHJldHVybiBpc0dyYW5kZmF0aGVyZWQ7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4oV0tTdHJpbmdSZWYgaG9z
dE5hbWUsIFdLU3RyaW5nUmVmIHRvcEZyYW1lSG9zdE5hbWUpCg==
</data>
<flag name="review"
          id="335324"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>