<?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>211759</bug_id>
          
          <creation_ts>2020-05-11 19:00:25 -0700</creation_ts>
          <short_desc>Give some NetworkLoadMetrics to WebCoreNSURLSession&apos;s delegate</short_desc>
          <delta_ts>2020-05-12 21:16:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1651572</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-11 19:00:25 -0700</bug_when>
    <thetext>Give some NetworkLoadMetrics to WebCoreNSURLSession&apos;s delegate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651574</commentid>
    <comment_count>1</comment_count>
      <attachid>399086</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-11 19:11:12 -0700</bug_when>
    <thetext>Created attachment 399086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651783</commentid>
    <comment_count>2</comment_count>
      <attachid>399138</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-12 09:59:54 -0700</bug_when>
    <thetext>Created attachment 399138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651793</commentid>
    <comment_count>3</comment_count>
      <attachid>399140</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-12 10:20:12 -0700</bug_when>
    <thetext>Created attachment 399140
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651826</commentid>
    <comment_count>4</comment_count>
      <attachid>399149</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-12 11:37:49 -0700</bug_when>
    <thetext>Created attachment 399149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651869</commentid>
    <comment_count>5</comment_count>
      <attachid>399156</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-12 12:50:16 -0700</bug_when>
    <thetext>Created attachment 399156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651977</commentid>
    <comment_count>6</comment_count>
      <attachid>399156</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-05-12 15:22:36 -0700</bug_when>
    <thetext>Comment on attachment 399156
Patch

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

&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm:44
&gt; +    if (!fetchStart.value())

Nit: .value() is superfluous here.

&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm:48
&gt; +    return [NSDate dateWithTimeIntervalSince1970:fetchStart.value() + delta.value()];

Nit: If it were me, i&apos;d have used .seconds() instead of .value(), but NBD, since those two methods are identical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652113</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-12 21:15:04 -0700</bug_when>
    <thetext>Committed r261597: &lt;https://trac.webkit.org/changeset/261597&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399156.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652114</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-12 21:16:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/63168321&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399086</attachid>
            <date>2020-05-11 19:11:12 -0700</date>
            <delta_ts>2020-05-12 09:59:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211759-20200511191111.patch</filename>
            <type>text/plain</type>
            <size>84338</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NSBAQAorMjAyMC0wNS0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgc29t
ZSBOZXR3b3JrTG9hZE1ldHJpY3MgdG8gV2ViQ29yZU5TVVJMU2Vzc2lvbidzIGRlbGVnYXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3NTkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyOTA5NDQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcmVxdWlyZWQgcGFja2FnaW5nIHRoZSBmZXRj
aFN0YXJ0IHRpbWUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgdGltZSBkZWx0YXMsCisgICAgICAgIHBh
c3NpbmcgYSBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIGRvd24gdG8gdGhlIG1lZGlhIGxvYWRl
ciwgYW5kIHBhY2thZ2luZyB0aGUgZGF0YSB1cAorICAgICAgICBpbiBhbiBPYmpDIG9iamVjdCB0
aGF0IHByZXRlbmRzIHRvIGJlIE5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzLCBqdXN0IGxpa2UgV2Vi
Q29yZU5TVVJMU2Vzc2lvbgorICAgICAgICBwcmV0ZW5kcyB0byBiZSBhbiBOU1VSTFNlc3Npb24u
CisKKyAgICAgICAgSSBtYW51YWxseSB2ZXJpZmllZCB0aGUgTlNEYXRlcyBhcmUgY29ycmVjdC4g
IFRoaXMgaXMgbm90IHN0cmFpZ2h0Zm9yd2FyZCB0byBhdXRvbWF0ZSB0ZXN0cyBmb3IKKyAgICAg
ICAgYmVjYXVzZSBvZiB0aGUgaW5oZXJhbnQgZHluYW1pYyBuYXR1cmUgb2YgdGltaW5nIGRhdGEs
IGFuZCBiZWNhdXNlIG91ciBvdGhlciBXZWJDb3JlTlNVUkxTZXNzaW9uCisgICAgICAgIHRlc3Rz
IHVzZSBXZWJLaXRMZWdhY3ksIGFuZCB0aGF0IGFwcHJvYWNoIHdvbid0IHdvcmsgaGVyZSBiZWNh
dXNlIHdlIGFyZSBvbmx5IGhvb2tpbmcgdXAgZGF0YSBmcm9tCisgICAgICAgIE5TVVJMU2Vzc2lv
biwgd2hpY2ggaXMgb25seSB1c2VkIGluIG1vZGVybiBXZWJLaXQuCisKKyAgICAgICAgKiBNb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdh
dG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlw
dExvYWRlci5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmg6CisgICAgICAg
ICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQ6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmg6CisgICAg
ICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FuY2VsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlQ2xpZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAg
ICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmg6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQ
cmlvcml0eT4+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eT4+OjpkZWNvZGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRy
aWNzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29weVRpbWluZ0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKG5l
dHdvcmtMb2FkTWV0cmljc0RhdGUpOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFz
a1RyYW5zYWN0aW9uTWV0cmljcyBfaW5pdFdpdGhNZXRyaWNzOl0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBmZXRjaFN0YXJ0RGF0ZV0pOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBkb21h
aW5Mb29rdXBTdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tU
cmFuc2FjdGlvbk1ldHJpY3MgZG9tYWluTG9va3VwRW5kRGF0ZV0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBjb25uZWN0U3RhcnREYXRlXSk6
CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIHNl
Y3VyZUNvbm5lY3Rpb25TdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
blRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgY29ubmVjdEVuZERhdGVdKToKKyAgICAgICAgKC1bV2Vi
Q29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgcmVxdWVzdFN0YXJ0RGF0ZV0p
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBy
ZXNwb25zZVN0YXJ0RGF0ZV0pOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1Ry
YW5zYWN0aW9uTWV0cmljcyByZXNwb25zZUVuZERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvblRhc2tNZXRyaWNzIF9pbml0V2l0aE1ldHJpY3M6XSk6CisgICAgICAgICgtW1dl
YkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcyB0cmFuc2FjdGlvbk1ldHJpY3NdKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlz
aGVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9maW5pc2hdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9yZXNvdXJjZTpsb2FkRmlu
aXNoZWRXaXRoRXJyb3I6bWV0cmljczpdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrIHJlc291cmNlOmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOmxvYWRGYWls
ZWRXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBy
ZXNvdXJjZUZpbmlzaGVkOm1ldHJpY3M6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayBfcmVzb3VyY2U6bG9hZEZpbmlzaGVkV2l0aEVycm9yOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2VGaW5pc2hlZDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmls
dGVyczo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlcnMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAyMC0wNS0wOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vdy11bm5lZWRlZCBIQVZFKEFWRk9V
TkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgY29uc3QgY2hhciogTmF2aWdhdG9yQmVhY29uOjpzdXBw
bGVtZW50TgogICAgIHJldHVybiAiTmF2aWdhdG9yQmVhY29uIjsKIH0KIAotdm9pZCBOYXZpZ2F0
b3JCZWFjb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQg
TmF2aWdhdG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKCFyZXNvdXJjZS5yZXNvdXJj
ZUVycm9yKCkuaXNOdWxsKCkpCiAgICAgICAgIGxvZ0Vycm9yKHJlc291cmNlLnJlc291cmNlRXJy
b3IoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFj
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0
b3JCZWFjb24uaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
ZWFjb24vTmF2aWdhdG9yQmVhY29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0g
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGxvZ0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAg
IE5hdmlnYXRvciYgbV9uYXZpZ2F0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXI6OmxvYWQoRG9jdQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQordm9pZCBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRTY3JpcHQpOwog
ICAgIEFTU0VSVChtX2NhY2hlZFNjcmlwdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAkocmV2aXNpb24gMjYx
NDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xp
ZW50JiwgRGVmZXJyZWRQcm9taXNlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYsIFJlZlB0cjxNb2R1
bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPERlZmVy
cmVkUHJvbWlzZT4gbV9wcm9taXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
Q2xhc3NpY1NjcmlwdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXNDYW5jZWxlZCgKICAgICByZXR1
cm4gbV9jYWNoZWRTY3JpcHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKLXZvaWQgTG9hZGFibGVDbGFz
c2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lk
IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIEFTU0VSVChtX2NhY2hl
ZFNjcmlwdCk7CiAgICAgaWYgKHJlc291cmNlLnJlc291cmNlRXJyb3IoKS5pc0FjY2Vzc0NvbnRy
b2woKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRT
Y3JpcHQ+IG1fY2FjaGVkU2NyaXB0IHsgfTsKICAgICBPcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7
IFdURjo6bnVsbG9wdCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYsMTMgQEAgU3RyaW5nIEhUTUxJ
bWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoYXR0cik7CiB9CiAKLXZvaWQgSFRNTEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCit2b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgQVNTRVJUKGltYWdlKCkpOwogICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFn
ZSA9ICppbWFnZSgpOwogCiAgICAgUmVmPEVsZW1lbnQ+IHByb3RlY3QoZWxlbWVudCgpKTsKLSAg
ICBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoY2FjaGVkSW1hZ2UpOworICAgIEltYWdlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChjYWNoZWRJbWFnZSwgbWV0cmljcyk7CiAKICAgICBib29sIGxv
YWRFcnJvciA9IGNhY2hlZEltYWdlLmVycm9yT2NjdXJyZWQoKSB8fCBjYWNoZWRJbWFnZS5yZXNw
b25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOwogICAgIGlmICghbG9hZEVycm9yKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lk
IEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiAgICAgICAgIGlmIChkYXRhICYmIGxv
YWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCiAgICAgICAgICAgICBkYXRhID0g
ZGF0YS0+Y29weSgpOwogCi0gICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5n
ZXQoKSk7CisgICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5nZXQoKSwgeyB9
KTsKICAgICAgICAgY2FjaGVkSW1hZ2UuZmluaXNoKCk7CiAKICAgICAgICAgLy8gUmVwb3J0IHRo
ZSBuYXR1cmFsIGltYWdlIHNpemUgaW4gdGhlIHBhZ2UgdGl0bGUsIHJlZ2FyZGxlc3Mgb2Ygem9v
bSBsZXZlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBBcHBsaWNhdGkK
ICAgICByZXR1cm4gbV9wcm9jZXNzZWRNYW5pZmVzdDsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2
b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgbV9kb2N1bWVu
dExvYWRlci5maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KCp0aGlzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIHByb2Nlc3NNYW5pZmVzdCgpOwog
CiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAgICBP
cHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX3Byb2Nlc3NlZE1hbmlmZXN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjp2YWxpZGEKICAgICBsb2FkZXIu
cHJlZmxpZ2h0U3VjY2VzcyhXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAotdm9pZCBDcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGlm
IChtX3Jlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZp
c2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogCiAgICAgc3RhdGljIHZvaWQgaGFuZGxlTG9hZGluZ0Zh
aWx1cmUoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNMb2FkaW5nTWFpblJlc291
cmNlKCkgfHwgIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSB8fCAhbV9wbHVnSW5TdHJl
YW1Mb2FkZXJzLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudExvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNyArNDQ2LDcgQEAgcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmZpbmlzaGVkVAogICAgIG1fY2xpZW50LT5kaWRGaW5pc2hUaW1pbmcocmVzb3Vy
Y2VUaW1pbmcpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9u
IDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVk
VGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5n
Jikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNv
bnN0IFJlc291cmNlVGltaW5nJik7Ci0gICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjIsNyArMzIyLDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VMb2FkZXI6OnJlamVjdERlY29kZVBy
bwogICAgIHJlamVjdFByb21pc2VzKG1fZGVjb2RpbmdQcm9taXNlcywgbWVzc2FnZSk7CiB9CiAK
LXZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9mYWlsZWRM
b2FkVVJMLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNl
ID09IG1faW1hZ2UuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IEltYWdlTG9hZGVyKEVsZW1lbnQmKTsKLSAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgTGF6eUltYWdlTG9hZFN0YXRlIDogdWludDhfdCB7IE5v
bmUsIERlZmVycmVkLCBMb2FkSW1tZWRpYXRlbHksIEZ1bGxJbWFnZSB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgTGlua0xvYWRlcjo6dHJpZ2dlckV2ZW50cyhjb25zdCBDYWMKICAgICAgICAgbV9j
bGllbnQubGlua0xvYWRlZCgpOwogfQogCi12b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQgTGlua0xvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQog
ewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fY2FjaGVkTGlua1Jlc291cmNlLmdldCgp
ID09ICZyZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxMb2Fk
KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBzdGF0aWMgdm9pZCBwcmVjb25u
ZWN0SWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwgRG9jdW1lbnQmKTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IHByZWxvYWRJ
Zk5lZWRlZChjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMmLCBEb2N1bWVudCYsIExpbmtMb2FkZXIq
KTsKICAgICB2b2lkIHByZWZldGNoSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwg
RG9jdW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291
cmNlQ2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJl
bG9hZFJlc291cmNlQ2xpZW50cy5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMo
cmVzb3VyY2UpOyB9CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhy
ZXNvdXJjZSk7IH0KICAgICB2b2lkIGNsZWFyKCkgZmluYWwgeyBjbGVhclJlc291cmNlKCp0aGlz
KTsgfQogICAgIGJvb2wgc2hvdWxkTWFya0FzUmVmZXJlbmNlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiB9OwpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
IGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7IH0KKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsgfQogICAgIHZvaWQgY2xlYXIoKSBmaW5h
bCB7IGNsZWFyUmVzb3VyY2UoKnRoaXMpOyB9CiAgICAgYm9vbCBzaG91bGRNYXJrQXNSZWZlcmVu
Y2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIH07CkBAIC0xNTcsNyArMTU3LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkgZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsg
fQorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOyB9
CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsIHsgY2xlYXJSZXNvdXJjZSgqdGhpcyk7IH0KICAgICBi
b29sIHNob3VsZE1hcmtBc1JlZmVyZW5jZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFIKICAgICAgICAgbV9jbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNv
dXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBNZWRp
YVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lk
IE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlCiAgICAgICAgIGlmIChtX3Jlc291
cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRG
YWlsZWQoKnRoaXMsIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMpOworICAgICAgICAgICAg
bV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiAgICAgfQogICAgIHN0b3Ao
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlk
ZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1lZGlhUmVzb3VyY2UoTWVkaWFS
ZXNvdXJjZUxvYWRlciYsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uCiAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlc291cmNl
RGF0YSgpOwogICAgICAgICBpZiAobV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCAmJiBidWZmZXIg
JiYgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBkYXRhIHdp
bGwgY2hhbmdlIGFzIHRoZSBuZXh0IHBhcnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ug
YSBjb3B5LgotICAgICAgICAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhidWZmZXItPmNv
cHkoKS5wdHIoKSk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKGJ1ZmZl
ci0+Y29weSgpLnB0cigpLCB7IH0pOwogICAgICAgICAgICAgY2xlYXJSZXNvdXJjZURhdGEoKTsK
ICAgICAgICAgICAgIC8vIFNpbmNlIGEgc3VicmVzb3VyY2UgbG9hZGVyIGRvZXMgbm90IGxvYWQg
bXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZlbHksIGRhdGEgd2FzIGRlbGl2ZXJlZCB0byB0
aGUgbG9hZGVyIGFsbCBhdCBvbmNlLgogICAgICAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IG11
bHRpcGFydCBzZWN0aW9uIGlzIGNvbXBsZXRlLCBzaWduYWwgdG8gZGVsZWdhdGVzIHRoYXQgdGhp
cyBsb2FkIGlzICJmaW5pc2hlZCIKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nCiAgICAgICAgIHRyYWNlUG9pbnQoU3VicmVzb3VyY2VM
b2FkRGlkRW5kKTsKIAogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7Ci0gICAgbV9yZXNvdXJjZS0+
ZmluaXNoTG9hZGluZyhyZXNvdXJjZURhdGEoKSk7CisgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9h
ZGluZyhyZXNvdXJjZURhdGEoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIAogICAgIGlmICh3YXND
YW5jZWxsZWQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hM
b2FkaW5nOiB3YXMgY2FuY2VsZWQiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGUKICAgICBtX3N0YXRlID0g
RmFpbGVkOwogfQogCi12b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09ICZyZXNvdXJjZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gQ2Fj
aGVkUmVzb3VyY2VDbGllbnQKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVwcmVjYXRlZERpZFJlY2Vp
dmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgLy8gV2ViVlRU
UGFyc2VyQ2xpZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlcwogICAgIH0KIAogICAg
IGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCkgewotICAgICAgICBub3RpZnlG
aW5pc2hlZCgqbV9yZXNvdXJjZSk7CisgICAgICAgIG5vdGlmeUZpbmlzaGVkKCptX3Jlc291cmNl
LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZAogICAgIGNhbGxiYWNrKFdURk1v
dmUobmV3UmVxdWVzdCkpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3
ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMgKzQw
LDEzIEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2EKIHsKIH0KIAot
dm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Ci0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIE9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIFJlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZybwogICAgICAg
ICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwog
fQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1f
ZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAp
OwpAQCAtMTA1LDEyICsxMDUsMTIgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKAogICAgIGlmIChkYXRhKQogICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkg
dG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRl
LgogICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IFN0cmluZygpOwogfQogCi12b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hl
Y2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5n
KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsMTIgKzU1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKSBmaW5hbDsKIAotICAgIHZvaWQgY2hlY2tOb3RpZnkoKSBmaW5hbDsKKyAg
ICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICBTdHJpbmcgbV9k
ZWNvZGVkU2hlZXRUZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzbwogICAgICAgICBzdGF0aWNfY2Fz
dDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9p
ZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05vdGlmeShtZXRyaWNzKTsK
IH0KIAogdm9pZCBDYWNoZWRGb250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6YWxsQ2xp
ZW50c1JlbW92ZWQoKQogICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG51bGxwdHI7CiB9
CiAKLXZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoKQordm9pZCBDYWNoZWRGb250OjpjaGVj
a05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmco
KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsMTQgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNv
bnN0OwogCi0gICAgdm9pZCBjaGVja05vdGlmeSgpIG92ZXJyaWRlOworICAgIHZvaWQgY2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlU
cnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9hZChD
YWNoZWRSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNT
RVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRz
UmVtb3ZlZCgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw3ICs1NjUs
NyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IGNoYXIqCiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFn
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsK
ICAgICBpZiAobV9kYXRhKSB7CkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdQogICAgIH0KIAogICAgIG5vdGlmeU9ic2VydmVycygpOwot
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZEltYWdl
OjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAog
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYQogCiAgICAgaWYgKG1fZGVsYXllZEZpbmlzaExvYWRp
bmcpIHsKICAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9kZWxheWVkRmluaXNoTG9hZGluZywgV1RGOjpudWxsb3B0KTsKLSAgICAgICAgZmluaXNoTG9h
ZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpKTsKKyAgICAgICAgZmluaXNo
TG9hZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpLCB7IH0pOwogICAgIH0K
IH0KIApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0K
IAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2lu
SW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5j
aHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMg
dXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2gKICAgICBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNl
bWVudCA9IG1fbG9hZGVyICYmICFtX2xvYWRlci0+aXNRdWlja0xvb2tSZXNvdXJjZSgpOwogI2Vu
ZGlmCiAKLSAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKKyAgICBDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhICYmIHRoaXMt
PmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpIHsKICAgICAgICAgaWYgKG1fbG9hZGVyKQogICAgICAgICAgICAgbV9sb2FkZXItPnNl
dERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZQogICAgICAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRy
KCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVu
dGlmaWVyLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZmluaXNoTG9hZGluZyhudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlzaExv
YWRpbmcobnVsbHB0ciwgeyB9KTsKICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0
eU1ldHJpY3M7CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRyKCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyLCBlbXB0eU1ldHJpY3MsIG51bGxwdHIp
OwogICAgICAgICB9KTsKQEAgLTM2NiwxNCArMzY2LDE0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnNldEJvZHlEYXRhRnJvbShjb24KICAgICBzZXRFbmNvZGVkU2l6ZShyZXNvdXJjZS5lbmNvZGVk
U2l6ZSgpKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIGlmIChpc0xvYWRpbmcoKSB8fCBzdGlsbE5lZWRzTG9hZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJj
ZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQotICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlz
aGVkKCp0aGlzKTsKKyAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmlj
cyk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KQpAQCAtMzg2LDEwICszODYsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShj
b25zdCBjaAogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05v
dGlmeShtZXRyaWNzKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OlN0YXR1cyBzdGF0dXMpCkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZTo6ZXJyb3IoQ2FjaGVkUmVzb3VyYwogICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsg
fSk7CiB9CiAgICAgCiB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKQEAgLTQxNCw3
ICs0MTQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKICAgICAgICAgc2V0
U3RhdHVzKExvYWRFcnJvcik7CiAKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsgfSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaCgpCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRk
Q2xpZW50KENhY2hlZAogCiAgICAgLy8gRklYTUU6IE1ha2UgY2FsbHMgdG8gbm90aWZ5RmluaXNo
ZWQgYXN5bmMKICAgICBpZiAoIWlzTG9hZGluZygpICYmICFzdGlsbE5lZWRzTG9hZCgpKQotICAg
ICAgICBjbGllbnQubm90aWZ5RmluaXNoZWQoKnRoaXMpOworICAgICAgICBjbGllbnQubm90aWZ5
RmluaXNoZWQoKnRoaXMsIHsgfSk7CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVu
dFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMjYxNDI0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
Q29va2llSmFyOwogY2xhc3MgTG9hZFRpbWluZzsKIGNsYXNzIE1lbW9yeUNhY2hlOworY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTExMyw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNl
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBA
IC0zMTQsNyArMzE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVjb2RlZERhdGFEZWxldGlv
blRpbWVyRmlyZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpOworICAgIHZp
cnR1YWwgdm9pZCBjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2
aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIFNlY29uZHMgZnJlc2huZXNzTGlmZXRpbWUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291
cmNlOworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNs
aWVudCB7CiBwdWJsaWM6CkBAIC0zOSw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
dmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmKSB7IH0KIAogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgU3RyaW5n
IENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbgogICAgIHJldHVybiBtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCByZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgbV9kb2N1bWVudC0+c2V0
Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKSk7CiAgICAgfQotICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwor
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURl
Y29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAkocmV2aXNp
b24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5NiwxMSBAQCB1bnNpZ25lZCBDYWNoZWRTY3Jp
cHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVk
U2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEs
IG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZGVzdHJveURlY29kZWREYXRhKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAg
ICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMjYxNDI0
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSwxMCBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKFNoYXJlCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsK
IH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7Cisg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciopOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjEsMTcgKzYxLDE3IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGMK
ICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwog
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKICAgICBpZiAoZGF0
YSkKICAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFhTTFN0
eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6Y2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTMgKzQxLDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29u
c3QgeyByZXR1cm4gbV9zaGVldDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgY2hlY2tOb3RpZnko
KSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JikgZmluYWw7CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlcjo6cmVzcG9uc2VSZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCi12b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpCiB7CiAgICAgdW5yZWdpc3RlclJlcXVlc3QocmVzb3VyY2UpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RU
cmFja2VyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCByZWdpc3RlclJlcXVlc3QoQ2FjaGVkUmVzb3VyY2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSWNvbkxvYWRlcjo6c3RvcExvYWRpbmcoKQog
ICAgIH0KIH0KIAotdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCit2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAg
ICBVUkwgbV91cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24g
MjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgY2hhciosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KIH07
CiAKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW4+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0JKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAg
IC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBmdWxmaWxs
UmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCkBAIC0xMTIsNyArMTEyLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpyZXNwb25zZQogICAgIG1fcGFyZW50
LnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChyZXNvdXJj
ZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CiAgICAgICAgIG1fcGFyZW50LmxvYWRGYWlsZWQo
cmVzb3VyY2UucmVzb3VyY2VFcnJvcigpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIq
LCBpbnQpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRG
YWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3Ip
OyB9Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJikgZmluYWwg
eyBsb2FkRmluaXNoZWQoKTsgfQorICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVk
KCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
TG9hZE1ldHJpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0NvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gY29tcGxldGU7IH0KICAgICB2b2lk
IG1hcmtDb21wbGV0ZSgpIHsgY29tcGxldGUgPSB0cnVlOyB9CiAKLSAgICAvLyBUaGVzZSBzaG91
bGQgYmUgdHJlYXRlZCBhcyBkZWx0YXMgdG8gTG9hZFRpbWluZydzIGZldGNoU3RhcnQuCisgICAg
U2Vjb25kcyBmZXRjaFN0YXJ0OworCisgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHRyZWF0ZWQgYXMg
ZGVsdGFzIHRvIGZldGNoU3RhcnQuCiAgICAgLy8gVGhleSBzaG91bGQgYmUgaW4gYXNjZW5kaW5n
IG9yZGVyIGFzIGxpc3RlZCBoZXJlLgogICAgIFNlY29uZHMgZG9tYWluTG9va3VwU3RhcnQgeyAt
MSB9OyAgICAgLy8gLTEgaWYgbm8gRE5TLgogICAgIFNlY29uZHMgZG9tYWluTG9va3VwRW5kIHsg
LTEgfTsgICAgICAgLy8gLTEgaWYgbm8gRE5TLgpAQCAtODEsNiArODMsOCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgY29weTsKIAorICAgICAgICBjb3B5LmZl
dGNoU3RhcnQgPSBmZXRjaFN0YXJ0OworCiAgICAgICAgIGNvcHkuZG9tYWluTG9va3VwU3RhcnQg
PSBkb21haW5Mb29rdXBTdGFydDsKICAgICAgICAgY29weS5kb21haW5Mb29rdXBFbmQgPSBkb21h
aW5Mb29rdXBFbmQ7CiAgICAgICAgIGNvcHkuY29ubmVjdFN0YXJ0ID0gY29ubmVjdFN0YXJ0OwpA
QCAtMTEwLDcgKzExNCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGRv
bWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxvb2t1cFN0YXJ0CisgICAgICAgIHJldHVy
biBmZXRjaFN0YXJ0ID09IG90aGVyLmZldGNoU3RhcnQKKyAgICAgICAgICAgICYmIGRvbWFpbkxv
b2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxvb2t1cFN0YXJ0CiAgICAgICAgICAgICAmJiBkb21h
aW5Mb29rdXBFbmQgPT0gb3RoZXIuZG9tYWluTG9va3VwRW5kCiAgICAgICAgICAgICAmJiBjb25u
ZWN0U3RhcnQgPT0gb3RoZXIuY29ubmVjdFN0YXJ0CiAgICAgICAgICAgICAmJiBzZWN1cmVDb25u
ZWN0aW9uU3RhcnQgPT0gb3RoZXIuc2VjdXJlQ29ubmVjdGlvblN0YXJ0CkBAIC0xMzgsOCArMTQz
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXIsIHR5cGVuYW1lPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2RlciwgdHlwZW5hbWU+IHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIE5ldHdvcmtMb2FkTWV0cmljcyYpOwog
CiAgICAgU3RyaW5nIHJlbW90ZUFkZHJlc3M7CiAgICAgU3RyaW5nIGNvbm5lY3Rpb25JZGVudGlm
aWVyOwpAQCAtMTYyLDkgKzE2NywxMSBAQCBwdWJsaWM6CiBXRUJDT1JFX0VYUE9SVCBCb3g8TmV0
d29ya0xvYWRNZXRyaWNzPiBjb3B5VGltaW5nRGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEp
OwogI2VuZGlmCiAKLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CisvLyBOZXR3b3JrTG9hZE1ldHJp
Y3Mgc2hvdWxkIG5vdCBiZSBzdG9yZWQgYnkgdGhlIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIu
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8
RW5jb2Rlcjo6aXNJUENFbmNvZGVyPj4KIHZvaWQgTmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKKyAgICBlbmNvZGVyIDw8IGZldGNoU3RhcnQ7CiAg
ICAgZW5jb2RlciA8PCBkb21haW5Mb29rdXBTdGFydDsKICAgICBlbmNvZGVyIDw8IGRvbWFpbkxv
b2t1cEVuZDsKICAgICBlbmNvZGVyIDw8IGNvbm5lY3RTdGFydDsKQEAgLTE4OCwxMCArMTk1LDEx
IEBAIHZvaWQgTmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUoRW5jb2RlciYKICAgICBlbmNvZGVy
IDw8IHJlc3BvbnNlQm9keURlY29kZWRTaXplOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2RlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90
PERlY29kZXI6OmlzSVBDRGVjb2Rlcj4+CiBib29sIE5ldHdvcmtMb2FkTWV0cmljczo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBy
ZXR1cm4gZGVjb2Rlci5kZWNvZGUobWV0cmljcy5kb21haW5Mb29rdXBTdGFydCkKKyAgICByZXR1
cm4gZGVjb2Rlci5kZWNvZGUobWV0cmljcy5mZXRjaFN0YXJ0KQorICAgICAgICAmJiBkZWNvZGVy
LmRlY29kZShtZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRl
Y29kZShtZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUo
bWV0cmljcy5jb25uZWN0U3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3Mu
c2VjdXJlQ29ubmVjdGlvblN0YXJ0KQpAQCAtMjE1LDIyICsyMjMsMyBAQCBib29sIE5ldHdvcmtM
b2FkTWV0cmljczo6ZGVjb2RlKERlY29kZXImCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotLy8gTmV0d29ya0xvYWRNZXRyaWNzIHNob3VsZCBub3QgYmUgc3RvcmVkIGJ5IHRoZSBXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyLgotbmFtZXNwYWNlIFdURiB7Ci1uYW1lc3BhY2UgUGVyc2lz
dGVuY2UgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxPcHRpb25hbDxXZWJDb3JlOjpOZXR3
b3JrTG9hZFByaW9yaXR5Pj4gewotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQ
cmlvcml0eT4mKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBPcHRpb25hbDxXZWJDb3JlOjpOZXR3
b3JrTG9hZFByaW9yaXR5PiYpCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBXVEY6
OlBlcnNpc3RlbmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtMb2FkTWV0cmljcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQkocmV2aXNpb24gMjYxNDI0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1l
dHJpY3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgQm94PE5ldHdvcmtMb2Fk
TWV0cmljcz4gY29weVRpbWluZ0RhdGEoTgogICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQgPSB0aW1p
bmdWYWx1ZSh0aW1pbmdEYXRhLCBAIl9rQ0ZOVGltaW5nRGF0YVJlcXVlc3RTdGFydCIpOwogICAg
IGRvdWJsZSByZXNwb25zZVN0YXJ0ID0gdGltaW5nVmFsdWUodGltaW5nRGF0YSwgQCJfa0NGTlRp
bWluZ0RhdGFSZXNwb25zZVN0YXJ0Iik7CiAKKyAgICB0aW1pbmctPmZldGNoU3RhcnQgPSBTZWNv
bmRzKHJlZmVyZW5jZVN0YXJ0KTsKICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0ID0gU2Vj
b25kcyhkb21haW5Mb29rdXBTdGFydCA8PSAwID8gLTEgOiBkb21haW5Mb29rdXBTdGFydCAtIHJl
ZmVyZW5jZVN0YXJ0KTsKICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMoZG9t
YWluTG9va3VwRW5kIDw9IDAgPyAtMSA6IGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVyZW5jZVN0YXJ0
KTsKICAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IFNlY29uZHMoY29ubmVjdFN0YXJ0IDw9IDAg
PyAtMSA6IGNvbm5lY3RTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0JKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksMTIxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogCitzdGF0aWMgTlNEYXRlICogX19udWxsYWJsZSBuZXR3b3JrTG9hZE1ldHJp
Y3NEYXRlKFNlY29uZHMgZmV0Y2hTdGFydCwgU2Vjb25kcyBkZWx0YSkKK3sKKyAgICBpZiAoIWZl
dGNoU3RhcnQudmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBpZiAoZGVsdGEudmFs
dWUoKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW05TRGF0ZSBkYXRl
V2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpmZXRjaFN0YXJ0LnZhbHVlKCkgKyBkZWx0YS52YWx1
ZSgpXTsKK30KKworQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9u
TWV0cmljcyA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczooY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzOworQHByb3BlcnR5IChudWxs
YWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0ZSAqZmV0Y2hTdGFydERhdGU7CitAcHJvcGVydHkg
KG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpkb21haW5Mb29rdXBTdGFydERhdGU7
CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpkb21haW5Mb29r
dXBFbmREYXRlOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0ZSAq
Y29ubmVjdFN0YXJ0RGF0ZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBO
U0RhdGUgKnNlY3VyZUNvbm5lY3Rpb25TdGFydERhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBj
b3B5LCByZWFkb25seSkgTlNEYXRlICpjb25uZWN0RW5kRGF0ZTsKK0Bwcm9wZXJ0eSAobnVsbGFi
bGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKnJlcXVlc3RTdGFydERhdGU7CitAcHJvcGVydHkg
KG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpyZXNwb25zZVN0YXJ0RGF0ZTsKK0Bw
cm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKnJlc3BvbnNlRW5kRGF0
ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNh
Y3Rpb25NZXRyaWNzIHsKKyAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgX21ldHJpY3M7
Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfbWV0cmljcyA9IG1ldHJpY3M7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKK0BkeW5hbWljIGZldGNoU3RhcnREYXRlOworLSAobnVsbGFibGUg
TlNEYXRlICopZmV0Y2hTdGFydERhdGUKK3sKKyAgICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNz
RGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBTZWNvbmRzKDApKTsKK30KKworQGR5bmFtaWMgZG9t
YWluTG9va3VwU3RhcnREYXRlOworLSAobnVsbGFibGUgTlNEYXRlICopZG9tYWluTG9va3VwU3Rh
cnREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoX21ldHJpY3MuZmV0
Y2hTdGFydCwgX21ldHJpY3MuZG9tYWluTG9va3VwU3RhcnQpOworfQorCitAZHluYW1pYyBkb21h
aW5Mb29rdXBFbmREYXRlOworLSAobnVsbGFibGUgTlNEYXRlICopZG9tYWluTG9va3VwRW5kRGF0
ZQoreworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZldGNoU3Rh
cnQsIF9tZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCk7Cit9CisKK0BkeW5hbWljIGNvbm5lY3RTdGFy
dERhdGU7CistIChudWxsYWJsZSBOU0RhdGUgKiljb25uZWN0U3RhcnREYXRlCit7CisgICAgcmV0
dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3Mu
Y29ubmVjdFN0YXJ0KTsKK30KKworQGR5bmFtaWMgc2VjdXJlQ29ubmVjdGlvblN0YXJ0RGF0ZTsK
Ky0gKG51bGxhYmxlIE5TRGF0ZSAqKXNlY3VyZUNvbm5lY3Rpb25TdGFydERhdGUKK3sKKyAgICBy
ZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBfbWV0cmlj
cy5zZWN1cmVDb25uZWN0aW9uU3RhcnQpOworfQorCitAZHluYW1pYyBjb25uZWN0RW5kRGF0ZTsK
Ky0gKG51bGxhYmxlIE5TRGF0ZSAqKWNvbm5lY3RFbmREYXRlCit7CisgICAgcmV0dXJuIG5ldHdv
cmtMb2FkTWV0cmljc0RhdGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3MuY29ubmVjdEVu
ZCk7Cit9CisKK0BkeW5hbWljIHJlcXVlc3RTdGFydERhdGU7CistIChudWxsYWJsZSBOU0RhdGUg
KilyZXF1ZXN0U3RhcnREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUo
X21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3MucmVxdWVzdFN0YXJ0KTsKK30KKworQGR5bmFt
aWMgcmVzcG9uc2VTdGFydERhdGU7CistIChudWxsYWJsZSBOU0RhdGUgKilyZXNwb25zZVN0YXJ0
RGF0ZQoreworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZldGNo
U3RhcnQsIF9tZXRyaWNzLnJlc3BvbnNlU3RhcnQpOworfQorCitAZHluYW1pYyByZXNwb25zZUVu
ZERhdGU7CistIChudWxsYWJsZSBOU0RhdGUgKilyZXNwb25zZUVuZERhdGUKK3sKKyAgICByZXR1
cm4gbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBfbWV0cmljcy5y
ZXNwb25zZUVuZCk7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9u
VGFza01ldHJpY3MgOiBOU09iamVjdAorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpbWV0cmljczsKK0Bwcm9wZXJ0eSAo
Y29weSwgcmVhZG9ubHkpIE5TQXJyYXk8TlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmlj
cyAqPiAqdHJhbnNhY3Rpb25NZXRyaWNzOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQ29y
ZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzIHsKKyAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vz
c2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3M+IF90cmFuc2FjdGlvbk1ldHJpY3M7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKW1ldHJpY3MKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICBfdHJhbnNhY3Rpb25NZXRyaWNzID0gYWRvcHROUyhbW1dl
YkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhN
ZXRyaWNzOm1ldHJpY3NdKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGR5bmFtaWMgdHJhbnNh
Y3Rpb25NZXRyaWNzOworLSAoTlNBcnJheTxOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRy
aWNzICo+ICopdHJhbnNhY3Rpb25NZXRyaWNzCit7CisgICAgcmV0dXJuIEBbIChOU1VSTFNlc3Np
b25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICopc2VsZi0+X3RyYW5zYWN0aW9uTWV0cmljcy5nZXQo
KSBdOworfQorCitAZW5kCisKIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiAoKQogQHBy
b3BlcnR5IChyZWFkb25seSkgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXI7CiBA
cHJvcGVydHkgKHJlYWR3cml0ZSwgcmV0YWluKSBpZDxOU1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+
IGRlbGVnYXRlOwpAQCAtNjMsNyArMTc4LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1N
ZWRpYVJlc291cmNlJgogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlJily
ZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25z
ZSByZXF1ZXN0OihSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2Ug
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9yJill
cnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2Ug
bG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgUmVzb3VyY2VFcnJvciYpZXJyb3I7Ci0tICh2b2lk
KXJlc291cmNlRmluaXNoZWQ6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2U7CistICh2
b2lkKXJlc291cmNlRmluaXNoZWQ6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgbWV0
cmljczooY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzOwogQGVuZAogCiBOU19BU1NV
TUVfTk9OTlVMTF9FTkQKQEAgLTM4OSw3ICs1MDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciogLyogZGF0YSAqLywg
aW50IC8qIGxlbmd0aCAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgTG9jayBtX3Rhc2tMb2NrOwpAQCAtNDY5LDEzICs1ODQsMTMgQEAgdm9pZCBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OgogICAgIFttX3Rhc2sgcmVzb3VyY2U6
cmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjplcnJvcl07CiB9CiAKLXZvaWQgV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiByZXNvdXJjZSkKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojps
b2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xv
Y2spOwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV90YXNrIHJl
c291cmNlRmluaXNoZWQ6cmVzb3VyY2VdOworICAgIFttX3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpy
ZXNvdXJjZSBtZXRyaWNzOm1ldHJpY3NdOwogfQogCiB9CkBAIC01NDEsNyArNjU2LDcgQEAgLSAo
dm9pZClfZmluaXNoCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoX3Jl
c291cmNlKQotICAgICAgICBbc2VsZiByZXNvdXJjZUZpbmlzaGVkOipfcmVzb3VyY2VdOworICAg
ICAgICBbc2VsZiByZXNvdXJjZUZpbmlzaGVkOipfcmVzb3VyY2UgbWV0cmljczpOZXR3b3JrTG9h
ZE1ldHJpY3MgeyB9XTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gTlNVUkxTZXNzaW9uIEFQSQpAQCAt
NzE5LDcgKzgzNCw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYK
ICAgICB9XTsKIH0KIAotLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYp
cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQp
X3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGxvYWRGaW5pc2hlZFdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yIG1ldHJpY3M6KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpbWV0cmljcwogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBf
cmVzb3VyY2UpOwogICAgIGlmIChzZWxmLnN0YXRlID09IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZUNv
bXBsZXRlZCkKQEAgLTcyOSw4ICs4NDQsMTIgQEAgLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZQogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+
IHN0cm9uZ1NlbGYgeyBzZWxmIH07CiAgICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb24+
IHN0cm9uZ1Nlc3Npb24geyBzZWxmLnNlc3Npb24gfTsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4g
c3Ryb25nRXJyb3IgeyBlcnJvciB9OwotICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVy
YXRpb246W3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb24sIHN0cm9uZ0Vycm9yXSB7CisgICAgW3Nl
bGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwgc3Ryb25nU2Vzc2lv
biwgc3Ryb25nRXJyb3IsIG1ldHJpY3MgPSBtZXRyaWNzLmlzb2xhdGVkQ29weSgpXSB7CiAgICAg
ICAgIGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4gZGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNz
aW9uVGFza0RlbGVnYXRlPilzdHJvbmdTZXNzaW9uLmdldCgpLmRlbGVnYXRlOworCisgICAgICAg
IGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOnRh
c2s6ZGlkRmluaXNoQ29sbGVjdGluZ01ldHJpY3M6KV0pCisgICAgICAgICAgICBbZGVsZWdhdGUg
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2Vzc2lvbi5nZXQoKSB0YXNrOihOU1VS
TFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkRmluaXNoQ29sbGVjdGluZ01l
dHJpY3M6KE5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzICopYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNl
c3Npb25UYXNrTWV0cmljcyBhbGxvY10gX2luaXRXaXRoTWV0cmljczptZXRyaWNzXSkuZ2V0KCld
OworCiAgICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihV
UkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6KV0pCiAgICAgICAgICAgICBbZGVs
ZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2Vzc2lvbi5nZXQoKSB0YXNr
OihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkQ29tcGxldGVXaXRo
RXJyb3I6c3Ryb25nRXJyb3IuZ2V0KCldOwogCkBAIC03NDIsMTYgKzg2MSwxNiBAQCAtICh2b2lk
KV9yZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlCiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0
aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9yJillcnJvcgogewotICAgIFtzZWxmIF9yZXNvdXJj
ZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAgICBb
c2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOmVycm9yLm5zRXJy
b3IoKSBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwogfQogCiAtICh2b2lkKXJlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6
KGNvbnN0IFJlc291cmNlRXJyb3ImKWVycm9yCiB7Ci0gICAgW3NlbGYgX3Jlc291cmNlOnJlc291
cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgIFtzZWxmIF9y
ZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpIG1l
dHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2VGaW5p
c2hlZDooUGxhdGZvcm1NZWRpYVJlc291cmNlJilyZXNvdXJjZQorLSAodm9pZClyZXNvdXJjZUZp
bmlzaGVkOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIG1ldHJpY3M6KGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpbWV0cmljcwogewotICAgIFtzZWxmIF9yZXNvdXJjZTpyZXNvdXJj
ZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6bmlsXTsKKyAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3Vy
Y2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOm5pbCBtZXRyaWNzOm1ldHJpY3NdOwogfQogQGVuZApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNp
b24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBWaXNpYmxlSW5WaWV3cG9ydFN0
YXRlIFJlbmRlckVsZW1lbnQ6OmltCiAgICAgcmV0dXJuIGlzVmlzaWJsZSA/IFZpc2libGVJblZp
ZXdwb3J0U3RhdGU6OlllcyA6IFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOwogfQogCi12b2lk
IFJlbmRlckVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
K3ZvaWQgUmVuZGVyRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGRvY3VtZW50KCkuY2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS5ub3RpZnlGaW5pc2hlZChyZXNvdXJjZSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2Niw3ICsyNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnNlcnRlZEludG9UcmVl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldFJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMoYm9vbCBiKSB7
IG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlcyA9IGI7IH0KICAgICBib29sIHJl
bmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQw
Myw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQKICAgICBjb250
ZW50Q2hhbmdlZChJbWFnZUNoYW5nZWQpOwogfQogCi12b2lkIFJlbmRlckltYWdlOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgbmV3SW1hZ2UpCit2b2lkIFJlbmRlckltYWdlOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgbmV3SW1hZ2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAocmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSCiAgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQo
KSkpCiAgICAgICAgIHBhZ2UoKS5kaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KGRvd25j
YXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KCkpKTsKIAotICAgIFJlbmRlclJlcGxhY2Vk
Ojpub3RpZnlGaW5pc2hlZChuZXdJbWFnZSk7CisgICAgUmVuZGVyUmVwbGFjZWQ6Om5vdGlmeUZp
bmlzaGVkKG5ld0ltYWdlLCBtZXRyaWNzKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6c2V0SW1h
Z2VEZXZpY2VQaXhlbFJhdGlvKGZsb2F0IGZhY3RvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBA
IHByaXZhdGU6CiAKICAgICBMYXlvdXRVbml0IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZp
bmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRp
b25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRU
ZXN0QWN0aW9uKSBmaW5hbDsKIAogICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9C
YWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAkocmV2aXNpb24gMjYx
NDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBSZW5kZXJMYXllckZpbHRlcnM6
Omhhc0ZpbHRlclRoYXRTaAogICAgIHJldHVybiBtX2ZpbHRlciAmJiBtX2ZpbHRlci0+aGFzRmls
dGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4oKTsKIH0KIAotdm9pZCBS
ZW5kZXJMYXllckZpbHRlcnM6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikKK3ZvaWQg
UmVuZGVyTGF5ZXJGaWx0ZXJzOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgcmVhbGx5IHNob3Vs
ZG4ndCBoYXZlIHRvIGludmFsaWRhdGUgbGF5ZXIgY29tcG9zaXRpb24sCiAgICAgLy8gYnV0IHRl
c3RzIGxpa2UgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtZGVsZXRlLmh0bWwgZmFpbCBp
ZiB0aGF0IGRvZXNuJ3QgaGFwcGVuLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyRmlsdGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlcnMuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29u
dGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZv
aWQgcmVzZXREaXJ0eVNvdXJjZVJlY3QoKSB7IG1fZGlydHlTb3VyY2VSZWN0ID0gTGF5b3V0UmVj
dCgpOyB9CiAKICAgICBSZW5kZXJMYXllciYgbV9sYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcg
KzE2Miw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXMKICAgICAg
ICAgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKIH0KIAotdm9pZCBTVkdGRUltYWdlRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKQordm9pZCBTVkdGRUltYWdlRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKQogewogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVS
TD4mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgp
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNp
b24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDIsNyArNTQyLDcgQEAgYm9vbCBTVkdVc2VFbGVtZW50OjpzZWxmSGFz
UmVsYXRpdmVMZW5ndAogICAgIHJldHVybiB0YXJnZXRDbG9uZSAmJiB0YXJnZXRDbG9uZS0+aGFz
UmVsYXRpdmVMZW5ndGhzKCk7CiB9CiAKLXZvaWQgU1ZHVXNlRWxlbWVudDo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBTVkdVc2VFbGVtZW50Ojpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpCiB7CiAgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjpp
c1NjcmlwdEFsbG93ZWQoKSk7CiAgICAgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAgICAgUGF0aCB0b0NsaXBQYXRoKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRp
dmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIERvY3VtZW50KiBl
eHRlcm5hbERvY3VtZW50KCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVFeHRlcm5hbERvY3VtZW50
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYxNTM3KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wNS0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgc29t
ZSBOZXR3b3JrTG9hZE1ldHJpY3MgdG8gV2ViQ29yZU5TVVJMU2Vzc2lvbidzIGRlbGVnYXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3NTkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyOTA5NDQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxzbyByZWR1Y2VzIGR1cGxpY2F0ZSBsb29r
dXBzIGluIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVJlc291cmNlOjpsb2FkRmluaXNoZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFTZW50KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphY2Nlc3NDb250cm9sQ2hlY2tGYWls
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bG9hZEZh
aWxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpsb2Fk
RmluaXNoZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0
ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkRmluaXNoQ29sbGVjdGluZ01ldHJpY3M6XSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojpsb2FkRmluaXNoZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5o
OgorCiAyMDIwLTA1LTExICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29t
PgogCiAgICAgICAgIEZhaWwgbmF2aWdhdGlvbnMgdG8gbm9uIGFwcC1ib3VuZCBkb21haW5zIGFm
dGVyIHVzZSBvZiBhcHAtYm91bmQgQVBJcwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAkocmV2aXNpb24gMjYx
NDI0KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMTAgKzExMiwxMCBAQCB2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2U6OmxvYWRGYWlsZWQoY29uCiAgICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVk
KCp0aGlzLCBlcnJvcik7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZpbmlz
aGVkKCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZpbmlzaGVkKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1f
Y2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMpOworICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlz
aGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOZXR3b3Jr
TG9hZE1ldHJpY3M7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVNZWRp
YVBsYXllclByb3h5OwpAQCAtNTQsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoY29uc3QgY2hhciosIGludDY0X3QpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWls
ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgbG9hZEZpbmlzaGVk
KCk7CisgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlTWVkaWFSZXNvdXJjZShSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlciYsIFJlbW90ZU1lZGlhUGxheWVyUHJveHkmLCBSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAJKHJldmlzaW9u
IDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBS
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6cmVzcG9ucwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5yZXNwb25zZVJlY2VpdmVk
KHJlc3BvbnNlLCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgcmVzb3VyY2UtPnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UsIGRpZFBh
c3NBY2Nlc3NDb250cm9sQ2hlY2ssIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAog
dm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6cmVkaXJlY3RSZWNlaXZlZChSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzgsNyAr
NzgsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpyZWRpcmVjCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzLmdldChpZCktPnJl
ZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICByZXNvdXJjZS0+cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJl
cXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhU2VudChSZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllciBpZCwgdWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9C
ZVNlbnQpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6
OmRhdGFTZW4KICAgICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5kYXRhU2Vu
dChieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgcmVzb3VyY2UtPmRhdGFTZW50
KGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcjo6ZGF0YVJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
IGlkLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFSZWMKICAgICBpZiAoIXJlc291cmNl
IHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZW1vdGVN
ZWRpYVJlc291cmNlcy5nZXQoaWQpLT5kYXRhUmVjZWl2ZWQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgcmVzb3VyY2UtPmRhdGFS
ZWNlaXZlZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEu
c2l6ZSgpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6YWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFJlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyOjphY2Nlc3NDCiAgICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3VyY2Ut
PnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlTWVkaWFSZXNvdXJjZXMu
Z2V0KGlkKS0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGVycm9yKTsKKyAgICByZXNvdXJjZS0+
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGVycm9yKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcjo6bG9hZEZhaWxlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBp
ZCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0xMTQsMTYgKzExNCwxNiBAQCB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpsb2FkRmFpCiAgICAgaWYgKCFyZXNvdXJjZSB8
fCAhcmVzb3VyY2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlTWVk
aWFSZXNvdXJjZXMuZ2V0KGlkKS0+bG9hZEZhaWxlZChlcnJvcik7CisgICAgcmVzb3VyY2UtPmxv
YWRGYWlsZWQoZXJyb3IpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjps
b2FkRmluaXNoZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWQpCit2b2lkIFJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlk
ZW50aWZpZXIgaWQsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBh
dXRvKiByZXNvdXJjZSA9IG1fcmVtb3RlTWVkaWFSZXNvdXJjZXMuZ2V0KGlkKTsKICAgICBpZiAo
IXJlc291cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5sb2FkRmluaXNoZWQoKTsKKyAgICByZXNv
dXJjZS0+bG9hZEZpbmlzaGVkKG1ldHJpY3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiB9CiAKQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRh
dGFSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2b2lkIGxvYWRGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2b2lkIGxvYWRGaW5pc2hlZChSZW1vdGVNZWRp
YVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFS
ZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwog
CiAgICAgSGFzaE1hcDxSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFS
ZXNvdXJjZSo+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZXM7CiB9OwpJbmRleDogU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIE4KICAgICBEYXRhUmVjZWl2ZWQoV2ViS2l0OjpSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAg
QWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50
aWZpZXIgaWQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgTG9hZEZhaWxlZChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yKQotICAgIExvYWRGaW5pc2hlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3Vy
Y2VJZGVudGlmaWVyIGlkKQorICAgIExvYWRGaW5pc2hlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbWV0cmljcykK
IH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNjE0MjQpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTc4MCw2ICs3ODAsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246
KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIE5TVGltZUludGVydmFsIHJlc3BvbnNlRW5k
SW50ZXJ2YWwgPSBbbS5yZXNwb25zZUVuZERhdGUgdGltZUludGVydmFsU2luY2VEYXRlOmZldGNo
U3RhcnREYXRlXTsKIAogICAgICAgICBhdXRvJiBuZXR3b3JrTG9hZE1ldHJpY3MgPSBuZXR3b3Jr
RGF0YVRhc2stPm5ldHdvcmtMb2FkTWV0cmljcygpOworICAgICAgICBuZXR3b3JrTG9hZE1ldHJp
Y3MuZmV0Y2hTdGFydCA9IFNlY29uZHMoZmV0Y2hTdGFydERhdGUudGltZUludGVydmFsU2luY2Ux
OTcwKTsKICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0ID0gU2Vj
b25kcyhkb21haW5Mb29rdXBTdGFydEludGVydmFsKTsKICAgICAgICAgbmV0d29ya0xvYWRNZXRy
aWNzLmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMoZG9tYWluTG9va3VwRW5kSW50ZXJ2YWwpOwog
ICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdFN0YXJ0ID0gU2Vjb25kcyhjb25uZWN0
U3RhcnRJbnRlcnZhbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCShyZXZp
c2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDkgKzg2LDkgQEAg
dm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmxvYWRGYWlsZQogICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkxvYWRGYWlsZWQo
bV9pZCwgZXJyb3IpLCAwKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6Omxv
YWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKQordm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlUHJveHk6OmxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
cjo6TG9hZEZpbmlzaGVkKG1faWQpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpMb2FkRmluaXNoZWQobV9pZCwgbWV0cmlj
cyksIDApOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgJKHJldmlzaW9u
IDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKLSAg
ICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmIG1fcGxhdGZvcm1NZWRpYVJlc291cmNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399138</attachid>
            <date>2020-05-12 09:59:54 -0700</date>
            <delta_ts>2020-05-12 10:20:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211759-20200512095953.patch</filename>
            <type>text/plain</type>
            <size>85565</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NSBAQAorMjAyMC0wNS0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgc29t
ZSBOZXR3b3JrTG9hZE1ldHJpY3MgdG8gV2ViQ29yZU5TVVJMU2Vzc2lvbidzIGRlbGVnYXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3NTkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyOTA5NDQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcmVxdWlyZWQgcGFja2FnaW5nIHRoZSBmZXRj
aFN0YXJ0IHRpbWUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgdGltZSBkZWx0YXMsCisgICAgICAgIHBh
c3NpbmcgYSBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIGRvd24gdG8gdGhlIG1lZGlhIGxvYWRl
ciwgYW5kIHBhY2thZ2luZyB0aGUgZGF0YSB1cAorICAgICAgICBpbiBhbiBPYmpDIG9iamVjdCB0
aGF0IHByZXRlbmRzIHRvIGJlIE5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzLCBqdXN0IGxpa2UgV2Vi
Q29yZU5TVVJMU2Vzc2lvbgorICAgICAgICBwcmV0ZW5kcyB0byBiZSBhbiBOU1VSTFNlc3Npb24u
CisKKyAgICAgICAgSSBtYW51YWxseSB2ZXJpZmllZCB0aGUgTlNEYXRlcyBhcmUgY29ycmVjdC4g
IFRoaXMgaXMgbm90IHN0cmFpZ2h0Zm9yd2FyZCB0byBhdXRvbWF0ZSB0ZXN0cyBmb3IKKyAgICAg
ICAgYmVjYXVzZSBvZiB0aGUgaW5oZXJhbnQgZHluYW1pYyBuYXR1cmUgb2YgdGltaW5nIGRhdGEs
IGFuZCBiZWNhdXNlIG91ciBvdGhlciBXZWJDb3JlTlNVUkxTZXNzaW9uCisgICAgICAgIHRlc3Rz
IHVzZSBXZWJLaXRMZWdhY3ksIGFuZCB0aGF0IGFwcHJvYWNoIHdvbid0IHdvcmsgaGVyZSBiZWNh
dXNlIHdlIGFyZSBvbmx5IGhvb2tpbmcgdXAgZGF0YSBmcm9tCisgICAgICAgIE5TVVJMU2Vzc2lv
biwgd2hpY2ggaXMgb25seSB1c2VkIGluIG1vZGVybiBXZWJLaXQuCisKKyAgICAgICAgKiBNb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdh
dG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlw
dExvYWRlci5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmg6CisgICAgICAg
ICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQ6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmg6CisgICAg
ICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FuY2VsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlQ2xpZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAg
ICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmg6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQ
cmlvcml0eT4+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eT4+OjpkZWNvZGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRy
aWNzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29weVRpbWluZ0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKG5l
dHdvcmtMb2FkTWV0cmljc0RhdGUpOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFz
a1RyYW5zYWN0aW9uTWV0cmljcyBfaW5pdFdpdGhNZXRyaWNzOl0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBmZXRjaFN0YXJ0RGF0ZV0pOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBkb21h
aW5Mb29rdXBTdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tU
cmFuc2FjdGlvbk1ldHJpY3MgZG9tYWluTG9va3VwRW5kRGF0ZV0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBjb25uZWN0U3RhcnREYXRlXSk6
CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIHNl
Y3VyZUNvbm5lY3Rpb25TdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
blRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgY29ubmVjdEVuZERhdGVdKToKKyAgICAgICAgKC1bV2Vi
Q29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgcmVxdWVzdFN0YXJ0RGF0ZV0p
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBy
ZXNwb25zZVN0YXJ0RGF0ZV0pOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1Ry
YW5zYWN0aW9uTWV0cmljcyByZXNwb25zZUVuZERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvblRhc2tNZXRyaWNzIF9pbml0V2l0aE1ldHJpY3M6XSk6CisgICAgICAgICgtW1dl
YkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcyB0cmFuc2FjdGlvbk1ldHJpY3NdKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlz
aGVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9maW5pc2hdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9yZXNvdXJjZTpsb2FkRmlu
aXNoZWRXaXRoRXJyb3I6bWV0cmljczpdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrIHJlc291cmNlOmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOmxvYWRGYWls
ZWRXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBy
ZXNvdXJjZUZpbmlzaGVkOm1ldHJpY3M6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayBfcmVzb3VyY2U6bG9hZEZpbmlzaGVkV2l0aEVycm9yOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2VGaW5pc2hlZDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmls
dGVyczo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlcnMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAyMC0wNS0wOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vdy11bm5lZWRlZCBIQVZFKEFWRk9V
TkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgY29uc3QgY2hhciogTmF2aWdhdG9yQmVhY29uOjpzdXBw
bGVtZW50TgogICAgIHJldHVybiAiTmF2aWdhdG9yQmVhY29uIjsKIH0KIAotdm9pZCBOYXZpZ2F0
b3JCZWFjb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQg
TmF2aWdhdG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKCFyZXNvdXJjZS5yZXNvdXJj
ZUVycm9yKCkuaXNOdWxsKCkpCiAgICAgICAgIGxvZ0Vycm9yKHJlc291cmNlLnJlc291cmNlRXJy
b3IoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFj
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0
b3JCZWFjb24uaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
ZWFjb24vTmF2aWdhdG9yQmVhY29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0g
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGxvZ0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAg
IE5hdmlnYXRvciYgbV9uYXZpZ2F0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXI6OmxvYWQoRG9jdQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQordm9pZCBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRTY3JpcHQpOwog
ICAgIEFTU0VSVChtX2NhY2hlZFNjcmlwdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAkocmV2aXNpb24gMjYx
NDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xp
ZW50JiwgRGVmZXJyZWRQcm9taXNlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYsIFJlZlB0cjxNb2R1
bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPERlZmVy
cmVkUHJvbWlzZT4gbV9wcm9taXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
Q2xhc3NpY1NjcmlwdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXNDYW5jZWxlZCgKICAgICByZXR1
cm4gbV9jYWNoZWRTY3JpcHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKLXZvaWQgTG9hZGFibGVDbGFz
c2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lk
IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIEFTU0VSVChtX2NhY2hl
ZFNjcmlwdCk7CiAgICAgaWYgKHJlc291cmNlLnJlc291cmNlRXJyb3IoKS5pc0FjY2Vzc0NvbnRy
b2woKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRT
Y3JpcHQ+IG1fY2FjaGVkU2NyaXB0IHsgfTsKICAgICBPcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7
IFdURjo6bnVsbG9wdCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYsMTMgQEAgU3RyaW5nIEhUTUxJ
bWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoYXR0cik7CiB9CiAKLXZvaWQgSFRNTEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCit2b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgQVNTRVJUKGltYWdlKCkpOwogICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFn
ZSA9ICppbWFnZSgpOwogCiAgICAgUmVmPEVsZW1lbnQ+IHByb3RlY3QoZWxlbWVudCgpKTsKLSAg
ICBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoY2FjaGVkSW1hZ2UpOworICAgIEltYWdlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChjYWNoZWRJbWFnZSwgbWV0cmljcyk7CiAKICAgICBib29sIGxv
YWRFcnJvciA9IGNhY2hlZEltYWdlLmVycm9yT2NjdXJyZWQoKSB8fCBjYWNoZWRJbWFnZS5yZXNw
b25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOwogICAgIGlmICghbG9hZEVycm9yKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lk
IEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiAgICAgICAgIGlmIChkYXRhICYmIGxv
YWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCiAgICAgICAgICAgICBkYXRhID0g
ZGF0YS0+Y29weSgpOwogCi0gICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5n
ZXQoKSk7CisgICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5nZXQoKSwgeyB9
KTsKICAgICAgICAgY2FjaGVkSW1hZ2UuZmluaXNoKCk7CiAKICAgICAgICAgLy8gUmVwb3J0IHRo
ZSBuYXR1cmFsIGltYWdlIHNpemUgaW4gdGhlIHBhZ2UgdGl0bGUsIHJlZ2FyZGxlc3Mgb2Ygem9v
bSBsZXZlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBBcHBsaWNhdGkK
ICAgICByZXR1cm4gbV9wcm9jZXNzZWRNYW5pZmVzdDsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2
b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgbV9kb2N1bWVu
dExvYWRlci5maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KCp0aGlzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIHByb2Nlc3NNYW5pZmVzdCgpOwog
CiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAgICBP
cHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX3Byb2Nlc3NlZE1hbmlmZXN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjp2YWxpZGEKICAgICBsb2FkZXIu
cHJlZmxpZ2h0U3VjY2VzcyhXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAotdm9pZCBDcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGlm
IChtX3Jlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZp
c2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogCiAgICAgc3RhdGljIHZvaWQgaGFuZGxlTG9hZGluZ0Zh
aWx1cmUoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNMb2FkaW5nTWFpblJlc291
cmNlKCkgfHwgIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSB8fCAhbV9wbHVnSW5TdHJl
YW1Mb2FkZXJzLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudExvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNyArNDQ2LDcgQEAgcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmZpbmlzaGVkVAogICAgIG1fY2xpZW50LT5kaWRGaW5pc2hUaW1pbmcocmVzb3Vy
Y2VUaW1pbmcpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9u
IDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVk
VGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5n
Jikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNv
bnN0IFJlc291cmNlVGltaW5nJik7Ci0gICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjIsNyArMzIyLDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VMb2FkZXI6OnJlamVjdERlY29kZVBy
bwogICAgIHJlamVjdFByb21pc2VzKG1fZGVjb2RpbmdQcm9taXNlcywgbWVzc2FnZSk7CiB9CiAK
LXZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9mYWlsZWRM
b2FkVVJMLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNl
ID09IG1faW1hZ2UuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IEltYWdlTG9hZGVyKEVsZW1lbnQmKTsKLSAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgTGF6eUltYWdlTG9hZFN0YXRlIDogdWludDhfdCB7IE5v
bmUsIERlZmVycmVkLCBMb2FkSW1tZWRpYXRlbHksIEZ1bGxJbWFnZSB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgTGlua0xvYWRlcjo6dHJpZ2dlckV2ZW50cyhjb25zdCBDYWMKICAgICAgICAgbV9j
bGllbnQubGlua0xvYWRlZCgpOwogfQogCi12b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQgTGlua0xvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQog
ewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fY2FjaGVkTGlua1Jlc291cmNlLmdldCgp
ID09ICZyZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxMb2Fk
KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBzdGF0aWMgdm9pZCBwcmVjb25u
ZWN0SWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwgRG9jdW1lbnQmKTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IHByZWxvYWRJ
Zk5lZWRlZChjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMmLCBEb2N1bWVudCYsIExpbmtMb2FkZXIq
KTsKICAgICB2b2lkIHByZWZldGNoSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwg
RG9jdW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291
cmNlQ2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJl
bG9hZFJlc291cmNlQ2xpZW50cy5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMo
cmVzb3VyY2UpOyB9CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhy
ZXNvdXJjZSk7IH0KICAgICB2b2lkIGNsZWFyKCkgZmluYWwgeyBjbGVhclJlc291cmNlKCp0aGlz
KTsgfQogICAgIGJvb2wgc2hvdWxkTWFya0FzUmVmZXJlbmNlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiB9OwpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
IGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7IH0KKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsgfQogICAgIHZvaWQgY2xlYXIoKSBmaW5h
bCB7IGNsZWFyUmVzb3VyY2UoKnRoaXMpOyB9CiAgICAgYm9vbCBzaG91bGRNYXJrQXNSZWZlcmVu
Y2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIH07CkBAIC0xNTcsNyArMTU3LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkgZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsg
fQorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOyB9
CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsIHsgY2xlYXJSZXNvdXJjZSgqdGhpcyk7IH0KICAgICBi
b29sIHNob3VsZE1hcmtBc1JlZmVyZW5jZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFIKICAgICAgICAgbV9jbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNv
dXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBNZWRp
YVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lk
IE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlCiAgICAgICAgIGlmIChtX3Jlc291
cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRG
YWlsZWQoKnRoaXMsIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMpOworICAgICAgICAgICAg
bV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiAgICAgfQogICAgIHN0b3Ao
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlk
ZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1lZGlhUmVzb3VyY2UoTWVkaWFS
ZXNvdXJjZUxvYWRlciYsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uCiAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlc291cmNl
RGF0YSgpOwogICAgICAgICBpZiAobV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCAmJiBidWZmZXIg
JiYgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBkYXRhIHdp
bGwgY2hhbmdlIGFzIHRoZSBuZXh0IHBhcnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ug
YSBjb3B5LgotICAgICAgICAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhidWZmZXItPmNv
cHkoKS5wdHIoKSk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKGJ1ZmZl
ci0+Y29weSgpLnB0cigpLCB7IH0pOwogICAgICAgICAgICAgY2xlYXJSZXNvdXJjZURhdGEoKTsK
ICAgICAgICAgICAgIC8vIFNpbmNlIGEgc3VicmVzb3VyY2UgbG9hZGVyIGRvZXMgbm90IGxvYWQg
bXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZlbHksIGRhdGEgd2FzIGRlbGl2ZXJlZCB0byB0
aGUgbG9hZGVyIGFsbCBhdCBvbmNlLgogICAgICAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IG11
bHRpcGFydCBzZWN0aW9uIGlzIGNvbXBsZXRlLCBzaWduYWwgdG8gZGVsZWdhdGVzIHRoYXQgdGhp
cyBsb2FkIGlzICJmaW5pc2hlZCIKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nCiAgICAgICAgIHRyYWNlUG9pbnQoU3VicmVzb3VyY2VM
b2FkRGlkRW5kKTsKIAogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7Ci0gICAgbV9yZXNvdXJjZS0+
ZmluaXNoTG9hZGluZyhyZXNvdXJjZURhdGEoKSk7CisgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9h
ZGluZyhyZXNvdXJjZURhdGEoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIAogICAgIGlmICh3YXND
YW5jZWxsZWQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hM
b2FkaW5nOiB3YXMgY2FuY2VsZWQiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGUKICAgICBtX3N0YXRlID0g
RmFpbGVkOwogfQogCi12b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09ICZyZXNvdXJjZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gQ2Fj
aGVkUmVzb3VyY2VDbGllbnQKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVwcmVjYXRlZERpZFJlY2Vp
dmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgLy8gV2ViVlRU
UGFyc2VyQ2xpZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlcwogICAgIH0KIAogICAg
IGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCkgewotICAgICAgICBub3RpZnlG
aW5pc2hlZCgqbV9yZXNvdXJjZSk7CisgICAgICAgIG5vdGlmeUZpbmlzaGVkKCptX3Jlc291cmNl
LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZAogICAgIGNhbGxiYWNrKFdURk1v
dmUobmV3UmVxdWVzdCkpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3
ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMgKzQw
LDEzIEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2EKIHsKIH0KIAot
dm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Ci0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIE9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIFJlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZybwogICAgICAg
ICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwog
fQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1f
ZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAp
OwpAQCAtMTA1LDEyICsxMDUsMTIgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKAogICAgIGlmIChkYXRhKQogICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkg
dG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRl
LgogICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IFN0cmluZygpOwogfQogCi12b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hl
Y2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5n
KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsMTIgKzU1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKSBmaW5hbDsKIAotICAgIHZvaWQgY2hlY2tOb3RpZnkoKSBmaW5hbDsKKyAg
ICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICBTdHJpbmcgbV9k
ZWNvZGVkU2hlZXRUZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzbwogICAgICAgICBzdGF0aWNfY2Fz
dDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9p
ZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05vdGlmeShtZXRyaWNzKTsK
IH0KIAogdm9pZCBDYWNoZWRGb250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6YWxsQ2xp
ZW50c1JlbW92ZWQoKQogICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG51bGxwdHI7CiB9
CiAKLXZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoKQordm9pZCBDYWNoZWRGb250OjpjaGVj
a05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmco
KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsMTQgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNv
bnN0OwogCi0gICAgdm9pZCBjaGVja05vdGlmeSgpIG92ZXJyaWRlOworICAgIHZvaWQgY2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlU
cnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9hZChD
YWNoZWRSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNT
RVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRz
UmVtb3ZlZCgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw3ICs1NjUs
NyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IGNoYXIqCiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFn
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsK
ICAgICBpZiAobV9kYXRhKSB7CkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdQogICAgIH0KIAogICAgIG5vdGlmeU9ic2VydmVycygpOwot
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZEltYWdl
OjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAog
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYQogCiAgICAgaWYgKG1fZGVsYXllZEZpbmlzaExvYWRp
bmcpIHsKICAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9kZWxheWVkRmluaXNoTG9hZGluZywgV1RGOjpudWxsb3B0KTsKLSAgICAgICAgZmluaXNoTG9h
ZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpKTsKKyAgICAgICAgZmluaXNo
TG9hZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpLCB7IH0pOwogICAgIH0K
IH0KIApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0K
IAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2lu
SW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5j
aHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMg
dXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2gKICAgICBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNl
bWVudCA9IG1fbG9hZGVyICYmICFtX2xvYWRlci0+aXNRdWlja0xvb2tSZXNvdXJjZSgpOwogI2Vu
ZGlmCiAKLSAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKKyAgICBDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhICYmIHRoaXMt
PmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpIHsKICAgICAgICAgaWYgKG1fbG9hZGVyKQogICAgICAgICAgICAgbV9sb2FkZXItPnNl
dERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZQogICAgICAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRy
KCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVu
dGlmaWVyLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZmluaXNoTG9hZGluZyhudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlzaExv
YWRpbmcobnVsbHB0ciwgeyB9KTsKICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0
eU1ldHJpY3M7CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRyKCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyLCBlbXB0eU1ldHJpY3MsIG51bGxwdHIp
OwogICAgICAgICB9KTsKQEAgLTM2NiwxNCArMzY2LDE0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnNldEJvZHlEYXRhRnJvbShjb24KICAgICBzZXRFbmNvZGVkU2l6ZShyZXNvdXJjZS5lbmNvZGVk
U2l6ZSgpKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIGlmIChpc0xvYWRpbmcoKSB8fCBzdGlsbE5lZWRzTG9hZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJj
ZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQotICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlz
aGVkKCp0aGlzKTsKKyAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmlj
cyk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KQpAQCAtMzg2LDEwICszODYsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShj
b25zdCBjaAogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05v
dGlmeShtZXRyaWNzKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OlN0YXR1cyBzdGF0dXMpCkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZTo6ZXJyb3IoQ2FjaGVkUmVzb3VyYwogICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsg
fSk7CiB9CiAgICAgCiB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKQEAgLTQxNCw3
ICs0MTQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKICAgICAgICAgc2V0
U3RhdHVzKExvYWRFcnJvcik7CiAKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsgfSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaCgpCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRk
Q2xpZW50KENhY2hlZAogCiAgICAgLy8gRklYTUU6IE1ha2UgY2FsbHMgdG8gbm90aWZ5RmluaXNo
ZWQgYXN5bmMKICAgICBpZiAoIWlzTG9hZGluZygpICYmICFzdGlsbE5lZWRzTG9hZCgpKQotICAg
ICAgICBjbGllbnQubm90aWZ5RmluaXNoZWQoKnRoaXMpOworICAgICAgICBjbGllbnQubm90aWZ5
RmluaXNoZWQoKnRoaXMsIHsgfSk7CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVu
dFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMjYxNDI0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
Q29va2llSmFyOwogY2xhc3MgTG9hZFRpbWluZzsKIGNsYXNzIE1lbW9yeUNhY2hlOworY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTExMyw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNl
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBA
IC0zMTQsNyArMzE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVjb2RlZERhdGFEZWxldGlv
blRpbWVyRmlyZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpOworICAgIHZp
cnR1YWwgdm9pZCBjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2
aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIFNlY29uZHMgZnJlc2huZXNzTGlmZXRpbWUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291
cmNlOworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNs
aWVudCB7CiBwdWJsaWM6CkBAIC0zOSw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
dmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmKSB7IH0KIAogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgU3RyaW5n
IENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbgogICAgIHJldHVybiBtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCByZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgbV9kb2N1bWVudC0+c2V0
Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKSk7CiAgICAgfQotICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwor
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURl
Y29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAkocmV2aXNp
b24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5NiwxMSBAQCB1bnNpZ25lZCBDYWNoZWRTY3Jp
cHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVk
U2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEs
IG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZGVzdHJveURlY29kZWREYXRhKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAg
ICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMjYxNDI0
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSwxMCBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKFNoYXJlCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsK
IH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7Cisg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciopOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjEsMTcgKzYxLDE3IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGMK
ICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwog
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKICAgICBpZiAoZGF0
YSkKICAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFhTTFN0
eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6Y2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTMgKzQxLDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29u
c3QgeyByZXR1cm4gbV9zaGVldDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgY2hlY2tOb3RpZnko
KSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JikgZmluYWw7CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlcjo6cmVzcG9uc2VSZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCi12b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpCiB7CiAgICAgdW5yZWdpc3RlclJlcXVlc3QocmVzb3VyY2UpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RU
cmFja2VyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCByZWdpc3RlclJlcXVlc3QoQ2FjaGVkUmVzb3VyY2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSWNvbkxvYWRlcjo6c3RvcExvYWRpbmcoKQog
ICAgIH0KIH0KIAotdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCit2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAg
ICBVUkwgbV91cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24g
MjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgY2hhciosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KIH07
CiAKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW4+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0JKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAg
IC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBmdWxmaWxs
UmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCkBAIC0xMTIsNyArMTEyLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpyZXNwb25zZQogICAgIG1fcGFyZW50
LnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChyZXNvdXJj
ZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CiAgICAgICAgIG1fcGFyZW50LmxvYWRGYWlsZWQo
cmVzb3VyY2UucmVzb3VyY2VFcnJvcigpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIq
LCBpbnQpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRG
YWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3Ip
OyB9Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJikgZmluYWwg
eyBsb2FkRmluaXNoZWQoKTsgfQorICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVk
KCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIq
LCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2
b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwotICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgc19ncm93QmxvY2tzaXplTGltaXQgeyAxIH07CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgc19ncm93QmxvY2tzaXplQ291bnQgeyAyIH07CkBAIC0xMTcwLDcgKzExNzAsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkCiAgICAgbWVtYmVycy0+
cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKQordm9p
ZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1f
c3JjLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a0xvYWRNZXRyaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNyArNTQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbXBsZXRlKCkgY29uc3Qg
eyByZXR1cm4gY29tcGxldGU7IH0KICAgICB2b2lkIG1hcmtDb21wbGV0ZSgpIHsgY29tcGxldGUg
PSB0cnVlOyB9CiAKLSAgICAvLyBUaGVzZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBkZWx0YXMgdG8g
TG9hZFRpbWluZydzIGZldGNoU3RhcnQuCisgICAgU2Vjb25kcyBmZXRjaFN0YXJ0OworCisgICAg
Ly8gVGhlc2Ugc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGVsdGFzIHRvIGZldGNoU3RhcnQuCiAgICAg
Ly8gVGhleSBzaG91bGQgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGFzIGxpc3RlZCBoZXJlLgogICAg
IFNlY29uZHMgZG9tYWluTG9va3VwU3RhcnQgeyAtMSB9OyAgICAgLy8gLTEgaWYgbm8gRE5TLgog
ICAgIFNlY29uZHMgZG9tYWluTG9va3VwRW5kIHsgLTEgfTsgICAgICAgLy8gLTEgaWYgbm8gRE5T
LgpAQCAtODEsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBOZXR3b3JrTG9hZE1l
dHJpY3MgY29weTsKIAorICAgICAgICBjb3B5LmZldGNoU3RhcnQgPSBmZXRjaFN0YXJ0OworCiAg
ICAgICAgIGNvcHkuZG9tYWluTG9va3VwU3RhcnQgPSBkb21haW5Mb29rdXBTdGFydDsKICAgICAg
ICAgY29weS5kb21haW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQ7CiAgICAgICAgIGNvcHku
Y29ubmVjdFN0YXJ0ID0gY29ubmVjdFN0YXJ0OwpAQCAtMTEwLDcgKzExNCw4IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG90aGVyKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRv
bWFpbkxvb2t1cFN0YXJ0CisgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0ID09IG90aGVyLmZldGNo
U3RhcnQKKyAgICAgICAgICAgICYmIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxv
b2t1cFN0YXJ0CiAgICAgICAgICAgICAmJiBkb21haW5Mb29rdXBFbmQgPT0gb3RoZXIuZG9tYWlu
TG9va3VwRW5kCiAgICAgICAgICAgICAmJiBjb25uZWN0U3RhcnQgPT0gb3RoZXIuY29ubmVjdFN0
YXJ0CiAgICAgICAgICAgICAmJiBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPT0gb3RoZXIuc2VjdXJl
Q29ubmVjdGlvblN0YXJ0CkBAIC0xMzgsOCArMTQzLDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIE5ldHdv
cmtMb2FkTWV0cmljcyYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXIsIHR5cGVuYW1l
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2RlciwgdHlwZW5hbWU+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVj
b2RlciYsIE5ldHdvcmtMb2FkTWV0cmljcyYpOwogCiAgICAgU3RyaW5nIHJlbW90ZUFkZHJlc3M7
CiAgICAgU3RyaW5nIGNvbm5lY3Rpb25JZGVudGlmaWVyOwpAQCAtMTYyLDkgKzE2NywxMSBAQCBw
dWJsaWM6CiBXRUJDT1JFX0VYUE9SVCBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBjb3B5VGltaW5n
RGF0YShOU0RpY3Rpb25hcnkgKnRpbWluZ0RhdGEpOwogI2VuZGlmCiAKLXRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CisvLyBOZXR3b3JrTG9hZE1ldHJpY3Mgc2hvdWxkIG5vdCBiZSBzdG9yZWQgYnkg
dGhlIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIuCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8RW5jb2Rlcjo6aXNJUENFbmNvZGVyPj4KIHZv
aWQgTmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsK
KyAgICBlbmNvZGVyIDw8IGZldGNoU3RhcnQ7CiAgICAgZW5jb2RlciA8PCBkb21haW5Mb29rdXBT
dGFydDsKICAgICBlbmNvZGVyIDw8IGRvbWFpbkxvb2t1cEVuZDsKICAgICBlbmNvZGVyIDw8IGNv
bm5lY3RTdGFydDsKQEAgLTE4OCwxMCArMTk1LDExIEBAIHZvaWQgTmV0d29ya0xvYWRNZXRyaWNz
OjplbmNvZGUoRW5jb2RlciYKICAgICBlbmNvZGVyIDw8IHJlc3BvbnNlQm9keURlY29kZWRTaXpl
OwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
ciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PERlY29kZXI6OmlzSVBDRGVjb2Rlcj4+CiBi
b29sIE5ldHdvcmtMb2FkTWV0cmljczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobWV0cmlj
cy5kb21haW5Mb29rdXBTdGFydCkKKyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobWV0cmljcy5m
ZXRjaFN0YXJ0KQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmRvbWFpbkxvb2t1
cFN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmRvbWFpbkxvb2t1cEVu
ZCkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5jb25uZWN0U3RhcnQpCiAgICAg
ICAgICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0YXJ0KQpAQCAt
MjE1LDIyICsyMjMsMyBAQCBib29sIE5ldHdvcmtMb2FkTWV0cmljczo6ZGVjb2RlKERlY29kZXIm
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotLy8gTmV0d29ya0xvYWRNZXRyaWNzIHNo
b3VsZCBub3QgYmUgc3RvcmVkIGJ5IHRoZSBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyLgotbmFt
ZXNwYWNlIFdURiB7Ci1uYW1lc3BhY2UgUGVyc2lzdGVuY2UgewotCi10ZW1wbGF0ZTw+IHN0cnVj
dCBDb2RlcjxPcHRpb25hbDxXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5Pj4gewotICAgIHN0
YXRpYyBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eT4mKQotICAgIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBPcHRpb25hbDxXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5PiYpCi0gICAgewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBXVEY6OlBlcnNpc3RlbmNlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtM
b2FkTWV0cmljcy5tbQkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTU2LDYgKzU2LDcgQEAgQm94PE5ldHdvcmtMb2FkTWV0cmljcz4gY29weVRpbWluZ0RhdGEoTgog
ICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQgPSB0aW1pbmdWYWx1ZSh0aW1pbmdEYXRhLCBAIl9rQ0ZO
VGltaW5nRGF0YVJlcXVlc3RTdGFydCIpOwogICAgIGRvdWJsZSByZXNwb25zZVN0YXJ0ID0gdGlt
aW5nVmFsdWUodGltaW5nRGF0YSwgQCJfa0NGTlRpbWluZ0RhdGFSZXNwb25zZVN0YXJ0Iik7CiAK
KyAgICB0aW1pbmctPmZldGNoU3RhcnQgPSBTZWNvbmRzKHJlZmVyZW5jZVN0YXJ0KTsKICAgICB0
aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0ID0gU2Vjb25kcyhkb21haW5Mb29rdXBTdGFydCA8PSAw
ID8gLTEgOiBkb21haW5Mb29rdXBTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKICAgICB0aW1pbmct
PmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMoZG9tYWluTG9va3VwRW5kIDw9IDAgPyAtMSA6IGRv
bWFpbkxvb2t1cEVuZCAtIHJlZmVyZW5jZVN0YXJ0KTsKICAgICB0aW1pbmctPmNvbm5lY3RTdGFy
dCA9IFNlY29uZHMoY29ubmVjdFN0YXJ0IDw9IDAgPyAtMSA6IGNvbm5lY3RTdGFydCAtIHJlZmVy
ZW5jZVN0YXJ0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0JKHJldmlzaW9uIDI2MTQy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTIxIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitzdGF0aWMgTlNEYXRl
ICogX19udWxsYWJsZSBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKFNlY29uZHMgZmV0Y2hTdGFydCwg
U2Vjb25kcyBkZWx0YSkKK3sKKyAgICBpZiAoIWZldGNoU3RhcnQudmFsdWUoKSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICBpZiAoZGVsdGEudmFsdWUoKSA9PSAtMSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICByZXR1cm4gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpm
ZXRjaFN0YXJ0LnZhbHVlKCkgKyBkZWx0YS52YWx1ZSgpXTsKK30KKworQGludGVyZmFjZSBXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyA6IE5TT2JqZWN0CistIChpbnN0
YW5jZXR5cGUpX2luaXRXaXRoTWV0cmljczooY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJiltZXRyaWNzOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0
ZSAqZmV0Y2hTdGFydERhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkg
TlNEYXRlICpkb21haW5Mb29rdXBTdGFydERhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5
LCByZWFkb25seSkgTlNEYXRlICpkb21haW5Mb29rdXBFbmREYXRlOworQHByb3BlcnR5IChudWxs
YWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0ZSAqY29ubmVjdFN0YXJ0RGF0ZTsKK0Bwcm9wZXJ0
eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKnNlY3VyZUNvbm5lY3Rpb25TdGFy
dERhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpjb25u
ZWN0RW5kRGF0ZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUg
KnJlcXVlc3RTdGFydERhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkg
TlNEYXRlICpyZXNwb25zZVN0YXJ0RGF0ZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJl
YWRvbmx5KSBOU0RhdGUgKnJlc3BvbnNlRW5kRGF0ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIHsKKyAgICBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MgX21ldHJpY3M7Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5p
dFdpdGhNZXRyaWNzOihjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MK
K3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBfbWV0cmljcyA9IG1ldHJpY3M7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BkeW5hbWlj
IGZldGNoU3RhcnREYXRlOworLSAobnVsbGFibGUgTlNEYXRlICopZmV0Y2hTdGFydERhdGUKK3sK
KyAgICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBT
ZWNvbmRzKDApKTsKK30KKworQGR5bmFtaWMgZG9tYWluTG9va3VwU3RhcnREYXRlOworLSAobnVs
bGFibGUgTlNEYXRlICopZG9tYWluTG9va3VwU3RhcnREYXRlCit7CisgICAgcmV0dXJuIG5ldHdv
cmtMb2FkTWV0cmljc0RhdGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3MuZG9tYWluTG9v
a3VwU3RhcnQpOworfQorCitAZHluYW1pYyBkb21haW5Mb29rdXBFbmREYXRlOworLSAobnVsbGFi
bGUgTlNEYXRlICopZG9tYWluTG9va3VwRW5kRGF0ZQoreworICAgIHJldHVybiBuZXR3b3JrTG9h
ZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZldGNoU3RhcnQsIF9tZXRyaWNzLmRvbWFpbkxvb2t1cEVu
ZCk7Cit9CisKK0BkeW5hbWljIGNvbm5lY3RTdGFydERhdGU7CistIChudWxsYWJsZSBOU0RhdGUg
Kiljb25uZWN0U3RhcnREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUo
X21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3MuY29ubmVjdFN0YXJ0KTsKK30KKworQGR5bmFt
aWMgc2VjdXJlQ29ubmVjdGlvblN0YXJ0RGF0ZTsKKy0gKG51bGxhYmxlIE5TRGF0ZSAqKXNlY3Vy
ZUNvbm5lY3Rpb25TdGFydERhdGUKK3sKKyAgICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNzRGF0
ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBfbWV0cmljcy5zZWN1cmVDb25uZWN0aW9uU3RhcnQpOwor
fQorCitAZHluYW1pYyBjb25uZWN0RW5kRGF0ZTsKKy0gKG51bGxhYmxlIE5TRGF0ZSAqKWNvbm5l
Y3RFbmREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoX21ldHJpY3Mu
ZmV0Y2hTdGFydCwgX21ldHJpY3MuY29ubmVjdEVuZCk7Cit9CisKK0BkeW5hbWljIHJlcXVlc3RT
dGFydERhdGU7CistIChudWxsYWJsZSBOU0RhdGUgKilyZXF1ZXN0U3RhcnREYXRlCit7CisgICAg
cmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJp
Y3MucmVxdWVzdFN0YXJ0KTsKK30KKworQGR5bmFtaWMgcmVzcG9uc2VTdGFydERhdGU7CistIChu
dWxsYWJsZSBOU0RhdGUgKilyZXNwb25zZVN0YXJ0RGF0ZQoreworICAgIHJldHVybiBuZXR3b3Jr
TG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZldGNoU3RhcnQsIF9tZXRyaWNzLnJlc3BvbnNlU3Rh
cnQpOworfQorCitAZHluYW1pYyByZXNwb25zZUVuZERhdGU7CistIChudWxsYWJsZSBOU0RhdGUg
KilyZXNwb25zZUVuZERhdGUKK3sKKyAgICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShf
bWV0cmljcy5mZXRjaFN0YXJ0LCBfbWV0cmljcy5yZXNwb25zZUVuZCk7Cit9CisKK0BlbmQKKwor
QGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgOiBOU09iamVjdAorLSAo
aW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpbWV0cmljczsKK0Bwcm9wZXJ0eSAoY29weSwgcmVhZG9ubHkpIE5TQXJyYXk8TlNV
UkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyAqPiAqdHJhbnNhY3Rpb25NZXRyaWNzOwor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzIHsK
KyAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3M+
IF90cmFuc2FjdGlvbk1ldHJpY3M7Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRy
aWNzOihjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKK3sKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfdHJh
bnNhY3Rpb25NZXRyaWNzID0gYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNh
Y3Rpb25NZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNzOm1ldHJpY3NdKTsKKyAgICByZXR1
cm4gc2VsZjsKK30KKworQGR5bmFtaWMgdHJhbnNhY3Rpb25NZXRyaWNzOworLSAoTlNBcnJheTxO
U1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICo+ICopdHJhbnNhY3Rpb25NZXRyaWNz
Cit7CisgICAgcmV0dXJuIEBbIChOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICop
c2VsZi0+X3RyYW5zYWN0aW9uTWV0cmljcy5nZXQoKSBdOworfQorCitAZW5kCisKIEBpbnRlcmZh
Y2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiAoKQogQHByb3BlcnR5IChyZWFkb25seSkgUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyJiBsb2FkZXI7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSwgcmV0YWlu
KSBpZDxOU1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+IGRlbGVnYXRlOwpAQCAtNjMsNyArMTc4LDcg
QEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlJgogLSAodm9pZClyZXNv
dXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlJilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihSZXNvdXJjZVJlcXVlc3Qm
JilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0
aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3Qg
UmVzb3VyY2VFcnJvciYpZXJyb3I7Ci0tICh2b2lkKXJlc291cmNlRmluaXNoZWQ6KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYpcmVzb3VyY2U7CistICh2b2lkKXJlc291cmNlRmluaXNoZWQ6KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgbWV0cmljczooY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiltZXRyaWNzOwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKQEAgLTM4OSw3ICs1
MDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgTG9jayBtX3Rhc2tMb2Nr
OwpAQCAtNDY5LDEzICs1ODQsMTMgQEAgdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQ6OgogICAgIFttX3Rhc2sgcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJv
cjplcnJvcl07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojps
b2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQgV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGFza0xvY2spOwogICAgIGlmICghbV90YXNrKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbbV90YXNrIHJlc291cmNlRmluaXNoZWQ6cmVzb3VyY2VdOwor
ICAgIFttX3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpyZXNvdXJjZSBtZXRyaWNzOm1ldHJpY3NdOwog
fQogCiB9CkBAIC01NDEsNyArNjU2LDcgQEAgLSAodm9pZClfZmluaXNoCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoX3Jlc291cmNlKQotICAgICAgICBbc2VsZiByZXNv
dXJjZUZpbmlzaGVkOipfcmVzb3VyY2VdOworICAgICAgICBbc2VsZiByZXNvdXJjZUZpbmlzaGVk
OipfcmVzb3VyY2UgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKIH0KIAogI3ByYWdt
YSBtYXJrIC0gTlNVUkxTZXNzaW9uIEFQSQpAQCAtNzE5LDcgKzgzNCw3IEBAIC0gKHZvaWQpcmVz
b3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYKICAgICB9XTsKIH0KIAotLSAodm9pZClfcmVz
b3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIG1l
dHJpY3M6KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpbWV0cmljcwogewogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIGlmIChzZWxmLnN0
YXRlID09IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZUNvbXBsZXRlZCkKQEAgLTcyOSw4ICs4NDQsMTIg
QEAgLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZQogICAgIFJldGFpblB0
cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+IHN0cm9uZ1NlbGYgeyBzZWxmIH07CiAgICAg
UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb24+IHN0cm9uZ1Nlc3Npb24geyBzZWxmLnNlc3Np
b24gfTsKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gc3Ryb25nRXJyb3IgeyBlcnJvciB9OwotICAg
IFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYsIHN0cm9uZ1Nl
c3Npb24sIHN0cm9uZ0Vycm9yXSB7CisgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJh
dGlvbjpbc3Ryb25nU2VsZiwgc3Ryb25nU2Vzc2lvbiwgc3Ryb25nRXJyb3IsIG1ldHJpY3MgPSBt
ZXRyaWNzLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxl
Z2F0ZT4gZGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlPilzdHJvbmdTZXNz
aW9uLmdldCgpLmRlbGVnYXRlOworCisgICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOnRhc2s6ZGlkRmluaXNoQ29sbGVjdGluZ01ldHJp
Y3M6KV0pCisgICAgICAgICAgICBbZGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICop
c3Ryb25nU2Vzc2lvbi5nZXQoKSB0YXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1Nl
bGYuZ2V0KCkgZGlkRmluaXNoQ29sbGVjdGluZ01ldHJpY3M6KE5TVVJMU2Vzc2lvblRhc2tNZXRy
aWNzICopYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcyBhbGxvY10gX2lu
aXRXaXRoTWV0cmljczptZXRyaWNzXSkuZ2V0KCldOworCiAgICAgICAgIGlmIChbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVX
aXRoRXJyb3I6KV0pCiAgICAgICAgICAgICBbZGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNz
aW9uICopc3Ryb25nU2Vzc2lvbi5nZXQoKSB0YXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0
cm9uZ1NlbGYuZ2V0KCkgZGlkQ29tcGxldGVXaXRoRXJyb3I6c3Ryb25nRXJyb3IuZ2V0KCldOwog
CkBAIC03NDIsMTYgKzg2MSwxNiBAQCAtICh2b2lkKV9yZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlCiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3Vy
Y2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9y
JillcnJvcgogewotICAgIFtzZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRo
RXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9h
ZEZpbmlzaGVkV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKSBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0
cmljcyB7IH1dOwogfQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
KXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFJlc291cmNlRXJyb3ImKWVycm9y
CiB7Ci0gICAgW3NlbGYgX3Jlc291cmNlOnJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjpl
cnJvci5uc0Vycm9yKCldOworICAgIFtzZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNo
ZWRXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsg
fV07CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2VGaW5pc2hlZDooUGxhdGZvcm1NZWRpYVJlc291cmNl
JilyZXNvdXJjZQorLSAodm9pZClyZXNvdXJjZUZpbmlzaGVkOihQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmKXJlc291cmNlIG1ldHJpY3M6KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpbWV0cmljcwog
ewotICAgIFtzZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6bmls
XTsKKyAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOm5p
bCBtZXRyaWNzOm1ldHJpY3NdOwogfQogQGVuZApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI2LDcg
KzEzMjYsNyBAQCBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlIFJlbmRlckVsZW1lbnQ6OmltCiAgICAg
cmV0dXJuIGlzVmlzaWJsZSA/IFZpc2libGVJblZpZXdwb3J0U3RhdGU6OlllcyA6IFZpc2libGVJ
blZpZXdwb3J0U3RhdGU6Ok5vOwogfQogCi12b2lkIFJlbmRlckVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQgUmVuZGVyRWxlbWVudDo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKQogewogICAgIGRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5ub3RpZnlGaW5p
c2hlZChyZXNvdXJjZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw3ICsyNjYsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxs
QmVSZW1vdmVkRnJvbVRyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFJlbmRlcklubGluZUFs
d2F5c0NyZWF0ZXNMaW5lQm94ZXMoYm9vbCBiKSB7IG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRl
c0xpbmVCb3hlcyA9IGI7IH0KICAgICBib29sIHJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5l
Qm94ZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94
ZXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnJl
cGFpbnRPck1hcmtGb3JMYXlvdXQKICAgICBjb250ZW50Q2hhbmdlZChJbWFnZUNoYW5nZWQpOwog
fQogCi12b2lkIFJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgbmV3
SW1hZ2UpCit2b2lkIFJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
bmV3SW1hZ2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAo
cmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQxOSw3ICs0
MTksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSCiAgICAgaWYg
KGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpCiAgICAgICAgIHBhZ2UoKS5kaWRGaW5p
c2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVt
ZW50KCkpKTsKIAotICAgIFJlbmRlclJlcGxhY2VkOjpub3RpZnlGaW5pc2hlZChuZXdJbWFnZSk7
CisgICAgUmVuZGVyUmVwbGFjZWQ6Om5vdGlmeUZpbmlzaGVkKG5ld0ltYWdlLCBtZXRyaWNzKTsK
IH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6c2V0SW1hZ2VEZXZpY2VQaXhlbFJhdGlvKGZsb2F0IGZh
Y3RvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCShyZXZpc2lv
biAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRVbml0
IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAg
ICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBmaW5hbDsKIAogICAgIGJv
b2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94Kikg
Y29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJG
aWx0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJzLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1
LDcgQEAgYm9vbCBSZW5kZXJMYXllckZpbHRlcnM6Omhhc0ZpbHRlclRoYXRTaAogICAgIHJldHVy
biBtX2ZpbHRlciAmJiBtX2ZpbHRlci0+aGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5
U2VjdXJpdHlPcmlnaW4oKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJikKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAg
ICAgLy8gRklYTUU6IFRoaXMgcmVhbGx5IHNob3VsZG4ndCBoYXZlIHRvIGludmFsaWRhdGUgbGF5
ZXIgY29tcG9zaXRpb24sCiAgICAgLy8gYnV0IHRlc3RzIGxpa2UgY3NzMy9maWx0ZXJzL2VmZmVj
dC1yZWZlcmVuY2UtZGVsZXRlLmh0bWwgZmFpbCBpZiB0aGF0IGRvZXNuJ3QgaGFwcGVuLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmlu
YWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgcmVzZXREaXJ0eVNvdXJjZVJlY3QoKSB7
IG1fZGlydHlTb3VyY2VSZWN0ID0gTGF5b3V0UmVjdCgpOyB9CiAKICAgICBSZW5kZXJMYXllciYg
bV9sYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAko
cmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXMKICAgICAgICAgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMo
KTsKIH0KIAotdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmKQordm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmICghaXNDb25uZWN0
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZvaWQgZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDIsNyArNTQyLDcg
QEAgYm9vbCBTVkdVc2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndAogICAgIHJldHVybiB0
YXJnZXRDbG9uZSAmJiB0YXJnZXRDbG9uZS0+aGFzUmVsYXRpdmVMZW5ndGhzKCk7CiB9CiAKLXZv
aWQgU1ZHVXNlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
KQordm9pZCBTVkdVc2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgQVNTRVJUKFNjcmlwdERp
c2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93ZWQoKSk7CiAgICAgaW52
YWxpZGF0ZVNoYWRvd1RyZWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAko
cmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAgICAgUGF0aCB0b0NsaXBQYXRoKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIERvY3VtZW50KiBleHRlcm5hbERvY3VtZW50KCkgY29uc3Q7CiAg
ICAgdm9pZCB1cGRhdGVFeHRlcm5hbERvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjYxNTM3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMiBAQAorMjAyMC0wNS0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgc29tZSBOZXR3b3JrTG9hZE1ldHJpY3MgdG8gV2Vi
Q29yZU5TVVJMU2Vzc2lvbidzIGRlbGVnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3NTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyOTA5
NDQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgYWxzbyByZWR1Y2VzIGR1cGxpY2F0ZSBsb29rdXBzIGluIFJlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlOjpsb2FkRmluaXNoZWQp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6cmVzcG9uc2VSZWNl
aXZlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpyZWRp
cmVjdFJlY2VpdmVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXI6OmRhdGFTZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bG9hZEZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpsb2FkRmluaXNoZWQpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkRmluaXNo
Q29sbGVjdGluZ01ldHJpY3M6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5Ojpsb2FkRmluaXNoZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oOgorCiAyMDIwLTA1LTExICBLYXRlIENoZW5l
eSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEZhaWwgbmF2aWdhdGlv
bnMgdG8gbm9uIGFwcC1ib3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQgQVBJcwpJ
bmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTIsMTAgKzExMiwxMCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmxvYWRGYWlsZWQoY29u
CiAgICAgICAgIG1fY2xpZW50LT5sb2FkRmFpbGVkKCp0aGlzLCBlcnJvcik7CiB9CiAKLXZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZpbmlzaGVkKCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZTo6bG9hZEZpbmlzaGVkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMp
OworICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgJKHJldmlzaW9uIDI2MTQyNCkKKysr
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Cit9CisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5OwpAQCAtNTQsNyArNTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoY29uc3QgY2hhciosIGludDY0X3Qp
OwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwotICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7CisgICAgdm9pZCBsb2FkRmluaXNoZWQo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAKIHByaXZhdGU6CiAgICAgUmVt
b3RlTWVkaWFSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlciYsIFJlbW90ZU1lZGlh
UGxheWVyUHJveHkmLCBSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6
cmVzcG9ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9yZW1vdGVNZWRpYVJlc291
cmNlcy5nZXQoaWQpLT5yZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlLCBkaWRQYXNzQWNjZXNzQ29u
dHJvbENoZWNrLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcmVzb3VyY2UtPnJl
c3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UsIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2ssIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlcjo6cmVkaXJlY3RSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyOjpyZWRpcmVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jl
bW90ZU1lZGlhUmVzb3VyY2VzLmdldChpZCktPnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1
ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICByZXNvdXJj
ZS0+cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
OjpkYXRhU2VudChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgdWludDY0X3QgYnl0
ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCkBAIC04Nyw3ICs4Nyw3IEBAIHZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFTZW4KICAgICBpZiAoIXJlc291cmNl
IHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZW1vdGVN
ZWRpYVJlc291cmNlcy5nZXQoaWQpLT5kYXRhU2VudChieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0Jl
U2VudCk7CisgICAgcmVzb3VyY2UtPmRhdGFTZW50KGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVT
ZW50KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6ZGF0YVJlY2VpdmVk
KFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFn
ZXI6OmRhdGFSZWMKICAgICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5kYXRh
UmVjZWl2ZWQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRh
LnNpemUoKSk7CisgICAgcmVzb3VyY2UtPmRhdGFSZWNlaXZlZChyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyIGlkLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEw
NSw3ICsxMDUsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphY2Nlc3NDCiAg
ICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3VyY2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcmVtb3RlTWVkaWFSZXNvdXJjZXMuZ2V0KGlkKS0+YWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKGVycm9yKTsKKyAgICByZXNvdXJjZS0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGVy
cm9yKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bG9hZEZhaWxlZChS
ZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCkBAIC0xMTQsMTYgKzExNCwxNiBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
Ojpsb2FkRmFpCiAgICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3VyY2UtPnJlYWR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlTWVkaWFSZXNvdXJjZXMuZ2V0KGlkKS0+bG9hZEZh
aWxlZChlcnJvcik7CisgICAgcmVzb3VyY2UtPmxvYWRGYWlsZWQoZXJyb3IpOwogfQogCi12b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFSZXNv
dXJjZUlkZW50aWZpZXIgaWQpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpsb2Fk
RmluaXNoZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWQsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IG1fcmVtb3RlTWVk
aWFSZXNvdXJjZXMuZ2V0KGlkKTsKICAgICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+cmVh
ZHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQo
aWQpLT5sb2FkRmluaXNoZWQoKTsKKyAgICByZXNvdXJjZS0+bG9hZEZpbmlzaGVkKG1ldHJpY3Mp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5o
CShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBO
ZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CiAKQEAgLTY2LDcg
KzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRhdGFSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAg
ICB2b2lkIGxvYWRGaW5pc2hlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CisgICAg
dm9pZCBsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogCiAgICAgSGFzaE1hcDxSZW1vdGVNZWRpYVJl
c291cmNlSWRlbnRpZmllciwgUmVtb3RlTWVkaWFSZXNvdXJjZSo+IG1fcmVtb3RlTWVkaWFSZXNv
dXJjZXM7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIE4KICAg
ICBEYXRhUmVjZWl2ZWQoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgQWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdl
YktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IpCiAgICAgTG9hZEZhaWxlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJ
ZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQotICAgIExvYWRGaW5p
c2hlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkKQorICAgIExvYWRG
aW5pc2hlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MgbWV0cmljcykKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4MCw2
ICs3ODAsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAg
ICAgIE5TVGltZUludGVydmFsIHJlc3BvbnNlRW5kSW50ZXJ2YWwgPSBbbS5yZXNwb25zZUVuZERh
dGUgdGltZUludGVydmFsU2luY2VEYXRlOmZldGNoU3RhcnREYXRlXTsKIAogICAgICAgICBhdXRv
JiBuZXR3b3JrTG9hZE1ldHJpY3MgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtMb2FkTWV0cmlj
cygpOworICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuZmV0Y2hTdGFydCA9IFNlY29uZHMoZmV0
Y2hTdGFydERhdGUudGltZUludGVydmFsU2luY2UxOTcwKTsKICAgICAgICAgbmV0d29ya0xvYWRN
ZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0ID0gU2Vjb25kcyhkb21haW5Mb29rdXBTdGFydEludGVy
dmFsKTsKICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCA9IFNlY29u
ZHMoZG9tYWluTG9va3VwRW5kSW50ZXJ2YWwpOwogICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3Mu
Y29ubmVjdFN0YXJ0ID0gU2Vjb25kcyhjb25uZWN0U3RhcnRJbnRlcnZhbCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlUHJveHkuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDkgKzg2LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJv
eHk6OmxvYWRGYWlsZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI6OkxvYWRGYWlsZWQobV9pZCwgZXJyb3IpLCAwKTsKIH0KIAotdm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmxvYWRGaW5p
c2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6TG9hZEZpbmlzaGVkKG1faWQpLCAwKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyOjpMb2FkRmluaXNoZWQobV9pZCwgbWV0cmljcyksIDApOwogfQogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRhdGFSZWNlaXZlZChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsK
ICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9p
ZCBsb2FkRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKLSAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIGxvYWRGaW5pc2hlZChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIG1fcGxhdGZvcm1NZWRpYVJl
c291cmNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399140</attachid>
            <date>2020-05-12 10:20:12 -0700</date>
            <delta_ts>2020-05-12 11:37:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211759-20200512102012.patch</filename>
            <type>text/plain</type>
            <size>84127</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NSBAQAorMjAyMC0wNS0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgc29t
ZSBOZXR3b3JrTG9hZE1ldHJpY3MgdG8gV2ViQ29yZU5TVVJMU2Vzc2lvbidzIGRlbGVnYXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3NTkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyOTA5NDQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcmVxdWlyZWQgcGFja2FnaW5nIHRoZSBmZXRj
aFN0YXJ0IHRpbWUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgdGltZSBkZWx0YXMsCisgICAgICAgIHBh
c3NpbmcgYSBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIGRvd24gdG8gdGhlIG1lZGlhIGxvYWRl
ciwgYW5kIHBhY2thZ2luZyB0aGUgZGF0YSB1cAorICAgICAgICBpbiBhbiBPYmpDIG9iamVjdCB0
aGF0IHByZXRlbmRzIHRvIGJlIE5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzLCBqdXN0IGxpa2UgV2Vi
Q29yZU5TVVJMU2Vzc2lvbgorICAgICAgICBwcmV0ZW5kcyB0byBiZSBhbiBOU1VSTFNlc3Npb24u
CisKKyAgICAgICAgSSBtYW51YWxseSB2ZXJpZmllZCB0aGUgTlNEYXRlcyBhcmUgY29ycmVjdC4g
IFRoaXMgaXMgbm90IHN0cmFpZ2h0Zm9yd2FyZCB0byBhdXRvbWF0ZSB0ZXN0cyBmb3IKKyAgICAg
ICAgYmVjYXVzZSBvZiB0aGUgaW5oZXJhbnQgZHluYW1pYyBuYXR1cmUgb2YgdGltaW5nIGRhdGEs
IGFuZCBiZWNhdXNlIG91ciBvdGhlciBXZWJDb3JlTlNVUkxTZXNzaW9uCisgICAgICAgIHRlc3Rz
IHVzZSBXZWJLaXRMZWdhY3ksIGFuZCB0aGF0IGFwcHJvYWNoIHdvbid0IHdvcmsgaGVyZSBiZWNh
dXNlIHdlIGFyZSBvbmx5IGhvb2tpbmcgdXAgZGF0YSBmcm9tCisgICAgICAgIE5TVVJMU2Vzc2lv
biwgd2hpY2ggaXMgb25seSB1c2VkIGluIG1vZGVybiBXZWJLaXQuCisKKyAgICAgICAgKiBNb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdh
dG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlw
dExvYWRlci5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmg6CisgICAgICAg
ICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQ6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmg6CisgICAg
ICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FuY2VsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlQ2xpZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAg
ICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmg6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQ
cmlvcml0eT4+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eT4+OjpkZWNvZGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRy
aWNzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29weVRpbWluZ0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKG5l
dHdvcmtMb2FkTWV0cmljc0RhdGUpOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFz
a1RyYW5zYWN0aW9uTWV0cmljcyBfaW5pdFdpdGhNZXRyaWNzOl0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBmZXRjaFN0YXJ0RGF0ZV0pOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBkb21h
aW5Mb29rdXBTdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tU
cmFuc2FjdGlvbk1ldHJpY3MgZG9tYWluTG9va3VwRW5kRGF0ZV0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBjb25uZWN0U3RhcnREYXRlXSk6
CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIHNl
Y3VyZUNvbm5lY3Rpb25TdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
blRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgY29ubmVjdEVuZERhdGVdKToKKyAgICAgICAgKC1bV2Vi
Q29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgcmVxdWVzdFN0YXJ0RGF0ZV0p
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBy
ZXNwb25zZVN0YXJ0RGF0ZV0pOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1Ry
YW5zYWN0aW9uTWV0cmljcyByZXNwb25zZUVuZERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvblRhc2tNZXRyaWNzIF9pbml0V2l0aE1ldHJpY3M6XSk6CisgICAgICAgICgtW1dl
YkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcyB0cmFuc2FjdGlvbk1ldHJpY3NdKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlz
aGVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9maW5pc2hdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9yZXNvdXJjZTpsb2FkRmlu
aXNoZWRXaXRoRXJyb3I6bWV0cmljczpdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrIHJlc291cmNlOmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOmxvYWRGYWls
ZWRXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBy
ZXNvdXJjZUZpbmlzaGVkOm1ldHJpY3M6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayBfcmVzb3VyY2U6bG9hZEZpbmlzaGVkV2l0aEVycm9yOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2VGaW5pc2hlZDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmls
dGVyczo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlcnMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAyMC0wNS0wOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vdy11bm5lZWRlZCBIQVZFKEFWRk9V
TkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgY29uc3QgY2hhciogTmF2aWdhdG9yQmVhY29uOjpzdXBw
bGVtZW50TgogICAgIHJldHVybiAiTmF2aWdhdG9yQmVhY29uIjsKIH0KIAotdm9pZCBOYXZpZ2F0
b3JCZWFjb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQg
TmF2aWdhdG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKCFyZXNvdXJjZS5yZXNvdXJj
ZUVycm9yKCkuaXNOdWxsKCkpCiAgICAgICAgIGxvZ0Vycm9yKHJlc291cmNlLnJlc291cmNlRXJy
b3IoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFj
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0
b3JCZWFjb24uaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
ZWFjb24vTmF2aWdhdG9yQmVhY29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0g
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGxvZ0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAg
IE5hdmlnYXRvciYgbV9uYXZpZ2F0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXI6OmxvYWQoRG9jdQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQordm9pZCBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRTY3JpcHQpOwog
ICAgIEFTU0VSVChtX2NhY2hlZFNjcmlwdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAkocmV2aXNpb24gMjYx
NDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xp
ZW50JiwgRGVmZXJyZWRQcm9taXNlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYsIFJlZlB0cjxNb2R1
bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPERlZmVy
cmVkUHJvbWlzZT4gbV9wcm9taXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
Q2xhc3NpY1NjcmlwdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXNDYW5jZWxlZCgKICAgICByZXR1
cm4gbV9jYWNoZWRTY3JpcHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKLXZvaWQgTG9hZGFibGVDbGFz
c2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lk
IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIEFTU0VSVChtX2NhY2hl
ZFNjcmlwdCk7CiAgICAgaWYgKHJlc291cmNlLnJlc291cmNlRXJyb3IoKS5pc0FjY2Vzc0NvbnRy
b2woKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRT
Y3JpcHQ+IG1fY2FjaGVkU2NyaXB0IHsgfTsKICAgICBPcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7
IFdURjo6bnVsbG9wdCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYsMTMgQEAgU3RyaW5nIEhUTUxJ
bWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoYXR0cik7CiB9CiAKLXZvaWQgSFRNTEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCit2b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgQVNTRVJUKGltYWdlKCkpOwogICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFn
ZSA9ICppbWFnZSgpOwogCiAgICAgUmVmPEVsZW1lbnQ+IHByb3RlY3QoZWxlbWVudCgpKTsKLSAg
ICBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoY2FjaGVkSW1hZ2UpOworICAgIEltYWdlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChjYWNoZWRJbWFnZSwgbWV0cmljcyk7CiAKICAgICBib29sIGxv
YWRFcnJvciA9IGNhY2hlZEltYWdlLmVycm9yT2NjdXJyZWQoKSB8fCBjYWNoZWRJbWFnZS5yZXNw
b25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOwogICAgIGlmICghbG9hZEVycm9yKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lk
IEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiAgICAgICAgIGlmIChkYXRhICYmIGxv
YWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCiAgICAgICAgICAgICBkYXRhID0g
ZGF0YS0+Y29weSgpOwogCi0gICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5n
ZXQoKSk7CisgICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5nZXQoKSwgeyB9
KTsKICAgICAgICAgY2FjaGVkSW1hZ2UuZmluaXNoKCk7CiAKICAgICAgICAgLy8gUmVwb3J0IHRo
ZSBuYXR1cmFsIGltYWdlIHNpemUgaW4gdGhlIHBhZ2UgdGl0bGUsIHJlZ2FyZGxlc3Mgb2Ygem9v
bSBsZXZlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBBcHBsaWNhdGkK
ICAgICByZXR1cm4gbV9wcm9jZXNzZWRNYW5pZmVzdDsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2
b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgbV9kb2N1bWVu
dExvYWRlci5maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KCp0aGlzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIHByb2Nlc3NNYW5pZmVzdCgpOwog
CiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAgICBP
cHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX3Byb2Nlc3NlZE1hbmlmZXN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjp2YWxpZGEKICAgICBsb2FkZXIu
cHJlZmxpZ2h0U3VjY2VzcyhXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAotdm9pZCBDcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGlm
IChtX3Jlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZp
c2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogCiAgICAgc3RhdGljIHZvaWQgaGFuZGxlTG9hZGluZ0Zh
aWx1cmUoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNMb2FkaW5nTWFpblJlc291
cmNlKCkgfHwgIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSB8fCAhbV9wbHVnSW5TdHJl
YW1Mb2FkZXJzLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudExvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNyArNDQ2LDcgQEAgcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmZpbmlzaGVkVAogICAgIG1fY2xpZW50LT5kaWRGaW5pc2hUaW1pbmcocmVzb3Vy
Y2VUaW1pbmcpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9u
IDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVk
VGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5n
Jikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNv
bnN0IFJlc291cmNlVGltaW5nJik7Ci0gICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjIsNyArMzIyLDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VMb2FkZXI6OnJlamVjdERlY29kZVBy
bwogICAgIHJlamVjdFByb21pc2VzKG1fZGVjb2RpbmdQcm9taXNlcywgbWVzc2FnZSk7CiB9CiAK
LXZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9mYWlsZWRM
b2FkVVJMLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNl
ID09IG1faW1hZ2UuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IEltYWdlTG9hZGVyKEVsZW1lbnQmKTsKLSAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgTGF6eUltYWdlTG9hZFN0YXRlIDogdWludDhfdCB7IE5v
bmUsIERlZmVycmVkLCBMb2FkSW1tZWRpYXRlbHksIEZ1bGxJbWFnZSB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgTGlua0xvYWRlcjo6dHJpZ2dlckV2ZW50cyhjb25zdCBDYWMKICAgICAgICAgbV9j
bGllbnQubGlua0xvYWRlZCgpOwogfQogCi12b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQgTGlua0xvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQog
ewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fY2FjaGVkTGlua1Jlc291cmNlLmdldCgp
ID09ICZyZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxMb2Fk
KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBzdGF0aWMgdm9pZCBwcmVjb25u
ZWN0SWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwgRG9jdW1lbnQmKTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IHByZWxvYWRJ
Zk5lZWRlZChjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMmLCBEb2N1bWVudCYsIExpbmtMb2FkZXIq
KTsKICAgICB2b2lkIHByZWZldGNoSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwg
RG9jdW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291
cmNlQ2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJl
bG9hZFJlc291cmNlQ2xpZW50cy5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMo
cmVzb3VyY2UpOyB9CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhy
ZXNvdXJjZSk7IH0KICAgICB2b2lkIGNsZWFyKCkgZmluYWwgeyBjbGVhclJlc291cmNlKCp0aGlz
KTsgfQogICAgIGJvb2wgc2hvdWxkTWFya0FzUmVmZXJlbmNlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiB9OwpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
IGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7IH0KKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsgfQogICAgIHZvaWQgY2xlYXIoKSBmaW5h
bCB7IGNsZWFyUmVzb3VyY2UoKnRoaXMpOyB9CiAgICAgYm9vbCBzaG91bGRNYXJrQXNSZWZlcmVu
Y2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIH07CkBAIC0xNTcsNyArMTU3LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkgZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsg
fQorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOyB9
CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsIHsgY2xlYXJSZXNvdXJjZSgqdGhpcyk7IH0KICAgICBi
b29sIHNob3VsZE1hcmtBc1JlZmVyZW5jZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFIKICAgICAgICAgbV9jbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNv
dXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBNZWRp
YVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lk
IE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlCiAgICAgICAgIGlmIChtX3Jlc291
cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRG
YWlsZWQoKnRoaXMsIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMpOworICAgICAgICAgICAg
bV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiAgICAgfQogICAgIHN0b3Ao
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlk
ZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1lZGlhUmVzb3VyY2UoTWVkaWFS
ZXNvdXJjZUxvYWRlciYsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uCiAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlc291cmNl
RGF0YSgpOwogICAgICAgICBpZiAobV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCAmJiBidWZmZXIg
JiYgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBkYXRhIHdp
bGwgY2hhbmdlIGFzIHRoZSBuZXh0IHBhcnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ug
YSBjb3B5LgotICAgICAgICAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhidWZmZXItPmNv
cHkoKS5wdHIoKSk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKGJ1ZmZl
ci0+Y29weSgpLnB0cigpLCB7IH0pOwogICAgICAgICAgICAgY2xlYXJSZXNvdXJjZURhdGEoKTsK
ICAgICAgICAgICAgIC8vIFNpbmNlIGEgc3VicmVzb3VyY2UgbG9hZGVyIGRvZXMgbm90IGxvYWQg
bXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZlbHksIGRhdGEgd2FzIGRlbGl2ZXJlZCB0byB0
aGUgbG9hZGVyIGFsbCBhdCBvbmNlLgogICAgICAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IG11
bHRpcGFydCBzZWN0aW9uIGlzIGNvbXBsZXRlLCBzaWduYWwgdG8gZGVsZWdhdGVzIHRoYXQgdGhp
cyBsb2FkIGlzICJmaW5pc2hlZCIKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nCiAgICAgICAgIHRyYWNlUG9pbnQoU3VicmVzb3VyY2VM
b2FkRGlkRW5kKTsKIAogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7Ci0gICAgbV9yZXNvdXJjZS0+
ZmluaXNoTG9hZGluZyhyZXNvdXJjZURhdGEoKSk7CisgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9h
ZGluZyhyZXNvdXJjZURhdGEoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIAogICAgIGlmICh3YXND
YW5jZWxsZWQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hM
b2FkaW5nOiB3YXMgY2FuY2VsZWQiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGUKICAgICBtX3N0YXRlID0g
RmFpbGVkOwogfQogCi12b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09ICZyZXNvdXJjZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gQ2Fj
aGVkUmVzb3VyY2VDbGllbnQKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVwcmVjYXRlZERpZFJlY2Vp
dmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgLy8gV2ViVlRU
UGFyc2VyQ2xpZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlcwogICAgIH0KIAogICAg
IGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCkgewotICAgICAgICBub3RpZnlG
aW5pc2hlZCgqbV9yZXNvdXJjZSk7CisgICAgICAgIG5vdGlmeUZpbmlzaGVkKCptX3Jlc291cmNl
LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZAogICAgIGNhbGxiYWNrKFdURk1v
dmUobmV3UmVxdWVzdCkpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3
ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMgKzQw
LDEzIEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2EKIHsKIH0KIAot
dm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Ci0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIE9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIFJlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZybwogICAgICAg
ICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwog
fQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1f
ZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAp
OwpAQCAtMTA1LDEyICsxMDUsMTIgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKAogICAgIGlmIChkYXRhKQogICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkg
dG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRl
LgogICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IFN0cmluZygpOwogfQogCi12b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hl
Y2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5n
KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsMTIgKzU1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKSBmaW5hbDsKIAotICAgIHZvaWQgY2hlY2tOb3RpZnkoKSBmaW5hbDsKKyAg
ICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICBTdHJpbmcgbV9k
ZWNvZGVkU2hlZXRUZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzbwogICAgICAgICBzdGF0aWNfY2Fz
dDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9p
ZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05vdGlmeShtZXRyaWNzKTsK
IH0KIAogdm9pZCBDYWNoZWRGb250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6YWxsQ2xp
ZW50c1JlbW92ZWQoKQogICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG51bGxwdHI7CiB9
CiAKLXZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoKQordm9pZCBDYWNoZWRGb250OjpjaGVj
a05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmco
KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsMTQgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNv
bnN0OwogCi0gICAgdm9pZCBjaGVja05vdGlmeSgpIG92ZXJyaWRlOworICAgIHZvaWQgY2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlU
cnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9hZChD
YWNoZWRSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNT
RVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRz
UmVtb3ZlZCgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw3ICs1NjUs
NyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IGNoYXIqCiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFn
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsK
ICAgICBpZiAobV9kYXRhKSB7CkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdQogICAgIH0KIAogICAgIG5vdGlmeU9ic2VydmVycygpOwot
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZEltYWdl
OjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAog
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYQogCiAgICAgaWYgKG1fZGVsYXllZEZpbmlzaExvYWRp
bmcpIHsKICAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9kZWxheWVkRmluaXNoTG9hZGluZywgV1RGOjpudWxsb3B0KTsKLSAgICAgICAgZmluaXNoTG9h
ZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpKTsKKyAgICAgICAgZmluaXNo
TG9hZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpLCB7IH0pOwogICAgIH0K
IH0KIApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0K
IAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2lu
SW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5j
aHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMg
dXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2gKICAgICBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNl
bWVudCA9IG1fbG9hZGVyICYmICFtX2xvYWRlci0+aXNRdWlja0xvb2tSZXNvdXJjZSgpOwogI2Vu
ZGlmCiAKLSAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKKyAgICBDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhICYmIHRoaXMt
PmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpIHsKICAgICAgICAgaWYgKG1fbG9hZGVyKQogICAgICAgICAgICAgbV9sb2FkZXItPnNl
dERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZQogICAgICAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRy
KCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVu
dGlmaWVyLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZmluaXNoTG9hZGluZyhudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlzaExv
YWRpbmcobnVsbHB0ciwgeyB9KTsKICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0
eU1ldHJpY3M7CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRyKCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyLCBlbXB0eU1ldHJpY3MsIG51bGxwdHIp
OwogICAgICAgICB9KTsKQEAgLTM2NiwxNCArMzY2LDE0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnNldEJvZHlEYXRhRnJvbShjb24KICAgICBzZXRFbmNvZGVkU2l6ZShyZXNvdXJjZS5lbmNvZGVk
U2l6ZSgpKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIGlmIChpc0xvYWRpbmcoKSB8fCBzdGlsbE5lZWRzTG9hZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJj
ZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQotICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlz
aGVkKCp0aGlzKTsKKyAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmlj
cyk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KQpAQCAtMzg2LDEwICszODYsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShj
b25zdCBjaAogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05v
dGlmeShtZXRyaWNzKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OlN0YXR1cyBzdGF0dXMpCkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZTo6ZXJyb3IoQ2FjaGVkUmVzb3VyYwogICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsg
fSk7CiB9CiAgICAgCiB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKQEAgLTQxNCw3
ICs0MTQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKICAgICAgICAgc2V0
U3RhdHVzKExvYWRFcnJvcik7CiAKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsgfSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaCgpCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRk
Q2xpZW50KENhY2hlZAogCiAgICAgLy8gRklYTUU6IE1ha2UgY2FsbHMgdG8gbm90aWZ5RmluaXNo
ZWQgYXN5bmMKICAgICBpZiAoIWlzTG9hZGluZygpICYmICFzdGlsbE5lZWRzTG9hZCgpKQotICAg
ICAgICBjbGllbnQubm90aWZ5RmluaXNoZWQoKnRoaXMpOworICAgICAgICBjbGllbnQubm90aWZ5
RmluaXNoZWQoKnRoaXMsIHsgfSk7CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVu
dFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMjYxNDI0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
Q29va2llSmFyOwogY2xhc3MgTG9hZFRpbWluZzsKIGNsYXNzIE1lbW9yeUNhY2hlOworY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTExMyw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNl
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBA
IC0zMTQsNyArMzE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVjb2RlZERhdGFEZWxldGlv
blRpbWVyRmlyZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpOworICAgIHZp
cnR1YWwgdm9pZCBjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2
aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIFNlY29uZHMgZnJlc2huZXNzTGlmZXRpbWUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291
cmNlOworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNs
aWVudCB7CiBwdWJsaWM6CkBAIC0zOSw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
dmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmKSB7IH0KIAogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgU3RyaW5n
IENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbgogICAgIHJldHVybiBtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCByZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgbV9kb2N1bWVudC0+c2V0
Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKSk7CiAgICAgfQotICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwor
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURl
Y29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAkocmV2aXNp
b24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5NiwxMSBAQCB1bnNpZ25lZCBDYWNoZWRTY3Jp
cHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVk
U2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEs
IG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZGVzdHJveURlY29kZWREYXRhKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAg
ICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMjYxNDI0
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSwxMCBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKFNoYXJlCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsK
IH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7Cisg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciopOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjEsMTcgKzYxLDE3IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGMK
ICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwog
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKICAgICBpZiAoZGF0
YSkKICAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFhTTFN0
eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6Y2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTMgKzQxLDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29u
c3QgeyByZXR1cm4gbV9zaGVldDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgY2hlY2tOb3RpZnko
KSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JikgZmluYWw7CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlcjo6cmVzcG9uc2VSZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCi12b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpCiB7CiAgICAgdW5yZWdpc3RlclJlcXVlc3QocmVzb3VyY2UpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RU
cmFja2VyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCByZWdpc3RlclJlcXVlc3QoQ2FjaGVkUmVzb3VyY2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSWNvbkxvYWRlcjo6c3RvcExvYWRpbmcoKQog
ICAgIH0KIH0KIAotdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCit2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAg
ICBVUkwgbV91cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24g
MjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgY2hhciosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KIH07
CiAKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW4+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0JKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAg
IC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBmdWxmaWxs
UmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCkBAIC0xMTIsNyArMTEyLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpyZXNwb25zZQogICAgIG1fcGFyZW50
LnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChyZXNvdXJj
ZS5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CiAgICAgICAgIG1fcGFyZW50LmxvYWRGYWlsZWQo
cmVzb3VyY2UucmVzb3VyY2VFcnJvcigpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIq
LCBpbnQpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRG
YWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3Ip
OyB9Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJikgZmluYWwg
eyBsb2FkRmluaXNoZWQoKTsgfQorICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVk
KCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIq
LCBpbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2
b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwotICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgc19ncm93QmxvY2tzaXplTGltaXQgeyAxIH07CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgc19ncm93QmxvY2tzaXplQ291bnQgeyAyIH07CkBAIC0xMTcwLDcgKzExNzAsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkCiAgICAgbWVtYmVycy0+
cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKQordm9p
ZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1f
c3JjLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a0xvYWRNZXRyaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNyArNTQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbXBsZXRlKCkgY29uc3Qg
eyByZXR1cm4gY29tcGxldGU7IH0KICAgICB2b2lkIG1hcmtDb21wbGV0ZSgpIHsgY29tcGxldGUg
PSB0cnVlOyB9CiAKLSAgICAvLyBUaGVzZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBkZWx0YXMgdG8g
TG9hZFRpbWluZydzIGZldGNoU3RhcnQuCisgICAgU2Vjb25kcyBmZXRjaFN0YXJ0OworCisgICAg
Ly8gVGhlc2Ugc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGVsdGFzIHRvIGZldGNoU3RhcnQuCiAgICAg
Ly8gVGhleSBzaG91bGQgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGFzIGxpc3RlZCBoZXJlLgogICAg
IFNlY29uZHMgZG9tYWluTG9va3VwU3RhcnQgeyAtMSB9OyAgICAgLy8gLTEgaWYgbm8gRE5TLgog
ICAgIFNlY29uZHMgZG9tYWluTG9va3VwRW5kIHsgLTEgfTsgICAgICAgLy8gLTEgaWYgbm8gRE5T
LgpAQCAtODEsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBOZXR3b3JrTG9hZE1l
dHJpY3MgY29weTsKIAorICAgICAgICBjb3B5LmZldGNoU3RhcnQgPSBmZXRjaFN0YXJ0OworCiAg
ICAgICAgIGNvcHkuZG9tYWluTG9va3VwU3RhcnQgPSBkb21haW5Mb29rdXBTdGFydDsKICAgICAg
ICAgY29weS5kb21haW5Mb29rdXBFbmQgPSBkb21haW5Mb29rdXBFbmQ7CiAgICAgICAgIGNvcHku
Y29ubmVjdFN0YXJ0ID0gY29ubmVjdFN0YXJ0OwpAQCAtMTEwLDcgKzExNCw4IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG90aGVyKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRv
bWFpbkxvb2t1cFN0YXJ0CisgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0ID09IG90aGVyLmZldGNo
U3RhcnQKKyAgICAgICAgICAgICYmIGRvbWFpbkxvb2t1cFN0YXJ0ID09IG90aGVyLmRvbWFpbkxv
b2t1cFN0YXJ0CiAgICAgICAgICAgICAmJiBkb21haW5Mb29rdXBFbmQgPT0gb3RoZXIuZG9tYWlu
TG9va3VwRW5kCiAgICAgICAgICAgICAmJiBjb25uZWN0U3RhcnQgPT0gb3RoZXIuY29ubmVjdFN0
YXJ0CiAgICAgICAgICAgICAmJiBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPT0gb3RoZXIuc2VjdXJl
Q29ubmVjdGlvblN0YXJ0CkBAIC0xNjUsNiArMTcwLDcgQEAgV0VCQ09SRV9FWFBPUlQgQm94PE5l
dHdvcmtMb2FkTWV0cmljcz4gYwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTmV0d29y
a0xvYWRNZXRyaWNzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKKyAgICBlbmNv
ZGVyIDw8IGZldGNoU3RhcnQ7CiAgICAgZW5jb2RlciA8PCBkb21haW5Mb29rdXBTdGFydDsKICAg
ICBlbmNvZGVyIDw8IGRvbWFpbkxvb2t1cEVuZDsKICAgICBlbmNvZGVyIDw8IGNvbm5lY3RTdGFy
dDsKQEAgLTE5MSw3ICsxOTcsOCBAQCB2b2lkIE5ldHdvcmtMb2FkTWV0cmljczo6ZW5jb2RlKEVu
Y29kZXImCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBOZXR3b3JrTG9hZE1ldHJpY3M6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZG9tYWluTG9va3VwU3RhcnQpCisg
ICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKG1ldHJpY3MuZmV0Y2hTdGFydCkKKyAgICAgICAgJiYg
ZGVjb2Rlci5kZWNvZGUobWV0cmljcy5kb21haW5Mb29rdXBTdGFydCkKICAgICAgICAgJiYgZGVj
b2Rlci5kZWNvZGUobWV0cmljcy5kb21haW5Mb29rdXBFbmQpCiAgICAgICAgICYmIGRlY29kZXIu
ZGVjb2RlKG1ldHJpY3MuY29ubmVjdFN0YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZSht
ZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1t
CShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBA
QCBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBjb3B5VGltaW5nRGF0YShOCiAgICAgZG91YmxlIHJl
cXVlc3RTdGFydCA9IHRpbWluZ1ZhbHVlKHRpbWluZ0RhdGEsIEAiX2tDRk5UaW1pbmdEYXRhUmVx
dWVzdFN0YXJ0Iik7CiAgICAgZG91YmxlIHJlc3BvbnNlU3RhcnQgPSB0aW1pbmdWYWx1ZSh0aW1p
bmdEYXRhLCBAIl9rQ0ZOVGltaW5nRGF0YVJlc3BvbnNlU3RhcnQiKTsKIAorICAgIHRpbWluZy0+
ZmV0Y2hTdGFydCA9IFNlY29uZHMocmVmZXJlbmNlU3RhcnQpOwogICAgIHRpbWluZy0+ZG9tYWlu
TG9va3VwU3RhcnQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cFN0YXJ0IDw9IDAgPyAtMSA6IGRvbWFp
bkxvb2t1cFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOwogICAgIHRpbWluZy0+ZG9tYWluTG9va3Vw
RW5kID0gU2Vjb25kcyhkb21haW5Mb29rdXBFbmQgPD0gMCA/IC0xIDogZG9tYWluTG9va3VwRW5k
IC0gcmVmZXJlbmNlU3RhcnQpOwogICAgIHRpbWluZy0+Y29ubmVjdFN0YXJ0ID0gU2Vjb25kcyhj
b25uZWN0U3RhcnQgPD0gMCA/IC0xIDogY29ubmVjdFN0YXJ0IC0gcmVmZXJlbmNlU3RhcnQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMjEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK3N0YXRpYyBOU0RhdGUgKiBfX251bGxhYmxl
IG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoU2Vjb25kcyBmZXRjaFN0YXJ0LCBTZWNvbmRzIGRlbHRh
KQoreworICAgIGlmICghZmV0Y2hTdGFydC52YWx1ZSgpKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIGlmIChkZWx0YS52YWx1ZSgpID09IC0xKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJl
dHVybiBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOmZldGNoU3RhcnQudmFs
dWUoKSArIGRlbHRhLnZhbHVlKCldOworfQorCitAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Np
b25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIDogTlNPYmplY3QKKy0gKGluc3RhbmNldHlwZSlfaW5p
dFdpdGhNZXRyaWNzOihjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3M7
CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpmZXRjaFN0YXJ0
RGF0ZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKmRvbWFp
bkxvb2t1cFN0YXJ0RGF0ZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBO
U0RhdGUgKmRvbWFpbkxvb2t1cEVuZERhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCBy
ZWFkb25seSkgTlNEYXRlICpjb25uZWN0U3RhcnREYXRlOworQHByb3BlcnR5IChudWxsYWJsZSwg
Y29weSwgcmVhZG9ubHkpIE5TRGF0ZSAqc2VjdXJlQ29ubmVjdGlvblN0YXJ0RGF0ZTsKK0Bwcm9w
ZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKmNvbm5lY3RFbmREYXRlOwor
QHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0ZSAqcmVxdWVzdFN0YXJ0
RGF0ZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKnJlc3Bv
bnNlU3RhcnREYXRlOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0
ZSAqcmVzcG9uc2VFbmREYXRlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZU5TVVJM
U2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgeworICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyBfbWV0cmljczsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpbWV0cmljcworeworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9tZXRyaWNz
ID0gbWV0cmljczsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGR5bmFtaWMgZmV0Y2hTdGFydERh
dGU7CistIChudWxsYWJsZSBOU0RhdGUgKilmZXRjaFN0YXJ0RGF0ZQoreworICAgIHJldHVybiBu
ZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZldGNoU3RhcnQsIFNlY29uZHMoMCkpOwor
fQorCitAZHluYW1pYyBkb21haW5Mb29rdXBTdGFydERhdGU7CistIChudWxsYWJsZSBOU0RhdGUg
Kilkb21haW5Mb29rdXBTdGFydERhdGUKK3sKKyAgICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNz
RGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBfbWV0cmljcy5kb21haW5Mb29rdXBTdGFydCk7Cit9
CisKK0BkeW5hbWljIGRvbWFpbkxvb2t1cEVuZERhdGU7CistIChudWxsYWJsZSBOU0RhdGUgKilk
b21haW5Mb29rdXBFbmREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUo
X21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3MuZG9tYWluTG9va3VwRW5kKTsKK30KKworQGR5
bmFtaWMgY29ubmVjdFN0YXJ0RGF0ZTsKKy0gKG51bGxhYmxlIE5TRGF0ZSAqKWNvbm5lY3RTdGFy
dERhdGUKK3sKKyAgICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRj
aFN0YXJ0LCBfbWV0cmljcy5jb25uZWN0U3RhcnQpOworfQorCitAZHluYW1pYyBzZWN1cmVDb25u
ZWN0aW9uU3RhcnREYXRlOworLSAobnVsbGFibGUgTlNEYXRlICopc2VjdXJlQ29ubmVjdGlvblN0
YXJ0RGF0ZQoreworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZl
dGNoU3RhcnQsIF9tZXRyaWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydCk7Cit9CisKK0BkeW5hbWlj
IGNvbm5lY3RFbmREYXRlOworLSAobnVsbGFibGUgTlNEYXRlICopY29ubmVjdEVuZERhdGUKK3sK
KyAgICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBf
bWV0cmljcy5jb25uZWN0RW5kKTsKK30KKworQGR5bmFtaWMgcmVxdWVzdFN0YXJ0RGF0ZTsKKy0g
KG51bGxhYmxlIE5TRGF0ZSAqKXJlcXVlc3RTdGFydERhdGUKK3sKKyAgICByZXR1cm4gbmV0d29y
a0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBfbWV0cmljcy5yZXF1ZXN0U3Rh
cnQpOworfQorCitAZHluYW1pYyByZXNwb25zZVN0YXJ0RGF0ZTsKKy0gKG51bGxhYmxlIE5TRGF0
ZSAqKXJlc3BvbnNlU3RhcnREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0Rh
dGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3MucmVzcG9uc2VTdGFydCk7Cit9CisKK0Bk
eW5hbWljIHJlc3BvbnNlRW5kRGF0ZTsKKy0gKG51bGxhYmxlIE5TRGF0ZSAqKXJlc3BvbnNlRW5k
RGF0ZQoreworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZldGNo
U3RhcnQsIF9tZXRyaWNzLnJlc3BvbnNlRW5kKTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIFdl
YkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcyA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5cGUp
X2luaXRXaXRoTWV0cmljczooY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiltZXRy
aWNzOworQHByb3BlcnR5IChjb3B5LCByZWFkb25seSkgTlNBcnJheTxOU1VSTFNlc3Npb25UYXNr
VHJhbnNhY3Rpb25NZXRyaWNzICo+ICp0cmFuc2FjdGlvbk1ldHJpY3M7CitAZW5kCisKK0BpbXBs
ZW1lbnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgeworICAgIFJldGFpblB0
cjxXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcz4gX3RyYW5zYWN0aW9u
TWV0cmljczsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpbWV0cmljcworeworICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF90cmFuc2FjdGlvbk1ldHJp
Y3MgPSBhZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3Mg
YWxsb2NdIF9pbml0V2l0aE1ldHJpY3M6bWV0cmljc10pOworICAgIHJldHVybiBzZWxmOworfQor
CitAZHluYW1pYyB0cmFuc2FjdGlvbk1ldHJpY3M7CistIChOU0FycmF5PE5TVVJMU2Vzc2lvblRh
c2tUcmFuc2FjdGlvbk1ldHJpY3MgKj4gKil0cmFuc2FjdGlvbk1ldHJpY3MKK3sKKyAgICByZXR1
cm4gQFsgKE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKilzZWxmLT5fdHJhbnNh
Y3Rpb25NZXRyaWNzLmdldCgpIF07Cit9CisKK0BlbmQKKwogQGludGVyZmFjZSBXZWJDb3JlTlNV
UkxTZXNzaW9uICgpCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXImIGxvYWRlcjsKIEBwcm9wZXJ0eSAocmVhZHdyaXRlLCByZXRhaW4pIGlkPE5TVVJMU2Vz
c2lvblRhc2tEZWxlZ2F0ZT4gZGVsZWdhdGU7CkBAIC02Myw3ICsxNzgsNyBAQCAtICh2b2lkKXJl
c291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlJilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0
IFJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlJilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9y
JillcnJvcjsKLS0gKHZvaWQpcmVzb3VyY2VGaW5pc2hlZDooUGxhdGZvcm1NZWRpYVJlc291cmNl
JilyZXNvdXJjZTsKKy0gKHZvaWQpcmVzb3VyY2VGaW5pc2hlZDooUGxhdGZvcm1NZWRpYVJlc291
cmNlJilyZXNvdXJjZSBtZXRyaWNzOihjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3M7
CiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApAQCAtMzg5LDcgKzUwNCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBj
aGFyKiAvKiBkYXRhICovLCBpbnQgLyogbGVuZ3RoICovKSBvdmVycmlkZTsKICAgICB2b2lkIGFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2b2lkIGxvYWRG
aW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWRG
aW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBMb2NrIG1fdGFza0xvY2s7CkBAIC00NjksMTMg
KzU4NCwxMyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6CiAgICAg
W21fdGFzayByZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOmVycm9yXTsKIH0K
IAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmxvYWRGaW5pc2hlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2tDbGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV90YXNrTG9jayk7CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsK
IAotICAgIFttX3Rhc2sgcmVzb3VyY2VGaW5pc2hlZDpyZXNvdXJjZV07CisgICAgW21fdGFzayBy
ZXNvdXJjZUZpbmlzaGVkOnJlc291cmNlIG1ldHJpY3M6bWV0cmljc107CiB9CiAKIH0KQEAgLTU0
MSw3ICs2NTYsNyBAQCAtICh2b2lkKV9maW5pc2gKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGlmIChfcmVzb3VyY2UpCi0gICAgICAgIFtzZWxmIHJlc291cmNlRmluaXNoZWQ6
Kl9yZXNvdXJjZV07CisgICAgICAgIFtzZWxmIHJlc291cmNlRmluaXNoZWQ6Kl9yZXNvdXJjZSBt
ZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwogfQogCiAjcHJhZ21hIG1hcmsgLSBOU1VS
TFNlc3Npb24gQVBJCkBAIC03MTksNyArODM0LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlJgogICAgIH1dOwogfQogCi0tICh2b2lkKV9yZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlJilyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6KE5TRXJyb3Ig
KillcnJvcgorLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3Vy
Y2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgbWV0cmljczooY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgJnJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgaWYgKHNlbGYuc3RhdGUgPT0gTlNVUkxT
ZXNzaW9uVGFza1N0YXRlQ29tcGxldGVkKQpAQCAtNzI5LDggKzg0NCwxMiBAQCAtICh2b2lkKV9y
ZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlCiAgICAgUmV0YWluUHRyPFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFzaz4gc3Ryb25nU2VsZiB7IHNlbGYgfTsKICAgICBSZXRhaW5QdHI8V2Vi
Q29yZU5TVVJMU2Vzc2lvbj4gc3Ryb25nU2Vzc2lvbiB7IHNlbGYuc2Vzc2lvbiB9OwogICAgIFJl
dGFpblB0cjxOU0Vycm9yPiBzdHJvbmdFcnJvciB7IGVycm9yIH07Ci0gICAgW3NlbGYuc2Vzc2lv
biBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwgc3Ryb25nU2Vzc2lvbiwgc3Ryb25n
RXJyb3JdIHsKKyAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdT
ZWxmLCBzdHJvbmdTZXNzaW9uLCBzdHJvbmdFcnJvciwgbWV0cmljcyA9IG1ldHJpY3MuaXNvbGF0
ZWRDb3B5KCldIHsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlPiBkZWxlZ2F0
ZSA9IChpZDxOU1VSTFNlc3Npb25UYXNrRGVsZWdhdGU+KXN0cm9uZ1Nlc3Npb24uZ2V0KCkuZGVs
ZWdhdGU7CisKKyAgICAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKFVSTFNlc3Npb246dGFzazpkaWRGaW5pc2hDb2xsZWN0aW5nTWV0cmljczopXSkKKyAgICAg
ICAgICAgIFtkZWxlZ2F0ZSBVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZXNzaW9u
LmdldCgpIHRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopc3Ryb25nU2VsZi5nZXQoKSBkaWRG
aW5pc2hDb2xsZWN0aW5nTWV0cmljczooTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgKilhZG9wdE5T
KFtbV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzIGFsbG9jXSBfaW5pdFdpdGhNZXRyaWNz
Om1ldHJpY3NdKS5nZXQoKV07CisKICAgICAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246dGFzazpkaWRDb21wbGV0ZVdpdGhFcnJvcjopXSkK
ICAgICAgICAgICAgIFtkZWxlZ2F0ZSBVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdT
ZXNzaW9uLmdldCgpIHRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopc3Ryb25nU2VsZi5nZXQo
KSBkaWRDb21wbGV0ZVdpdGhFcnJvcjpzdHJvbmdFcnJvci5nZXQoKV07CiAKQEAgLTc0MiwxNiAr
ODYxLDE2IEBAIC0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UKIAogLSAo
dm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlJilyZXNvdXJjZSBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFJlc291cmNlRXJyb3ImKWVycm9yCiB7Ci0g
ICAgW3NlbGYgX3Jlc291cmNlOnJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjplcnJvci5u
c0Vycm9yKCldOworICAgIFtzZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRo
RXJyb3I6ZXJyb3IubnNFcnJvcigpIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CiB9
CiAKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgbG9h
ZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgUmVzb3VyY2VFcnJvciYpZXJyb3IKIHsKLSAgICBbc2Vs
ZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOmVycm9yLm5zRXJyb3Io
KV07CisgICAgW3NlbGYgX3Jlc291cmNlOnJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjpl
cnJvci5uc0Vycm9yKCkgbWV0cmljczpOZXR3b3JrTG9hZE1ldHJpY3MgeyB9XTsKIH0KIAotLSAo
dm9pZClyZXNvdXJjZUZpbmlzaGVkOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlCist
ICh2b2lkKXJlc291cmNlRmluaXNoZWQ6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2Ug
bWV0cmljczooY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzCiB7Ci0gICAgW3NlbGYg
X3Jlc291cmNlOnJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjpuaWxdOworICAgIFtzZWxm
IF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6bmlsIG1ldHJpY3M6bWV0
cmljc107CiB9CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMjYsNyArMTMyNiw3IEBAIFZp
c2libGVJblZpZXdwb3J0U3RhdGUgUmVuZGVyRWxlbWVudDo6aW0KICAgICByZXR1cm4gaXNWaXNp
YmxlID8gVmlzaWJsZUluVmlld3BvcnRTdGF0ZTo6WWVzIDogVmlzaWJsZUluVmlld3BvcnRTdGF0
ZTo6Tm87CiB9CiAKLXZvaWQgUmVuZGVyRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKQordm9pZCBSZW5kZXJFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLm5vdGlmeUZpbmlzaGVkKHJlc291cmNl
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDcgKzI2Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGluc2VydGVkSW50b1RyZWUoKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxCZVJlbW92ZWRGcm9t
VHJlZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0UmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xp
bmVCb3hlcyhib29sIGIpIHsgbV9yZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzID0g
YjsgfQogICAgIGJvb2wgcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlcygpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlczsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAyNjE0MjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cmVwYWludE9yTWFya0Zv
ckxheW91dAogICAgIGNvbnRlbnRDaGFuZ2VkKEltYWdlQ2hhbmdlZCk7CiB9CiAKLXZvaWQgUmVu
ZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBuZXdJbWFnZSkKK3ZvaWQg
UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBuZXdJbWFnZSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChyZW5kZXJUcmVlQmVp
bmdEZXN0cm95ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDE5LDcgKzQxOSw3IEBAIHZvaWQg
UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFIKICAgICBpZiAoaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCgpKSkKICAgICAgICAgcGFnZSgpLmRpZEZpbmlzaExvYWRpbmdJbWFn
ZUZvckVsZW1lbnQoZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKmVsZW1lbnQoKSkpOwogCi0g
ICAgUmVuZGVyUmVwbGFjZWQ6Om5vdGlmeUZpbmlzaGVkKG5ld0ltYWdlKTsKKyAgICBSZW5kZXJS
ZXBsYWNlZDo6bm90aWZ5RmluaXNoZWQobmV3SW1hZ2UsIG1ldHJpY3MpOwogfQogCiB2b2lkIFJl
bmRlckltYWdlOjpzZXRJbWFnZURldmljZVBpeGVsUmF0aW8oZmxvYXQgZmFjdG9yKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHJldmlzaW9uIDI2MTQyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFVuaXQgbWluaW11bVJlcGxh
Y2VkSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIGJvb2wgbm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIGZpbmFsOwogCiAgICAgYm9vbCBib3hTaGFkb3dT
aG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqKSBjb25zdCBmaW5hbDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMu
Y3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBib29sIFJl
bmRlckxheWVyRmlsdGVyczo6aGFzRmlsdGVyVGhhdFNoCiAgICAgcmV0dXJuIG1fZmlsdGVyICYm
IG1fZmlsdGVyLT5oYXNGaWx0ZXJUaGF0U2hvdWxkQmVSZXN0cmljdGVkQnlTZWN1cml0eU9yaWdp
bigpOwogfQogCi12b2lkIFJlbmRlckxheWVyRmlsdGVyczo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKQordm9pZCBSZW5kZXJMYXllckZpbHRlcnM6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICAvLyBGSVhNRTog
VGhpcyByZWFsbHkgc2hvdWxkbid0IGhhdmUgdG8gaW52YWxpZGF0ZSBsYXllciBjb21wb3NpdGlv
biwKICAgICAvLyBidXQgdGVzdHMgbGlrZSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1k
ZWxldGUuaHRtbCBmYWlsIGlmIHRoYXQgZG9lc24ndCBoYXBwZW4uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCShyZXZpc2lvbiAyNjE0MjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwbHlGaWx0ZXJF
ZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCByZXNldERpcnR5U291cmNlUmVjdCgpIHsgbV9kaXJ0eVNvdXJj
ZVJlY3QgPSBMYXlvdXRSZWN0KCk7IH0KIAogICAgIFJlbmRlckxheWVyJiBtX2xheWVyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjE0
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cmVtb3Zl
ZEZyb21BbmNlcwogICAgICAgICBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwogfQogCi12b2lk
IFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCit2b2lk
IFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRGaW5p
c2hJbnNlcnRpbmdOb2RlKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Miw3ICs1NDIsNyBAQCBib29sIFNWR1Vz
ZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0CiAgICAgcmV0dXJuIHRhcmdldENsb25lICYm
IHRhcmdldENsb25lLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKTsKIH0KIAotdm9pZCBTVkdVc2VFbGVt
ZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lkIFNWR1Vz
ZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQoU2NyaXB0RGlzYWxsb3dlZFNjb3Bl
OjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAgICBpbnZhbGlkYXRlU2hhZG93
VHJlZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiAyNjE0
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKSBvdmVycmlkZTsKICAgICBQYXRoIHRvQ2xpcFBhdGgoKSBvdmVycmlkZTsKICAgICBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgRG9jdW1lbnQqIGV4dGVybmFsRG9jdW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0
ZUV4dGVybmFsRG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE1MzcpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisy
MDIwLTA1LTExICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgR2l2ZSBzb21lIE5ldHdvcmtMb2FkTWV0cmljcyB0byBXZWJDb3JlTlNVUkxTZXNz
aW9uJ3MgZGVsZWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMTc1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI5MDk0NDA+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlZHVj
ZXMgZHVwbGljYXRlIGxvb2t1cHMgaW4gUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIKKworICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2U6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OnJlZGlyZWN0UmVjZWl2ZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6ZGF0YVNlbnQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOjpsb2FkRmFpbGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXI6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3
b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246dGFzazpkaWRGaW5pc2hDb2xsZWN0aW5nTWV0
cmljczpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6
OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5Lmg6CisKIDIwMjAtMDUtMTEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgRmFpbCBuYXZpZ2F0aW9ucyB0byBub24gYXBw
LWJvdW5kIGRvbWFpbnMgYWZ0ZXIgdXNlIG9mIGFwcC1ib3VuZCBBUElzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
Y3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxMCArMTEyLDEw
IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZhaWxlZChjb24KICAgICAgICAgbV9j
bGllbnQtPmxvYWRGYWlsZWQoKnRoaXMsIGVycm9yKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlOjpsb2FkRmluaXNoZWQoKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpsb2FkRmlu
aXNoZWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgbV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcyk7CisgICAgICAgIG1f
Y2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CkBAIC01NCw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBjaGFyKiwgaW50NjRfdCk7CiAgICAgdm9pZCBh
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwog
ICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAg
dm9pZCBsb2FkRmluaXNoZWQoKTsKKyAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKIAogcHJpdmF0ZToKICAgICBSZW1vdGVNZWRpYVJlc291
cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyJiwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYs
IFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpyZXNwb25zCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzLmdldChpZCkt
PnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UsIGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2ssIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICByZXNvdXJjZS0+cmVzcG9uc2VSZWNlaXZl
ZChyZXNwb25zZSwgZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjaywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpyZWRpcmVj
dFJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6
OnJlZGlyZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVtb3RlTWVkaWFSZXNv
dXJjZXMuZ2V0KGlkKS0+cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25z
ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHJlc291cmNlLT5yZWRpcmVjdFJl
Y2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFTZW50KFJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCB1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNUb0JlU2VudCkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlTWFuYWdlcjo6ZGF0YVNlbgogICAgIGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNl
LT5yZWFkeSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2Vz
LmdldChpZCktPmRhdGFTZW50KGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAgICBy
ZXNvdXJjZS0+ZGF0YVNlbnQoYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCiB2
b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhUmVjZWl2ZWQoUmVtb3RlTWVkaWFS
ZXNvdXJjZUlkZW50aWZpZXIgaWQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAg
LTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6ZGF0YVJlYwog
ICAgIGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5yZWFkeSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzLmdldChpZCktPmRhdGFSZWNlaXZlZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKKyAg
ICByZXNvdXJjZS0+ZGF0YVJlY2VpdmVkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VN
YW5hZ2VyOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50
aWZpZXIgaWQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTA1LDcgKzEwNSw3IEBA
IHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmFjY2Vzc0MKICAgICBpZiAoIXJlc291
cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZW1v
dGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5hY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoZXJyb3Ip
OworICAgIHJlc291cmNlLT5hY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoZXJyb3IpOwogfQogCiB2
b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpsb2FkRmFpbGVkKFJlbW90ZU1lZGlhUmVz
b3VyY2VJZGVudGlmaWVyIGlkLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTExNCwx
NiArMTE0LDE2IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmxvYWRGYWkKICAg
ICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5sb2FkRmFpbGVkKGVycm9yKTsK
KyAgICByZXNvdXJjZS0+bG9hZEZhaWxlZChlcnJvcik7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXI6OmxvYWRGaW5pc2hlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
ciBpZCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmxvYWRGaW5pc2hlZChSZW1v
dGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewogICAgIGF1dG8qIHJlc291cmNlID0gbV9yZW1vdGVNZWRpYVJlc291cmNlcy5n
ZXQoaWQpOwogICAgIGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5yZWFkeSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzLmdldChpZCktPmxvYWRGaW5p
c2hlZCgpOworICAgIHJlc291cmNlLT5sb2FkRmluaXNoZWQobWV0cmljcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIERhdGFS
ZWZlcmVuY2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5ldHdvcmtMb2FkTWV0
cmljczsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtNjYsNyArNjcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgbG9hZEZp
bmlzaGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGxvYWRGaW5p
c2hlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJik7CiAKICAgICBIYXNoTWFwPFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlm
aWVyLCBSZW1vdGVNZWRpYVJlc291cmNlKj4gbV9yZW1vdGVNZWRpYVJlc291cmNlczsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAy
NjE0MjQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAg
bWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIgTgogICAgIERhdGFSZWNlaXZl
ZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkKICAgICBBY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViS2l0OjpSZW1vdGVN
ZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikK
ICAgICBMb2FkRmFpbGVkKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWQs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAgTG9hZEZpbmlzaGVkKFdlYktpdDo6
UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWQpCisgICAgTG9hZEZpbmlzaGVkKFdlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyBtZXRyaWNzKQogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJl
dmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzgwLDYgKzc4MCw3IEBAIC0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgTlNUaW1lSW50
ZXJ2YWwgcmVzcG9uc2VFbmRJbnRlcnZhbCA9IFttLnJlc3BvbnNlRW5kRGF0ZSB0aW1lSW50ZXJ2
YWxTaW5jZURhdGU6ZmV0Y2hTdGFydERhdGVdOwogCiAgICAgICAgIGF1dG8mIG5ldHdvcmtMb2Fk
TWV0cmljcyA9IG5ldHdvcmtEYXRhVGFzay0+bmV0d29ya0xvYWRNZXRyaWNzKCk7CisgICAgICAg
IG5ldHdvcmtMb2FkTWV0cmljcy5mZXRjaFN0YXJ0ID0gU2Vjb25kcyhmZXRjaFN0YXJ0RGF0ZS50
aW1lSW50ZXJ2YWxTaW5jZTE5NzApOwogICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuZG9tYWlu
TG9va3VwU3RhcnQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cFN0YXJ0SW50ZXJ2YWwpOwogICAgICAg
ICBuZXR3b3JrTG9hZE1ldHJpY3MuZG9tYWluTG9va3VwRW5kID0gU2Vjb25kcyhkb21haW5Mb29r
dXBFbmRJbnRlcnZhbCk7CiAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5jb25uZWN0U3RhcnQg
PSBTZWNvbmRzKGNvbm5lY3RTdGFydEludGVydmFsKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODYsOSArODYsOSBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6bG9hZEZhaWxl
CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFu
YWdlcjo6TG9hZEZhaWxlZChtX2lkLCBlcnJvciksIDApOwogfQogCi12b2lkIFJlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eTo6bG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6bG9hZEZpbmlzaGVkKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUmVzb3VyY2VNYW5hZ2VyOjpMb2FkRmluaXNoZWQobV9pZCksIDApOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkxvYWRGaW5p
c2hlZChtX2lkLCBtZXRyaWNzKSwgMCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAs
NyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOwogICAgIHZvaWQgYWNj
ZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGYWlsZWQo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIGZpbmFsOwotICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgbV9wbGF0Zm9ybU1lZGlhUmVzb3VyY2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399149</attachid>
            <date>2020-05-12 11:37:49 -0700</date>
            <delta_ts>2020-05-12 12:50:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211759-20200512113748.patch</filename>
            <type>text/plain</type>
            <size>84914</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NSBAQAorMjAyMC0wNS0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgc29t
ZSBOZXR3b3JrTG9hZE1ldHJpY3MgdG8gV2ViQ29yZU5TVVJMU2Vzc2lvbidzIGRlbGVnYXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3NTkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyOTA5NDQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcmVxdWlyZWQgcGFja2FnaW5nIHRoZSBmZXRj
aFN0YXJ0IHRpbWUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgdGltZSBkZWx0YXMsCisgICAgICAgIHBh
c3NpbmcgYSBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIGRvd24gdG8gdGhlIG1lZGlhIGxvYWRl
ciwgYW5kIHBhY2thZ2luZyB0aGUgZGF0YSB1cAorICAgICAgICBpbiBhbiBPYmpDIG9iamVjdCB0
aGF0IHByZXRlbmRzIHRvIGJlIE5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzLCBqdXN0IGxpa2UgV2Vi
Q29yZU5TVVJMU2Vzc2lvbgorICAgICAgICBwcmV0ZW5kcyB0byBiZSBhbiBOU1VSTFNlc3Npb24u
CisKKyAgICAgICAgSSBtYW51YWxseSB2ZXJpZmllZCB0aGUgTlNEYXRlcyBhcmUgY29ycmVjdC4g
IFRoaXMgaXMgbm90IHN0cmFpZ2h0Zm9yd2FyZCB0byBhdXRvbWF0ZSB0ZXN0cyBmb3IKKyAgICAg
ICAgYmVjYXVzZSBvZiB0aGUgaW5oZXJhbnQgZHluYW1pYyBuYXR1cmUgb2YgdGltaW5nIGRhdGEs
IGFuZCBiZWNhdXNlIG91ciBvdGhlciBXZWJDb3JlTlNVUkxTZXNzaW9uCisgICAgICAgIHRlc3Rz
IHVzZSBXZWJLaXRMZWdhY3ksIGFuZCB0aGF0IGFwcHJvYWNoIHdvbid0IHdvcmsgaGVyZSBiZWNh
dXNlIHdlIGFyZSBvbmx5IGhvb2tpbmcgdXAgZGF0YSBmcm9tCisgICAgICAgIE5TVVJMU2Vzc2lv
biwgd2hpY2ggaXMgb25seSB1c2VkIGluIG1vZGVybiBXZWJLaXQuCisKKyAgICAgICAgKiBNb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdh
dG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlw
dExvYWRlci5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmg6CisgICAgICAg
ICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQ6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmg6CisgICAg
ICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FuY2VsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlQ2xpZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAg
ICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmg6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQ
cmlvcml0eT4+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eT4+OjpkZWNvZGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRy
aWNzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29weVRpbWluZ0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKG5l
dHdvcmtMb2FkTWV0cmljc0RhdGUpOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFz
a1RyYW5zYWN0aW9uTWV0cmljcyBfaW5pdFdpdGhNZXRyaWNzOl0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBmZXRjaFN0YXJ0RGF0ZV0pOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBkb21h
aW5Mb29rdXBTdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tU
cmFuc2FjdGlvbk1ldHJpY3MgZG9tYWluTG9va3VwRW5kRGF0ZV0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBjb25uZWN0U3RhcnREYXRlXSk6
CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIHNl
Y3VyZUNvbm5lY3Rpb25TdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
blRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgY29ubmVjdEVuZERhdGVdKToKKyAgICAgICAgKC1bV2Vi
Q29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgcmVxdWVzdFN0YXJ0RGF0ZV0p
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBy
ZXNwb25zZVN0YXJ0RGF0ZV0pOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1Ry
YW5zYWN0aW9uTWV0cmljcyByZXNwb25zZUVuZERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvblRhc2tNZXRyaWNzIF9pbml0V2l0aE1ldHJpY3M6XSk6CisgICAgICAgICgtW1dl
YkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcyB0cmFuc2FjdGlvbk1ldHJpY3NdKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlz
aGVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9maW5pc2hdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9yZXNvdXJjZTpsb2FkRmlu
aXNoZWRXaXRoRXJyb3I6bWV0cmljczpdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrIHJlc291cmNlOmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOmxvYWRGYWls
ZWRXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBy
ZXNvdXJjZUZpbmlzaGVkOm1ldHJpY3M6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayBfcmVzb3VyY2U6bG9hZEZpbmlzaGVkV2l0aEVycm9yOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2VGaW5pc2hlZDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmls
dGVyczo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlcnMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAyMC0wNS0wOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vdy11bm5lZWRlZCBIQVZFKEFWRk9V
TkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgY29uc3QgY2hhciogTmF2aWdhdG9yQmVhY29uOjpzdXBw
bGVtZW50TgogICAgIHJldHVybiAiTmF2aWdhdG9yQmVhY29uIjsKIH0KIAotdm9pZCBOYXZpZ2F0
b3JCZWFjb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQg
TmF2aWdhdG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKCFyZXNvdXJjZS5yZXNvdXJj
ZUVycm9yKCkuaXNOdWxsKCkpCiAgICAgICAgIGxvZ0Vycm9yKHJlc291cmNlLnJlc291cmNlRXJy
b3IoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFj
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0
b3JCZWFjb24uaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
ZWFjb24vTmF2aWdhdG9yQmVhY29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0g
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGxvZ0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAg
IE5hdmlnYXRvciYgbV9uYXZpZ2F0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXI6OmxvYWQoRG9jdQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQordm9pZCBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRTY3JpcHQpOwog
ICAgIEFTU0VSVChtX2NhY2hlZFNjcmlwdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAkocmV2aXNpb24gMjYx
NDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xp
ZW50JiwgRGVmZXJyZWRQcm9taXNlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYsIFJlZlB0cjxNb2R1
bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPERlZmVy
cmVkUHJvbWlzZT4gbV9wcm9taXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
Q2xhc3NpY1NjcmlwdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXNDYW5jZWxlZCgKICAgICByZXR1
cm4gbV9jYWNoZWRTY3JpcHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKLXZvaWQgTG9hZGFibGVDbGFz
c2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lk
IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIEFTU0VSVChtX2NhY2hl
ZFNjcmlwdCk7CiAgICAgaWYgKHJlc291cmNlLnJlc291cmNlRXJyb3IoKS5pc0FjY2Vzc0NvbnRy
b2woKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRT
Y3JpcHQ+IG1fY2FjaGVkU2NyaXB0IHsgfTsKICAgICBPcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7
IFdURjo6bnVsbG9wdCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYsMTMgQEAgU3RyaW5nIEhUTUxJ
bWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoYXR0cik7CiB9CiAKLXZvaWQgSFRNTEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCit2b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgQVNTRVJUKGltYWdlKCkpOwogICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFn
ZSA9ICppbWFnZSgpOwogCiAgICAgUmVmPEVsZW1lbnQ+IHByb3RlY3QoZWxlbWVudCgpKTsKLSAg
ICBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoY2FjaGVkSW1hZ2UpOworICAgIEltYWdlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChjYWNoZWRJbWFnZSwgbWV0cmljcyk7CiAKICAgICBib29sIGxv
YWRFcnJvciA9IGNhY2hlZEltYWdlLmVycm9yT2NjdXJyZWQoKSB8fCBjYWNoZWRJbWFnZS5yZXNw
b25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOwogICAgIGlmICghbG9hZEVycm9yKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lk
IEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiAgICAgICAgIGlmIChkYXRhICYmIGxv
YWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCiAgICAgICAgICAgICBkYXRhID0g
ZGF0YS0+Y29weSgpOwogCi0gICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5n
ZXQoKSk7CisgICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5nZXQoKSwgeyB9
KTsKICAgICAgICAgY2FjaGVkSW1hZ2UuZmluaXNoKCk7CiAKICAgICAgICAgLy8gUmVwb3J0IHRo
ZSBuYXR1cmFsIGltYWdlIHNpemUgaW4gdGhlIHBhZ2UgdGl0bGUsIHJlZ2FyZGxlc3Mgb2Ygem9v
bSBsZXZlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBBcHBsaWNhdGkK
ICAgICByZXR1cm4gbV9wcm9jZXNzZWRNYW5pZmVzdDsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2
b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgbV9kb2N1bWVu
dExvYWRlci5maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KCp0aGlzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIHByb2Nlc3NNYW5pZmVzdCgpOwog
CiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAgICBP
cHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX3Byb2Nlc3NlZE1hbmlmZXN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjp2YWxpZGEKICAgICBsb2FkZXIu
cHJlZmxpZ2h0U3VjY2VzcyhXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAotdm9pZCBDcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGlm
IChtX3Jlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZp
c2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogCiAgICAgc3RhdGljIHZvaWQgaGFuZGxlTG9hZGluZ0Zh
aWx1cmUoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNMb2FkaW5nTWFpblJlc291
cmNlKCkgfHwgIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSB8fCAhbV9wbHVnSW5TdHJl
YW1Mb2FkZXJzLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudExvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNyArNDQ2LDcgQEAgcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmZpbmlzaGVkVAogICAgIG1fY2xpZW50LT5kaWRGaW5pc2hUaW1pbmcocmVzb3Vy
Y2VUaW1pbmcpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9u
IDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVk
VGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5n
Jikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNv
bnN0IFJlc291cmNlVGltaW5nJik7Ci0gICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjIsNyArMzIyLDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VMb2FkZXI6OnJlamVjdERlY29kZVBy
bwogICAgIHJlamVjdFByb21pc2VzKG1fZGVjb2RpbmdQcm9taXNlcywgbWVzc2FnZSk7CiB9CiAK
LXZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9mYWlsZWRM
b2FkVVJMLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNl
ID09IG1faW1hZ2UuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IEltYWdlTG9hZGVyKEVsZW1lbnQmKTsKLSAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgTGF6eUltYWdlTG9hZFN0YXRlIDogdWludDhfdCB7IE5v
bmUsIERlZmVycmVkLCBMb2FkSW1tZWRpYXRlbHksIEZ1bGxJbWFnZSB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgTGlua0xvYWRlcjo6dHJpZ2dlckV2ZW50cyhjb25zdCBDYWMKICAgICAgICAgbV9j
bGllbnQubGlua0xvYWRlZCgpOwogfQogCi12b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQgTGlua0xvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQog
ewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fY2FjaGVkTGlua1Jlc291cmNlLmdldCgp
ID09ICZyZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxMb2Fk
KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBzdGF0aWMgdm9pZCBwcmVjb25u
ZWN0SWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwgRG9jdW1lbnQmKTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IHByZWxvYWRJ
Zk5lZWRlZChjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMmLCBEb2N1bWVudCYsIExpbmtMb2FkZXIq
KTsKICAgICB2b2lkIHByZWZldGNoSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwg
RG9jdW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291
cmNlQ2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJl
bG9hZFJlc291cmNlQ2xpZW50cy5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMo
cmVzb3VyY2UpOyB9CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhy
ZXNvdXJjZSk7IH0KICAgICB2b2lkIGNsZWFyKCkgZmluYWwgeyBjbGVhclJlc291cmNlKCp0aGlz
KTsgfQogICAgIGJvb2wgc2hvdWxkTWFya0FzUmVmZXJlbmNlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiB9OwpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
IGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7IH0KKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsgfQogICAgIHZvaWQgY2xlYXIoKSBmaW5h
bCB7IGNsZWFyUmVzb3VyY2UoKnRoaXMpOyB9CiAgICAgYm9vbCBzaG91bGRNYXJrQXNSZWZlcmVu
Y2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIH07CkBAIC0xNTcsNyArMTU3LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkgZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsg
fQorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOyB9
CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsIHsgY2xlYXJSZXNvdXJjZSgqdGhpcyk7IH0KICAgICBi
b29sIHNob3VsZE1hcmtBc1JlZmVyZW5jZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFIKICAgICAgICAgbV9jbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNv
dXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBNZWRp
YVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lk
IE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlCiAgICAgICAgIGlmIChtX3Jlc291
cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRG
YWlsZWQoKnRoaXMsIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMpOworICAgICAgICAgICAg
bV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiAgICAgfQogICAgIHN0b3Ao
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlk
ZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1lZGlhUmVzb3VyY2UoTWVkaWFS
ZXNvdXJjZUxvYWRlciYsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uCiAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlc291cmNl
RGF0YSgpOwogICAgICAgICBpZiAobV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCAmJiBidWZmZXIg
JiYgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBkYXRhIHdp
bGwgY2hhbmdlIGFzIHRoZSBuZXh0IHBhcnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ug
YSBjb3B5LgotICAgICAgICAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhidWZmZXItPmNv
cHkoKS5wdHIoKSk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKGJ1ZmZl
ci0+Y29weSgpLnB0cigpLCB7IH0pOwogICAgICAgICAgICAgY2xlYXJSZXNvdXJjZURhdGEoKTsK
ICAgICAgICAgICAgIC8vIFNpbmNlIGEgc3VicmVzb3VyY2UgbG9hZGVyIGRvZXMgbm90IGxvYWQg
bXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZlbHksIGRhdGEgd2FzIGRlbGl2ZXJlZCB0byB0
aGUgbG9hZGVyIGFsbCBhdCBvbmNlLgogICAgICAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IG11
bHRpcGFydCBzZWN0aW9uIGlzIGNvbXBsZXRlLCBzaWduYWwgdG8gZGVsZWdhdGVzIHRoYXQgdGhp
cyBsb2FkIGlzICJmaW5pc2hlZCIKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nCiAgICAgICAgIHRyYWNlUG9pbnQoU3VicmVzb3VyY2VM
b2FkRGlkRW5kKTsKIAogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7Ci0gICAgbV9yZXNvdXJjZS0+
ZmluaXNoTG9hZGluZyhyZXNvdXJjZURhdGEoKSk7CisgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9h
ZGluZyhyZXNvdXJjZURhdGEoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIAogICAgIGlmICh3YXND
YW5jZWxsZWQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hM
b2FkaW5nOiB3YXMgY2FuY2VsZWQiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGUKICAgICBtX3N0YXRlID0g
RmFpbGVkOwogfQogCi12b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09ICZyZXNvdXJjZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gQ2Fj
aGVkUmVzb3VyY2VDbGllbnQKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVwcmVjYXRlZERpZFJlY2Vp
dmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgLy8gV2ViVlRU
UGFyc2VyQ2xpZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlcwogICAgIH0KIAogICAg
IGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCkgewotICAgICAgICBub3RpZnlG
aW5pc2hlZCgqbV9yZXNvdXJjZSk7CisgICAgICAgIG5vdGlmeUZpbmlzaGVkKCptX3Jlc291cmNl
LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZAogICAgIGNhbGxiYWNrKFdURk1v
dmUobmV3UmVxdWVzdCkpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3
ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMgKzQw
LDEzIEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2EKIHsKIH0KIAot
dm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Ci0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIE9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIFJlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZybwogICAgICAg
ICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwog
fQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1f
ZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAp
OwpAQCAtMTA1LDEyICsxMDUsMTIgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKAogICAgIGlmIChkYXRhKQogICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkg
dG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRl
LgogICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IFN0cmluZygpOwogfQogCi12b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hl
Y2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5n
KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsMTIgKzU1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKSBmaW5hbDsKIAotICAgIHZvaWQgY2hlY2tOb3RpZnkoKSBmaW5hbDsKKyAg
ICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICBTdHJpbmcgbV9k
ZWNvZGVkU2hlZXRUZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzbwogICAgICAgICBzdGF0aWNfY2Fz
dDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9p
ZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05vdGlmeShtZXRyaWNzKTsK
IH0KIAogdm9pZCBDYWNoZWRGb250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6YWxsQ2xp
ZW50c1JlbW92ZWQoKQogICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG51bGxwdHI7CiB9
CiAKLXZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoKQordm9pZCBDYWNoZWRGb250OjpjaGVj
a05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmco
KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsMTQgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNv
bnN0OwogCi0gICAgdm9pZCBjaGVja05vdGlmeSgpIG92ZXJyaWRlOworICAgIHZvaWQgY2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlU
cnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9hZChD
YWNoZWRSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNT
RVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRz
UmVtb3ZlZCgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw3ICs1NjUs
NyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IGNoYXIqCiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFn
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsK
ICAgICBpZiAobV9kYXRhKSB7CkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdQogICAgIH0KIAogICAgIG5vdGlmeU9ic2VydmVycygpOwot
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZEltYWdl
OjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAog
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYQogCiAgICAgaWYgKG1fZGVsYXllZEZpbmlzaExvYWRp
bmcpIHsKICAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9kZWxheWVkRmluaXNoTG9hZGluZywgV1RGOjpudWxsb3B0KTsKLSAgICAgICAgZmluaXNoTG9h
ZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpKTsKKyAgICAgICAgZmluaXNo
TG9hZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpLCB7IH0pOwogICAgIH0K
IH0KIApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0K
IAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2lu
SW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5j
aHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMg
dXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2gKICAgICBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNl
bWVudCA9IG1fbG9hZGVyICYmICFtX2xvYWRlci0+aXNRdWlja0xvb2tSZXNvdXJjZSgpOwogI2Vu
ZGlmCiAKLSAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKKyAgICBDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhICYmIHRoaXMt
PmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpIHsKICAgICAgICAgaWYgKG1fbG9hZGVyKQogICAgICAgICAgICAgbV9sb2FkZXItPnNl
dERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZQogICAgICAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRy
KCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVu
dGlmaWVyLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZmluaXNoTG9hZGluZyhudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlzaExv
YWRpbmcobnVsbHB0ciwgeyB9KTsKICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0
eU1ldHJpY3M7CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRyKCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyLCBlbXB0eU1ldHJpY3MsIG51bGxwdHIp
OwogICAgICAgICB9KTsKQEAgLTM2NiwxNCArMzY2LDE0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnNldEJvZHlEYXRhRnJvbShjb24KICAgICBzZXRFbmNvZGVkU2l6ZShyZXNvdXJjZS5lbmNvZGVk
U2l6ZSgpKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIGlmIChpc0xvYWRpbmcoKSB8fCBzdGlsbE5lZWRzTG9hZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJj
ZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQotICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlz
aGVkKCp0aGlzKTsKKyAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmlj
cyk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KQpAQCAtMzg2LDEwICszODYsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShj
b25zdCBjaAogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05v
dGlmeShtZXRyaWNzKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OlN0YXR1cyBzdGF0dXMpCkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZTo6ZXJyb3IoQ2FjaGVkUmVzb3VyYwogICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsg
fSk7CiB9CiAgICAgCiB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKQEAgLTQxNCw3
ICs0MTQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKICAgICAgICAgc2V0
U3RhdHVzKExvYWRFcnJvcik7CiAKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsgfSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaCgpCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRk
Q2xpZW50KENhY2hlZAogCiAgICAgLy8gRklYTUU6IE1ha2UgY2FsbHMgdG8gbm90aWZ5RmluaXNo
ZWQgYXN5bmMKICAgICBpZiAoIWlzTG9hZGluZygpICYmICFzdGlsbE5lZWRzTG9hZCgpKQotICAg
ICAgICBjbGllbnQubm90aWZ5RmluaXNoZWQoKnRoaXMpOworICAgICAgICBjbGllbnQubm90aWZ5
RmluaXNoZWQoKnRoaXMsIHsgfSk7CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVu
dFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMjYxNDI0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
Q29va2llSmFyOwogY2xhc3MgTG9hZFRpbWluZzsKIGNsYXNzIE1lbW9yeUNhY2hlOworY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTExMyw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNl
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBA
IC0zMTQsNyArMzE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVjb2RlZERhdGFEZWxldGlv
blRpbWVyRmlyZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpOworICAgIHZp
cnR1YWwgdm9pZCBjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2
aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIFNlY29uZHMgZnJlc2huZXNzTGlmZXRpbWUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291
cmNlOworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNs
aWVudCB7CiBwdWJsaWM6CkBAIC0zOSw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
dmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmKSB7IH0KIAogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgU3RyaW5n
IENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbgogICAgIHJldHVybiBtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCByZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgbV9kb2N1bWVudC0+c2V0
Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKSk7CiAgICAgfQotICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwor
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURl
Y29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAkocmV2aXNp
b24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5NiwxMSBAQCB1bnNpZ25lZCBDYWNoZWRTY3Jp
cHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVk
U2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEs
IG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZGVzdHJveURlY29kZWREYXRhKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAg
ICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMjYxNDI0
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSwxMCBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKFNoYXJlCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsK
IH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7Cisg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciopOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjEsMTcgKzYxLDE3IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGMK
ICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwog
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKICAgICBpZiAoZGF0
YSkKICAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFhTTFN0
eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6Y2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTMgKzQxLDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29u
c3QgeyByZXR1cm4gbV9zaGVldDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgY2hlY2tOb3RpZnko
KSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JikgZmluYWw7CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlcjo6cmVzcG9uc2VSZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCi12b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpCiB7CiAgICAgdW5yZWdpc3RlclJlcXVlc3QocmVzb3VyY2UpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RU
cmFja2VyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCByZWdpc3RlclJlcXVlc3QoQ2FjaGVkUmVzb3VyY2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSWNvbkxvYWRlcjo6c3RvcExvYWRpbmcoKQog
ICAgIH0KIH0KIAotdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCit2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAg
ICBVUkwgbV91cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24g
MjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgY2hhciosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KIH07
CiAKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW4+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29y
ZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgV2ViQ29y
ZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2UKICAgICBmdWxmaWxsUmVxdWVzdFdpdGhSZXNv
dXJjZShyZXNvdXJjZSk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBXZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRP
ckNhbmNlbGVkKCkpIHsKICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzOTg3NDE3PiBTZXQg
dGhlIGNvbnRlbnRUeXBlIG9mIHRoZSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0IHRvIGFuIGVt
cHR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsOwogICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hh
ciosIGludCkgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYp
IGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRo
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKIApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6cmVzcG9uc2UKICAgICBtX3BhcmVudC5yZXNwb25zZVJl
Y2VpdmVkKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lkIENhY2hlZFJlc291
cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxl
ZE9yQ2FuY2VsZWQoKSkgewogICAgICAgICBtX3BhcmVudC5sb2FkRmFpbGVkKHJlc291cmNlLnJl
c291cmNlRXJyb3IoKSk7CkBAIC0xNTAsNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5h
bDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9y
KTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQotICAgIHZv
aWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpIGZpbmFsIHsgbG9hZEZpbmlz
aGVkKCk7IH0KKyAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CiAKICAg
ICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9y
bU1lZGlhUmVzb3VyY2U+IG1fcmVzb3VyY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IHNfZ3Jvd0Jsb2Nrc2l6ZUxpbWl0IHsgMSB9OwogICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNf
Z3Jvd0Jsb2Nrc2l6ZUNvdW50IHsgMiB9OwpAQCAtMTE3MCw3ICsxMTcwLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZAogICAgIG1lbWJlcnMtPnJlc3BvbnNlQ29u
ZGl0aW9uLm5vdGlmeU9uZSgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50Ojpsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJikKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmlj
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a0xvYWRNZXRyaWNzLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcg
KzU0LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIGNv
bXBsZXRlOyB9CiAgICAgdm9pZCBtYXJrQ29tcGxldGUoKSB7IGNvbXBsZXRlID0gdHJ1ZTsgfQog
Ci0gICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHRyZWF0ZWQgYXMgZGVsdGFzIHRvIExvYWRUaW1pbmcn
cyBmZXRjaFN0YXJ0LgorICAgIFNlY29uZHMgZmV0Y2hTdGFydDsKKworICAgIC8vIFRoZXNlIHNo
b3VsZCBiZSB0cmVhdGVkIGFzIGRlbHRhcyB0byBmZXRjaFN0YXJ0LgogICAgIC8vIFRoZXkgc2hv
dWxkIGJlIGluIGFzY2VuZGluZyBvcmRlciBhcyBsaXN0ZWQgaGVyZS4KICAgICBTZWNvbmRzIGRv
bWFpbkxvb2t1cFN0YXJ0IHsgLTEgfTsgICAgIC8vIC0xIGlmIG5vIEROUy4KICAgICBTZWNvbmRz
IGRvbWFpbkxvb2t1cEVuZCB7IC0xIH07ICAgICAgIC8vIC0xIGlmIG5vIEROUy4KQEAgLTgxLDYg
KzgzLDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGNvcHk7
CiAKKyAgICAgICAgY29weS5mZXRjaFN0YXJ0ID0gZmV0Y2hTdGFydDsKKwogICAgICAgICBjb3B5
LmRvbWFpbkxvb2t1cFN0YXJ0ID0gZG9tYWluTG9va3VwU3RhcnQ7CiAgICAgICAgIGNvcHkuZG9t
YWluTG9va3VwRW5kID0gZG9tYWluTG9va3VwRW5kOwogICAgICAgICBjb3B5LmNvbm5lY3RTdGFy
dCA9IGNvbm5lY3RTdGFydDsKQEAgLTExMCw3ICsxMTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBvdGhlcikgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBkb21haW5Mb29rdXBTdGFydCA9PSBvdGhlci5kb21haW5Mb29rdXBT
dGFydAorICAgICAgICByZXR1cm4gZmV0Y2hTdGFydCA9PSBvdGhlci5mZXRjaFN0YXJ0CisgICAg
ICAgICAgICAmJiBkb21haW5Mb29rdXBTdGFydCA9PSBvdGhlci5kb21haW5Mb29rdXBTdGFydAog
ICAgICAgICAgICAgJiYgZG9tYWluTG9va3VwRW5kID09IG90aGVyLmRvbWFpbkxvb2t1cEVuZAog
ICAgICAgICAgICAgJiYgY29ubmVjdFN0YXJ0ID09IG90aGVyLmNvbm5lY3RTdGFydAogICAgICAg
ICAgICAgJiYgc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID09IG90aGVyLnNlY3VyZUNvbm5lY3Rpb25T
dGFydApAQCAtMTY1LDYgKzE3MCw3IEBAIFdFQkNPUkVfRVhQT1JUIEJveDxOZXR3b3JrTG9hZE1l
dHJpY3M+IGMKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE5ldHdvcmtMb2FkTWV0cmlj
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CisgICAgZW5jb2RlciA8PCBmZXRj
aFN0YXJ0OwogICAgIGVuY29kZXIgPDwgZG9tYWluTG9va3VwU3RhcnQ7CiAgICAgZW5jb2RlciA8
PCBkb21haW5Mb29rdXBFbmQ7CiAgICAgZW5jb2RlciA8PCBjb25uZWN0U3RhcnQ7CkBAIC0xOTEs
NyArMTk3LDggQEAgdm9pZCBOZXR3b3JrTG9hZE1ldHJpY3M6OmVuY29kZShFbmNvZGVyJgogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIGJvb2wgTmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIHJldHVy
biBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0KQorICAgIHJldHVybiBk
ZWNvZGVyLmRlY29kZShtZXRyaWNzLmZldGNoU3RhcnQpCisgICAgICAgICYmIGRlY29kZXIuZGVj
b2RlKG1ldHJpY3MuZG9tYWluTG9va3VwU3RhcnQpCiAgICAgICAgICYmIGRlY29kZXIuZGVjb2Rl
KG1ldHJpY3MuZG9tYWluTG9va3VwRW5kKQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRy
aWNzLmNvbm5lY3RTdGFydCkKICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5zZWN1
cmVDb25uZWN0aW9uU3RhcnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQkocmV2aXNpb24g
MjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3Jr
TG9hZE1ldHJpY3MubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgQm94PE5ldHdv
cmtMb2FkTWV0cmljcz4gY29weVRpbWluZ0RhdGEoTgogICAgIGRvdWJsZSByZXF1ZXN0U3RhcnQg
PSB0aW1pbmdWYWx1ZSh0aW1pbmdEYXRhLCBAIl9rQ0ZOVGltaW5nRGF0YVJlcXVlc3RTdGFydCIp
OwogICAgIGRvdWJsZSByZXNwb25zZVN0YXJ0ID0gdGltaW5nVmFsdWUodGltaW5nRGF0YSwgQCJf
a0NGTlRpbWluZ0RhdGFSZXNwb25zZVN0YXJ0Iik7CiAKKyAgICB0aW1pbmctPmZldGNoU3RhcnQg
PSBTZWNvbmRzKHJlZmVyZW5jZVN0YXJ0KTsKICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cFN0YXJ0
ID0gU2Vjb25kcyhkb21haW5Mb29rdXBTdGFydCA8PSAwID8gLTEgOiBkb21haW5Mb29rdXBTdGFy
dCAtIHJlZmVyZW5jZVN0YXJ0KTsKICAgICB0aW1pbmctPmRvbWFpbkxvb2t1cEVuZCA9IFNlY29u
ZHMoZG9tYWluTG9va3VwRW5kIDw9IDAgPyAtMSA6IGRvbWFpbkxvb2t1cEVuZCAtIHJlZmVyZW5j
ZVN0YXJ0KTsKICAgICB0aW1pbmctPmNvbm5lY3RTdGFydCA9IFNlY29uZHMoY29ubmVjdFN0YXJ0
IDw9IDAgPyAtMSA6IGNvbm5lY3RTdGFydCAtIHJlZmVyZW5jZVN0YXJ0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0JKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksMTIxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgogCitzdGF0aWMgTlNEYXRlICogX19udWxsYWJsZSBuZXR3b3JrTG9h
ZE1ldHJpY3NEYXRlKFNlY29uZHMgZmV0Y2hTdGFydCwgU2Vjb25kcyBkZWx0YSkKK3sKKyAgICBp
ZiAoIWZldGNoU3RhcnQudmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBpZiAoZGVs
dGEudmFsdWUoKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW05TRGF0
ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDpmZXRjaFN0YXJ0LnZhbHVlKCkgKyBkZWx0
YS52YWx1ZSgpXTsKK30KKworQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5z
YWN0aW9uTWV0cmljcyA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWV0cmlj
czooY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzOworQHByb3BlcnR5
IChudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0ZSAqZmV0Y2hTdGFydERhdGU7CitAcHJv
cGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpkb21haW5Mb29rdXBTdGFy
dERhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpkb21h
aW5Mb29rdXBFbmREYXRlOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5T
RGF0ZSAqY29ubmVjdFN0YXJ0RGF0ZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRv
bmx5KSBOU0RhdGUgKnNlY3VyZUNvbm5lY3Rpb25TdGFydERhdGU7CitAcHJvcGVydHkgKG51bGxh
YmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpjb25uZWN0RW5kRGF0ZTsKK0Bwcm9wZXJ0eSAo
bnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKnJlcXVlc3RTdGFydERhdGU7CitAcHJv
cGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpyZXNwb25zZVN0YXJ0RGF0
ZTsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKnJlc3BvbnNl
RW5kRGF0ZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNvcmVOU1VSTFNlc3Npb25UYXNr
VHJhbnNhY3Rpb25NZXRyaWNzIHsKKyAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgX21l
dHJpY3M7Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfbWV0cmljcyA9IG1ldHJpY3M7
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BkeW5hbWljIGZldGNoU3RhcnREYXRlOworLSAobnVs
bGFibGUgTlNEYXRlICopZmV0Y2hTdGFydERhdGUKK3sKKyAgICByZXR1cm4gbmV0d29ya0xvYWRN
ZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBTZWNvbmRzKDApKTsKK30KKworQGR5bmFt
aWMgZG9tYWluTG9va3VwU3RhcnREYXRlOworLSAobnVsbGFibGUgTlNEYXRlICopZG9tYWluTG9v
a3VwU3RhcnREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoX21ldHJp
Y3MuZmV0Y2hTdGFydCwgX21ldHJpY3MuZG9tYWluTG9va3VwU3RhcnQpOworfQorCitAZHluYW1p
YyBkb21haW5Mb29rdXBFbmREYXRlOworLSAobnVsbGFibGUgTlNEYXRlICopZG9tYWluTG9va3Vw
RW5kRGF0ZQoreworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZl
dGNoU3RhcnQsIF9tZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCk7Cit9CisKK0BkeW5hbWljIGNvbm5l
Y3RTdGFydERhdGU7CistIChudWxsYWJsZSBOU0RhdGUgKiljb25uZWN0U3RhcnREYXRlCit7Cisg
ICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21l
dHJpY3MuY29ubmVjdFN0YXJ0KTsKK30KKworQGR5bmFtaWMgc2VjdXJlQ29ubmVjdGlvblN0YXJ0
RGF0ZTsKKy0gKG51bGxhYmxlIE5TRGF0ZSAqKXNlY3VyZUNvbm5lY3Rpb25TdGFydERhdGUKK3sK
KyAgICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBf
bWV0cmljcy5zZWN1cmVDb25uZWN0aW9uU3RhcnQpOworfQorCitAZHluYW1pYyBjb25uZWN0RW5k
RGF0ZTsKKy0gKG51bGxhYmxlIE5TRGF0ZSAqKWNvbm5lY3RFbmREYXRlCit7CisgICAgcmV0dXJu
IG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3MuY29u
bmVjdEVuZCk7Cit9CisKK0BkeW5hbWljIHJlcXVlc3RTdGFydERhdGU7CistIChudWxsYWJsZSBO
U0RhdGUgKilyZXF1ZXN0U3RhcnREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmlj
c0RhdGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3MucmVxdWVzdFN0YXJ0KTsKK30KKwor
QGR5bmFtaWMgcmVzcG9uc2VTdGFydERhdGU7CistIChudWxsYWJsZSBOU0RhdGUgKilyZXNwb25z
ZVN0YXJ0RGF0ZQoreworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNz
LmZldGNoU3RhcnQsIF9tZXRyaWNzLnJlc3BvbnNlU3RhcnQpOworfQorCitAZHluYW1pYyByZXNw
b25zZUVuZERhdGU7CistIChudWxsYWJsZSBOU0RhdGUgKilyZXNwb25zZUVuZERhdGUKK3sKKyAg
ICByZXR1cm4gbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBfbWV0
cmljcy5yZXNwb25zZUVuZCk7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBXZWJDb3JlTlNVUkxT
ZXNzaW9uVGFza01ldHJpY3MgOiBOU09iamVjdAorLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1l
dHJpY3M6KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpbWV0cmljczsKK0Bwcm9w
ZXJ0eSAoY29weSwgcmVhZG9ubHkpIE5TQXJyYXk8TlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9u
TWV0cmljcyAqPiAqdHJhbnNhY3Rpb25NZXRyaWNzOworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzIHsKKyAgICBSZXRhaW5QdHI8V2ViQ29yZU5T
VVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3M+IF90cmFuc2FjdGlvbk1ldHJpY3M7Cit9
CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRd
KSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfdHJhbnNhY3Rpb25NZXRyaWNzID0gYWRvcHRO
UyhbW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIGFsbG9jXSBfaW5p
dFdpdGhNZXRyaWNzOm1ldHJpY3NdKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGR5bmFtaWMg
dHJhbnNhY3Rpb25NZXRyaWNzOworLSAoTlNBcnJheTxOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rp
b25NZXRyaWNzICo+ICopdHJhbnNhY3Rpb25NZXRyaWNzCit7CisgICAgcmV0dXJuIEBbIChOU1VS
TFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICopc2VsZi0+X3RyYW5zYWN0aW9uTWV0cmlj
cy5nZXQoKSBdOworfQorCitAZW5kCisKIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiAo
KQogQHByb3BlcnR5IChyZWFkb25seSkgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyJiBsb2Fk
ZXI7CiBAcHJvcGVydHkgKHJlYWR3cml0ZSwgcmV0YWluKSBpZDxOU1VSTFNlc3Npb25UYXNrRGVs
ZWdhdGU+IGRlbGVnYXRlOwpAQCAtNjMsNyArMTc4LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxh
dGZvcm1NZWRpYVJlc291cmNlJgogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlJilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJily
ZXNwb25zZSByZXF1ZXN0OihSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5k
bGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0
aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVz
b3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVy
cm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVz
b3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgUmVzb3VyY2VFcnJvciYpZXJyb3I7Ci0t
ICh2b2lkKXJlc291cmNlRmluaXNoZWQ6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2U7
CistICh2b2lkKXJlc291cmNlRmluaXNoZWQ6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3Vy
Y2UgbWV0cmljczooY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzOwogQGVuZAogCiBO
U19BU1NVTUVfTk9OTlVMTF9FTkQKQEAgLTM4OSw3ICs1MDQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciogLyogZGF0
YSAqLywgaW50IC8qIGxlbmd0aCAqLykgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgTG9jayBtX3Rhc2tMb2NrOwpAQCAtNDY5LDEzICs1ODQsMTMgQEAg
dm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OgogICAgIFttX3Rhc2sgcmVz
b3VyY2U6cmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjplcnJvcl07CiB9CiAKLXZvaWQgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50Ojpsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
dGFza0xvY2spOwogICAgIGlmICghbV90YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV90
YXNrIHJlc291cmNlRmluaXNoZWQ6cmVzb3VyY2VdOworICAgIFttX3Rhc2sgcmVzb3VyY2VGaW5p
c2hlZDpyZXNvdXJjZSBtZXRyaWNzOm1ldHJpY3NdOwogfQogCiB9CkBAIC01NDEsNyArNjU2LDcg
QEAgLSAodm9pZClfZmluaXNoCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoX3Jlc291cmNlKQotICAgICAgICBbc2VsZiByZXNvdXJjZUZpbmlzaGVkOipfcmVzb3VyY2Vd
OworICAgICAgICBbc2VsZiByZXNvdXJjZUZpbmlzaGVkOipfcmVzb3VyY2UgbWV0cmljczpOZXR3
b3JrTG9hZE1ldHJpY3MgeyB9XTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gTlNVUkxTZXNzaW9uIEFQ
SQpAQCAtNzE5LDcgKzgzNCw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYKICAgICB9XTsKIH0KIAotLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYpcmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKKy0g
KHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGxvYWRGaW5p
c2hlZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIG1ldHJpY3M6KGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpbWV0cmljcwogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJj
ZSA9PSBfcmVzb3VyY2UpOwogICAgIGlmIChzZWxmLnN0YXRlID09IE5TVVJMU2Vzc2lvblRhc2tT
dGF0ZUNvbXBsZXRlZCkKQEAgLTcyOSw4ICs4NDQsMTIgQEAgLSAodm9pZClfcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZQogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2s+IHN0cm9uZ1NlbGYgeyBzZWxmIH07CiAgICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNl
c3Npb24+IHN0cm9uZ1Nlc3Npb24geyBzZWxmLnNlc3Npb24gfTsKICAgICBSZXRhaW5QdHI8TlNF
cnJvcj4gc3Ryb25nRXJyb3IgeyBlcnJvciB9OwotICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdh
dGVPcGVyYXRpb246W3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb24sIHN0cm9uZ0Vycm9yXSB7Cisg
ICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiwgc3Ryb25n
U2Vzc2lvbiwgc3Ryb25nRXJyb3IsIG1ldHJpY3MgPSBtZXRyaWNzLmlzb2xhdGVkQ29weSgpXSB7
CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4gZGVsZWdhdGUgPSAoaWQ8TlNV
UkxTZXNzaW9uVGFza0RlbGVnYXRlPilzdHJvbmdTZXNzaW9uLmdldCgpLmRlbGVnYXRlOworCisg
ICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNz
aW9uOnRhc2s6ZGlkRmluaXNoQ29sbGVjdGluZ01ldHJpY3M6KV0pCisgICAgICAgICAgICBbZGVs
ZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2Vzc2lvbi5nZXQoKSB0YXNr
OihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkRmluaXNoQ29sbGVj
dGluZ01ldHJpY3M6KE5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzICopYWRvcHROUyhbW1dlYkNvcmVO
U1VSTFNlc3Npb25UYXNrTWV0cmljcyBhbGxvY10gX2luaXRXaXRoTWV0cmljczptZXRyaWNzXSku
Z2V0KCldOworCiAgICAgICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6KV0pCiAgICAgICAgICAg
ICBbZGVsZWdhdGUgVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc3Ryb25nU2Vzc2lvbi5nZXQo
KSB0YXNrOihOU1VSTFNlc3Npb25EYXRhVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgZGlkQ29tcGxl
dGVXaXRoRXJyb3I6c3Ryb25nRXJyb3IuZ2V0KCldOwogCkBAIC03NDIsMTYgKzg2MSwxNiBAQCAt
ICh2b2lkKV9yZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlCiAKIC0gKHZvaWQpcmVzb3Vy
Y2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9yJillcnJvcgogewotICAgIFtzZWxmIF9y
ZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsK
KyAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOmVycm9y
Lm5zRXJyb3IoKSBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwogfQogCiAtICh2b2lk
KXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGxvYWRGYWlsZWRXaXRo
RXJyb3I6KGNvbnN0IFJlc291cmNlRXJyb3ImKWVycm9yCiB7Ci0gICAgW3NlbGYgX3Jlc291cmNl
OnJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgIFtz
ZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6ZXJyb3IubnNFcnJv
cigpIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CiB9CiAKLS0gKHZvaWQpcmVzb3Vy
Y2VGaW5pc2hlZDooUGxhdGZvcm1NZWRpYVJlc291cmNlJilyZXNvdXJjZQorLSAodm9pZClyZXNv
dXJjZUZpbmlzaGVkOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIG1ldHJpY3M6KGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpbWV0cmljcwogewotICAgIFtzZWxmIF9yZXNvdXJjZTpy
ZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6bmlsXTsKKyAgICBbc2VsZiBfcmVzb3VyY2U6
cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVycm9yOm5pbCBtZXRyaWNzOm1ldHJpY3NdOwogfQog
QGVuZApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBWaXNpYmxlSW5WaWV3
cG9ydFN0YXRlIFJlbmRlckVsZW1lbnQ6OmltCiAgICAgcmV0dXJuIGlzVmlzaWJsZSA/IFZpc2li
bGVJblZpZXdwb3J0U3RhdGU6OlllcyA6IFZpc2libGVJblZpZXdwb3J0U3RhdGU6Ok5vOwogfQog
Ci12b2lkIFJlbmRlckVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKK3ZvaWQgUmVuZGVyRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGRvY3VtZW50KCku
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5ub3RpZnlGaW5pc2hlZChyZXNvdXJjZSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHJldmlzaW9uIDI2MTQy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2Niw3ICsyNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBpbnNlcnRlZElu
dG9UcmVlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgbm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHNldFJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMoYm9v
bCBiKSB7IG1fcmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlcyA9IGI7IH0KICAgICBi
b29sIHJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXMoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAz
LDcgKzQwMyw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnJlcGFpbnRPck1hcmtGb3JMYXlvdXQKICAg
ICBjb250ZW50Q2hhbmdlZChJbWFnZUNoYW5nZWQpOwogfQogCi12b2lkIFJlbmRlckltYWdlOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgbmV3SW1hZ2UpCit2b2lkIFJlbmRlckltYWdl
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgbmV3SW1hZ2UsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAocmVuZGVyVHJlZUJlaW5nRGVzdHJveWVk
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFJlbmRlckltYWdl
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSCiAgICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVs
ZW1lbnQoKSkpCiAgICAgICAgIHBhZ2UoKS5kaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50
KGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KCkpKTsKIAotICAgIFJlbmRlclJl
cGxhY2VkOjpub3RpZnlGaW5pc2hlZChuZXdJbWFnZSk7CisgICAgUmVuZGVyUmVwbGFjZWQ6Om5v
dGlmeUZpbmlzaGVkKG5ld0ltYWdlLCBtZXRyaWNzKTsKIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6
c2V0SW1hZ2VEZXZpY2VQaXhlbFJhdGlvKGZsb2F0IGZhY3RvcikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzEx
OSw3IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRVbml0IG1pbmltdW1SZXBsYWNlZEhlaWdodCgp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
bG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBIaXRUZXN0QWN0aW9uKSBmaW5hbDsKIAogICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBs
aWVkVG9CYWNrZ3JvdW5kKGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgQmFja2dyb3Vu
ZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KikgY29uc3QgZmluYWw7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAkocmV2aXNp
b24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBSZW5kZXJMYXllckZp
bHRlcnM6Omhhc0ZpbHRlclRoYXRTaAogICAgIHJldHVybiBtX2ZpbHRlciAmJiBtX2ZpbHRlci0+
aGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmlnaW4oKTsKIH0KIAot
dm9pZCBSZW5kZXJMYXllckZpbHRlcnM6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikK
K3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgcmVhbGx5
IHNob3VsZG4ndCBoYXZlIHRvIGludmFsaWRhdGUgbGF5ZXIgY29tcG9zaXRpb24sCiAgICAgLy8g
YnV0IHRlc3RzIGxpa2UgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtZGVsZXRlLmh0bWwg
ZmFpbCBpZiB0aGF0IGRvZXNuJ3QgaGFwcGVuLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGx5RmlsdGVyRWZmZWN0KEdyYXBo
aWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgcmVzZXREaXJ0eVNvdXJjZVJlY3QoKSB7IG1fZGlydHlTb3VyY2VSZWN0ID0gTGF5
b3V0UmVjdCgpOyB9CiAKICAgICBSZW5kZXJMYXllciYgbV9sYXllcjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYyLDcgKzE2Miw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXMK
ICAgICAgICAgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKIH0KIAotdm9pZCBTVkdGRUltYWdl
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKQordm9pZCBTVkdGRUltYWdl
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKQogewogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDI2MTQy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkRmluaXNoSW5zZXJ0aW5n
Tm9kZSgpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAko
cmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDIsNyArNTQyLDcgQEAgYm9vbCBTVkdVc2VFbGVtZW50Ojpz
ZWxmSGFzUmVsYXRpdmVMZW5ndAogICAgIHJldHVybiB0YXJnZXRDbG9uZSAmJiB0YXJnZXRDbG9u
ZS0+aGFzUmVsYXRpdmVMZW5ndGhzKCk7CiB9CiAKLXZvaWQgU1ZHVXNlRWxlbWVudDo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBTVkdVc2VFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpCiB7CiAgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhy
ZWFkOjppc1NjcmlwdEFsbG93ZWQoKSk7CiAgICAgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyAr
NzAsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CiAgICAgUGF0aCB0b0NsaXBQYXRoKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIERvY3Vt
ZW50KiBleHRlcm5hbERvY3VtZW50KCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVFeHRlcm5hbERv
Y3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYxNTM3KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wNS0xMSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEdp
dmUgc29tZSBOZXR3b3JrTG9hZE1ldHJpY3MgdG8gV2ViQ29yZU5TVVJMU2Vzc2lvbidzIGRlbGVn
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3
NTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyOTA5NDQwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxzbyByZWR1Y2VzIGR1cGxpY2F0
ZSBsb29rdXBzIGluIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyCisKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVJlc291cmNlOjpsb2FkRmluaXNoZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFTZW50KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6
bG9hZEZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
Ojpsb2FkRmluaXNoZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZU1hbmFnZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25E
ZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkRmluaXNoQ29sbGVjdGluZ01ldHJpY3M6XSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojpsb2FkRmluaXNo
ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQ
cm94eS5oOgorCiAyMDIwLTA1LTExICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIEZhaWwgbmF2aWdhdGlvbnMgdG8gbm9uIGFwcC1ib3VuZCBkb21h
aW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQgQVBJcwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAkocmV2aXNp
b24gMjYxNDI0KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsMTAgKzExMiwxMCBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmxvYWRGYWlsZWQoY29uCiAgICAgICAgIG1fY2xpZW50LT5sb2Fk
RmFpbGVkKCp0aGlzLCBlcnJvcik7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9h
ZEZpbmlzaGVkKCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZpbmlzaGVkKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMpOworICAgICAgICBtX2NsaWVudC0+bG9h
ZEZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBO
ZXR3b3JrTG9hZE1ldHJpY3M7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1v
dGVNZWRpYVBsYXllclByb3h5OwpAQCAtNTQsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoY29uc3QgY2hhciosIGludDY0X3QpOwogICAgIHZvaWQgYWNjZXNzQ29udHJv
bENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxv
YWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgbG9hZEZp
bmlzaGVkKCk7CisgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJik7CiAKIHByaXZhdGU6CiAgICAgUmVtb3RlTWVkaWFSZXNvdXJjZShSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlciYsIFJlbW90ZU1lZGlhUGxheWVyUHJveHkmLCBSZW1vdGVNZWRp
YVJlc291cmNlSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAg
dm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6cmVzcG9ucwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5yZXNwb25zZVJl
Y2VpdmVkKHJlc3BvbnNlLCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgcmVzb3VyY2UtPnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2Us
IGRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2ssIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6cmVkaXJlY3RSZWNlaXZlZChS
ZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
NzgsNyArNzgsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpyZWRpcmVjCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzLmdldChp
ZCktPnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICByZXNvdXJjZS0+cmVkaXJlY3RSZWNlaXZlZChXVEZN
b3ZlKHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhU2VudChSZW1vdGVNZWRpYVJl
c291cmNlSWRlbnRpZmllciBpZCwgdWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5
dGVzVG9CZVNlbnQpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXI6OmRhdGFTZW4KICAgICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5k
YXRhU2VudChieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CisgICAgcmVzb3VyY2UtPmRh
dGFTZW50KGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAogdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6ZGF0YVJlY2VpdmVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyIGlkLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCkBAIC05Niw3ICs5Niw3
IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFSZWMKICAgICBpZiAoIXJl
c291cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9y
ZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5kYXRhUmVjZWl2ZWQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CisgICAgcmVzb3VyY2Ut
PmRhdGFSZWNlaXZlZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSks
IGRhdGEuc2l6ZSgpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6YWNj
ZXNzQ29udHJvbENoZWNrRmFpbGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFJlbW90
ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjphY2Nlc3NDCiAgICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVz
b3VyY2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlTWVkaWFSZXNv
dXJjZXMuZ2V0KGlkKS0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGVycm9yKTsKKyAgICByZXNv
dXJjZS0+YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGVycm9yKTsKIH0KIAogdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6bG9hZEZhaWxlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRp
ZmllciBpZCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0xMTQsMTYgKzExNCwxNiBA
QCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpsb2FkRmFpCiAgICAgaWYgKCFyZXNv
dXJjZSB8fCAhcmVzb3VyY2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVt
b3RlTWVkaWFSZXNvdXJjZXMuZ2V0KGlkKS0+bG9hZEZhaWxlZChlcnJvcik7CisgICAgcmVzb3Vy
Y2UtPmxvYWRGYWlsZWQoZXJyb3IpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyOjpsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWQpCit2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFSZXNv
dXJjZUlkZW50aWZpZXIgaWQsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBhdXRvKiByZXNvdXJjZSA9IG1fcmVtb3RlTWVkaWFSZXNvdXJjZXMuZ2V0KGlkKTsKICAg
ICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJjZS0+cmVhZHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5sb2FkRmluaXNoZWQoKTsKKyAg
ICByZXNvdXJjZS0+bG9hZEZpbmlzaGVkKG1ldHJpY3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBT
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiB9CiAKQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRhdGFSZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2b2lkIGxvYWRGaW5pc2hlZChSZW1v
dGVNZWRpYVJlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBsb2FkRmluaXNoZWQoUmVtb3Rl
TWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpOwogCiAgICAgSGFzaE1hcDxSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgUmVtb3Rl
TWVkaWFSZXNvdXJjZSo+IG1fcmVtb3RlTWVkaWFSZXNvdXJjZXM7CiB9OwpJbmRleDogU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjYxNDI0KQorKysg
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+
IFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyIE4KICAgICBEYXRhUmVjZWl2ZWQoV2ViS2l0OjpS
ZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEp
CiAgICAgQWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIgaWQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgTG9hZEZh
aWxlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKQotICAgIExvYWRGaW5pc2hlZChXZWJLaXQ6OlJlbW90ZU1lZGlh
UmVzb3VyY2VJZGVudGlmaWVyIGlkKQorICAgIExvYWRGaW5pc2hlZChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbWV0
cmljcykKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNjE0
MjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4MCw2ICs3ODAsNyBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIE5TVGltZUludGVydmFsIHJlc3Bv
bnNlRW5kSW50ZXJ2YWwgPSBbbS5yZXNwb25zZUVuZERhdGUgdGltZUludGVydmFsU2luY2VEYXRl
OmZldGNoU3RhcnREYXRlXTsKIAogICAgICAgICBhdXRvJiBuZXR3b3JrTG9hZE1ldHJpY3MgPSBu
ZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtMb2FkTWV0cmljcygpOworICAgICAgICBuZXR3b3JrTG9h
ZE1ldHJpY3MuZmV0Y2hTdGFydCA9IFNlY29uZHMoZmV0Y2hTdGFydERhdGUudGltZUludGVydmFs
U2luY2UxOTcwKTsKICAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLmRvbWFpbkxvb2t1cFN0YXJ0
ID0gU2Vjb25kcyhkb21haW5Mb29rdXBTdGFydEludGVydmFsKTsKICAgICAgICAgbmV0d29ya0xv
YWRNZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCA9IFNlY29uZHMoZG9tYWluTG9va3VwRW5kSW50ZXJ2
YWwpOwogICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MuY29ubmVjdFN0YXJ0ID0gU2Vjb25kcyhj
b25uZWN0U3RhcnRJbnRlcnZhbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3Bw
CShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDkgKzg2
LDkgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmxvYWRGYWlsZQogICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkxvYWRG
YWlsZWQobV9pZCwgZXJyb3IpLCAwKTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJv
eHk6OmxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKQordm9pZCBS
ZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlcjo6TG9hZEZpbmlzaGVkKG1faWQpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpMb2FkRmluaXNoZWQobV9pZCwg
bWV0cmljcyksIDApOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgJKHJl
dmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xD
aGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5h
bDsKLSAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
KSBmaW5hbDsKKyAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmIG1fcGxhdGZvcm1NZWRpYVJlc291cmNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399156</attachid>
            <date>2020-05-12 12:50:16 -0700</date>
            <delta_ts>2020-05-12 21:15:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211759-20200512125015.patch</filename>
            <type>text/plain</type>
            <size>85686</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NSBAQAorMjAyMC0wNS0xMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEdpdmUgc29t
ZSBOZXR3b3JrTG9hZE1ldHJpY3MgdG8gV2ViQ29yZU5TVVJMU2Vzc2lvbidzIGRlbGVnYXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE3NTkKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyOTA5NDQwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcmVxdWlyZWQgcGFja2FnaW5nIHRoZSBmZXRj
aFN0YXJ0IHRpbWUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgdGltZSBkZWx0YXMsCisgICAgICAgIHBh
c3NpbmcgYSBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIGRvd24gdG8gdGhlIG1lZGlhIGxvYWRl
ciwgYW5kIHBhY2thZ2luZyB0aGUgZGF0YSB1cAorICAgICAgICBpbiBhbiBPYmpDIG9iamVjdCB0
aGF0IHByZXRlbmRzIHRvIGJlIE5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzLCBqdXN0IGxpa2UgV2Vi
Q29yZU5TVVJMU2Vzc2lvbgorICAgICAgICBwcmV0ZW5kcyB0byBiZSBhbiBOU1VSTFNlc3Npb24u
CisKKyAgICAgICAgSSBtYW51YWxseSB2ZXJpZmllZCB0aGUgTlNEYXRlcyBhcmUgY29ycmVjdC4g
IFRoaXMgaXMgbm90IHN0cmFpZ2h0Zm9yd2FyZCB0byBhdXRvbWF0ZSB0ZXN0cyBmb3IKKyAgICAg
ICAgYmVjYXVzZSBvZiB0aGUgaW5oZXJhbnQgZHluYW1pYyBuYXR1cmUgb2YgdGltaW5nIGRhdGEs
IGFuZCBiZWNhdXNlIG91ciBvdGhlciBXZWJDb3JlTlNVUkxTZXNzaW9uCisgICAgICAgIHRlc3Rz
IHVzZSBXZWJLaXRMZWdhY3ksIGFuZCB0aGF0IGFwcHJvYWNoIHdvbid0IHdvcmsgaGVyZSBiZWNh
dXNlIHdlIGFyZSBvbmx5IGhvb2tpbmcgdXAgZGF0YSBmcm9tCisgICAgICAgIE5TVVJMU2Vzc2lv
biwgd2hpY2ggaXMgb25seSB1c2VkIGluIG1vZGVybiBXZWJLaXQuCisKKyAgICAgICAgKiBNb2R1
bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdh
dG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9iZWFjb24vTmF2
aWdhdG9yQmVhY29uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlw
dExvYWRlci5oOgorICAgICAgICAqIGRvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVDbGFzc2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmg6CisgICAgICAg
ICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1l
bnQ6OmZpbmlzaGVkUGFyc2luZyk6CisgICAgICAgICogbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdExvYWRl
cjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0xpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnRzLmg6CisgICAg
ICAgICogbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jl
c291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6Y2FuY2VsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlQ2xpZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvS2VlcGFs
aXZlUmVxdWVzdFRyYWNrZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAg
ICAgKiBsb2FkZXIvaWNvbi9JY29uTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xvYWRNZXRyaWNzLmg6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3M6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzOjpkZWNvZGUpOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQ
cmlvcml0eT4+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6
Q29kZXI8T3B0aW9uYWw8V2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eT4+OjpkZWNvZGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRy
aWNzLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29weVRpbWluZ0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKG5l
dHdvcmtMb2FkTWV0cmljc0RhdGUpOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFz
a1RyYW5zYWN0aW9uTWV0cmljcyBfaW5pdFdpdGhNZXRyaWNzOl0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBmZXRjaFN0YXJ0RGF0ZV0pOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBkb21h
aW5Mb29rdXBTdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tU
cmFuc2FjdGlvbk1ldHJpY3MgZG9tYWluTG9va3VwRW5kRGF0ZV0pOgorICAgICAgICAoLVtXZWJD
b3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBjb25uZWN0U3RhcnREYXRlXSk6
CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzIHNl
Y3VyZUNvbm5lY3Rpb25TdGFydERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
blRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgY29ubmVjdEVuZERhdGVdKToKKyAgICAgICAgKC1bV2Vi
Q29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgcmVxdWVzdFN0YXJ0RGF0ZV0p
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyBy
ZXNwb25zZVN0YXJ0RGF0ZV0pOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1Ry
YW5zYWN0aW9uTWV0cmljcyByZXNwb25zZUVuZERhdGVdKToKKyAgICAgICAgKC1bV2ViQ29yZU5T
VVJMU2Vzc2lvblRhc2tNZXRyaWNzIF9pbml0V2l0aE1ldHJpY3M6XSk6CisgICAgICAgICgtW1dl
YkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0cmljcyB0cmFuc2FjdGlvbk1ldHJpY3NdKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlz
aGVkKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9maW5pc2hdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIF9yZXNvdXJjZTpsb2FkRmlu
aXNoZWRXaXRoRXJyb3I6bWV0cmljczpdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrIHJlc291cmNlOmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjpdKToK
KyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOmxvYWRGYWls
ZWRXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBy
ZXNvdXJjZUZpbmlzaGVkOm1ldHJpY3M6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayBfcmVzb3VyY2U6bG9hZEZpbmlzaGVkV2l0aEVycm9yOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2VGaW5pc2hlZDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmls
dGVyczo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlcnMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAg
ICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKwogMjAyMC0wNS0wOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vdy11bm5lZWRlZCBIQVZFKEFWRk9V
TkRBVElPTl9MT0FERVJfREVMRUdBVEUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Jl
YWNvbi9OYXZpZ2F0b3JCZWFjb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYmVhY29uL05hdmlnYXRvckJlYWNvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgY29uc3QgY2hhciogTmF2aWdhdG9yQmVhY29uOjpzdXBw
bGVtZW50TgogICAgIHJldHVybiAiTmF2aWdhdG9yQmVhY29uIjsKIH0KIAotdm9pZCBOYXZpZ2F0
b3JCZWFjb246Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQg
TmF2aWdhdG9yQmVhY29uOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKCFyZXNvdXJjZS5yZXNvdXJj
ZUVycm9yKCkuaXNOdWxsKCkpCiAgICAgICAgIGxvZ0Vycm9yKHJlc291cmNlLnJlc291cmNlRXJy
b3IoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0b3JCZWFj
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JlYWNvbi9OYXZpZ2F0
b3JCZWFjb24uaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9i
ZWFjb24vTmF2aWdhdG9yQmVhY29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0g
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGxvZ0Vycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAg
IE5hdmlnYXRvciYgbV9uYXZpZ2F0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXI6OmxvYWQoRG9jdQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENh
Y2hlZE1vZHVsZVNjcmlwdExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQordm9pZCBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9jYWNoZWRTY3JpcHQpOwog
ICAgIEFTU0VSVChtX2NhY2hlZFNjcmlwdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaAkocmV2aXNpb24gMjYx
NDI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIoQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xp
ZW50JiwgRGVmZXJyZWRQcm9taXNlJiwgQ2FjaGVkU2NyaXB0RmV0Y2hlciYsIFJlZlB0cjxNb2R1
bGVGZXRjaFBhcmFtZXRlcnM+JiYpOwogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIENhY2hlZE1vZHVsZVNj
cmlwdExvYWRlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPERlZmVy
cmVkUHJvbWlzZT4gbV9wcm9taXNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
Q2xhc3NpY1NjcmlwdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3
MCw3IEBAIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXNDYW5jZWxlZCgKICAgICByZXR1
cm4gbV9jYWNoZWRTY3JpcHQtPndhc0NhbmNlbGVkKCk7CiB9CiAKLXZvaWQgTG9hZGFibGVDbGFz
c2ljU2NyaXB0Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lk
IExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIEFTU0VSVChtX2NhY2hl
ZFNjcmlwdCk7CiAgICAgaWYgKHJlc291cmNlLnJlc291cmNlRXJyb3IoKS5pc0FjY2Vzc0NvbnRy
b2woKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRT
Y3JpcHQ+IG1fY2FjaGVkU2NyaXB0IHsgfTsKICAgICBPcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7
IFdURjo6bnVsbG9wdCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMyArNjYsMTMgQEAgU3RyaW5nIEhUTUxJ
bWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IAogICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoYXR0cik7CiB9CiAKLXZvaWQgSFRNTEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCit2b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgQVNTRVJUKGltYWdlKCkpOwogICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFn
ZSA9ICppbWFnZSgpOwogCiAgICAgUmVmPEVsZW1lbnQ+IHByb3RlY3QoZWxlbWVudCgpKTsKLSAg
ICBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoY2FjaGVkSW1hZ2UpOworICAgIEltYWdlTG9h
ZGVyOjpub3RpZnlGaW5pc2hlZChjYWNoZWRJbWFnZSwgbWV0cmljcyk7CiAKICAgICBib29sIGxv
YWRFcnJvciA9IGNhY2hlZEltYWdlLmVycm9yT2NjdXJyZWQoKSB8fCBjYWNoZWRJbWFnZS5yZXNw
b25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOwogICAgIGlmICghbG9hZEVycm9yKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgc291cmNlVVJJKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lk
IEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiAgICAgICAgIGlmIChkYXRhICYmIGxv
YWRlcigpLT5pc0xvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCiAgICAgICAgICAgICBkYXRhID0g
ZGF0YS0+Y29weSgpOwogCi0gICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5n
ZXQoKSk7CisgICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5nZXQoKSwgeyB9
KTsKICAgICAgICAgY2FjaGVkSW1hZ2UuZmluaXNoKCk7CiAKICAgICAgICAgLy8gUmVwb3J0IHRo
ZSBuYXR1cmFsIGltYWdlIHNpemUgaW4gdGhlIHBhZ2UgdGl0bGUsIHJlZ2FyZGxlc3Mgb2Ygem9v
bSBsZXZlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBBcHBsaWNhdGkK
ICAgICByZXR1cm4gbV9wcm9jZXNzZWRNYW5pZmVzdDsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbk1h
bmlmZXN0TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2
b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgbV9kb2N1bWVu
dExvYWRlci5maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KCp0aGlzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9BcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgT3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mIHByb2Nlc3NNYW5pZmVzdCgpOwog
CiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKKyAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAgICBP
cHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtX3Byb2Nlc3NlZE1hbmlmZXN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjp2YWxpZGEKICAgICBsb2FkZXIu
cHJlZmxpZ2h0U3VjY2VzcyhXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAotdm9pZCBDcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwogICAgIGlm
IChtX3Jlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZp
c2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogCiAgICAgc3RhdGljIHZvaWQgaGFuZGxlTG9hZGluZ0Zh
aWx1cmUoRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VFcnJvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKICAgICByZXR1cm4gaXNMb2FkaW5nTWFpblJlc291
cmNlKCkgfHwgIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSB8fCAhbV9wbHVnSW5TdHJl
YW1Mb2FkZXJzLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudExvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNyArNDQ2LDcgQEAgcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwcmV2aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQy
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmZpbmlzaGVkVAogICAgIG1fY2xpZW50LT5kaWRGaW5pc2hUaW1pbmcocmVzb3Vy
Y2VUaW1pbmcpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgJKHJldmlzaW9u
IDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVk
VGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5n
Jikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNv
bnN0IFJlc291cmNlVGltaW5nJik7Ci0gICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjIsNyArMzIyLDcgQEAgaW5saW5lIHZvaWQgSW1hZ2VMb2FkZXI6OnJlamVjdERlY29kZVBy
bwogICAgIHJlamVjdFByb21pc2VzKG1fZGVjb2RpbmdQcm9taXNlcywgbWVzc2FnZSk7CiB9CiAK
LXZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKK3ZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlQobV9mYWlsZWRM
b2FkVVJMLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNl
ID09IG1faW1hZ2UuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IEltYWdlTG9hZGVyKEVsZW1lbnQmKTsKLSAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIGVudW0gY2xhc3MgTGF6eUltYWdlTG9hZFN0YXRlIDogdWludDhfdCB7IE5v
bmUsIERlZmVycmVkLCBMb2FkSW1tZWRpYXRlbHksIEZ1bGxJbWFnZSB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgTGlua0xvYWRlcjo6dHJpZ2dlckV2ZW50cyhjb25zdCBDYWMKICAgICAgICAgbV9j
bGllbnQubGlua0xvYWRlZCgpOwogfQogCi12b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3ZvaWQgTGlua0xvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQog
ewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fY2FjaGVkTGlua1Jlc291cmNlLmdldCgp
ID09ICZyZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxMb2Fk
KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBzdGF0aWMgdm9pZCBwcmVjb25u
ZWN0SWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwgRG9jdW1lbnQmKTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IHByZWxvYWRJ
Zk5lZWRlZChjb25zdCBMaW5rTG9hZFBhcmFtZXRlcnMmLCBEb2N1bWVudCYsIExpbmtMb2FkZXIq
KTsKICAgICB2b2lkIHByZWZldGNoSWZOZWVkZWQoY29uc3QgTGlua0xvYWRQYXJhbWV0ZXJzJiwg
RG9jdW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJlbG9hZFJlc291
cmNlQ2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rUHJl
bG9hZFJlc291cmNlQ2xpZW50cy5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMo
cmVzb3VyY2UpOyB9CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhy
ZXNvdXJjZSk7IH0KICAgICB2b2lkIGNsZWFyKCkgZmluYWwgeyBjbGVhclJlc291cmNlKCp0aGlz
KTsgfQogICAgIGJvb2wgc2hvdWxkTWFya0FzUmVmZXJlbmNlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiB9OwpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
IGZpbmFsIHsgdHJpZ2dlckV2ZW50cyhyZXNvdXJjZSk7IH0KKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsgfQogICAgIHZvaWQgY2xlYXIoKSBmaW5h
bCB7IGNsZWFyUmVzb3VyY2UoKnRoaXMpOyB9CiAgICAgYm9vbCBzaG91bGRNYXJrQXNSZWZlcmVu
Y2VkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIH07CkBAIC0xNTcsNyArMTU3LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkgZmluYWwgeyB0cmlnZ2VyRXZlbnRzKHJlc291cmNlKTsg
fQorICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHRyaWdnZXJFdmVudHMocmVzb3VyY2UpOyB9
CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsIHsgY2xlYXJSZXNvdXJjZSgqdGhpcyk7IH0KICAgICBi
b29sIHNob3VsZE1hcmtBc1JlZmVyZW5jZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQg
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFIKICAgICAgICAgbV9jbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNv
dXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBNZWRp
YVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lk
IE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlCiAgICAgICAgIGlmIChtX3Jlc291
cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRG
YWlsZWQoKnRoaXMsIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fY2xpZW50LT5sb2FkRmluaXNoZWQoKnRoaXMpOworICAgICAgICAgICAg
bV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiAgICAgfQogICAgIHN0b3Ao
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIu
aAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3Vy
Y2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlk
ZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIE1lZGlhUmVzb3VyY2UoTWVkaWFS
ZXNvdXJjZUxvYWRlciYsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uCiAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlc291cmNl
RGF0YSgpOwogICAgICAgICBpZiAobV9sb2FkaW5nTXVsdGlwYXJ0Q29udGVudCAmJiBidWZmZXIg
JiYgYnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSByZXNvdXJjZSBkYXRhIHdp
bGwgY2hhbmdlIGFzIHRoZSBuZXh0IHBhcnQgaXMgbG9hZGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ug
YSBjb3B5LgotICAgICAgICAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9hZGluZyhidWZmZXItPmNv
cHkoKS5wdHIoKSk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT5maW5pc2hMb2FkaW5nKGJ1ZmZl
ci0+Y29weSgpLnB0cigpLCB7IH0pOwogICAgICAgICAgICAgY2xlYXJSZXNvdXJjZURhdGEoKTsK
ICAgICAgICAgICAgIC8vIFNpbmNlIGEgc3VicmVzb3VyY2UgbG9hZGVyIGRvZXMgbm90IGxvYWQg
bXVsdGlwYXJ0IHNlY3Rpb25zIHByb2dyZXNzaXZlbHksIGRhdGEgd2FzIGRlbGl2ZXJlZCB0byB0
aGUgbG9hZGVyIGFsbCBhdCBvbmNlLgogICAgICAgICAgICAgLy8gQWZ0ZXIgdGhlIGZpcnN0IG11
bHRpcGFydCBzZWN0aW9uIGlzIGNvbXBsZXRlLCBzaWduYWwgdG8gZGVsZWdhdGVzIHRoYXQgdGhp
cyBsb2FkIGlzICJmaW5pc2hlZCIKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nCiAgICAgICAgIHRyYWNlUG9pbnQoU3VicmVzb3VyY2VM
b2FkRGlkRW5kKTsKIAogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7Ci0gICAgbV9yZXNvdXJjZS0+
ZmluaXNoTG9hZGluZyhyZXNvdXJjZURhdGEoKSk7CisgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9h
ZGluZyhyZXNvdXJjZURhdGEoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIAogICAgIGlmICh3YXND
YW5jZWxsZWQoKSkgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hM
b2FkaW5nOiB3YXMgY2FuY2VsZWQiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBA
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjb3JzUG9saWN5UHJldmVudGUKICAgICBtX3N0YXRlID0g
RmFpbGVkOwogfQogCi12b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX3Jlc291cmNlID09ICZyZXNvdXJjZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDI2
MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gQ2Fj
aGVkUmVzb3VyY2VDbGllbnQKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JikgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVwcmVjYXRlZERpZFJlY2Vp
dmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCiAgICAgLy8gV2ViVlRU
UGFyc2VyQ2xpZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlcwogICAgIH0KIAogICAg
IGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCkgewotICAgICAgICBub3RpZnlG
aW5pc2hlZCgqbV9yZXNvdXJjZSk7CisgICAgICAgIG5vdGlmeUZpbmlzaGVkKCptX3Jlc291cmNl
LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZAogICAgIGNhbGxiYWNrKFdURk1v
dmUobmV3UmVxdWVzdCkpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3
ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMgKzQw
LDEzIEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2EKIHsKIH0KIAot
dm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Ci0gICAgQ2FjaGVkUmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIHZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBjaHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
ICAgIE9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIFJlZlB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcg
Kzk3LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZybwogICAgICAg
ICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwog
fQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1f
ZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAp
OwpAQCAtMTA1LDEyICsxMDUsMTIgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hM
b2FkaW5nKAogICAgIGlmIChkYXRhKQogICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkg
dG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRl
LgogICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IFN0cmluZygpOwogfQogCi12b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hl
Y2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5n
KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsMTIgKzU1LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKSBmaW5hbDsKIAotICAgIHZvaWQgY2hlY2tOb3RpZnkoKSBmaW5hbDsKKyAg
ICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAg
ICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICBTdHJpbmcgbV9k
ZWNvZGVkU2hlZXRUZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzbwogICAgICAgICBzdGF0aWNfY2Fz
dDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9p
ZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29k
ZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgc2V0TG9hZGlu
ZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05vdGlmeShtZXRyaWNzKTsK
IH0KIAogdm9pZCBDYWNoZWRGb250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6YWxsQ2xp
ZW50c1JlbW92ZWQoKQogICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG51bGxwdHI7CiB9
CiAKLXZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkoKQordm9pZCBDYWNoZWRGb250OjpjaGVj
a05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChpc0xvYWRpbmco
KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxNCArNjUsMTQgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNv
bnN0OwogCi0gICAgdm9pZCBjaGVja05vdGlmeSgpIG92ZXJyaWRlOworICAgIHZvaWQgY2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlU
cnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9hZChD
YWNoZWRSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNT
RVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVz
b3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRz
UmVtb3ZlZCgpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw3ICs1NjUs
NyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IGNoYXIqCiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFn
ZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsK
ICAgICBpZiAobV9kYXRhKSB7CkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdQogICAgIH0KIAogICAgIG5vdGlmeU9ic2VydmVycygpOwot
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZEltYWdl
OjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAog
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYQogCiAgICAgaWYgKG1fZGVsYXllZEZpbmlzaExvYWRp
bmcpIHsKICAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9kZWxheWVkRmluaXNoTG9hZGluZywgV1RGOjpudWxsb3B0KTsKLSAgICAgICAgZmluaXNoTG9h
ZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpKTsKKyAgICAgICAgZmluaXNo
TG9hZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpLCB7IH0pOwogICAgIH0K
IH0KIApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRh
KGNvbnN0CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0K
IAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2lu
SW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5j
aHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMg
dXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2gKICAgICBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNl
bWVudCA9IG1fbG9hZGVyICYmICFtX2xvYWRlci0+aXNRdWlja0xvb2tSZXNvdXJjZSgpOwogI2Vu
ZGlmCiAKLSAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhKTsKKyAgICBDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKICAgICBpZiAoZGF0YUJ1
ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhICYmIHRoaXMt
PmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpIHsKICAgICAgICAgaWYgKG1fbG9hZGVyKQogICAgICAgICAgICAgbV9sb2FkZXItPnNl
dERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7
CiAgICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZpbmFsOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyArMzE5LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZQogICAgICAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRy
KCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVu
dGlmaWVyLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZmluaXNoTG9hZGluZyhudWxscHRyKTsKKyAgICAgICAgICAgIGZpbmlzaExv
YWRpbmcobnVsbHB0ciwgeyB9KTsKICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0
eU1ldHJpY3M7CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcocHJvdGVjdGVkRnJhbWUucHRyKCksIHByb3RlY3RlZEZyYW1lLT5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyLCBlbXB0eU1ldHJpY3MsIG51bGxwdHIp
OwogICAgICAgICB9KTsKQEAgLTM2NiwxNCArMzY2LDE0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnNldEJvZHlEYXRhRnJvbShjb24KICAgICBzZXRFbmNvZGVkU2l6ZShyZXNvdXJjZS5lbmNvZGVk
U2l6ZSgpKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoKQordm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIGlmIChpc0xvYWRpbmcoKSB8fCBzdGlsbE5lZWRzTG9hZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJj
ZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQotICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlz
aGVkKCp0aGlzKTsKKyAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmlj
cyk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIm
KQpAQCAtMzg2LDEwICszODYsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShj
b25zdCBjaAogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7Ci0gICAgY2hlY2tOb3RpZnkoKTsKKyAgICBjaGVja05v
dGlmeShtZXRyaWNzKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZXJyb3IoQ2FjaGVkUmVz
b3VyY2U6OlN0YXR1cyBzdGF0dXMpCkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZTo6ZXJyb3IoQ2FjaGVkUmVzb3VyYwogICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05vdGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsg
fSk7CiB9CiAgICAgCiB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKQEAgLTQxNCw3
ICs0MTQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjYW5jZWxMb2FkKCkKICAgICAgICAgc2V0
U3RhdHVzKExvYWRFcnJvcik7CiAKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KHsgfSk7CiB9CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaCgpCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRk
Q2xpZW50KENhY2hlZAogCiAgICAgLy8gRklYTUU6IE1ha2UgY2FsbHMgdG8gbm90aWZ5RmluaXNo
ZWQgYXN5bmMKICAgICBpZiAoIWlzTG9hZGluZygpICYmICFzdGlsbE5lZWRzTG9hZCgpKQotICAg
ICAgICBjbGllbnQubm90aWZ5RmluaXNoZWQoKnRoaXMpOworICAgICAgICBjbGllbnQubm90aWZ5
RmluaXNoZWQoKnRoaXMsIHsgfSk7CiB9CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVu
dFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMjYxNDI0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
Q29va2llSmFyOwogY2xhc3MgTG9hZFRpbWluZzsKIGNsYXNzIE1lbW9yeUNhY2hlOworY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKQEAgLTExMyw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNl
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBA
IC0zMTQsNyArMzE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGVjb2RlZERhdGFEZWxldGlv
blRpbWVyRmlyZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGVja05vdGlmeSgpOworICAgIHZp
cnR1YWwgdm9pZCBjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2
aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIFNlY29uZHMgZnJlc2huZXNzTGlmZXRpbWUoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlQ2xpZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291
cmNlOworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNs
aWVudCB7CiBwdWJsaWM6CkBAIC0zOSw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
dmlydHVhbCB+Q2FjaGVkUmVzb3VyY2VDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UmKSB7IH0KIAogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gQmFzZVJlc291cmNlVHlwZTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgU3RyaW5n
IENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbgogICAgIHJldHVybiBtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCByZXNwb25zZSgpLnVybCgpKTsKICAgICAgICAgbV9kb2N1bWVudC0+c2V0
Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKSk7CiAgICAgfQotICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEpOwor
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURl
Y29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rl
Y29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAkocmV2aXNp
b24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5NiwxMSBAQCB1bnNpZ25lZCBDYWNoZWRTY3Jp
cHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVk
U2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGRhdGE7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEpOworICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEs
IG1ldHJpY3MpOwogfQogCiB2b2lkIENhY2hlZFNjcmlwdDo6ZGVzdHJveURlY29kZWREYXRhKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAg
ICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMjYxNDI0
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSwxMCBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6dXBk
YXRlQnVmZmVyKFNoYXJlCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsK
IH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSk7Cisg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgJ
KHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciopOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjEsMTcgKzYxLDE3IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGMK
ICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBkYXRhOwog
ICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKICAgICBpZiAoZGF0
YSkKICAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKLSAgICBjaGVja05v
dGlmeSgpOworICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFhTTFN0
eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KCkKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6Y2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTMgKzQxLDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHNoZWV0KCkgY29u
c3QgeyByZXR1cm4gbV9zaGVldDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgY2hlY2tOb3RpZnko
KSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JikgZmluYWw7CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAJKHJldmlz
aW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9LZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlcjo6cmVzcG9uc2VSZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCi12b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lkIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpCiB7CiAgICAgdW5yZWdpc3RlclJlcXVlc3QocmVzb3VyY2UpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0tlZXBhbGl2ZVJlcXVlc3RU
cmFja2VyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9LZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCByZWdpc3RlclJlcXVlc3QoQ2FjaGVkUmVzb3VyY2UmKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSWNvbkxvYWRlcjo6c3RvcExvYWRpbmcoKQog
ICAgIH0KIH0KIAotdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCit2b2lkIEljb25Mb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExvYWRlcjsKICAg
ICBVUkwgbV91cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24g
MjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgY2hhciosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KIH07
CiAKIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW4+IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29y
ZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgV2ViQ29y
ZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2UKICAgICBmdWxmaWxsUmVxdWVzdFdpdGhSZXNv
dXJjZShyZXNvdXJjZSk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQordm9pZCBXZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRP
ckNhbmNlbGVkKCkpIHsKICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzOTg3NDE3PiBTZXQg
dGhlIGNvbnRlbnRUeXBlIG9mIHRoZSBjb250ZW50SW5mb3JtYXRpb25SZXF1ZXN0IHRvIGFuIGVt
cHR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgY2hhcios
IGludCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVl
c3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQkocmV2aXNpb24gMjYx
NDI0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsOwotICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlJik7
CiAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OnJl
c3BvbnNlCiAgICAgbV9wYXJlbnQucmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmVzb3VyY2VNZWRpYUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlKQordm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
CiB7CiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKICAgICAgICAg
bV9wYXJlbnQubG9hZEZhaWxlZChyZXNvdXJjZS5yZXNvdXJjZUVycm9yKCkpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgY2hhciosIGludCkgZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7IH0KICAgICB2b2lkIGxvYWRGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFs
IHsgbG9hZEZhaWxlZChlcnJvcik7IH0KLSAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmKSBmaW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CisgICAgdm9pZCBsb2FkRmlu
aXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
JiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAJKHJl
dmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3
ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2FkRmluaXNoZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2dyb3dCbG9ja3NpemVMaW1pdCB7IDEg
fTsKICAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2dyb3dCbG9ja3NpemVDb3VudCB7IDIgfTsK
QEAgLTExNzAsNyArMTE3MCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmxvYWQKICAgICBtZW1iZXJzLT5yZXNwb25zZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2Fk
RmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3Jj
ID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZE1ldHJpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0cmljcy5oCShyZXZpc2lvbiAy
NjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkTWV0
cmljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw5IEBAIHB1YmxpYzoKICAgICBib29s
IGlzQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBjb21wbGV0ZTsgfQogICAgIHZvaWQgbWFya0Nv
bXBsZXRlKCkgeyBjb21wbGV0ZSA9IHRydWU7IH0KIAotICAgIC8vIFRoZXNlIHNob3VsZCBiZSB0
cmVhdGVkIGFzIGRlbHRhcyB0byBMb2FkVGltaW5nJ3MgZmV0Y2hTdGFydC4KKyAgICBTZWNvbmRz
IGZldGNoU3RhcnQ7CisKKyAgICAvLyBUaGVzZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBkZWx0YXMg
dG8gZmV0Y2hTdGFydC4KICAgICAvLyBUaGV5IHNob3VsZCBiZSBpbiBhc2NlbmRpbmcgb3JkZXIg
YXMgbGlzdGVkIGhlcmUuCiAgICAgU2Vjb25kcyBkb21haW5Mb29rdXBTdGFydCB7IC0xIH07ICAg
ICAvLyAtMSBpZiBubyBETlMuCiAgICAgU2Vjb25kcyBkb21haW5Mb29rdXBFbmQgeyAtMSB9OyAg
ICAgICAvLyAtMSBpZiBubyBETlMuCkBAIC04MSw2ICs4Myw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBjb3B5OwogCisgICAgICAgIGNvcHkuZmV0Y2hTdGFy
dCA9IGZldGNoU3RhcnQ7CisKICAgICAgICAgY29weS5kb21haW5Mb29rdXBTdGFydCA9IGRvbWFp
bkxvb2t1cFN0YXJ0OwogICAgICAgICBjb3B5LmRvbWFpbkxvb2t1cEVuZCA9IGRvbWFpbkxvb2t1
cEVuZDsKICAgICAgICAgY29weS5jb25uZWN0U3RhcnQgPSBjb25uZWN0U3RhcnQ7CkBAIC0xMTAs
NyArMTE0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gZG9tYWluTG9v
a3VwU3RhcnQgPT0gb3RoZXIuZG9tYWluTG9va3VwU3RhcnQKKyAgICAgICAgcmV0dXJuIGZldGNo
U3RhcnQgPT0gb3RoZXIuZmV0Y2hTdGFydAorICAgICAgICAgICAgJiYgZG9tYWluTG9va3VwU3Rh
cnQgPT0gb3RoZXIuZG9tYWluTG9va3VwU3RhcnQKICAgICAgICAgICAgICYmIGRvbWFpbkxvb2t1
cEVuZCA9PSBvdGhlci5kb21haW5Mb29rdXBFbmQKICAgICAgICAgICAgICYmIGNvbm5lY3RTdGFy
dCA9PSBvdGhlci5jb25uZWN0U3RhcnQKICAgICAgICAgICAgICYmIHNlY3VyZUNvbm5lY3Rpb25T
dGFydCA9PSBvdGhlci5zZWN1cmVDb25uZWN0aW9uU3RhcnQKQEAgLTE2NSw2ICsxNzAsNyBAQCBX
RUJDT1JFX0VYUE9SVCBCb3g8TmV0d29ya0xvYWRNZXRyaWNzPiBjCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBOZXR3b3JrTG9hZE1ldHJpY3M6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogeworICAgIGVuY29kZXIgPDwgZmV0Y2hTdGFydDsKICAgICBlbmNvZGVyIDw8IGRv
bWFpbkxvb2t1cFN0YXJ0OwogICAgIGVuY29kZXIgPDwgZG9tYWluTG9va3VwRW5kOwogICAgIGVu
Y29kZXIgPDwgY29ubmVjdFN0YXJ0OwpAQCAtMTkxLDcgKzE5Nyw4IEBAIHZvaWQgTmV0d29ya0xv
YWRNZXRyaWNzOjplbmNvZGUoRW5jb2RlciYKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBib29s
IE5ldHdvcmtMb2FkTWV0cmljczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobWV0cmljcy5k
b21haW5Mb29rdXBTdGFydCkKKyAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUobWV0cmljcy5mZXRj
aFN0YXJ0KQorICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmRvbWFpbkxvb2t1cFN0
YXJ0KQogICAgICAgICAmJiBkZWNvZGVyLmRlY29kZShtZXRyaWNzLmRvbWFpbkxvb2t1cEVuZCkK
ICAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUobWV0cmljcy5jb25uZWN0U3RhcnQpCiAgICAgICAg
ICYmIGRlY29kZXIuZGVjb2RlKG1ldHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0YXJ0KQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrTG9hZE1ldHJpY3MubW0JKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw2ICs1Niw3IEBAIEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+IGNvcHlUaW1pbmdE
YXRhKE4KICAgICBkb3VibGUgcmVxdWVzdFN0YXJ0ID0gdGltaW5nVmFsdWUodGltaW5nRGF0YSwg
QCJfa0NGTlRpbWluZ0RhdGFSZXF1ZXN0U3RhcnQiKTsKICAgICBkb3VibGUgcmVzcG9uc2VTdGFy
dCA9IHRpbWluZ1ZhbHVlKHRpbWluZ0RhdGEsIEAiX2tDRk5UaW1pbmdEYXRhUmVzcG9uc2VTdGFy
dCIpOwogCisgICAgdGltaW5nLT5mZXRjaFN0YXJ0ID0gU2Vjb25kcyhyZWZlcmVuY2VTdGFydCk7
CiAgICAgdGltaW5nLT5kb21haW5Mb29rdXBTdGFydCA9IFNlY29uZHMoZG9tYWluTG9va3VwU3Rh
cnQgPD0gMCA/IC0xIDogZG9tYWluTG9va3VwU3RhcnQgLSByZWZlcmVuY2VTdGFydCk7CiAgICAg
dGltaW5nLT5kb21haW5Mb29rdXBFbmQgPSBTZWNvbmRzKGRvbWFpbkxvb2t1cEVuZCA8PSAwID8g
LTEgOiBkb21haW5Mb29rdXBFbmQgLSByZWZlcmVuY2VTdGFydCk7CiAgICAgdGltaW5nLT5jb25u
ZWN0U3RhcnQgPSBTZWNvbmRzKGNvbm5lY3RTdGFydCA8PSAwID8gLTEgOiBjb25uZWN0U3RhcnQg
LSByZWZlcmVuY2VTdGFydCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCShyZXZpc2lv
biAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDEyMSBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorc3RhdGlj
IE5TRGF0ZSAqIF9fbnVsbGFibGUgbmV0d29ya0xvYWRNZXRyaWNzRGF0ZShTZWNvbmRzIGZldGNo
U3RhcnQsIFNlY29uZHMgZGVsdGEpCit7CisgICAgaWYgKCFmZXRjaFN0YXJ0LnZhbHVlKCkpCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgaWYgKGRlbHRhLnZhbHVlKCkgPT0gLTEpCisgICAgICAg
IHJldHVybiBuaWw7CisgICAgcmV0dXJuIFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5j
ZTE5NzA6ZmV0Y2hTdGFydC52YWx1ZSgpICsgZGVsdGEudmFsdWUoKV07Cit9CisKK0BpbnRlcmZh
Y2UgV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgOiBOU09iamVjdAor
LSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1ldHJpY3M6KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpbWV0cmljczsKK0Bwcm9wZXJ0eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5
KSBOU0RhdGUgKmZldGNoU3RhcnREYXRlOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVh
ZG9ubHkpIE5TRGF0ZSAqZG9tYWluTG9va3VwU3RhcnREYXRlOworQHByb3BlcnR5IChudWxsYWJs
ZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0ZSAqZG9tYWluTG9va3VwRW5kRGF0ZTsKK0Bwcm9wZXJ0
eSAobnVsbGFibGUsIGNvcHksIHJlYWRvbmx5KSBOU0RhdGUgKmNvbm5lY3RTdGFydERhdGU7CitA
cHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkgTlNEYXRlICpzZWN1cmVDb25uZWN0
aW9uU3RhcnREYXRlOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVhZG9ubHkpIE5TRGF0
ZSAqY29ubmVjdEVuZERhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBjb3B5LCByZWFkb25seSkg
TlNEYXRlICpyZXF1ZXN0U3RhcnREYXRlOworQHByb3BlcnR5IChudWxsYWJsZSwgY29weSwgcmVh
ZG9ubHkpIE5TRGF0ZSAqcmVzcG9uc2VTdGFydERhdGU7CitAcHJvcGVydHkgKG51bGxhYmxlLCBj
b3B5LCByZWFkb25seSkgTlNEYXRlICpyZXNwb25zZUVuZERhdGU7CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBXZWJDb3JlTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyB7CisgICAg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIF9tZXRyaWNzOworfQorCistIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoTWV0cmljczooY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJilt
ZXRyaWNzCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgX21ldHJpY3MgPSBtZXRyaWNzOworICAgIHJldHVybiBzZWxmOworfQorCitA
ZHluYW1pYyBmZXRjaFN0YXJ0RGF0ZTsKKy0gKG51bGxhYmxlIE5TRGF0ZSAqKWZldGNoU3RhcnRE
YXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljc0RhdGUoX21ldHJpY3MuZmV0Y2hT
dGFydCwgU2Vjb25kcygwKSk7Cit9CisKK0BkeW5hbWljIGRvbWFpbkxvb2t1cFN0YXJ0RGF0ZTsK
Ky0gKG51bGxhYmxlIE5TRGF0ZSAqKWRvbWFpbkxvb2t1cFN0YXJ0RGF0ZQoreworICAgIHJldHVy
biBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZldGNoU3RhcnQsIF9tZXRyaWNzLmRv
bWFpbkxvb2t1cFN0YXJ0KTsKK30KKworQGR5bmFtaWMgZG9tYWluTG9va3VwRW5kRGF0ZTsKKy0g
KG51bGxhYmxlIE5TRGF0ZSAqKWRvbWFpbkxvb2t1cEVuZERhdGUKK3sKKyAgICByZXR1cm4gbmV0
d29ya0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBfbWV0cmljcy5kb21haW5M
b29rdXBFbmQpOworfQorCitAZHluYW1pYyBjb25uZWN0U3RhcnREYXRlOworLSAobnVsbGFibGUg
TlNEYXRlICopY29ubmVjdFN0YXJ0RGF0ZQoreworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJp
Y3NEYXRlKF9tZXRyaWNzLmZldGNoU3RhcnQsIF9tZXRyaWNzLmNvbm5lY3RTdGFydCk7Cit9CisK
K0BkeW5hbWljIHNlY3VyZUNvbm5lY3Rpb25TdGFydERhdGU7CistIChudWxsYWJsZSBOU0RhdGUg
KilzZWN1cmVDb25uZWN0aW9uU3RhcnREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0
cmljc0RhdGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3Muc2VjdXJlQ29ubmVjdGlvblN0
YXJ0KTsKK30KKworQGR5bmFtaWMgY29ubmVjdEVuZERhdGU7CistIChudWxsYWJsZSBOU0RhdGUg
Kiljb25uZWN0RW5kRGF0ZQoreworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9t
ZXRyaWNzLmZldGNoU3RhcnQsIF9tZXRyaWNzLmNvbm5lY3RFbmQpOworfQorCitAZHluYW1pYyBy
ZXF1ZXN0U3RhcnREYXRlOworLSAobnVsbGFibGUgTlNEYXRlICopcmVxdWVzdFN0YXJ0RGF0ZQor
eworICAgIHJldHVybiBuZXR3b3JrTG9hZE1ldHJpY3NEYXRlKF9tZXRyaWNzLmZldGNoU3RhcnQs
IF9tZXRyaWNzLnJlcXVlc3RTdGFydCk7Cit9CisKK0BkeW5hbWljIHJlc3BvbnNlU3RhcnREYXRl
OworLSAobnVsbGFibGUgTlNEYXRlICopcmVzcG9uc2VTdGFydERhdGUKK3sKKyAgICByZXR1cm4g
bmV0d29ya0xvYWRNZXRyaWNzRGF0ZShfbWV0cmljcy5mZXRjaFN0YXJ0LCBfbWV0cmljcy5yZXNw
b25zZVN0YXJ0KTsKK30KKworQGR5bmFtaWMgcmVzcG9uc2VFbmREYXRlOworLSAobnVsbGFibGUg
TlNEYXRlICopcmVzcG9uc2VFbmREYXRlCit7CisgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmlj
c0RhdGUoX21ldHJpY3MuZmV0Y2hTdGFydCwgX21ldHJpY3MucmVzcG9uc2VFbmQpOworfQorCitA
ZW5kCisKK0BpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzIDogTlNPYmpl
Y3QKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNZXRyaWNzOihjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3M7CitAcHJvcGVydHkgKGNvcHksIHJlYWRvbmx5KSBOU0Fy
cmF5PE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKj4gKnRyYW5zYWN0aW9uTWV0
cmljczsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrTWV0
cmljcyB7CisgICAgUmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25N
ZXRyaWNzPiBfdHJhbnNhY3Rpb25NZXRyaWNzOworfQorCistIChpbnN0YW5jZXR5cGUpX2luaXRX
aXRoTWV0cmljczooY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiltZXRyaWNzCit7
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgX3RyYW5zYWN0aW9uTWV0cmljcyA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uVGFz
a1RyYW5zYWN0aW9uTWV0cmljcyBhbGxvY10gX2luaXRXaXRoTWV0cmljczptZXRyaWNzXSk7Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKK0BkeW5hbWljIHRyYW5zYWN0aW9uTWV0cmljczsKKy0gKE5T
QXJyYXk8TlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyAqPiAqKXRyYW5zYWN0aW9u
TWV0cmljcworeworICAgIHJldHVybiBAWyAoTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0
cmljcyAqKXNlbGYtPl90cmFuc2FjdGlvbk1ldHJpY3MuZ2V0KCkgXTsKK30KKworQGVuZAorCiBA
aW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gKCkKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIFBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyOwogQHByb3BlcnR5IChyZWFkd3JpdGUs
IHJldGFpbikgaWQ8TlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlPiBkZWxlZ2F0ZTsKQEAgLTYzLDcg
KzE3OCw3IEBAIC0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYKIC0gKHZv
aWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgcmVjZWl2ZWRSZWRp
cmVjdDooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooUmVzb3VyY2VS
ZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZFdpdGhFcnJvcjooY29uc3QgUmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6
KGNvbnN0IFJlc291cmNlRXJyb3ImKWVycm9yOwotLSAodm9pZClyZXNvdXJjZUZpbmlzaGVkOihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlOworLSAodm9pZClyZXNvdXJjZUZpbmlzaGVk
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIG1ldHJpY3M6KGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpbWV0cmljczsKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECkBAIC0z
ODksNyArNTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IGNoYXIqIC8qIGRhdGEgKi8sIGludCAvKiBsZW5ndGggKi8pIG92
ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwotICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIExvY2sgbV90
YXNrTG9jazsKQEAgLTQ2OSwxMyArNTg0LDEzIEBAIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrQ2xpZW50OjoKICAgICBbbV90YXNrIHJlc291cmNlOnJlc291cmNlIGxvYWRGYWlsZWRX
aXRoRXJyb3I6ZXJyb3JdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lk
IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rhc2tMb2NrKTsKICAgICBpZiAoIW1fdGFz
aykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW21fdGFzayByZXNvdXJjZUZpbmlzaGVkOnJlc291
cmNlXTsKKyAgICBbbV90YXNrIHJlc291cmNlRmluaXNoZWQ6cmVzb3VyY2UgbWV0cmljczptZXRy
aWNzXTsKIH0KIAogfQpAQCAtNTQxLDcgKzY1Niw3IEBAIC0gKHZvaWQpX2ZpbmlzaAogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKF9yZXNvdXJjZSkKLSAgICAgICAgW3Nl
bGYgcmVzb3VyY2VGaW5pc2hlZDoqX3Jlc291cmNlXTsKKyAgICAgICAgW3NlbGYgcmVzb3VyY2VG
aW5pc2hlZDoqX3Jlc291cmNlIG1ldHJpY3M6TmV0d29ya0xvYWRNZXRyaWNzIHsgfV07CiB9CiAK
ICNwcmFnbWEgbWFyayAtIE5TVVJMU2Vzc2lvbiBBUEkKQEAgLTcxOSw3ICs4MzQsNyBAQCAtICh2
b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmCiAgICAgfV07CiB9CiAKLS0gKHZv
aWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGxvYWRGaW5pc2hl
ZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCistICh2b2lkKV9yZXNvdXJjZTooUGxhdGZvcm1N
ZWRpYVJlc291cmNlJilyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRoRXJyb3I6KE5TRXJyb3IgKill
cnJvciBtZXRyaWNzOihjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKW1ldHJpY3MKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBpZiAo
c2VsZi5zdGF0ZSA9PSBOU1VSTFNlc3Npb25UYXNrU3RhdGVDb21wbGV0ZWQpCkBAIC03MjksOCAr
ODQ0LDEyIEBAIC0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UKICAgICBS
ZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBzdHJvbmdTZWxmIHsgc2VsZiB9
OwogICAgIFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uPiBzdHJvbmdTZXNzaW9uIHsgc2Vs
Zi5zZXNzaW9uIH07CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IHN0cm9uZ0Vycm9yIHsgZXJyb3Ig
fTsKLSAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmLCBz
dHJvbmdTZXNzaW9uLCBzdHJvbmdFcnJvcl0geworICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdh
dGVPcGVyYXRpb246W3N0cm9uZ1NlbGYsIHN0cm9uZ1Nlc3Npb24sIHN0cm9uZ0Vycm9yLCBtZXRy
aWNzID0gbWV0cmljcy5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBpZDxOU1VSTFNlc3Npb25U
YXNrRGVsZWdhdGU+IGRlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvblRhc2tEZWxlZ2F0ZT4pc3Ry
b25nU2Vzc2lvbi5nZXQoKS5kZWxlZ2F0ZTsKKworICAgICAgICBpZiAoW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjp0YXNrOmRpZEZpbmlzaENvbGxlY3Rp
bmdNZXRyaWNzOildKQorICAgICAgICAgICAgW2RlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXN0cm9uZ1Nlc3Npb24uZ2V0KCkgdGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilz
dHJvbmdTZWxmLmdldCgpIGRpZEZpbmlzaENvbGxlY3RpbmdNZXRyaWNzOihOU1VSTFNlc3Npb25U
YXNrTWV0cmljcyAqKWFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9uVGFza01ldHJpY3MgYWxs
b2NdIF9pbml0V2l0aE1ldHJpY3M6bWV0cmljc10pLmdldCgpXTsKKwogICAgICAgICBpZiAoW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjp0YXNrOmRpZENv
bXBsZXRlV2l0aEVycm9yOildKQogICAgICAgICAgICAgW2RlbGVnYXRlIFVSTFNlc3Npb246KE5T
VVJMU2Vzc2lvbiAqKXN0cm9uZ1Nlc3Npb24uZ2V0KCkgdGFzazooTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZENvbXBsZXRlV2l0aEVycm9yOnN0cm9uZ0Vycm9yLmdl
dCgpXTsKIApAQCAtNzQyLDE2ICs4NjEsMTYgQEAgLSAodm9pZClfcmVzb3VyY2U6KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZQogCiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
KXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjooY29uc3QgUmVzb3Vy
Y2VFcnJvciYpZXJyb3IKIHsKLSAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlz
aGVkV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CisgICAgW3NlbGYgX3Jlc291cmNlOnJlc291
cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCkgbWV0cmljczpOZXR3b3Jr
TG9hZE1ldHJpY3MgeyB9XTsKIH0KIAogLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlJilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBSZXNvdXJjZUVycm9y
JillcnJvcgogewotICAgIFtzZWxmIF9yZXNvdXJjZTpyZXNvdXJjZSBsb2FkRmluaXNoZWRXaXRo
RXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9h
ZEZpbmlzaGVkV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKSBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0
cmljcyB7IH1dOwogfQogCi0tICh2b2lkKXJlc291cmNlRmluaXNoZWQ6KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYpcmVzb3VyY2UKKy0gKHZvaWQpcmVzb3VyY2VGaW5pc2hlZDooUGxhdGZvcm1NZWRp
YVJlc291cmNlJilyZXNvdXJjZSBtZXRyaWNzOihjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKW1l
dHJpY3MKIHsKLSAgICBbc2VsZiBfcmVzb3VyY2U6cmVzb3VyY2UgbG9hZEZpbmlzaGVkV2l0aEVy
cm9yOm5pbF07CisgICAgW3NlbGYgX3Jlc291cmNlOnJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhF
cnJvcjpuaWwgbWV0cmljczptZXRyaWNzXTsKIH0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMyNiw3ICsxMzI2LDcgQEAgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBSZW5kZXJFbGVtZW50Ojpp
bQogICAgIHJldHVybiBpc1Zpc2libGUgPyBWaXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpZZXMgOiBW
aXNpYmxlSW5WaWV3cG9ydFN0YXRlOjpObzsKIH0KIAotdm9pZCBSZW5kZXJFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit2b2lkIFJlbmRlckVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikKIHsKICAgICBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkubm90
aWZ5RmluaXNoZWQocmVzb3VyY2UpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNyArMjY2LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQmVEZXN0
cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRSZW5kZXJJ
bmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzKGJvb2wgYikgeyBtX3JlbmRlcklubGluZUFsd2F5
c0NyZWF0ZXNMaW5lQm94ZXMgPSBiOyB9CiAgICAgYm9vbCByZW5kZXJJbmxpbmVBbHdheXNDcmVh
dGVzTGluZUJveGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVz
TGluZUJveGVzOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIFJlbmRlcklt
YWdlOjpyZXBhaW50T3JNYXJrRm9yTGF5b3V0CiAgICAgY29udGVudENoYW5nZWQoSW1hZ2VDaGFu
Z2VkKTsKIH0KIAotdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIG5ld0ltYWdlKQordm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIG5ld0ltYWdlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKHJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpKQogICAgICAgICByZXR1cm47CkBAIC00
MTksNyArNDE5LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUgog
ICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkpKQogICAgICAgICBwYWdlKCku
ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50
PigqZWxlbWVudCgpKSk7CiAKLSAgICBSZW5kZXJSZXBsYWNlZDo6bm90aWZ5RmluaXNoZWQobmV3
SW1hZ2UpOworICAgIFJlbmRlclJlcGxhY2VkOjpub3RpZnlGaW5pc2hlZChuZXdJbWFnZSwgbWV0
cmljcyk7CiB9CiAKIHZvaWQgUmVuZGVySW1hZ2U6OnNldEltYWdlRGV2aWNlUGl4ZWxSYXRpbyhm
bG9hdCBmYWN0b3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAko
cmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogCiAgICAgTGF5
b3V0VW5pdCBtaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgZmluYWw7CiAK
ICAgICBib29sIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxv
d0JveCopIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVycy5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NSw3ICs2NSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpoYXNGaWx0ZXJUaGF0U2gKICAg
ICByZXR1cm4gbV9maWx0ZXIgJiYgbV9maWx0ZXItPmhhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3Ry
aWN0ZWRCeVNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpCit2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KQogewogICAgIC8vIEZJWE1FOiBUaGlzIHJlYWxseSBzaG91bGRuJ3QgaGF2ZSB0byBpbnZhbGlk
YXRlIGxheWVyIGNvbXBvc2l0aW9uLAogICAgIC8vIGJ1dCB0ZXN0cyBsaWtlIGNzczMvZmlsdGVy
cy9lZmZlY3QtcmVmZXJlbmNlLWRlbGV0ZS5odG1sIGZhaWwgaWYgdGhhdCBkb2Vzbid0IGhhcHBl
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJz
LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29u
dGV4dCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0RGlydHlTb3VyY2VS
ZWN0KCkgeyBtX2RpcnR5U291cmNlUmVjdCA9IExheW91dFJlY3QoKTsgfQogCiAgICAgUmVuZGVy
TGF5ZXImIG1fbGF5ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIFNWR0ZF
SW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzCiAgICAgICAgIGNsZWFyUmVzb3VyY2VSZWZl
cmVuY2VzKCk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJikKK3ZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoIWlz
Q29ubmVjdGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21TdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYpIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRpZEZpbmlzaEluc2VydGluZ05vZGUoKSBvdmVycmlkZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQyLDcg
KzU0Miw3IEBAIGJvb2wgU1ZHVXNlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3QKICAgICBy
ZXR1cm4gdGFyZ2V0Q2xvbmUgJiYgdGFyZ2V0Q2xvbmUtPmhhc1JlbGF0aXZlTGVuZ3RocygpOwog
fQogCi12b2lkIFNWR1VzZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKK3ZvaWQgU1ZHVXNlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIEFTU0VSVChT
Y3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwog
ICAgIGludmFsaWRhdGVTaGFkb3dUcmVlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIFBhdGggdG9DbGlwUGF0
aCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsK
KyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBEb2N1bWVudCogZXh0ZXJuYWxEb2N1bWVudCgpIGNv
bnN0OwogICAgIHZvaWQgdXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MTUzNykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDUtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBHaXZlIHNvbWUgTmV0d29ya0xvYWRNZXRyaWNz
IHRvIFdlYkNvcmVOU1VSTFNlc3Npb24ncyBkZWxlZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNzU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MjkwOTQ0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGFsc28gcmVkdWNlcyBkdXBsaWNhdGUgbG9va3VwcyBpbiBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZTo6bG9hZEZp
bmlzaGVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OnJlc3Bv
bnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
cjo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOjpkYXRhU2VudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcjo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmxvYWRGYWlsZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bG9hZEZpbmlzaGVkKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
OgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRp
ZEZpbmlzaENvbGxlY3RpbmdNZXRyaWNzOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eTo6bG9hZEZpbmlzaGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaDoKKwogMjAyMC0wNS0xMSAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBGYWlsIG5h
dmlnYXRpb25zIHRvIG5vbiBhcHAtYm91bmQgZG9tYWlucyBhZnRlciB1c2Ugb2YgYXBwLWJvdW5k
IEFQSXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEyLDEwICsxMTIsMTAgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpsb2FkRmFp
bGVkKGNvbgogICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxlZCgqdGhpcywgZXJyb3IpOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmxvYWRGaW5pc2hlZCgpCit2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2U6OmxvYWRGaW5pc2hlZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+bG9hZEZpbmlzaGVk
KCp0aGlzKTsKKyAgICAgICAgbV9jbGllbnQtPmxvYWRGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCShyZXZpc2lvbiAyNjE0
MjQpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsKQEAgLTU0
LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IGNoYXIqLCBp
bnQ2NF90KTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKLSAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOworICAgIHZvaWQgbG9hZEZp
bmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogCiBwcml2YXRlOgog
ICAgIFJlbW90ZU1lZGlhUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXImLCBSZW1v
dGVNZWRpYVBsYXllclByb3h5JiwgUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwpJbmRl
eDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXI6OnJlc3BvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVtb3RlTWVk
aWFSZXNvdXJjZXMuZ2V0KGlkKS0+cmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSwgZGlkUGFzc0Fj
Y2Vzc0NvbnRyb2xDaGVjaywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHJlc291
cmNlLT5yZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlLCBkaWRQYXNzQWNjZXNzQ29udHJvbENoZWNr
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZU1hbmFnZXI6OnJlZGlyZWN0UmVjZWl2ZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZp
ZXIgaWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6cmVkaXJlYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9yZW1vdGVNZWRpYVJlc291cmNlcy5nZXQoaWQpLT5yZWRpcmVjdFJlY2VpdmVkKFdURk1v
dmUocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
cmVzb3VyY2UtPnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlcjo6ZGF0YVNlbnQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWQsIHVpbnQ2
NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZW50KQpAQCAtODcsNyArODcs
NyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpkYXRhU2VuCiAgICAgaWYgKCFy
ZXNvdXJjZSB8fCAhcmVzb3VyY2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cmVtb3RlTWVkaWFSZXNvdXJjZXMuZ2V0KGlkKS0+ZGF0YVNlbnQoYnl0ZXNTZW50LCB0b3RhbEJ5
dGVzVG9CZVNlbnQpOworICAgIHJlc291cmNlLT5kYXRhU2VudChieXRlc1NlbnQsIHRvdGFsQnl0
ZXNUb0JlU2VudCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmRhdGFS
ZWNlaXZlZChSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3Vy
Y2VNYW5hZ2VyOjpkYXRhUmVjCiAgICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3VyY2UtPnJlYWR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlTWVkaWFSZXNvdXJjZXMuZ2V0KGlk
KS0+ZGF0YVJlY2VpdmVkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgp
KSwgZGF0YS5zaXplKCkpOworICAgIHJlc291cmNlLT5kYXRhUmVjZWl2ZWQocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChSZW1v
dGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6YWNj
ZXNzQwogICAgIGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5yZWFkeSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzLmdldChpZCktPmFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChlcnJvcik7CisgICAgcmVzb3VyY2UtPmFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChlcnJvcik7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OmxvYWRG
YWlsZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgaWQsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQpAQCAtMTE0LDE2ICsxMTQsMTYgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
TWFuYWdlcjo6bG9hZEZhaQogICAgIGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5yZWFkeSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlbW90ZU1lZGlhUmVzb3VyY2VzLmdldChpZCkt
PmxvYWRGYWlsZWQoZXJyb3IpOworICAgIHJlc291cmNlLT5sb2FkRmFpbGVkKGVycm9yKTsKIH0K
IAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6bG9hZEZpbmlzaGVkKFJlbW90ZU1l
ZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
cjo6bG9hZEZpbmlzaGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBtX3Jl
bW90ZU1lZGlhUmVzb3VyY2VzLmdldChpZCk7CiAgICAgaWYgKCFyZXNvdXJjZSB8fCAhcmVzb3Vy
Y2UtPnJlYWR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlTWVkaWFSZXNvdXJj
ZXMuZ2V0KGlkKS0+bG9hZEZpbmlzaGVkKCk7CisgICAgcmVzb3VyY2UtPmxvYWRGaW5pc2hlZCht
ZXRyaWNzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1h
bmFnZXIuaAkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQogCkBA
IC02Niw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogICAgIHZv
aWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIp
OworICAgIHZvaWQgbG9hZEZpbmlzaGVkKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKIAogICAgIEhhc2hNYXA8UmVtb3Rl
TWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFJlbW90ZU1lZGlhUmVzb3VyY2UqPiBtX3JlbW90ZU1l
ZGlhUmVzb3VyY2VzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIubWVz
c2FnZXMuaW4JKHJldmlzaW9uIDI2MTQyNCkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ciBOCiAgICAgRGF0YVJlY2VpdmVkKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZp
ZXIgaWQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIEFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIGlkLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKQogICAgIExvYWRGYWlsZWQoV2ViS2l0OjpSZW1vdGVNZWRpYVJl
c291cmNlSWRlbnRpZmllciBpZCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKLSAgICBM
b2FkRmluaXNoZWQoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCkKKyAg
ICBMb2FkRmluaXNoZWQoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciBpZCwg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1ldHJpY3MpCiB9CiAKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjYxNDI0KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03ODAsNiArNzgwLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNz
aQogICAgICAgICBOU1RpbWVJbnRlcnZhbCByZXNwb25zZUVuZEludGVydmFsID0gW20ucmVzcG9u
c2VFbmREYXRlIHRpbWVJbnRlcnZhbFNpbmNlRGF0ZTpmZXRjaFN0YXJ0RGF0ZV07CiAKICAgICAg
ICAgYXV0byYgbmV0d29ya0xvYWRNZXRyaWNzID0gbmV0d29ya0RhdGFUYXNrLT5uZXR3b3JrTG9h
ZE1ldHJpY3MoKTsKKyAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLmZldGNoU3RhcnQgPSBTZWNv
bmRzKGZldGNoU3RhcnREYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCk7CiAgICAgICAgIG5ldHdv
cmtMb2FkTWV0cmljcy5kb21haW5Mb29rdXBTdGFydCA9IFNlY29uZHMoZG9tYWluTG9va3VwU3Rh
cnRJbnRlcnZhbCk7CiAgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5kb21haW5Mb29rdXBFbmQg
PSBTZWNvbmRzKGRvbWFpbkxvb2t1cEVuZEludGVydmFsKTsKICAgICAgICAgbmV0d29ya0xvYWRN
ZXRyaWNzLmNvbm5lY3RTdGFydCA9IFNlY29uZHMoY29ubmVjdFN0YXJ0SW50ZXJ2YWwpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAkocmV2aXNpb24gMjYxNDI0KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw5ICs4Niw5IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5Ojpsb2FkRmFpbGUKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOjpMb2FkRmFpbGVkKG1faWQsIGVycm9yKSwgMCk7CiB9
CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojpsb2FkRmluaXNoZWQoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlJikKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojps
b2FkRmluaXNoZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkxvYWRGaW5pc2hlZChtX2lk
KSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291
cmNlTWFuYWdlcjo6TG9hZEZpbmlzaGVkKG1faWQsIG1ldHJpY3MpLCAwKTsKIH0KIAogfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCShyZXZpc2lvbiAyNjE0MjQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkg
ZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
ICAgIHZvaWQgbG9hZEZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJikgZmluYWw7CisgICAgdm9pZCBsb2FkRmlu
aXNoZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiBtX3BsYXRmb3Jt
TWVkaWFSZXNvdXJjZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>