<?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>177287</bug_id>
          
          <creation_ts>2017-09-20 18:56:31 -0700</creation_ts>
          <short_desc>Web Inspector: Remove support for CSS Regions</short_desc>
          <delta_ts>2017-09-27 12:19:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=177249</see_also>
          <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>
          
          <blocked>174978</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>agomez</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hyatt</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>koivisto</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1351099</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-20 18:56:31 -0700</bug_when>
    <thetext>Remove support for CSS Regions.

Part of the overall:
&lt;https://webkit.org/b/174978&gt; Remove support for CSS regions

CSS Domain:

    &quot;id&quot;: &quot;Region&quot;,
    &quot;id&quot;: &quot;NamedFlow&quot;,
    &quot;name&quot;: &quot;getNamedFlowCollection&quot;,
    &quot;namedFlowCreated&quot;,
    &quot;namedFlowRemoved&quot;,
    &quot;regionOversetChanged&quot;,
    &quot;registeredNamedFlowContentElement&quot;,
    &quot;unregisteredNamedFlowContentElement&quot;,

And related Frontend handling of Regions.

Note:
- We MUST leave in the observer points at the least.
- Maybe leave stuff in so older backends still have something to show? Probably not though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351304</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-21 11:49:25 -0700</bug_when>
    <thetext>As others have pointed out, we should remove associated tests as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351356</commentid>
    <comment_count>2</comment_count>
      <attachid>321471</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-21 13:24:59 -0700</bug_when>
    <thetext>Created attachment 321471
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351357</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-21 13:27:58 -0700</bug_when>
    <thetext>Attachment 321471 did not pass style-queue:


ERROR: /Volumes/Data/StyleQueue/WebKit/LayoutTests/TestExpectations:1506:  Path does not exist.  [test/expectations] [5]
ERROR: /Volumes/Data/StyleQueue/WebKit/LayoutTests/platform/mac/TestExpectations:1778:  Path does not exist.  [test/expectations] [5]
ERROR: /Volumes/Data/StyleQueue/WebKit/LayoutTests/platform/mac/TestExpectations:1779:  Path does not exist.  [test/expectations] [5]
ERROR: /Volumes/Data/StyleQueue/WebKit/LayoutTests/platform/mac/TestExpectations:1780:  Path does not exist.  [test/expectations] [5]
ERROR: /Volumes/Data/StyleQueue/WebKit/LayoutTests/platform/mac/TestExpectations:1781:  Path does not exist.  [test/expectations] [5]
Total errors found: 5 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351360</commentid>
    <comment_count>4</comment_count>
      <attachid>321472</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-21 13:31:47 -0700</bug_when>
    <thetext>Created attachment 321472
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351379</commentid>
    <comment_count>5</comment_count>
      <attachid>321472</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-21 14:09:47 -0700</bug_when>
    <thetext>Comment on attachment 321472
[PATCH] Proposed Fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351414</commentid>
    <comment_count>6</comment_count>
      <attachid>321472</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-21 15:32:53 -0700</bug_when>
    <thetext>Comment on attachment 321472
[PATCH] Proposed Fix

Clearing flags on attachment: 321472

Committed r222356: &lt;http://trac.webkit.org/changeset/222356&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351415</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-21 15:32:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353289</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:19:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693031&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321471</attachid>
            <date>2017-09-21 13:24:59 -0700</date>
            <delta_ts>2017-09-21 13:31:47 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>regions-1.patch</filename>
            <type>text/plain</type>
            <size>106366</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YzNmNGRkY2JjNi4uMDFlZDhjMzQxZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxNy0wOS0yMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3Mjg3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9t
L2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctY29udGVudC1yZW1vdmFs
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2NvbnRlbnQt
Zmxvdy1jb250ZW50LXJlbW92YWwuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZG9tL2NvbnRlbnQtZmxvdy1saXN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1saXN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2RvbS9jb250ZW50LW5vZGUtcmVnaW9uLWluZm8tZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20vY29udGVudC1ub2RlLXJlZ2lvbi1pbmZvLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RvbS9oaWdobGlnaHQtZmxvdy13aXRo
LW5vLXJlZ2lvbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Rv
bS9oaWdobGlnaHQtZmxvdy13aXRoLW5vLXJlZ2lvbi5odG1sOiBSZW1vdmVkLgorCiAyMDE3LTA5
LTIxICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9kb2N1bWVudC1t
ZXRhZGF0YS90aGUtbWV0YS1lbGVtZW50L3ByYWdtYS1kaXJlY3RpdmVzL2F0dHItbWV0YS1odHRw
LWVxdWl2LXJlZnJlc2gvcGFyc2luZy5odG1sIGFzIGZsYWt5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctY29udGVudC1ub2Rlcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVz
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVkMWM4MTcwZDMu
LjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93
LWNvbnRlbnQtbm9kZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBA
QAotVGVzdGluZyB0aGF0IHRoZSBDb250ZW50Rmxvd3MgZXZlbnRzIGFyZSBjb3JyZWN0bHkgZGlz
cGF0Y2hlZCB3aGVuIG5vZGVzIGFyZSBhdHRhY2hlZCB0by9kZXRhY2hlZCBmcm9tIGEgZmxvdy4K
LQotUEFTUzogQ29udGVudEZsb3cgd2FzIGFkZGVkLgotUEFTUzogQ29udGVudEZsb3cuY29udGVu
dE5vZGVzIGhhcyBhIGxlbmd0aCBvZiAyLgotUEFTUzogQ29udGVudEZsb3cuY29udGVudE5vZGVz
WzBdLmlkIGlzICIjY29udGVudFN0YXRpYyIuCi1QQVNTOiBDb250ZW50Rmxvdy5jb250ZW50Tm9k
ZXNbMV0uaWQgaXMgIiNjb250ZW50UmVtb3ZlZCIuCi1QQVNTOiAiI2NvbnRlbnRBZGRlZEF0VGhl
VG9wIiB3YXMgYWRkZWQgYmVmb3JlICIjY29udGVudFN0YXRpYyIuCi1QQVNTOiAiI2NvbnRlbnRB
ZGRlZEF0VGhlVG9wIiBpcyBmaXJzdCBpbiB0aGUgY29udGVudE5vZGVzIGxpc3QuCi1QQVNTOiAi
I2NvbnRlbnRBZGRlZEF0VGhlQm90dG9tIiB3YXMgYWRkZWQgbGFzdC4KLVBBU1M6ICIjY29udGVu
dEFkZGVkQXRUaGVCb3R0b20iIGlzIGxhc3QgaW4gdGhlIGNvbnRlbnROb2RlcyBsaXN0LgotUEFT
UzogIiNjb250ZW50UmVtb3ZlZCIgd2FzIHJlbW92ZWQuCi1QQVNTOiAiI2NvbnRlbnRSZW1vdmVk
IiBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGNvbnRlbnROb2RlcyBsaXN0LgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVz
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzExN2M0Mjc5Li4wMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50
LW5vZGVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi08IWRvY3R5cGUgaHRt
bD4KLTxodG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci0uY29udGVudAotewotICAgIC13ZWJraXQtZmxv
dy1pbnRvOiBmbG93OwotfQotLmhpZGRlbgotewotICAgIC13ZWJraXQtZmxvdy1pbnRvOiBub25l
OwotfQotPC9zdHlsZT4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWZ1bmN0aW9u
IGNoYW5nZUZsb3dDb250ZW50KCkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
dGVudEFkZGVkQXRUaGVUb3AiKS5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKLSAgICAvLyBG
b3JjZSBhIGxheW91dCB0byBtYWtlIHN1cmUgdGhlIGV2ZW50cyBhcmUgYWx3YXlzIGZpcmVkIGlu
IHRoZSBleHBlY3RlZCBvcmRlci4KLSAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudEFkZGVkQXRUaGVCb3R0b20iKS5jbGFzc0xp
c3QucmVtb3ZlKCJoaWRkZW4iKTsKLSAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudFJlbW92ZWQiKS5jbGFzc0xpc3QuYWRkKCJo
aWRkZW4iKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGNvbnRlbnRGbG93Owot
Ci0gICAgZnVuY3Rpb24gb25Sb290RE9NTm9kZUludmFsaWRhdGVkKCkKLSAgICB7Ci0gICAgICAg
IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5kb21UcmVlLnJlcXVlc3RDb250ZW50
Rmxvd0xpc3QoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBvbkNvbnRlbnRGbG93V2FzQWRkZWQo
ZXZlbnQpCi0gICAgewotICAgICAgICBjb250ZW50RmxvdyA9IGV2ZW50LmRhdGEuZmxvdzsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGNvbnRlbnRGbG93Lm5hbWUgPT09ICJmbG93
IiwgIkNvbnRlbnRGbG93IHdhcyBhZGRlZC4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RUaGF0KGNvbnRlbnRGbG93LmNvbnRlbnROb2Rlcy5sZW5ndGggPT0gMiwgIkNvbnRlbnRGbG93
LmNvbnRlbnROb2RlcyBoYXMgYSBsZW5ndGggb2YgMi4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KGNvbnRlbnRGbG93LmNvbnRlbnROb2Rlc1swXS5nZXRBdHRyaWJ1dGUoImlk
IikgPT09ICJjb250ZW50U3RhdGljIiwgIkNvbnRlbnRGbG93LmNvbnRlbnROb2Rlc1swXS5pZCBp
cyBcIiNjb250ZW50U3RhdGljXCIuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhh
dChjb250ZW50Rmxvdy5jb250ZW50Tm9kZXNbMV0uZ2V0QXR0cmlidXRlKCJpZCIpID09PSAiY29u
dGVudFJlbW92ZWQiLCAiQ29udGVudEZsb3cuY29udGVudE5vZGVzWzFdLmlkIGlzIFwiI2NvbnRl
bnRSZW1vdmVkXCIuIik7Ci0KLSAgICAgICAgY29udGVudEZsb3cuYWRkRXZlbnRMaXN0ZW5lcihX
SS5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdhc0FkZGVkLCBvbkNvbnRlbnROb2RlV2Fz
QWRkZWQsIG51bGwpOwotICAgICAgICBjb250ZW50Rmxvdy5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwgb25Db250ZW50Tm9kZVdhc1Jl
bW92ZWQsIG51bGwpOwotCi0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImNo
YW5nZUZsb3dDb250ZW50KCkiKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBvbkNvbnRlbnROb2Rl
V2FzQWRkZWQoZXZlbnQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGV2ZW50LmRhdGEubm9kZS5n
ZXRBdHRyaWJ1dGUoImlkIikpIHsKLSAgICAgICAgY2FzZSAiY29udGVudEFkZGVkQXRUaGVUb3Ai
OgotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEuYmVmb3Jl
LmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gImNvbnRlbnRTdGF0aWMiLCAiXCIjY29udGVudEFkZGVk
QXRUaGVUb3BcIiB3YXMgYWRkZWQgYmVmb3JlIFwiI2NvbnRlbnRTdGF0aWNcIi4iKTsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjb250ZW50Rmxvdy5jb250ZW50Tm9kZXNb
MF0gPT09IGV2ZW50LmRhdGEubm9kZSwgIlwiI2NvbnRlbnRBZGRlZEF0VGhlVG9wXCIgaXMgZmly
c3QgaW4gdGhlIGNvbnRlbnROb2RlcyBsaXN0LiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgImNvbnRlbnRBZGRlZEF0VGhlQm90dG9tIjoKLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdCghZXZlbnQuZGF0YS5iZWZvcmUsICJcIiNjb250ZW50QWRkZWRBdFRo
ZUJvdHRvbVwiIHdhcyBhZGRlZCBsYXN0LiIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KGNvbnRlbnRGbG93LmNvbnRlbnROb2Rlcy5sYXN0VmFsdWUgPT09IGV2ZW50LmRh
dGEubm9kZSwgIlwiI2NvbnRlbnRBZGRlZEF0VGhlQm90dG9tXCIgaXMgbGFzdCBpbiB0aGUgY29u
dGVudE5vZGVzIGxpc3QuIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiBPbmx5IHR3byBhZGQgZXZlbnRz
IGFyZSBleHBlY3RlZC4iKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9uQ29u
dGVudE5vZGVXYXNSZW1vdmVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KGV2ZW50LmRhdGEubm9kZS5nZXRBdHRyaWJ1dGUoImlkIikgPT09ICJjb250ZW50
UmVtb3ZlZCIsICJcIiNjb250ZW50UmVtb3ZlZFwiIHdhcyByZW1vdmVkLiIpOwotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY29udGVudEZsb3cuY29udGVudE5vZGVzLmluZGV4T2Yo
ZXZlbnQuZGF0YS5ub2RlKSA9PT0gLTEsICJcIiNjb250ZW50UmVtb3ZlZFwiIGNhbm5vdCBiZSBm
b3VuZCBpbiB0aGUgY29udGVudE5vZGVzIGxpc3QuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
Y29tcGxldGVUZXN0KCk7Ci0gICAgfQotCi0gICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihX
SS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgIHZhciBkb21UcmVlID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmRv
bVRyZWU7Ci0gICAgICAgIGRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlLkV2ZW50
LlJvb3RET01Ob2RlSW52YWxpZGF0ZWQsIG9uUm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgbnVsbCk7
Ci0gICAgICAgIGRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlLkV2ZW50LkNvbnRl
bnRGbG93V2FzQWRkZWQsIG9uQ29udGVudEZsb3dXYXNBZGRlZCwgbnVsbCk7Ci0gICAgICAgIGRv
bVRyZWUucmVxdWVzdENvbnRlbnRGbG93TGlzdCgpOwotICAgIH0pOwotCi0gICAgSW5zcGVjdG9y
VGVzdC5yZWxvYWRQYWdlKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KLSAgICA8cD5UZXN0aW5nIHRoYXQgdGhlIENvbnRlbnRGbG93cyBldmVudHMg
YXJlIGNvcnJlY3RseSBkaXNwYXRjaGVkIHdoZW4gbm9kZXMgYXJlIGF0dGFjaGVkIHRvL2RldGFj
aGVkIGZyb20gYSBmbG93LjwvcD4KLQotICAgIDxkaXYgaWQ9ImNvbnRlbnRBZGRlZEF0VGhlVG9w
IiBjbGFzcz0iY29udGVudCBoaWRkZW4iPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnRlbnRTdGF0
aWMiIGNsYXNzPSJjb250ZW50Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb250ZW50UmVtb3ZlZCIg
Y2xhc3M9ImNvbnRlbnQiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnRlbnRBZGRlZEF0VGhlQm90
dG9tIiBjbGFzcz0iY29udGVudCBoaWRkZW4iPjwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50
LXJlbW92YWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50
LWZsb3ctY29udGVudC1yZW1vdmFsLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjc4N2EwNGMyNjYuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtcmVtb3ZhbC1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVRlc3RpbmcgdGhhdCB0aGUgQ29udGVudEZsb3dzIGV2
ZW50cyBhcmUgY29ycmVjdGx5IGRpc3BhdGNoZWQgd2hlbiBjb250ZW50IG5vZGVzIGFyZSBkZXRh
Y2hlZCBmcm9tIHRoZSBET00uCi0KLVBBU1M6IENvbnRlbnRGbG93IHdhcyBhZGRlZC4KLVBBU1M6
IENvbnRlbnRGbG93LmNvbnRlbnROb2RlcyBoYXMgYSBsZW5ndGggb2YgMi4KLVBBU1M6IENvbnRl
bnRGbG93LmNvbnRlbnROb2Rlc1swXS5pZCBpcyAiI2NvbnRlbnRTdGF0aWMiLgotUEFTUzogQ29u
dGVudEZsb3cuY29udGVudE5vZGVzWzFdLmlkIGlzICIjY29udGVudFJlbW92ZWQiLgotUEFTUzog
IiNjb250ZW50UmVtb3ZlZCIgd2FzIHJlbW92ZWQuCi1QQVNTOiAiI2NvbnRlbnRSZW1vdmVkIiBj
YW5ub3QgYmUgZm91bmQgaW4gdGhlIGNvbnRlbnROb2RlcyBsaXN0LgotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LXJlbW92YWwuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtcmVtb3Zh
bC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDZjOTNhMDljOC4uMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctY29udGVu
dC1yZW1vdmFsLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi08IWRvY3R5cGUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci0uY29udGVudAotewotICAgIC13ZWJraXQt
Zmxvdy1pbnRvOiBmbG93OwotfQotPC9zdHlsZT4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWZ1bmN0aW9uIGNoYW5nZUZsb3dDb250ZW50KCkKLXsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGVudFJlbW92ZWQiKS5yZW1vdmUoKTsKLX0KLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgdmFyIGNvbnRlbnRGbG93OwotCi0gICAgZnVuY3Rpb24gb25Sb290RE9NTm9k
ZUludmFsaWRhdGVkKCkKLSAgICB7Ci0gICAgICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1h
aW5GcmFtZS5kb21UcmVlLnJlcXVlc3RDb250ZW50Rmxvd0xpc3QoKTsKLSAgICB9Ci0KLSAgICBm
dW5jdGlvbiBvbkNvbnRlbnRGbG93V2FzQWRkZWQoZXZlbnQpCi0gICAgewotICAgICAgICBjb250
ZW50RmxvdyA9IGV2ZW50LmRhdGEuZmxvdzsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KGNvbnRlbnRGbG93Lm5hbWUgPT09ICJmbG93IiwgIkNvbnRlbnRGbG93IHdhcyBhZGRlZC4i
KTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGNvbnRlbnRGbG93LmNvbnRlbnRO
b2Rlcy5sZW5ndGggPT09IDIsICJDb250ZW50Rmxvdy5jb250ZW50Tm9kZXMgaGFzIGEgbGVuZ3Ro
IG9mIDIuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjb250ZW50Rmxvdy5j
b250ZW50Tm9kZXNbMF0uZ2V0QXR0cmlidXRlKCJpZCIpID09PSAiY29udGVudFN0YXRpYyIsICJD
b250ZW50Rmxvdy5jb250ZW50Tm9kZXNbMF0uaWQgaXMgXCIjY29udGVudFN0YXRpY1wiLiIpOwot
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY29udGVudEZsb3cuY29udGVudE5vZGVz
WzFdLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gImNvbnRlbnRSZW1vdmVkIiwgIkNvbnRlbnRGbG93
LmNvbnRlbnROb2Rlc1sxXS5pZCBpcyBcIiNjb250ZW50UmVtb3ZlZFwiLiIpOwotCi0gICAgICAg
IGNvbnRlbnRGbG93LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29udGVudEZsb3cuRXZlbnQuQ29udGVu
dE5vZGVXYXNSZW1vdmVkLCBvbkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwgbnVsbCk7Ci0KLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2hhbmdlRmxvd0NvbnRlbnQoKSIpOwot
ICAgIH0KLQotICAgIGZ1bmN0aW9uIG9uQ29udGVudE5vZGVXYXNSZW1vdmVkKGV2ZW50KQotICAg
IHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGV2ZW50LmRhdGEubm9kZS5nZXRB
dHRyaWJ1dGUoImlkIikgPT09ICJjb250ZW50UmVtb3ZlZCIsICJcIiNjb250ZW50UmVtb3ZlZFwi
IHdhcyByZW1vdmVkLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY29udGVu
dEZsb3cuY29udGVudE5vZGVzLmluZGV4T2YoZXZlbnQuZGF0YS5ub2RlKSA9PT0gLTEsICJcIiNj
b250ZW50UmVtb3ZlZFwiIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgY29udGVudE5vZGVzIGxpc3Qu
Iik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgfQotCi0gICAg
V0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRD
aGFuZ2UsIGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgZG9tVHJlZSA9IFdJLmZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLm1haW5GcmFtZS5kb21UcmVlOwotICAgICAgICBkb21UcmVlLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRE9NVHJlZS5FdmVudC5Sb290RE9NTm9kZUludmFsaWRhdGVkLCBvblJvb3RET01O
b2RlSW52YWxpZGF0ZWQsIG51bGwpOwotICAgICAgICBkb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIo
V0kuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCBvbkNvbnRlbnRGbG93V2FzQWRk
ZWQsIG51bGwpOwotICAgICAgICBkb21UcmVlLnJlcXVlc3RDb250ZW50Rmxvd0xpc3QoKTsKLSAg
ICB9KTsKLQotICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSgpOwotfQotPC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdGluZyB0aGF0IHRo
ZSBDb250ZW50Rmxvd3MgZXZlbnRzIGFyZSBjb3JyZWN0bHkgZGlzcGF0Y2hlZCB3aGVuIGNvbnRl
bnQgbm9kZXMgYXJlIGRldGFjaGVkIGZyb20gdGhlIERPTS48L3A+Ci0KLSAgICA8ZGl2IGlkPSJj
b250ZW50U3RhdGljIiBjbGFzcz0iY29udGVudCI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29udGVu
dFJlbW92ZWQiIGNsYXNzPSJjb250ZW50Ij48L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctbGlzdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1saXN0LWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWExNTBjMjU4NTcuLjAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWxp
c3QtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1UZXN0aW5nIHRo
YXQgdGhlIENvbnRlbnRGbG93cyBldmVudHMgYXJlIGNvcnJlY3RseSBkaXNwYXRjaGVkIHdoZW4g
bmV3IGZsb3dzIGFyZSBjcmVhdGVkL3JlbW92ZWQuCi0KLVBBU1M6IENvbnRlbnRGbG93IHdhcyBh
ZGRlZAotUEFTUzogRmxvdyBjb3VudCBpcyAxCi1QQVNTOiBDb250ZW50RmxvdyB3YXMgcmVtb3Zl
ZAotUEFTUzogRmxvdyBjb3VudCBpcyAwCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20vY29udGVudC1mbG93LWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20vY29udGVudC1mbG93LWxpc3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGI2NzM0M2VjOTIuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
Y29udGVudC1mbG93LWxpc3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLTwh
ZG9jdHlwZSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzdHlsZT4KLSNmbG93MQotewotICAgIC13
ZWJraXQtZmxvdy1pbnRvOiBmbG93MTsKLX0KLTwvc3R5bGU+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBhZGRGbG93KCkgewotICAgIGxldCBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICBkaXYuaWQgPSAiZmxvdzEiOwotICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKLX0KLQotZnVuY3Rpb24gcmVtb3ZlRmxvdygpIHsK
LSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmxvdzEiKS5yZW1vdmUoKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgbGV0IGRvbVRyZWU7Ci0KLSAgICBmdW5jdGlvbiBvblJvb3RE
T01Ob2RlSW52YWxpZGF0ZWQoKQotICAgIHsKLSAgICAgICAgZG9tVHJlZS5yZXF1ZXN0Q29udGVu
dEZsb3dMaXN0KCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImFkZEZs
b3coKSIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9uQ29udGVudEZsb3dXYXNBZGRlZChldmVu
dCkKLSAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZXZlbnQuZGF0YS5m
bG93Lm5hbWUsICJmbG93MSIsICJDb250ZW50RmxvdyB3YXMgYWRkZWQiKTsKLSAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChkb21UcmVlLmNvbnRlbnRGbG93Q29sbGVjdGlvbi5pdGVt
cy5zaXplLCAxLCAiRmxvdyBjb3VudCBpcyAxIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoInJlbW92ZUZsb3coKSIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9uQ29u
dGVudEZsb3dXYXNSZW1vdmVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChldmVudC5kYXRhLmZsb3cubmFtZSwgImZsb3cxIiwgIkNvbnRlbnRGbG93IHdh
cyByZW1vdmVkIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZG9tVHJlZS5j
b250ZW50Rmxvd0NvbGxlY3Rpb24uaXRlbXMuc2l6ZSwgMCwgIkZsb3cgY291bnQgaXMgMCIpOwot
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgIH0KLQotICAgIFdJLkZy
YW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdl
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgZG9tVHJlZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
Lm1haW5GcmFtZS5kb21UcmVlOwotICAgICAgICBkb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV0ku
RE9NVHJlZS5FdmVudC5Sb290RE9NTm9kZUludmFsaWRhdGVkLCBvblJvb3RET01Ob2RlSW52YWxp
ZGF0ZWQpOwotICAgICAgICBkb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZS5FdmVu
dC5Db250ZW50Rmxvd1dhc0FkZGVkLCBvbkNvbnRlbnRGbG93V2FzQWRkZWQpOwotICAgICAgICBk
b21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc1Jl
bW92ZWQsIG9uQ29udGVudEZsb3dXYXNSZW1vdmVkKTsKLSAgICAgICAgZG9tVHJlZS5yZXF1ZXN0
Q29udGVudEZsb3dMaXN0KCk7Ci0gICAgfSk7Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJlbG9hZFBh
Z2UoKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgot
PHA+VGVzdGluZyB0aGF0IHRoZSBDb250ZW50Rmxvd3MgZXZlbnRzIGFyZSBjb3JyZWN0bHkgZGlz
cGF0Y2hlZCB3aGVuIG5ldyBmbG93cyBhcmUgY3JlYXRlZC9yZW1vdmVkLjwvcD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1u
b2RlLXJlZ2lvbi1pbmZvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
Y29udGVudC1ub2RlLXJlZ2lvbi1pbmZvLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYjc3NGFlNjMwZTMuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20vY29udGVudC1ub2RlLXJlZ2lvbi1pbmZvLWV4cGVjdGVkLnR4dAorKysgL2Rl
di9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVRlc3RpbmcgdGhhdCB0aGUgRE9NVHJlZU1hbmFnZXIu
Z2V0Tm9kZUNvbnRlbnRGbG93SW5mbyByZXR1cm5zIHRoZSBjb250YWluaW5nIHJlZ2lvbnMuCi0K
LQotU2VsZWN0b3I6ICNmbG93Ci1SZWdpb24gZmxvdyBuYW1lOiBub25lCi1Db250ZW50IGZsb3cg
bmFtZTogbm9uZQotUmVnaW9ucyBjb3VudDogTi9BCi1SZWdpb25zOiBOL0EKLQotU2VsZWN0b3I6
IC5jb250ZW50Tm9kZTEKLVJlZ2lvbiBmbG93IG5hbWU6IG5vbmUKLUNvbnRlbnQgZmxvdyBuYW1l
OiBub25lCi1SZWdpb25zIGNvdW50OiBOL0EKLVJlZ2lvbnM6IE4vQQotCi1TZWxlY3RvcjogLmNv
bnRlbnROb2RlMgotUmVnaW9uIGZsb3cgbmFtZTogbm9uZQotQ29udGVudCBmbG93IG5hbWU6IG5v
bmUKLVJlZ2lvbnMgY291bnQ6IE4vQQotUmVnaW9uczogTi9BCi0KLVNlbGVjdG9yOiBib2R5Ci1S
ZWdpb24gZmxvdyBuYW1lOiBub25lCi1Db250ZW50IGZsb3cgbmFtZTogbm9uZQotUmVnaW9ucyBj
b3VudDogTi9BCi1SZWdpb25zOiBOL0EKLQotU2VsZWN0b3I6ICNyZWdpb24xCi1SZWdpb24gZmxv
dyBuYW1lOiBub25lCi1Db250ZW50IGZsb3cgbmFtZTogbm9uZQotUmVnaW9ucyBjb3VudDogTi9B
Ci1SZWdpb25zOiBOL0EKLQotU2VsZWN0b3I6ICNyZWdpb24yCi1SZWdpb24gZmxvdyBuYW1lOiBu
b25lCi1Db250ZW50IGZsb3cgbmFtZTogbm9uZQotUmVnaW9ucyBjb3VudDogTi9BCi1SZWdpb25z
OiBOL0EKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LW5v
ZGUtcmVnaW9uLWluZm8uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1u
b2RlLXJlZ2lvbi1pbmZvLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YTNk
ZGUyMTg2Li4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRl
bnQtbm9kZS1yZWdpb24taW5mby5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAot
PCFkb2N0eXBlIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHN0eWxlPgotI2Zsb3cKLXsKLSAgICAt
d2Via2l0LWZsb3ctaW50bzogZmxvdzsKLX0KLS5jb250ZW50Tm9kZTEKLXsKLSAgICB3aWR0aDog
MTAwJTsKLSAgICBoZWlnaHQ6IDUwcHg7Ci19Ci0uY29udGVudE5vZGUyCi17Ci0gICAgd2lkdGg6
IDEwMCU7Ci0gICAgaGVpZ2h0OiAxNTBweDsKLX0KLS5yZWdpb24KLXsKLSAgICAtd2Via2l0LWZs
b3ctZnJvbTogZmxvdzsKLSAgICB3aWR0aDogMTAwcHg7Ci0gICAgaGVpZ2h0OiAxMDBweDsKLX0K
LTwvc3R5bGU+Ci08c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICBsZXQgZGlzcGxheU5hbWVHZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKFdJLkRPTU5vZGUucHJvdG90eXBlLCAiZGlzcGxheU5hbWUiKS5nZXQ7Ci0gICAg
bGV0IHF1ZXJ5TGlzdCA9IFsiI2Zsb3ciLCAiLmNvbnRlbnROb2RlMSIsICIuY29udGVudE5vZGUy
IiwgImJvZHkiLCAiI3JlZ2lvbjEiLCAiI3JlZ2lvbjIiXTsKLSAgICBsZXQgZG9jdW1lbnROb2Rl
SWQgPSBudWxsOwotCi0gICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3VtZW50KGZ1bmN0
aW9uKGRvY3VtZW50Tm9kZSkgewotICAgICAgICBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9k
ZS5pZDsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihk
b2N1bWVudE5vZGVJZCk7Ci0gICAgICAgIG5leHQoKTsKLSAgICB9KTsKLQotICAgIGZ1bmN0aW9u
IHJlZ2lvbk1hcEZ1bmN0aW9uKHJlZ2lvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBkaXNwbGF5
TmFtZUdldHRlci5jYWxsKHJlZ2lvbik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcXVlcnkoc2Vs
ZWN0b3IsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlxuU2Vs
ZWN0b3I6ICIgKyBzZWxlY3Rvcik7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnF1ZXJ5U2Vs
ZWN0b3IoZG9jdW1lbnROb2RlSWQsIHNlbGVjdG9yLCBmdW5jdGlvbihjb250ZW50Tm9kZUlkKSB7
Ci0gICAgICAgICAgICBpZiAoIWNvbnRlbnROb2RlSWQpIHsKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiRE9NIG5vZGUgbm90IGZvdW5kLiIpOwotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJLmRv
bVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChjb250ZW50Tm9kZUlkKTsKLSAgICAgICAgICAgIFdJLmRv
bVRyZWVNYW5hZ2VyLmdldE5vZGVDb250ZW50Rmxvd0luZm8oZG9tTm9kZSwgZnVuY3Rpb24oZXJy
b3IsIHJlc3VsdCkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFlcnJvcik7Ci0g
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiUmVnaW9uIGZsb3cgbmFtZTogIiArIChyZXN1bHQucmVnaW9uRmxvdyA/IHJl
c3VsdC5yZWdpb25GbG93Lm5hbWUgOiAibm9uZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkNvbnRlbnQgZmxvdyBuYW1lOiAiICsgKHJlc3VsdC5jb250ZW50Rmxv
dyA/IHJlc3VsdC5jb250ZW50Rmxvdy5uYW1lIDogIm5vbmUiKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJSZWdpb25zIGNvdW50OiAiICsgKHJlc3VsdC5yZWdpb25z
ID8gcmVzdWx0LnJlZ2lvbnMubGVuZ3RoIDogIk4vQSIpKTsKLSAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIlJlZ2lvbnM6ICIgKyAocmVzdWx0LnJlZ2lvbnMgPyByZXN1bHQu
cmVnaW9ucy5tYXAocmVnaW9uTWFwRnVuY3Rpb24pLmpvaW4oIiwgIikgOiAiTi9BIikpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiTm8gcmVnaW9uIGZsb3cgaW5mb3JtYXRpb24uIik7Ci0gICAgICAgICAgICAgICAgY2FsbGJh
Y2soKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBuZXh0KCkKLSAgICB7Ci0gICAgICAgIGlmICghcXVlcnlMaXN0Lmxlbmd0aCkKLSAgICAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgICAgICBxdWVyeShx
dWVyeUxpc3Quc2hpZnQoKSwgbmV4dCk7Ci0gICAgfQotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0gICAgPHA+VGVzdGluZyB0aGF0IHRoZSBET01UcmVl
TWFuYWdlci5nZXROb2RlQ29udGVudEZsb3dJbmZvIHJldHVybnMgdGhlIGNvbnRhaW5pbmcgcmVn
aW9ucy48L3A+Ci0KLSAgICA8ZGl2IGlkPSJmbG93Ij4KLSAgICAgICAgPGRpdiBjbGFzcz0iY29u
dGVudE5vZGUxIj48L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudE5vZGUyIj48L2Rp
dj4KLSAgICA8L2Rpdj4KLQotICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJyZWdpb24iPjwv
ZGl2PgotICAgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJyZWdpb24iPjwvZGl2PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9oaWdobGln
aHQtZmxvdy13aXRoLW5vLXJlZ2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tL2hpZ2hsaWdodC1mbG93LXdpdGgtbm8tcmVnaW9uLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBjYzZkZjI2MzIuLjAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGlnaGxpZ2h0LWZsb3ctd2l0aC1uby1yZWdpb24tZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGVzdGluZyB0aGF0IHRoZSBi
YWNrZW5kIGlzIG5vdCBjcmFzaGluZyB3aGVuIGhpZ2hsaWdodGluZyBhIG5vZGUgdGhhdCBoYXMg
bm8gYXNzb2NpYXRlZCByZWdpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tL2hpZ2hsaWdodC1mbG93LXdpdGgtbm8tcmVnaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tL2hpZ2hsaWdodC1mbG93LXdpdGgtbm8tcmVnaW9uLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGEwYmNiZTJmNTdkLi4wMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodC1mbG93LXdpdGgtbm8tcmVnaW9uLmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzdHlsZT4KLSNmbG93IHsKLSAgICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsK
LX0KLTwvc3R5bGU+Ci08c2NyaXB0PgotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgSW5zcGVjdG9y
UHJvdG9jb2wuc2VuZENvbW1hbmQoIkRPTS5nZXREb2N1bWVudCIsIHt9LCBvbkdvdERvY3VtZW50
KTsKLQotICAgIGZ1bmN0aW9uIG9uR290RG9jdW1lbnQobXNnKSB7Ci0gICAgICAgIEluc3BlY3Rv
clByb3RvY29sLmNoZWNrRm9yRXJyb3IobXNnKTsKLSAgICAgICAgdmFyIG5vZGUgPSBtc2cucmVz
dWx0LnJvb3Q7Ci0gICAgICAgIEluc3BlY3RvclByb3RvY29sLnNlbmRDb21tYW5kKCJET00ucXVl
cnlTZWxlY3RvciIsIHsgIm5vZGVJZCI6IG5vZGUubm9kZUlkLCAic2VsZWN0b3IiOiAiI2luc3Bl
Y3RlZEVsZW1lbnQiIH0sIG9uUXVlcnlTZWxlY3Rvcik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
b25RdWVyeVNlbGVjdG9yKG1zZykgewotICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5jaGVja0Zv
ckVycm9yKG1zZyk7Ci0gICAgICAgIHZhciBub2RlID0gbXNnLnJlc3VsdDsKLSAgICAgICAgdmFy
IGhpZ2hsaWdodENvbmZpZyA9IHsKLSAgICAgICAgICAgIHNob3dJbmZvOiB0cnVlLAotICAgICAg
ICAgICAgY29udGVudENvbG9yOiB7cjogMjU1LCBnOiAyNTUsIGI6IDI1NX0sCi0gICAgICAgICAg
ICBwYWRkaW5nQ29sb3I6IHtyOiAyNTUsIGc6IDI1NSwgYjogMjU1fSwKLSAgICAgICAgICAgIGJv
cmRlckNvbG9yOiB7cjogMjU1LCBnOiAyNTUsIGI6IDI1NX0sCi0gICAgICAgICAgICBtYXJnaW5D
b2xvcjoge3I6IDI1NSwgZzogMjU1LCBiOiAyNTV9LAotICAgICAgICB9OwotICAgICAgICBJbnNw
ZWN0b3JQcm90b2NvbC5zZW5kQ29tbWFuZCgiRE9NLmhpZ2hsaWdodE5vZGUiLCB7ICJoaWdobGln
aHRDb25maWciOiBoaWdobGlnaHRDb25maWcsICJub2RlSWQiOiBub2RlLm5vZGVJZCB9LCBvbkhp
Z2hsaWdodENvbXBsZXRlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBvbkhpZ2hsaWdodENvbXBs
ZXRlKG1zZykgewotICAgICAgICBJbnNwZWN0b3JQcm90b2NvbC5jaGVja0ZvckVycm9yKG1zZyk7
Ci0gICAgICAgIFByb3RvY29sVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICB9Ci19Ci08L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLQotPGRpdiBpZD0iZmxvdyI+
Ci0gICAgPGRpdiBpZD0iaW5zcGVjdGVkRWxlbWVudCI+PC9kaXY+Ci08L2Rpdj4KLQotPHA+VGVz
dGluZyB0aGF0IHRoZSBiYWNrZW5kIGlzIG5vdCBjcmFzaGluZyB3aGVuIGhpZ2hsaWdodGluZyBh
IG5vZGUgdGhhdCBoYXMgbm8gYXNzb2NpYXRlZCByZWdpb24uPC9wPgotCi08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAxYjVlZDAxNWEwNi4uZjFhMGVmN2Y3ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA5LTIxICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUmVtb3ZlIHN1cHBvcnQgZm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcyODcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9DU1MuanNv
bjoKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb246CisKIDIw
MTctMDktMjEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3Rvcjoga2V5Ym9hcmQgc2hvcnRjdXQgZm9yICJSZWxvYWQgcGFnZSBmcm9tIG9yaWdpbiIg
ZG9lc24ndCBtYXRjaCBTYWZhcmksIGFuZCBkb2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ1NTLmpzb24gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29uCmluZGV4IDYwYWJiNWVjMTBm
Li45YzhhNDQxNDg4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9DU1MuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL0NTUy5qc29uCkBAIC0yMDgsMjcgKzIwOCw2IEBACiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzb3VyY2VVUkwiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiVVJMIG9mIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBtZWRp
YSBxdWVyeSBkZXNjcmlwdGlvbi4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzb3Vy
Y2VMaW5lIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJMaW5lIGluIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBtZWRpYSBxdWVyeSAobm90
IGRlZmluZWQgZm9yIHRoZSBcInN0eWxlc2hlZXRcIiBzb3VyY2UpLiIgfQogICAgICAgICAgICAg
XQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAiaWQiOiAiUmVnaW9uIiwKLSAg
ICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
VGhpcyBvYmplY3QgcmVwcmVzZW50cyBhIHJlZ2lvbiB0aGF0IGZsb3dzIGZyb20gYSBOYW1lZCBG
bG93LiIsCi0gICAgICAgICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInJlZ2lvbk92ZXJzZXQiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsib3ZlcnNl
dCIsICJmaXQiLCAiZW1wdHkiXSwgImRlc2NyaXB0aW9uIjogIlRoZSBcIm92ZXJzZXRcIiBhdHRy
aWJ1dGUgb2YgYSBOYW1lZCBGbG93LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5v
ZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGNvcnJlc3Bv
bmRpbmcgRE9NIG5vZGUgaWQuIiB9Ci0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAg
IHsKLSAgICAgICAgICAgICJpZCI6ICJOYW1lZEZsb3ciLAotICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG9iamVjdCByZXByZXNl
bnRzIGEgTmFtZWQgRmxvdy4iLAotICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQi
LCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJO
YW1lZCBGbG93IGlkZW50aWZpZXIuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3Zl
cnNldCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVGhlIFwib3ZlcnNldFwi
IGF0dHJpYnV0ZSBvZiBhIE5hbWVkIEZsb3cuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiY29udGVudCIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJET00uTm9k
ZUlkIiB9LCAiZGVzY3JpcHRpb24iOiAiQW4gYXJyYXkgb2Ygbm9kZXMgdGhhdCBmbG93IGludG8g
dGhlIE5hbWVkIEZsb3cuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9ucyIs
ICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJSZWdpb24iIH0sICJkZXNjcmlw
dGlvbiI6ICJBbiBhcnJheSBvZiByZWdpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgTmFtZWQgRmxv
dy4iIH0KLSAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImNvbW1hbmRzIjog
WwpAQCAtMzc0LDE2ICszNTMsNiBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlk
IiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZWxlbWVudCBpZCBm
b3Igd2hpY2ggdG8gZm9yY2UgdGhlIHBzZXVkbyBzdGF0ZS4iIH0sCiAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJmb3JjZWRQc2V1ZG9DbGFzc2VzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMi
OiB7ICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJhY3RpdmUiLCAiZm9jdXMiLCAiaG92ZXIi
LCAidmlzaXRlZCJdIH0sICJkZXNjcmlwdGlvbiI6ICJFbGVtZW50IHBzZXVkbyBjbGFzc2VzIHRv
IGZvcmNlIHdoZW4gY29tcHV0aW5nIHRoZSBlbGVtZW50J3Mgc3R5bGUuIiB9CiAgICAgICAgICAg
ICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogImdldE5hbWVk
Rmxvd0NvbGxlY3Rpb24iLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhl
IE5hbWVkIEZsb3dzIGZyb20gdGhlIGRvY3VtZW50LiIsCi0gICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYi
OiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZCBmb3Ig
d2hpY2ggdG8gZ2V0IHRoZSBOYW1lZCBGbG93IENvbGxlY3Rpb24uIiB9Ci0gICAgICAgICAgICBd
LAotICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJu
YW1lZEZsb3dzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIk5hbWVkRmxv
dyIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIE5hbWVkIEZsb3dz
IGluIHRoZSBkb2N1bWVudC4iIH0KLSAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAg
ICAgImV2ZW50cyI6IFsKQEAgLTQxMSw0NyArMzgwLDYgQEAKICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3R5bGVTaGVldElkIiwgIiRyZWYi
OiAiU3R5bGVTaGVldElkIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIHJlbW92
ZWQgc3R5bGVzaGVldC4iIH0KICAgICAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAgewot
ICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93Q3JlYXRlZCIsCi0gICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgY3JlYXRlZC4iLAotICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZs
b3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5ldyBOYW1lZCBG
bG93LiIgfQotICAgICAgICAgICAgXQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAg
ICAibmFtZSI6ICJuYW1lZEZsb3dSZW1vdmVkIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdyBpcyByZW1vdmVkOiBoYXMgbm8gYXNzb2NpYXRlZCBj
b250ZW50IG5vZGVzIGFuZCByZWdpb25zLiIsCi0gICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
LSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9N
Lk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJmbG93TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9Ci0gICAg
ICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogInJl
Z2lvbk92ZXJzZXRDaGFuZ2VkIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyBp
ZiBhbnkgb2YgdGhlIHJlZ2lvbk92ZXJzZXQgdmFsdWVzIGNoYW5nZWQgaW4gYSBOYW1lZCBGbG93
J3MgcmVnaW9uIGNoYWluLiIsCi0gICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgTmFtZWQgRmxvdyBjb250YWluaW5nIHRoZSByZWdpb25zIHdob3NlIHJl
Z2lvbk92ZXJzZXQgdmFsdWVzIGNoYW5nZWQuIiB9Ci0gICAgICAgICAgICBdCi0gICAgICAgIH0s
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogInJlZ2lzdGVyZWROYW1lZEZsb3dDb250
ZW50RWxlbWVudCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5h
bWVkIEZsb3cncyBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGggYSBuZXcgY29udGVudCBub2RlLiIs
Ci0gICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJU
aGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmbG93
TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJOYW1lZCBGbG93IGlkZW50
aWZpZXIgZm9yIHdoaWNoIHRoZSBuZXcgY29udGVudCBlbGVtZW50IHdhcyByZWdpc3RlcmVkLiIg
fSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnROb2RlSWQiLCAiJHJlZiI6ICJE
T00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBub2RlIGlkIG9mIHRoZSByZWdpc3RlcmVk
IGNvbnRlbnQgbm9kZS4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuZXh0Q29udGVu
dE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5vZGUg
aWQgb2YgdGhlIGVsZW1lbnQgZm9sbG93aW5nIHRoZSByZWdpc3RlcmVkIGNvbnRlbnQgbm9kZS4i
IH0KLSAgICAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgIm5h
bWUiOiAidW5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQiLAotICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93J3MgaGFzIGJlZW4gcmVnaXN0
ZXJlZCB3aXRoIGEgbmV3IGNvbnRlbnQgbm9kZS4iLAotICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjog
IkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAot
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmxvd05hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAi
ZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxvdyBpZGVudGlmaWVyIGZvciB3aGljaCB0aGUgbmV3IGNv
bnRlbnQgZWxlbWVudCB3YXMgdW5yZWdpc3RlcmVkLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImNvbnRlbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9u
IjogIlRoZSBub2RlIGlkIG9mIHRoZSB1bnJlZ2lzdGVyZWQgY29udGVudCBub2RlLiIgfQotICAg
ICAgICAgICAgXQogICAgICAgICB9CiAgICAgXQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9PdmVybGF5VHlwZXMuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb24KaW5kZXgg
M2E0YjAxNTA3OTMuLjliYjcwZGNiZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29uCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb24KQEAgLTM2LDM4
ICszNiwxMiBAQAogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAg
ICAgICAiaWQiOiAiUmVnaW9uIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHNpbmds
ZSByZWdpb24gaW4gYSBmbG93IHRocmVhZC4iLAotICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0
IiwKLSAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYm9yZGVyUXVhZCIsICIkcmVmIjogIlF1YWQiIH0sCi0gICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJpbmNvbWluZ1F1YWQiLCAiJHJlZiI6ICJRdWFkIiB9LAotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAib3V0Z29pbmdRdWFkIiwgIiRyZWYiOiAiUXVhZCIgfSwKLSAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImlzSGlnaGxpZ2h0ZWQiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFs
IjogdHJ1ZSB9Ci0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsKICAgICAgICAg
ICAgICJpZCI6ICJEaXNwbGF5UGF0aCIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSB2
ZWN0b3IgcGF0aCBkZXNjcmliZWQgdXNpbmcgU1ZHIHBhdGggc3ludGF4LiIsCiAgICAgICAgICAg
ICAidHlwZSI6ICJhcnJheSIsCiAgICAgICAgICAgICAiaXRlbXMiOiB7ICJ0eXBlIjogImFueSIg
fQogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICAiaWQiOiAiUmVnaW9uRmxvd0Rh
dGEiLAotICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKLSAgICAgICAgICAgICJwcm9wZXJ0
aWVzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9ucyIsICJ0eXBlIjogImFy
cmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJSZWdpb24ifSB9LAotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIgfQotICAgICAgICAgICAgXQotICAgICAg
ICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAiaWQiOiAiQ29udGVudEZsb3dEYXRhIiwKLSAg
ICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCi0gICAgICAgICAgICAicHJvcGVydGllcyI6IFsK
LSAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciIH0KLSAg
ICAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAgewogICAgICAgICAgICAgImlkIjogIlNo
YXBlT3V0c2lkZURhdGEiLAogICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWwpAQCAtODcsOCArNjEsNiBAQAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAic2l6ZSIsICIkcmVmIjogIlNpemUiLCAib3B0aW9uYWwiOiB0cnVlIH0sCiAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyb2xlIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIkNvbXB1dGVkIGFjY2Vzc2liaWxpdHkgcm9sZSBmb3IgdGhlIGVsZW1lbnQuIiwgIm9w
dGlvbmFsIjogdHJ1ZSB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHNldWRvRWxlbWVu
dCIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUgfSwKLSAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlZ2lvbkZsb3dEYXRhIiwgIiRyZWYiOiAiUmVnaW9uRmxvd0RhdGEiLCAi
b3B0aW9uYWwiOiB0cnVlIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50Rmxv
d0RhdGEiLCAiJHJlZiI6ICJDb250ZW50Rmxvd0RhdGEiLCAib3B0aW9uYWwiOiB0cnVlIH0sCiAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaGFwZU91dHNpZGVEYXRhIiwgIiRyZWYiOiAiU2hh
cGVPdXRzaWRlRGF0YSIsICJvcHRpb25hbCI6IHRydWUgfQogICAgICAgICAgICAgXQogICAgICAg
ICB9LApAQCAtMTAyLDggKzc0LDcgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRl
bnRPdXRsaW5lQ29sb3IiLCAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwYWRkaW5nQ29sb3IiLCAidHlwZSI6ICJzdHJpbmciIH0sCiAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJib3JkZXJDb2xvciIsICJ0eXBlIjogInN0cmluZyIgfSwKLSAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm1hcmdpbkNvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9LAotICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9uQ2xpcHBpbmdBcmVhIiwgIiRyZWYiOiAiUXVh
ZCIsICJvcHRpb25hbCI6IHRydWUgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWFyZ2lu
Q29sb3IiLCAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAg
ICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBjYzMwODE1MDljLi5mZTA1MjlmZDk3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA5LTIxICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIHN1cHBvcnQgZm9y
IENTUyBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzcyODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRSZW5kZXJl
ckhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE5vZGVIaWdobGlnaHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JSZW5kZXJlckZyYWdtZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpidWlsZFF1YWRPYmplY3RGb3JDU1NSZWdpb25Db250ZW50Q2xpcCk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzOgorICAgICAg
ICAoX2NyZWF0ZUVsZW1lbnRUaXRsZSk6CisgICAgICAgIChfZHJhd0VsZW1lbnRUaXRsZSk6Cisg
ICAgICAgIChfZHJhd0ZyYWdtZW50SGlnaGxpZ2h0KToKKyAgICAgICAgKGRyYXdOb2RlSGlnaGxp
Z2h0KToKKyAgICAgICAgKF9kcmF3UmVnaW9uTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKF9x
dWFkTWlkUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoX2RyYXdSZWdpb25MaW5rKTogRGVsZXRl
ZC4KKyAgICAgICAgKF9kcmF3UmVnaW9uc0hpZ2hsaWdodCk6IERlbGV0ZWQuCisKIDIwMTctMDkt
MjEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjoga2V5Ym9hcmQgc2hvcnRjdXQgZm9yICJSZWxvYWQgcGFnZSBmcm9tIG9yaWdpbiIgZG9lc24n
dCBtYXRjaCBTYWZhcmksIGFuZCBkb2Vzbid0IHdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGQxZDY4NWNmZDg4Li5jNjgzN2UxYWM5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CkBAIC03NzcsMTcgKzc3Nyw2IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRv
U3RhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjCiAgICAgZWxlbWVu
dC0+ZG9jdW1lbnQoKS5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24o
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxv
dz4+JiByZXN1bHQpCi17Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNz
ZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKLSAgICBpZiAoIWRvY3Vt
ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG5hbWVkRmxvd3MgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz46OmNy
ZWF0ZSgpOwotCi0gICAgcmVzdWx0ID0gV1RGTW92ZShuYW1lZEZsb3dzKTsKLX0KLQogSW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlJiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0
b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXV0byBpdCA9IG1f
bm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5maW5kKCZlbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNDk2ZmE0MTUwYjQuLjM4Mjlh
MWQ3OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
aApAQCAtMTExLDcgKzExMSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFN1cHBvcnRlZENTU1By
b3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0KSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0
cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0
KSBvdmVycmlkZTsKICAgICB2b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBmb3JjZWRQc2V1ZG9DbGFz
c2VzKSBvdmVycmlkZTsKLSAgICB2b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJp
bmcmLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgogICAgIGNsYXNzIFN0eWxlU2hlZXRBY3Rpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggODA3ZDAyMjI5MjQuLmM4
ZGU0YjFhZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuY3BwCkBAIC00OSw5ICs0OSw3IEBACiAjaW5jbHVkZSAiUmVjdGFuZ2xlU2hhcGUuaCIKICNp
bmNsdWRlICJSZW5kZXJCb3hNb2RlbE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQu
aCIKLSNpbmNsdWRlICJSZW5kZXJGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5l
LmgiCi0jaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2Rl
LmgiCkBAIC04Miw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNvbnRlbnRzUXVhZFRvUGFnZShjb25z
dCBGcmFtZVZpZXcqIG1haW5WaWV3LCBjb25zdCBGcmFtZVZpZXcqIHZpZXcsCiAgICAgY29udGVu
dHNRdWFkVG9Db29yZGluYXRlU3lzdGVtKG1haW5WaWV3LCB2aWV3LCBxdWFkLCBJbnNwZWN0b3JP
dmVybGF5OjpDb29yZGluYXRlU3lzdGVtOjpWaWV3KTsKIH0KIAotc3RhdGljIHZvaWQgYnVpbGRS
ZW5kZXJlckhpZ2hsaWdodChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJSZWdpb24qIHJl
Z2lvbiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcsIEhpZ2hsaWdodCYg
aGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVT
eXN0ZW0pCitzdGF0aWMgdm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGln
aHQmIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGlu
YXRlU3lzdGVtKQogewogICAgIEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSByZW5kZXJlci0+ZG9j
dW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghY29udGFpbmluZ0ZyYW1lKQpAQCAtMTEwLDE0ICsx
MDgsNiBAQCBzdGF0aWMgdm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIFJlbmRlclJlZ2lvbiogcmVnaW9uLAogICAgICAgICAgICAgYXV0byYgcmVuZGVy
Qm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIpOwogCiAgICAgICAgICAgICBMYXlv
dXRCb3hFeHRlbnQgbWFyZ2lucyhyZW5kZXJCb3gubWFyZ2luVG9wKCksIHJlbmRlckJveC5tYXJn
aW5SaWdodCgpLCByZW5kZXJCb3gubWFyZ2luQm90dG9tKCksIHJlbmRlckJveC5tYXJnaW5MZWZ0
KCkpOwotCi0gICAgICAgICAgICBpZiAoIXJlbmRlckJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSAmJiByZWdpb24pIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyBjb21wdXRlZFZhbHVlczsKLSAgICAgICAgICAgICAgICByZW5kZXJCb3gu
Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKGNvbXB1dGVkVmFsdWVzLCByZWdpb24pOwotICAg
ICAgICAgICAgICAgIG1hcmdpbnMuc3RhcnQocmVuZGVyQm94LnN0eWxlKCkud3JpdGluZ01vZGUo
KSkgPSBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9zdGFydDsKLSAgICAgICAgICAgICAgICBt
YXJnaW5zLmVuZChyZW5kZXJCb3guc3R5bGUoKS53cml0aW5nTW9kZSgpKSA9IGNvbXB1dGVkVmFs
dWVzLm1fbWFyZ2lucy5tX2VuZDsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgcGFkZGlu
Z0JveCA9IHJlbmRlckJveC5jbGllbnRCb3hSZWN0KCk7CiAgICAgICAgICAgICBjb250ZW50Qm94
ID0gTGF5b3V0UmVjdChwYWRkaW5nQm94LngoKSArIHJlbmRlckJveC5wYWRkaW5nTGVmdCgpLCBw
YWRkaW5nQm94LnkoKSArIHJlbmRlckJveC5wYWRkaW5nVG9wKCksCiAgICAgICAgICAgICAgICAg
cGFkZGluZ0JveC53aWR0aCgpIC0gcmVuZGVyQm94LnBhZGRpbmdMZWZ0KCkgLSByZW5kZXJCb3gu
cGFkZGluZ1JpZ2h0KCksIHBhZGRpbmdCb3guaGVpZ2h0KCkgLSByZW5kZXJCb3gucGFkZGluZ1Rv
cCgpIC0gcmVuZGVyQm94LnBhZGRpbmdCb3R0b20oKSk7CkBAIC0xMzksNDEgKzEyOSwxMCBAQCBz
dGF0aWMgdm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IFJlbmRlclJlZ2lvbiogcmVnaW9uLAogICAgICAgICAgICAgICAgIGJvcmRlckJveC53aWR0aCgp
ICsgcmVuZGVySW5saW5lLmhvcml6b250YWxNYXJnaW5FeHRlbnQoKSwgYm9yZGVyQm94LmhlaWdo
dCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIEZsb2F0UXVhZCBhYnNDb250ZW50UXVhZDsKLSAg
ICAgICAgRmxvYXRRdWFkIGFic1BhZGRpbmdRdWFkOwotICAgICAgICBGbG9hdFF1YWQgYWJzQm9y
ZGVyUXVhZDsKLSAgICAgICAgRmxvYXRRdWFkIGFic01hcmdpblF1YWQ7Ci0KLSAgICAgICAgaWYg
KHJlZ2lvbikgewotICAgICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHJl
Z2lvbi0+Zmxvd1RocmVhZCgpOwotCi0gICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBxdWFk
cyBpbiB0aGUgc3BhY2Ugb2YgdGhlIFJlbmRlckZsb3dUaHJlYWQuCi0gICAgICAgICAgICBhYnND
b250ZW50UXVhZCA9IHJlbmRlcmVyLT5sb2NhbFRvQ29udGFpbmVyUXVhZChGbG9hdFJlY3QoY29u
dGVudEJveCksIGZsb3dUaHJlYWQpOwotICAgICAgICAgICAgYWJzUGFkZGluZ1F1YWQgPSByZW5k
ZXJlci0+bG9jYWxUb0NvbnRhaW5lclF1YWQoRmxvYXRSZWN0KHBhZGRpbmdCb3gpLCBmbG93VGhy
ZWFkKTsKLSAgICAgICAgICAgIGFic0JvcmRlclF1YWQgPSByZW5kZXJlci0+bG9jYWxUb0NvbnRh
aW5lclF1YWQoRmxvYXRSZWN0KGJvcmRlckJveCksIGZsb3dUaHJlYWQpOwotICAgICAgICAgICAg
YWJzTWFyZ2luUXVhZCA9IHJlbmRlcmVyLT5sb2NhbFRvQ29udGFpbmVyUXVhZChGbG9hdFJlY3Qo
bWFyZ2luQm94KSwgZmxvd1RocmVhZCk7Ci0KLSAgICAgICAgICAgIC8vIE1vdmUgdGhlIHF1YWQg
cmVsYXRpdmUgdG8gdGhlIHNwYWNlIG9mIHRoZSBjdXJyZW50IHJlZ2lvbi4KLSAgICAgICAgICAg
IExheW91dFJlY3QgZmxpcHBlZFJlZ2lvblJlY3QocmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJl
Y3QoKSk7Ci0gICAgICAgICAgICBmbG93VGhyZWFkLT5mbGlwRm9yV3JpdGluZ01vZGUoZmxpcHBl
ZFJlZ2lvblJlY3QpOwotCi0gICAgICAgICAgICBGbG9hdFNpemUgZGVsdGEgPSByZWdpb24tPmNv
bnRlbnRCb3hSZWN0KCkubG9jYXRpb24oKSAtIGZsaXBwZWRSZWdpb25SZWN0LmxvY2F0aW9uKCk7
Ci0gICAgICAgICAgICBhYnNDb250ZW50UXVhZC5tb3ZlKGRlbHRhKTsKLSAgICAgICAgICAgIGFi
c1BhZGRpbmdRdWFkLm1vdmUoZGVsdGEpOwotICAgICAgICAgICAgYWJzQm9yZGVyUXVhZC5tb3Zl
KGRlbHRhKTsKLSAgICAgICAgICAgIGFic01hcmdpblF1YWQubW92ZShkZWx0YSk7Ci0KLSAgICAg
ICAgICAgIC8vIFJlc29sdmUgdGhlIGFic29sdXRlIHF1YWRzIHN0YXJ0aW5nIGZyb20gdGhlIGN1
cnJlbnQgcmVnaW9uLgotICAgICAgICAgICAgYWJzQ29udGVudFF1YWQgPSByZWdpb24tPmxvY2Fs
VG9BYnNvbHV0ZVF1YWQoYWJzQ29udGVudFF1YWQpOwotICAgICAgICAgICAgYWJzUGFkZGluZ1F1
YWQgPSByZWdpb24tPmxvY2FsVG9BYnNvbHV0ZVF1YWQoYWJzUGFkZGluZ1F1YWQpOwotICAgICAg
ICAgICAgYWJzQm9yZGVyUXVhZCA9IHJlZ2lvbi0+bG9jYWxUb0Fic29sdXRlUXVhZChhYnNCb3Jk
ZXJRdWFkKTsKLSAgICAgICAgICAgIGFic01hcmdpblF1YWQgPSByZWdpb24tPmxvY2FsVG9BYnNv
bHV0ZVF1YWQoYWJzTWFyZ2luUXVhZCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBh
YnNDb250ZW50UXVhZCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChj
b250ZW50Qm94KSk7Ci0gICAgICAgICAgICBhYnNQYWRkaW5nUXVhZCA9IHJlbmRlcmVyLT5sb2Nh
bFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChwYWRkaW5nQm94KSk7Ci0gICAgICAgICAgICBhYnNC
b3JkZXJRdWFkID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGJvcmRl
ckJveCkpOwotICAgICAgICAgICAgYWJzTWFyZ2luUXVhZCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJz
b2x1dGVRdWFkKEZsb2F0UmVjdChtYXJnaW5Cb3gpKTsKLSAgICAgICAgfQorICAgICAgICBGbG9h
dFF1YWQgYWJzQ29udGVudFF1YWQgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9h
dFJlY3QoY29udGVudEJveCkpOworICAgICAgICBGbG9hdFF1YWQgYWJzUGFkZGluZ1F1YWQgPSBy
ZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QocGFkZGluZ0JveCkpOworICAg
ICAgICBGbG9hdFF1YWQgYWJzQm9yZGVyUXVhZCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVR
dWFkKEZsb2F0UmVjdChib3JkZXJCb3gpKTsKKyAgICAgICAgRmxvYXRRdWFkIGFic01hcmdpblF1
YWQgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobWFyZ2luQm94KSk7
CiAKICAgICAgICAgY29udGVudHNRdWFkVG9Db29yZGluYXRlU3lzdGVtKG1haW5WaWV3LCBjb250
YWluaW5nVmlldywgYWJzQ29udGVudFF1YWQsIGNvb3JkaW5hdGVTeXN0ZW0pOwogICAgICAgICBj
b250ZW50c1F1YWRUb0Nvb3JkaW5hdGVTeXN0ZW0obWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBh
YnNQYWRkaW5nUXVhZCwgY29vcmRpbmF0ZVN5c3RlbSk7CkBAIC0xODgsMTMgKzE0NywxMyBAQCBz
dGF0aWMgdm9pZCBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IFJlbmRlclJlZ2lvbiogcmVnaW9uLAogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgYnVpbGROb2Rl
SGlnaGxpZ2h0KE5vZGUmIG5vZGUsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBjb25zdCBIaWdobGln
aHRDb25maWcmIGhpZ2hsaWdodENvbmZpZywgSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rv
ck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKK3N0YXRpYyB2b2lk
IGJ1aWxkTm9kZUhpZ2hsaWdodChOb2RlJiBub2RlLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhp
Z2hsaWdodENvbmZpZywgSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNv
b3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKIHsKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGJ1aWxkUmVuZGVyZXJIaWdobGlnaHQocmVuZGVyZXIsIHJlZ2lvbiwgaGln
aGxpZ2h0Q29uZmlnLCBoaWdobGlnaHQsIGNvb3JkaW5hdGVTeXN0ZW0pOworICAgIGJ1aWxkUmVu
ZGVyZXJIaWdobGlnaHQocmVuZGVyZXIsIGhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0LCBjb29y
ZGluYXRlU3lzdGVtKTsKIH0KIAogc3RhdGljIHZvaWQgYnVpbGRRdWFkSGlnaGxpZ2h0KGNvbnN0
IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcs
IEhpZ2hsaWdodCYgaGlnaGxpZ2h0KQpAQCAtMjMzLDEyICsxOTIsMTIgQEAgdm9pZCBJbnNwZWN0
b3JPdmVybGF5OjpnZXRIaWdobGlnaHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92
ZXJsYXk6OkNvb3IKIAogICAgIGhpZ2hsaWdodC50eXBlID0gSGlnaGxpZ2h0VHlwZTo6UmVjdHM7
CiAgICAgaWYgKG1faGlnaGxpZ2h0Tm9kZSkKLSAgICAgICAgYnVpbGROb2RlSGlnaGxpZ2h0KCpt
X2hpZ2hsaWdodE5vZGUsIG51bGxwdHIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0
LCBjb29yZGluYXRlU3lzdGVtKTsKKyAgICAgICAgYnVpbGROb2RlSGlnaGxpZ2h0KCptX2hpZ2hs
aWdodE5vZGUsIG1fbm9kZUhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0LCBjb29yZGluYXRlU3lz
dGVtKTsKICAgICBlbHNlIGlmIChtX2hpZ2hsaWdodE5vZGVMaXN0KSB7CiAgICAgICAgIGhpZ2hs
aWdodC5zZXREYXRhRnJvbUNvbmZpZyhtX25vZGVIaWdobGlnaHRDb25maWcpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9oaWdobGlnaHROb2RlTGlzdC0+bGVuZ3RoKCk7ICsr
aSkgewogICAgICAgICAgICAgSGlnaGxpZ2h0IG5vZGVIaWdobGlnaHQ7Ci0gICAgICAgICAgICBi
dWlsZE5vZGVIaWdobGlnaHQoKihtX2hpZ2hsaWdodE5vZGVMaXN0LT5pdGVtKGkpKSwgbnVsbHB0
ciwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCBub2RlSGlnaGxpZ2h0LCBjb29yZGluYXRlU3lzdGVt
KTsKKyAgICAgICAgICAgIGJ1aWxkTm9kZUhpZ2hsaWdodCgqKG1faGlnaGxpZ2h0Tm9kZUxpc3Qt
Pml0ZW0oaSkpLCBtX25vZGVIaWdobGlnaHRDb25maWcsIG5vZGVIaWdobGlnaHQsIGNvb3JkaW5h
dGVTeXN0ZW0pOwogICAgICAgICAgICAgaWYgKG5vZGVIaWdobGlnaHQudHlwZSA9PSBIaWdobGln
aHRUeXBlOjpOb2RlKQogICAgICAgICAgICAgICAgIGhpZ2hsaWdodC5xdWFkcy5hcHBlbmRWZWN0
b3Iobm9kZUhpZ2hsaWdodC5xdWFkcyk7CiAgICAgICAgIH0KQEAgLTQwMSwyOSArMzYwLDYgQEAg
c3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlNpemU+IGJ1aWxk
T2JqZWN0Rm9yU2l6ZShjb25zdCBJbnQKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotc3RhdGlj
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OlF1YWQ+IGJ1aWxkUXVh
ZE9iamVjdEZvckNTU1JlZ2lvbkNvbnRlbnRDbGlwKFJlbmRlclJlZ2lvbiogcmVnaW9uKQotewot
ICAgIEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSByZWdpb24tPmRvY3VtZW50KCkuZnJhbWUoKTsK
LSAgICBpZiAoIWNvbnRhaW5pbmdGcmFtZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBGcmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3ID0gY29udGFpbmluZ0ZyYW1lLT52aWV3KCk7Ci0g
ICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IGNvbnRhaW5pbmdGcmFtZS0+cGFnZSgpLT5tYWluRnJh
bWUoKS52aWV3KCk7Ci0gICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHJlZ2lvbi0+
Zmxvd1RocmVhZCgpOwotCi0gICAgLy8gR2V0IHRoZSBjbGlwIGJveCBvZiB0aGUgY3VycmVudCBy
ZWdpb24gYW5kIGNvdmVydCBpdCBpbnRvIGFuIGFic29sdXRlIHF1YWQuCi0gICAgTGF5b3V0UmVj
dCBmbGlwcGVkUmVnaW9uUmVjdChyZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0
KCkpOwotICAgIGZsb3dUaHJlYWQtPmZsaXBGb3JXcml0aW5nTW9kZShmbGlwcGVkUmVnaW9uUmVj
dCk7Ci0KLSAgICAvLyBBcHBseSBhbnkgYm9yZGVyIG9yIHBhZGRpbmcgb2YgdGhlIHJlZ2lvbi4K
LSAgICBmbGlwcGVkUmVnaW9uUmVjdC5zZXRMb2NhdGlvbihyZWdpb24tPmNvbnRlbnRCb3hSZWN0
KCkubG9jYXRpb24oKSk7Ci0gICAgCi0gICAgRmxvYXRRdWFkIGNsaXBRdWFkID0gcmVnaW9uLT5s
b2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChmbGlwcGVkUmVnaW9uUmVjdCkpOwotICAgIGNv
bnRlbnRzUXVhZFRvUGFnZShtYWluVmlldywgY29udGFpbmluZ1ZpZXcsIGNsaXBRdWFkKTsKLQot
ICAgIHJldHVybiBidWlsZEFycmF5Rm9yUXVhZChjbGlwUXVhZCk7Ci19Ci0KIHZvaWQgSW5zcGVj
dG9yT3ZlcmxheTo6c2V0U2hvd2luZ1BhaW50UmVjdHMoYm9vbCBzaG93aW5nUGFpbnRSZWN0cykK
IHsKICAgICBpZiAobV9zaG93aW5nUGFpbnRSZWN0cyA9PSBzaG93aW5nUGFpbnRSZWN0cykKQEAg
LTQ5NSwzNiArNDMxLDkgQEAgc3RhdGljIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWcKIHsKICAgICBhdXRvIGFy
cmF5T2ZGcmFnbWVudHMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpPdmVybGF5VHlwZXM6OkZyYWdtZW50SGlnaGxpZ2h0RGF0YT46OmNyZWF0ZSgpOwog
Ci0gICAgUmVuZGVyRmxvd1RocmVhZCogY29udGFpbmluZ0Zsb3dUaHJlYWQgPSByZW5kZXJlci0+
Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAgIGlmICghY29udGFpbmluZ0Zsb3dUaHJl
YWQpIHsKLSAgICAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKLSAgICAgICAgYnVpbGRSZW5kZXJl
ckhpZ2hsaWdodChyZW5kZXJlciwgbnVsbHB0ciwgY29uZmlnLCBoaWdobGlnaHQsIEluc3BlY3Rv
ck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW06OlZpZXcpOwotICAgICAgICBhcnJheU9mRnJhZ21l
bnRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGhpZ2hsaWdodCkpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOwotICAg
ICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7Ci0gICAgICAgIGlmICghY29u
dGFpbmluZ0Zsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KCZyZW5kZXJlci0+ZW5jbG9z
aW5nQm94KCksIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKSB7Ci0gICAgICAgICAgICAvLyBUaGUg
ZmxvdyBoYXMgbm8gdmlzaWJsZSByZWdpb25zLiBUaGUgcmVuZGVyZXIgaXMgbm90IHZpc2libGUg
b24gc2NyZWVuLgotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gY29udGFpbmluZ0Zsb3dU
aHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKTsKLSAgICAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKTsgaXRl
ciAhPSByZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIFJlbmRlclJlZ2lv
biogcmVnaW9uID0gKml0ZXI7Ci0gICAgICAgICAgICBpZiAocmVnaW9uLT5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBoaWdobGlnaHQgb2YgdGhlIGZyYWdtZW50
IGluc2lkZSB0aGUgY3VycmVudCByZWdpb24uCi0gICAgICAgICAgICAgICAgSGlnaGxpZ2h0IGhp
Z2hsaWdodDsKLSAgICAgICAgICAgICAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVy
LCByZWdpb24sIGNvbmZpZywgaGlnaGxpZ2h0LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRl
U3lzdGVtOjpWaWV3KTsKLSAgICAgICAgICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+IGZyYWdtZW50SGlnaGxpZ2h0ID0g
YnVpbGRPYmplY3RGb3JIaWdobGlnaHQoaGlnaGxpZ2h0KTsKLQotICAgICAgICAgICAgICAgIC8v
IENvbXB1dGUgdGhlIGNsaXBwaW5nIGFyZWEgb2YgdGhlIHJlZ2lvbi4KLSAgICAgICAgICAgICAg
ICBmcmFnbWVudEhpZ2hsaWdodC0+c2V0UmVnaW9uQ2xpcHBpbmdBcmVhKGJ1aWxkUXVhZE9iamVj
dEZvckNTU1JlZ2lvbkNvbnRlbnRDbGlwKHJlZ2lvbikpOwotICAgICAgICAgICAgICAgIGFycmF5
T2ZGcmFnbWVudHMtPmFkZEl0ZW0oV1RGTW92ZShmcmFnbWVudEhpZ2hsaWdodCkpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKHJlZ2lvbiA9PSBlbmRSZWdpb24pCi0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9CisgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsK
KyAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVyLCBjb25maWcsIGhpZ2hsaWdodCwg
SW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbTo6Vmlldyk7CisgICAgYXJyYXlPZkZy
YWdtZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvckhpZ2hsaWdodChoaWdobGlnaHQpKTsKIAog
ICAgIHJldHVybiBXVEZNb3ZlKGFycmF5T2ZGcmFnbWVudHMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXlQYWdlLmpzCmluZGV4IDM1Mjk5NmY3MGQ1
Li5mYTcxOTg5NjhkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXlQYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5UGFnZS5qcwpAQCAtMywyMSArMyw2IEBAIGNvbnN0IGRhcmtHcmlkQ29sb3IgPSAi
cmdiYSgwLDAsMCwwLjUpIjsKIGNvbnN0IHRyYW5zcGFyZW50Q29sb3IgPSAicmdiYSgwLCAwLCAw
LCAwKSI7CiBjb25zdCBncmlkQmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LCAyNTUsIDI1NSwg
MC42KSI7CiAKLS8vIENTUyBSZWdpb25zIGhpZ2hsaWdodCBjb2xvcnMuCi1jb25zdCBoaWdobGln
aHRlZFJlZ2lvbkJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDEyNywgMjExLCAyNDgsIDAuMSkiOwot
Y29uc3QgcmVnaW9uQmFja2dyb3VuZENvbG9yID0gInJnYmEoMTI3LCAyMTEsIDI0OCwgMC40NSki
OwotY29uc3QgcmVnaW9uU3Ryb2tlQ29sb3IgPSAicmdiYSg5OCwgMjA3LCAyNTUsIDAuODUpIjsK
LQotLy8gQ1NTIFJlZ2lvbnMgY2hhaW4gaGlnaGxpZ2h0IGNvbG9ycy4KLWNvbnN0IHJlZ2lvbkxp
bmtCb3hCYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcxKSI7Ci1jb25z
dCByZWdpb25MaW5rQm94U3Ryb2tlQ29sb3IgPSAicmdiYSg5OCwgMjA3LCAyNTUsIDAuODUpIjsK
LWNvbnN0IHJlZ2lvbkNoYWluU3Ryb2tlQ29sb3IgPSAicmdiYSg5OCwgMjA3LCAyNTUsIDAuODUp
IjsKLQotLy8gQ1NTIFJlZ2lvbiBudW1iZXIgc3R5bGUuCi1jb25zdCByZWdpb25OdW1iZXJGb250
ID0gImJvbGQgNDBwdCBzYW5zLXNlcmlmIjsKLWNvbnN0IHJlZ2lvbk51bWJlckZpbGxDb2xvciA9
ICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSkiOwotY29uc3QgcmVnaW9uTnVtYmVyU3Ryb2tlQ29s
b3IgPSAicmdiKDYxLCAxMjcsIDIwNCkiOwotCiAvLyBDU1MgU2hhcGVzIGhpZ2hsaWdodCBjb2xv
cnMKIGNvbnN0IHNoYXBlSGlnaGxpZ2h0Q29sb3IgPSAicmdiYSg5NiwgODIsIDEyNywgMC44KSI7
CiBjb25zdCBzaGFwZU1hcmdpbkhpZ2hsaWdodENvbG9yID0gInJnYmEoOTYsIDgyLCAxMjcsIDAu
NikiOwpAQCAtMzIsMjEgKzE3LDYgQEAgZnVuY3Rpb24gZHJhd1BhdXNlZEluRGVidWdnZXJNZXNz
YWdlKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJkaW1tZWQiKTsK
IH0KIAotZnVuY3Rpb24gX2RyYXdSZWdpb25OdW1iZXIocXVhZCwgbnVtYmVyKQotewotICAgIGNv
bnRleHQuc2F2ZSgpOwotICAgIHZhciBtaWRQb2ludCA9IF9xdWFkTWlkUG9pbnQocXVhZCk7Ci0g
ICAgY29udGV4dC5mb250ID0gcmVnaW9uTnVtYmVyRm9udDsKLSAgICBjb250ZXh0LnRleHRBbGln
biA9ICJjZW50ZXIiOwotICAgIGNvbnRleHQudGV4dEJhc2VsaW5lID0gIm1pZGRsZSI7Ci0gICAg
Y29udGV4dC5maWxsU3R5bGUgPSByZWdpb25OdW1iZXJGaWxsQ29sb3I7Ci0gICAgY29udGV4dC5m
aWxsVGV4dChudW1iZXIsIG1pZFBvaW50LngsIG1pZFBvaW50LnkpOwotICAgIGNvbnRleHQuc3Ry
b2tlV2lkdGggPSA0OwotICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSByZWdpb25OdW1iZXJTdHJv
a2VDb2xvcjsKLSAgICBjb250ZXh0LnN0cm9rZVRleHQobnVtYmVyLCBtaWRQb2ludC54LCBtaWRQ
b2ludC55KTsKLSAgICBjb250ZXh0LnJlc3RvcmUoKTsKLX0KLQogZnVuY3Rpb24gcXVhZFRvUGF0
aChxdWFkKQogewogICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7CkBAIC0yODEsOCArMjUxLDYgQEAg
ZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnRUaXRsZShlbGVtZW50RGF0YSkKICAgICBidWlsZGVyLmFw
cGVuZFNwYW4oInB4IiwgInB4Iik7CiAKICAgICBidWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3RO
dWxsKCJyb2xlLW5hbWUiLCAiUm9sZSIsIGVsZW1lbnREYXRhLnJvbGUpOwotICAgIGJ1aWxkZXIu
YXBwZW5kUHJvcGVydHlJZk5vdE51bGwoInJlZ2lvbi1mbG93LW5hbWUiLCAiUmVnaW9uIEZsb3ci
LCBlbGVtZW50RGF0YS5yZWdpb25GbG93RGF0YSA/IGVsZW1lbnREYXRhLnJlZ2lvbkZsb3dEYXRh
Lm5hbWUgOiBudWxsKTsKLSAgICBidWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJjb250
ZW50LWZsb3ctbmFtZSIsICJDb250ZW50IEZsb3ciLCBlbGVtZW50RGF0YS5jb250ZW50Rmxvd0Rh
dGEgPyBlbGVtZW50RGF0YS5jb250ZW50Rmxvd0RhdGEubmFtZSA6IG51bGwpOwogCiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZW1lbnQtdGl0bGUtY29udGFpbmVyIikuYXBwZW5kQ2hp
bGQoYnVpbGRlci5lbGVtZW50KTsKIApAQCAtMzEwLDE1ICsyNzgsNiBAQCBmdW5jdGlvbiBfZHJh
d0VsZW1lbnRUaXRsZShlbGVtZW50RGF0YSwgZnJhZ21lbnRIaWdobGlnaHQsIHNjcm9sbCkKIAog
ICAgIHZhciBib3hYID0gbWFyZ2luUXVhZFswXS54OwogCi0gICAgdmFyIGNsaXBRdWFkID0gZnJh
Z21lbnRIaWdobGlnaHQucmVnaW9uQ2xpcHBpbmdBcmVhOwotICAgIGlmIChjbGlwUXVhZCkgewot
ICAgICAgICAvLyBSZXN0cmljdCB0aGUgcG9zaXRpb24gb2YgdGhlIHRpdGxlIGJveCB0byB0aGUg
YXJlYSBvZiB0aGUgY29udGFpbmluZyByZWdpb24uCi0gICAgICAgIGFuY2hvclRvcCA9IE1hdGgu
bWF4KGFuY2hvclRvcCwgTWF0aC5taW4oY2xpcFF1YWRbMF0ueSwgY2xpcFF1YWRbMV0ueSwgY2xp
cFF1YWRbMl0ueSwgY2xpcFF1YWRbM10ueSkpOwotICAgICAgICBhbmNob3JCb3R0b20gPSBNYXRo
Lm1pbihhbmNob3JCb3R0b20sIE1hdGgubWF4KGNsaXBRdWFkWzBdLnksIGNsaXBRdWFkWzFdLnks
IGNsaXBRdWFkWzJdLnksIGNsaXBRdWFkWzNdLnkpKTsKLSAgICAgICAgYm94WCA9IE1hdGgubWF4
KGJveFgsIE1hdGgubWluKGNsaXBRdWFkWzBdLngsIGNsaXBRdWFkWzFdLngsIGNsaXBRdWFkWzJd
LngsIGNsaXBRdWFkWzNdLngpKTsKLSAgICAgICAgYm94WCA9IE1hdGgubWluKGJveFgsIE1hdGgu
bWF4KGNsaXBRdWFkWzBdLngsIGNsaXBRdWFkWzFdLngsIGNsaXBRdWFkWzJdLngsIGNsaXBRdWFk
WzNdLngpKTsKLSAgICB9Ci0KICAgICBib3hYID0gTWF0aC5tYXgoMiwgYm94WCAtIHNjcm9sbC54
KTsKICAgICBhbmNob3JUb3AgLT0gc2Nyb2xsLnk7CiAgICAgYW5jaG9yQm90dG9tIC09IHNjcm9s
bC55OwpAQCAtMzcxLDQ5ICszMzAsNiBAQCBmdW5jdGlvbiBfZHJhd0VsZW1lbnRUaXRsZShlbGVt
ZW50RGF0YSwgZnJhZ21lbnRIaWdobGlnaHQsIHNjcm9sbCkKICAgICBlbGVtZW50VGl0bGUuc3R5
bGUubGVmdCA9IChib3hYICsgMykgKyAicHgiOwogfQogCi1mdW5jdGlvbiBfcXVhZE1pZFBvaW50
KHF1YWQpCi17Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgeDogKHF1YWRbMF0ueCArIHF1YWRbMV0u
eCArIHF1YWRbMl0ueCArIHF1YWRbM10ueCkgLyA0LAotICAgICAgICB5OiAocXVhZFswXS55ICsg
cXVhZFsxXS55ICsgcXVhZFsyXS55ICsgcXVhZFszXS55KSAvIDQsCi0gICAgfTsKLX0KLQotZnVu
Y3Rpb24gX2RyYXdSZWdpb25MaW5rKHBvaW50QSwgcG9pbnRCKQotewotICAgIGNvbnRleHQuc2F2
ZSgpOwotICAgIGNvbnRleHQubGluZVdpZHRoID0gMjsKLSAgICBjb250ZXh0LnN0cm9rZVN0eWxl
ID0gcmVnaW9uQ2hhaW5TdHJva2VDb2xvcjsKLSAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwotICAg
IGNvbnRleHQubW92ZVRvKHBvaW50QS54LCBwb2ludEEueSk7Ci0gICAgY29udGV4dC5saW5lVG8o
cG9pbnRCLngsIHBvaW50Qi55KTsKLSAgICBjb250ZXh0LnN0cm9rZSgpOwotICAgIGNvbnRleHQu
cmVzdG9yZSgpOwotfQotCi1mdW5jdGlvbiBfZHJhd1JlZ2lvbnNIaWdobGlnaHQocmVnaW9ucykK
LXsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlZ2lvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgdmFyIHJlZ2lvbiA9IHJlZ2lvbnNbaV07Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQocmVn
aW9uLmJvcmRlclF1YWQsIHJlZ2lvbi5pc0hpZ2hsaWdodGVkID8gaGlnaGxpZ2h0ZWRSZWdpb25C
YWNrZ3JvdW5kQ29sb3IgOiByZWdpb25CYWNrZ3JvdW5kQ29sb3IsIHJlZ2lvblN0cm9rZUNvbG9y
KTsKLSAgICAgICAgX2RyYXdSZWdpb25OdW1iZXIocmVnaW9uLmJvcmRlclF1YWQsIGkgKyAxKTsK
LSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMTsgaSA8IHJlZ2lvbnMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgdmFyIHJlZ2lvbkEgPSByZWdpb25zW2kgLSAxXSwKLSAgICAgICAgICAgIHJlZ2lv
bkIgPSByZWdpb25zW2ldOwotICAgICAgICBfZHJhd1JlZ2lvbkxpbmsoX3F1YWRNaWRQb2ludChy
ZWdpb25BLm91dGdvaW5nUXVhZCksIF9xdWFkTWlkUG9pbnQocmVnaW9uQi5pbmNvbWluZ1F1YWQp
KTsKLSAgICB9Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlZ2lvbnMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgdmFyIHJlZ2lvbiA9IHJlZ2lvbnNbaV07Ci0gICAgICAgIGlmIChpID4gMCkK
LSAgICAgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQocmVnaW9uLmluY29taW5nUXVhZCwgcmVnaW9u
TGlua0JveEJhY2tncm91bmRDb2xvciwgcmVnaW9uTGlua0JveFN0cm9rZUNvbG9yKTsKLSAgICAg
ICAgaWYgKGkgIT09IHJlZ2lvbnMubGVuZ3RoIC0gMSkKLSAgICAgICAgICAgIGRyYXdPdXRsaW5l
ZFF1YWQocmVnaW9uLm91dGdvaW5nUXVhZCwgcmVnaW9uTGlua0JveEJhY2tncm91bmRDb2xvciwg
cmVnaW9uTGlua0JveFN0cm9rZUNvbG9yKTsKLSAgICB9Ci19Ci0KIGZ1bmN0aW9uIF9kcmF3U2hh
cGVIaWdobGlnaHQoc2hhcGVJbmZvKQogewogICAgIGlmIChzaGFwZUluZm8ubWFyZ2luU2hhcGUp
CkBAIC00MzMsMTEgKzM0OSw2IEBAIGZ1bmN0aW9uIF9kcmF3RnJhZ21lbnRIaWdobGlnaHQoaGln
aGxpZ2h0KQogCiAgICAgY29udGV4dC5zYXZlKCk7CiAKLSAgICBpZiAoaGlnaGxpZ2h0LnJlZ2lv
bkNsaXBwaW5nQXJlYSkgewotICAgICAgICAvLyBDbGlwIHRvIHRoZSBjb250YWluaW5nIHJlZ2lv
biB0byBhdm9pZCBzaG93aW5nIGZyYWdtZW50cyB0aGF0IGFyZSBub3QgcmVuZGVyZWQgYnkgdGhp
cyByZWdpb24uCi0gICAgICAgIHF1YWRUb1BhdGgoaGlnaGxpZ2h0LnJlZ2lvbkNsaXBwaW5nQXJl
YSkuY2xpcCgpOwotICAgIH0KLQogICAgIHZhciBxdWFkcyA9IGhpZ2hsaWdodC5xdWFkcy5zbGlj
ZSgpOwogICAgIHZhciBjb250ZW50UXVhZCA9IHF1YWRzLnBvcCgpOwogICAgIHZhciBwYWRkaW5n
UXVhZCA9IHF1YWRzLnBvcCgpOwpAQCAtNTA0LDkgKzQxNSw2IEBAIGZ1bmN0aW9uIGRyYXdOb2Rl
SGlnaGxpZ2h0KGFsbEhpZ2hsaWdodHMpCiAgICAgICAgIGZvciAodmFyIGZyYWdtZW50IG9mIGhp
Z2hsaWdodC5mcmFnbWVudHMpCiAgICAgICAgICAgICBfZHJhd0ZyYWdtZW50SGlnaGxpZ2h0KGZy
YWdtZW50KTsKIAotICAgICAgICBpZiAoaGlnaGxpZ2h0LmVsZW1lbnREYXRhICYmIGhpZ2hsaWdo
dC5lbGVtZW50RGF0YS5yZWdpb25GbG93RGF0YSkKLSAgICAgICAgICAgIF9kcmF3UmVnaW9uc0hp
Z2hsaWdodChoaWdobGlnaHQuZWxlbWVudERhdGEucmVnaW9uRmxvd0RhdGEucmVnaW9ucyk7Ci0K
ICAgICAgICAgaWYgKGhpZ2hsaWdodC5lbGVtZW50RGF0YSAmJiBoaWdobGlnaHQuZWxlbWVudERh
dGEuc2hhcGVPdXRzaWRlRGF0YSkKICAgICAgICAgICAgIF9kcmF3U2hhcGVIaWdobGlnaHQoaGln
aGxpZ2h0LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZwppbmRleCA3MWUxOGFlNmUwZC4uMjVjYTg4MDU2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE3LTA5LTIxICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIHN1cHBvcnQg
Zm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzcyODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanM6CisgICAgICAg
IChXSS5DU1NPYnNlcnZlci5wcm90b3R5cGUubmFtZWRGbG93Q3JlYXRlZCk6CisgICAgICAgIChX
SS5DU1NPYnNlcnZlci5wcm90b3R5cGUubmFtZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXSS5D
U1NPYnNlcnZlci5wcm90b3R5cGUucmVnaW9uTGF5b3V0VXBkYXRlZCk6CisgICAgICAgIChXSS5D
U1NPYnNlcnZlci5wcm90b3R5cGUucmVnaW9uT3ZlcnNldENoYW5nZWQpOgorICAgICAgICAoV0ku
Q1NTT2JzZXJ2ZXIucHJvdG90eXBlLnJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudCk6
CisgICAgICAgIChXSS5DU1NPYnNlcnZlci5wcm90b3R5cGUudW5yZWdpc3RlcmVkTmFtZWRGbG93
Q29udGVudEVsZW1lbnQpOgorICAgICAgICBMZWF2ZSBvYnNlcnZlciBmdW5jdGlvbnMgaW4gZm9y
IG9sZGVyIGJhY2tlbmRzIHRoYXQgd2lsbCBzZW5kCisgICAgICAgIHRoZXNlIG1lc3NhZ2VzLCBi
dXQgd2UganVzdCBpZ25vcmUgdGhlbS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFn
ZXIuanM6CisgICAgICAgIChXSS5ET01UcmVlTWFuYWdlcik6CisgICAgICAgIChXSS5ET01UcmVl
TWFuYWdlci5wcm90b3R5cGUuX3VuYmluZCk6CisgICAgICAgIChXSS5ET01UcmVlTWFuYWdlci5f
Zmxvd1BheWxvYWRIYXNoS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVNYW5hZ2Vy
LnByb3RvdHlwZS5fY3JlYXRlQ29udGVudEZsb3dGcm9tUGF5bG9hZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZUNvbnRlbnRGbG93RnJvbVBh
eWxvYWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLmdl
dE5hbWVkRmxvd0NvbGxlY3Rpb24ub25OYW1lZEZsb3dDb2xsZWN0aW9uQXZhaWxhYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5nZXROYW1lZEZsb3dD
b2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlw
ZS5uYW1lZEZsb3dDcmVhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVNYW5hZ2Vy
LnByb3RvdHlwZS5uYW1lZEZsb3dSZW1vdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRy
ZWVNYW5hZ2VyLnByb3RvdHlwZS5fc2VuZE5hbWVkRmxvd1VwZGF0ZUV2ZW50cyk6IERlbGV0ZWQu
CisgICAgICAgIChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUucmVnaW9uT3ZlcnNldENoYW5n
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLnJlZ2lz
dGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01U
cmVlTWFuYWdlci5wcm90b3R5cGUuX3JlbW92ZUNvbnRlbnROb2RlRnJvbUZsb3dJZk5lZWRlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUudW5yZWdpc3Rl
cmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJl
ZU1hbmFnZXIucHJvdG90eXBlLl9jb2VyY2VSZW1vdGVBcnJheU9mRE9NTm9kZXMubm9kZVJlcXVl
c3RlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUuX2Nv
ZXJjZVJlbW90ZUFycmF5T2ZET01Ob2Rlcyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVl
TWFuYWdlci5wcm90b3R5cGUuZ2V0Tm9kZUNvbnRlbnRGbG93SW5mby5yZWdpb25Ob2Rlc0F2YWls
YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUuZ2V0
Tm9kZUNvbnRlbnRGbG93SW5mby5yZW1vdGVPYmplY3RQcm9wZXJ0aWVzQXZhaWxhYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5nZXROb2RlQ29udGVu
dEZsb3dJbmZvLmluc3BlY3RlZFBhZ2Vfbm9kZV9nZXRGbG93SW5mby5nZXRDb21wdXRlZFByb3Bl
cnR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5nZXRO
b2RlQ29udGVudEZsb3dJbmZvLmluc3BlY3RlZFBhZ2Vfbm9kZV9nZXRGbG93SW5mby5nZXRDb250
ZW50Rmxvd05hbWUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90
eXBlLmdldE5vZGVDb250ZW50Rmxvd0luZm8pOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvSW1hZ2VzL0NvbnRlbnRGbG93LnN2ZzogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0ltYWdlcy9ndGsvQ29udGVudEZsb3cuc3ZnOiBSZW1vdmVkLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0Nv
bGxlY3Rpb24uanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ29udGVudEZsb3cu
anM6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NVHJlZS5qczoK
KyAgICAgICAgKFdJLkRPTVRyZWUpOgorICAgICAgICAoV0kuRE9NVHJlZS5wcm90b3R5cGUuZ2V0
IGZyYW1lKToKKyAgICAgICAgKFdJLkRPTVRyZWUucHJvdG90eXBlLl9mcmFtZVBhZ2VFeGVjdXRp
b25Db250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXSS5ET01UcmVlLnByb3RvdHlwZS5nZXQgY29u
dGVudEZsb3dDb2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWUucHJvdG90
eXBlLnJlcXVlc3RDb250ZW50Rmxvd0xpc3QpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJl
ZS5wcm90b3R5cGUuX2lzQ29udGVudEZsb3dJbkN1cnJlbnREb2N1bWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5ET01UcmVlLnByb3RvdHlwZS5fY29udGVudEZsb3dMaXN0V2FzVXBkYXRlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlLnByb3RvdHlwZS5fY29udGVudEZsb3dXYXNB
ZGRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlLnByb3RvdHlwZS5fY29udGVudEZs
b3dXYXNSZW1vdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRt
bDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5q
czoKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldyk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmNzczoKKyAgICAgICAgKC5k
ZXRhaWxzLXNlY3Rpb24gPiAuY29udGVudCA+IC5ncm91cCA+IC5yb3cuc2ltcGxlLmNvbnRlbnQt
Zmxvdy1saW5rID4gLnZhbHVlID4gc3BhbiA+IC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAg
IChXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAg
ICAgKFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmluaXRpYWxMYXlvdXQp
OgorICAgICAgICAoV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2hhbmRs
ZVZhcmlhYmxlc1NlY3Rpb25Db2xsYXBzZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV0kuQ29t
cHV0ZWRTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAgIChXSS5Db21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLnByb3RvdHlwZS5nZXQgcmVnaW9uRmxvdyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5D
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zZXQgcmVnaW9uRmxvdyk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5nZXQg
Y29udGVudEZsb3cpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuc2V0IGNvbnRlbnRGbG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNv
bXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmdldCBjb250YWluZXJSZWdpb25zKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBl
LnNldCBjb250YWluZXJSZWdpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNpemVEaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUZsb3dOYW1l
c1NlY3Rpb25WaXNpYmlsaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvbXB1dGVkU3R5bGVE
ZXRhaWxzUGFuZWwucHJvdG90eXBlLl9yZXNldEZsb3dEZXRhaWxzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9yZWZyZXNoRmxvd0Rl
dGFpbHMuY29udGVudEZsb3dJbmZvUmVhZHkpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX3JlZnJlc2hGbG93RGV0YWlscyk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fZ29U
b1JlZ2lvbkZsb3dBcnJvd1dhc0NsaWNrZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX2dvVG9Db250ZW50Rmxvd0Fycm93V2FzQ2xp
Y2tlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxv
d0RPTVRyZWVDb250ZW50Vmlldy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRGbG93SWNvbi5jc3M6IFJlbW92ZWQuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzOiBSZW1vdmVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Db250ZW50
Vmlldy5jcmVhdGVGcm9tUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV0kuQ29udGVudFZp
ZXcuaXNWaWV3YWJsZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVF
bGVtZW50LmpzOgorICAgICAgICAoV0kuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUub25wb3B1
bGF0ZSk6CisgICAgICAgIChXSS5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFuZCk6
CisgICAgICAgIChXSS5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fY2hpbGRDb250ZW50Rmxv
d1dhc0FkZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9jaGlsZENvbnRlbnRGbG93V2FzUmVtb3ZlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5G
cmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCk6IERlbGV0
ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5q
czoKKyAgICAgICAgKFdJLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdHJlZVNlbGVj
dGlvbkRpZENoYW5nZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNU
YWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3KToK
KyAgICAgICAgKFdJLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jYW5TaG93UmVw
cmVzZW50ZWRPYmplY3QpOgorCiAyMDE3LTA5LTIxICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgZGV0YWlscyBzaWRl
YmFyIHRvIExheWVycyB0YWIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL01haW4uanMKaW5kZXggYWFjNjgyNDFiZDguLjdiZTk2OGI1ZjQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0x
MDk5LDEwICsxMDk5LDYgQEAgV0kudGFiQ29udGVudFZpZXdDbGFzc0ZvclJlcHJlc2VudGVkT2Jq
ZWN0ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgIHx8IHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV0kuU2hhZGVyUHJvZ3JhbSkKICAgICAgICAgcmV0dXJuIFdJLlJl
c291cmNlc1RhYkNvbnRlbnRWaWV3OwogCi0gICAgLy8gRklYTUU6IE1vdmUgQ29udGVudCBGbG93
cyB0byB0aGUgRWxlbWVudHMgdGFiPwotICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdJLkNvbnRlbnRGbG93KQotICAgICAgICByZXR1cm4gV0kuUmVzb3VyY2VzVGFiQ29udGVu
dFZpZXc7Ci0KICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byBhIFN0b3JhZ2UgdGFiLgogICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkRPTVN0b3JhZ2VPYmplY3QgfHwg
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Db29raWVTdG9yYWdlT2JqZWN0IHx8CiAg
ICAgICAgIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRGF0YWJhc2VUYWJsZU9iamVj
dCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkRhdGFiYXNlT2JqZWN0IHx8CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9ET01UcmVlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCmluZGV4IDU0N2Q4ZWE3ZjY2Li5mMDFhOWMz
M2I1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMKQEAgLTM5LDIyICszOSwx
MiBAQCBXSS5ET01UcmVlTWFuYWdlciA9IGNsYXNzIERPTVRyZWVNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHRoaXMuX2lkVG9ET01Ob2RlID0ge307CiAgICAgICAgIHRoaXMuX2Rv
Y3VtZW50ID0gbnVsbDsKICAgICAgICAgdGhpcy5fYXR0cmlidXRlTG9hZE5vZGVJZHMgPSB7fTsK
LSAgICAgICAgdGhpcy5fZmxvd3MgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9jb250ZW50Tm9k
ZXNUb0Zsb3dzTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGVkTm9k
ZUlzQWxsb3dlZCA9IHRydWU7CiAgICAgICAgIHRoaXMuX2xvYWROb2RlQXR0cmlidXRlc1RpbWVv
dXQgPSAwOwogCiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZl
bnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMpOwogICAgIH0KIAotICAgIC8vIFN0YXRpYwotCi0gICAgc3RhdGljIF9mbG93UGF5bG9hZEhh
c2hLZXkoZmxvd1BheWxvYWQpCi0gICAgewotICAgICAgICAvLyBVc2UgdGhlIGZsb3cgbm9kZSBp
ZCwgdG8gYXZvaWQgY29sbGlzaW9ucyB3aGVuIHdlIGNoYW5nZSBtYWluIGRvY3VtZW50IGlkLgot
ICAgICAgICByZXR1cm4gZmxvd1BheWxvYWQuZG9jdW1lbnROb2RlSWQgKyAiOiIgKyBmbG93UGF5
bG9hZC5uYW1lOwotICAgIH0KLQogICAgIC8vIFB1YmxpYwogCiAgICAgcmVxdWVzdERvY3VtZW50
KGNhbGxiYWNrKQpAQCAtMzIxLDggKzMxMSw2IEBAIFdJLkRPTVRyZWVNYW5hZ2VyID0gY2xhc3Mg
RE9NVHJlZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF91bmJpbmQobm9kZSkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX3JlbW92ZUNvbnRlbnROb2RlRnJvbUZsb3dJZk5lZWRlZChub2Rl
KTsKLQogICAgICAgICBkZWxldGUgdGhpcy5faWRUb0RPTU5vZGVbbm9kZS5pZF07CiAKICAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IG5vZGUuY2hpbGRyZW4gJiYgaSA8IG5vZGUuY2hpbGRyZW4ubGVu
Z3RoOyArK2kpCkBAIC01MzMsMjgyICs1MjEsNiBAQCBXSS5ET01UcmVlTWFuYWdlciA9IGNsYXNz
IERPTVRyZWVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiBoaWdobGln
aHRDb25maWc7CiAgICAgfQogCi0gICAgX2NyZWF0ZUNvbnRlbnRGbG93RnJvbVBheWxvYWQoZmxv
d1BheWxvYWQpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogQ29sbGVjdCB0aGUgcmVnaW9ucyBm
cm9tIHRoZSBwYXlsb2FkLgotICAgICAgICB2YXIgZmxvdyA9IG5ldyBXSS5Db250ZW50Rmxvdyhm
bG93UGF5bG9hZC5kb2N1bWVudE5vZGVJZCwgZmxvd1BheWxvYWQubmFtZSwgZmxvd1BheWxvYWQu
b3ZlcnNldCwgZmxvd1BheWxvYWQuY29udGVudC5tYXAodGhpcy5ub2RlRm9ySWQuYmluZCh0aGlz
KSkpOwotCi0gICAgICAgIGZvciAodmFyIGNvbnRlbnROb2RlIG9mIGZsb3cuY29udGVudE5vZGVz
KSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fY29udGVudE5vZGVzVG9GbG93
c01hcC5oYXMoY29udGVudE5vZGUuaWQpKTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRlbnROb2Rl
c1RvRmxvd3NNYXAuc2V0KGNvbnRlbnROb2RlLmlkLCBmbG93KTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBmbG93OwotICAgIH0KLQotICAgIF91cGRhdGVDb250ZW50Rmxvd0Zyb21QYXls
b2FkKGNvbnRlbnRGbG93LCBmbG93UGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGNvbnRlbnRGbG93LmNvbnRlbnROb2Rlcy5sZW5ndGggPT09IGZsb3dQYXlsb2FkLmNvbnRl
bnQubGVuZ3RoKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudEZsb3cuY29udGVudE5v
ZGVzLmV2ZXJ5KChub2RlLCBpKSA9PiBub2RlLmlkID09PSBmbG93UGF5bG9hZC5jb250ZW50W2ld
KSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IENvbGxlY3QgdGhlIHJlZ2lvbnMgZnJvbSB0aGUgcGF5
bG9hZC4KLSAgICAgICAgY29udGVudEZsb3cub3ZlcnNldCA9IGZsb3dQYXlsb2FkLm92ZXJzZXQ7
Ci0gICAgfQotCi0gICAgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihkb2N1bWVudE5vZGVJZGVudGlm
aWVyKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gb25OYW1lZEZsb3dDb2xsZWN0aW9uQXZhaWxh
YmxlKGVycm9yLCBmbG93cykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRlbnROb2Rlc1RvRmxv
d3NNYXAuY2xlYXIoKTsKLSAgICAgICAgICAgIHZhciBjb250ZW50Rmxvd3MgPSBbXTsKLSAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmxvd3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgZmxvd1BheWxvYWQgPSBmbG93c1tpXTsKLSAgICAgICAgICAgICAgICB2YXIg
Zmxvd0tleSA9IFdJLkRPTVRyZWVNYW5hZ2VyLl9mbG93UGF5bG9hZEhhc2hLZXkoZmxvd1BheWxv
YWQpOwotICAgICAgICAgICAgICAgIHZhciBjb250ZW50RmxvdyA9IHRoaXMuX2Zsb3dzLmdldChm
bG93S2V5KTsKLSAgICAgICAgICAgICAgICBpZiAoY29udGVudEZsb3cpCi0gICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRGbG93RnJvbVBheWxvYWQoY29udGVudEZsb3csIGZs
b3dQYXlsb2FkKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGVudEZsb3cgPSB0aGlzLl9jcmVhdGVDb250ZW50Rmxvd0Zyb21QYXlsb2FkKGZsb3dQYXls
b2FkKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmxvd3Muc2V0KGZsb3dLZXksIGNvbnRl
bnRGbG93KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGVudEZsb3dz
LnB1c2goY29udGVudEZsb3cpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dM
aXN0V2FzVXBkYXRlZCwge2RvY3VtZW50Tm9kZUlkZW50aWZpZXIsIGZsb3dzOiBjb250ZW50Rmxv
d3N9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3aW5kb3cuQ1NTQWdlbnQpCi0gICAgICAg
ICAgICBDU1NBZ2VudC5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKGRvY3VtZW50Tm9kZUlkZW50aWZp
ZXIsIG9uTmFtZWRGbG93Q29sbGVjdGlvbkF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0K
LSAgICBuYW1lZEZsb3dDcmVhdGVkKGZsb3dQYXlsb2FkKQotICAgIHsKLSAgICAgICAgdmFyIGZs
b3dLZXkgPSBXSS5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRIYXNoS2V5KGZsb3dQYXlsb2Fk
KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Zsb3dzLmhhcyhmbG93S2V5KSk7Ci0g
ICAgICAgIHZhciBjb250ZW50RmxvdyA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRGbG93RnJvbVBheWxv
YWQoZmxvd1BheWxvYWQpOwotICAgICAgICB0aGlzLl9mbG93cy5zZXQoZmxvd0tleSwgY29udGVu
dEZsb3cpOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01UcmVl
TWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCB7ZmxvdzogY29udGVudEZsb3d9KTsK
LSAgICB9Ci0KLSAgICBuYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIGZs
b3dOYW1lKQotICAgIHsKLSAgICAgICAgdmFyIGZsb3dLZXkgPSBXSS5ET01UcmVlTWFuYWdlci5f
Zmxvd1BheWxvYWRIYXNoS2V5KHtkb2N1bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWRlbnRpZmll
ciwgbmFtZTogZmxvd05hbWV9KTsKLSAgICAgICAgdmFyIGNvbnRlbnRGbG93ID0gdGhpcy5fZmxv
d3MuZ2V0KGZsb3dLZXkpOwotICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Rmxvdyk7Ci0g
ICAgICAgIHRoaXMuX2Zsb3dzLmRlbGV0ZShmbG93S2V5KTsKLQotICAgICAgICAvLyBSZW1vdmUg
YW55IGJhY2sgbGlua3MgdG8gdGhpcyBmbG93IGZyb20gdGhlIGNvbnRlbnQgbm9kZXMuCi0gICAg
ICAgIGZvciAodmFyIGNvbnRlbnROb2RlIG9mIGNvbnRlbnRGbG93LmNvbnRlbnROb2RlcykKLSAg
ICAgICAgICAgIHRoaXMuX2NvbnRlbnROb2Rlc1RvRmxvd3NNYXAuZGVsZXRlKGNvbnRlbnROb2Rl
LmlkKTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01UcmVl
TWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHtmbG93OiBjb250ZW50Rmxvd30p
OwotICAgIH0KLQotICAgIF9zZW5kTmFtZWRGbG93VXBkYXRlRXZlbnRzKGZsb3dQYXlsb2FkKQot
ICAgIHsKLSAgICAgICAgdmFyIGZsb3dLZXkgPSBXSS5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxv
YWRIYXNoS2V5KGZsb3dQYXlsb2FkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmxv
d3MuaGFzKGZsb3dLZXkpKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudEZsb3dGcm9tUGF5
bG9hZCh0aGlzLl9mbG93cy5nZXQoZmxvd0tleSksIGZsb3dQYXlsb2FkKTsKLSAgICB9Ci0KLSAg
ICByZWdpb25PdmVyc2V0Q2hhbmdlZChmbG93UGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3NlbmROYW1lZEZsb3dVcGRhdGVFdmVudHMoZmxvd1BheWxvYWQpOwotICAgIH0KLQotICAgIHJl
Z2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudE5vZGVJZGVudGlmaWVyLCBm
bG93TmFtZSwgY29udGVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKQotICAgIHsK
LSAgICAgICAgdmFyIGZsb3dLZXkgPSBXSS5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRIYXNo
S2V5KHtkb2N1bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWRlbnRpZmllciwgbmFtZTogZmxvd05h
bWV9KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmxvd3MuaGFzKGZsb3dLZXkpKTsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2NvbnRlbnROb2Rlc1RvRmxvd3NNYXAuaGFz
KGNvbnRlbnROb2RlSWQpKTsKLQotICAgICAgICB2YXIgZmxvdyA9IHRoaXMuX2Zsb3dzLmdldChm
bG93S2V5KTsKLSAgICAgICAgdmFyIGNvbnRlbnROb2RlID0gdGhpcy5ub2RlRm9ySWQoY29udGVu
dE5vZGVJZCk7Ci0KLSAgICAgICAgdGhpcy5fY29udGVudE5vZGVzVG9GbG93c01hcC5zZXQoY29u
dGVudE5vZGUuaWQsIGZsb3cpOwotCi0gICAgICAgIGlmIChuZXh0Q29udGVudEVsZW1lbnROb2Rl
SWQpCi0gICAgICAgICAgICBmbG93Lmluc2VydENvbnRlbnROb2RlQmVmb3JlKGNvbnRlbnROb2Rl
LCB0aGlzLm5vZGVGb3JJZChuZXh0Q29udGVudEVsZW1lbnROb2RlSWQpKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgZmxvdy5hcHBlbmRDb250ZW50Tm9kZShjb250ZW50Tm9kZSk7Ci0gICAg
fQotCi0gICAgX3JlbW92ZUNvbnRlbnROb2RlRnJvbUZsb3dJZk5lZWRlZChub2RlKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50Tm9kZXNUb0Zsb3dzTWFwLmhhcyhub2RlLmlkKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIGZsb3cgPSB0aGlzLl9jb250ZW50Tm9k
ZXNUb0Zsb3dzTWFwLmdldChub2RlLmlkKTsKLSAgICAgICAgdGhpcy5fY29udGVudE5vZGVzVG9G
bG93c01hcC5kZWxldGUobm9kZS5pZCk7Ci0gICAgICAgIGZsb3cucmVtb3ZlQ29udGVudE5vZGUo
bm9kZSk7Ci0gICAgfQotCi0gICAgdW5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQo
ZG9jdW1lbnROb2RlSWRlbnRpZmllciwgZmxvd05hbWUsIGNvbnRlbnROb2RlSWQpCi0gICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb250ZW50Tm9kZXNUb0Zsb3dzTWFwLmhhcyhj
b250ZW50Tm9kZUlkKSk7Ci0KLSAgICAgICAgdmFyIGZsb3cgPSB0aGlzLl9jb250ZW50Tm9kZXNU
b0Zsb3dzTWFwLmdldChjb250ZW50Tm9kZUlkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZmxv
dy5pZCA9PT0gV0kuRE9NVHJlZU1hbmFnZXIuX2Zsb3dQYXlsb2FkSGFzaEtleSh7ZG9jdW1lbnRO
b2RlSWQ6IGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIG5hbWU6IGZsb3dOYW1lfSkpOwotCi0gICAg
ICAgIHRoaXMuX2NvbnRlbnROb2Rlc1RvRmxvd3NNYXAuZGVsZXRlKGNvbnRlbnROb2RlSWQpOwot
ICAgICAgICBmbG93LnJlbW92ZUNvbnRlbnROb2RlKHRoaXMubm9kZUZvcklkKGNvbnRlbnROb2Rl
SWQpKTsKLSAgICB9Ci0KLSAgICBfY29lcmNlUmVtb3RlQXJyYXlPZkRPTU5vZGVzKHJlbW90ZU9i
amVjdCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChyZW1vdGVPYmpl
Y3QudHlwZSA9PT0gIm9iamVjdCIpOwotICAgICAgICBjb25zb2xlLmFzc2VydChyZW1vdGVPYmpl
Y3Quc3VidHlwZSA9PT0gImFycmF5Iik7Ci0KLSAgICAgICAgbGV0IGxlbmd0aCA9IHJlbW90ZU9i
amVjdC5zaXplOwotICAgICAgICBpZiAoIWxlbmd0aCkgewotICAgICAgICAgICAgY2FsbGJhY2so
bnVsbCwgW10pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0
IG5vZGVzOwotICAgICAgICBsZXQgcmVjZWl2ZWQgPSAwOwotICAgICAgICBsZXQgbGFzdEVycm9y
ID0gbnVsbDsKLSAgICAgICAgbGV0IGRvbVRyZWVNYW5hZ2VyID0gdGhpczsKLQotICAgICAgICBm
dW5jdGlvbiBub2RlUmVxdWVzdGVkKGluZGV4LCBlcnJvciwgbm9kZUlkKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgbGFzdEVycm9yID0gZXJyb3I7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbm9kZXNbaW5kZXhdID0gZG9tVHJl
ZU1hbmFnZXIuX2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAgICAgICAgICBpZiAoKytyZWNlaXZl
ZCA9PT0gbGVuZ3RoKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGxhc3RFcnJvciwgbm9kZXMp
OwotICAgICAgICB9Ci0KLSAgICAgICAgV0kucnVudGltZU1hbmFnZXIuZ2V0UHJvcGVydGllc0Zv
clJlbW90ZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0SWQsIGZ1bmN0aW9uKGVycm9yLCBwcm9w
ZXJ0aWVzKSB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBjYWxs
YmFjayhlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBub2RlcyA9IG5ldyBBcnJheShsZW5ndGgpOwotICAgICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGxldCBub2RlUHJv
cGVydHkgPSBwcm9wZXJ0aWVzLmdldChTdHJpbmcoaSkpOwotICAgICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KG5vZGVQcm9wZXJ0eS52YWx1ZS50eXBlID09PSAib2JqZWN0Iik7Ci0gICAgICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZVByb3BlcnR5LnZhbHVlLnN1YnR5cGUgPT09ICJu
b2RlIik7Ci0gICAgICAgICAgICAgICAgRE9NQWdlbnQucmVxdWVzdE5vZGUobm9kZVByb3BlcnR5
LnZhbHVlLm9iamVjdElkLCBub2RlUmVxdWVzdGVkLmJpbmQobnVsbCwgaSkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBnZXROb2RlQ29udGVudEZsb3dJbmZvKGRv
bU5vZGUsIHJlc3VsdFJlYWR5Q2FsbGJhY2spCi0gICAgewotICAgICAgICBXSS5SZW1vdGVPYmpl
Y3QucmVzb2x2ZU5vZGUoZG9tTm9kZSkudGhlbigocmVtb3RlT2JqZWN0KSA9PiB7Ci0gICAgICAg
ICAgICBsZXQgZXZhbFBhcmFtZXRlcnMgPSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0SWQ6IHJl
bW90ZU9iamVjdC5vYmplY3RJZCwKLSAgICAgICAgICAgICAgICBmdW5jdGlvbkRlY2xhcmF0aW9u
OiBhcHBlbmRXZWJJbnNwZWN0b3JTb3VyY2VVUkwoaW5zcGVjdGVkUGFnZV9ub2RlX2dldEZsb3dJ
bmZvLnRvU3RyaW5nKCkpLAotICAgICAgICAgICAgICAgIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNB
bmRNdXRlQ29uc29sZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICByZXR1cm5CeVZhbHVlOiBmYWxz
ZSwKLSAgICAgICAgICAgICAgICBnZW5lcmF0ZVByZXZpZXc6IGZhbHNlCi0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgUnVudGltZUFnZW50LmNhbGxGdW5jdGlvbk9uLmludm9rZShldmFsUGFy
YW1ldGVycywgcmVnaW9uTm9kZXNBdmFpbGFibGUuYmluZCh0aGlzKSk7Ci0gICAgICAgIH0pLmNh
dGNoKHJlc3VsdFJlYWR5Q2FsbGJhY2spOwotCi0gICAgICAgIGZ1bmN0aW9uIHJlZ2lvbk5vZGVz
QXZhaWxhYmxlKGVycm9yLCByZW1vdGVPYmplY3QsIHdhc1Rocm93bikKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0UmVhZHlDYWxsYmFj
ayhlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAod2FzVGhyb3duKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5l
dmVyIGdldCBoZXJlLCBidXQgaGF2aW5nIHRoZSBlcnJvciBpcyB1c2VmdWwgZm9yIGRlYnVnZ2lu
Zy4KLSAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJvciB3aGlsZSBleGVjdXRpbmcg
YmFja2VuZCBmdW5jdGlvbjoiLCBKU09OLnN0cmluZ2lmeShyZW1vdGVPYmplY3QpKTsKLSAgICAg
ICAgICAgICAgICByZXN1bHRSZWFkeUNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gVGhlIGJhY2tlbmQgZnVuY3Rp
b24gY2FuIG5ldmVyIHJldHVybiBudWxsLgotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocmVt
b3RlT2JqZWN0LnR5cGUgPT09ICJvYmplY3QiKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHJlbW90ZU9iamVjdC5vYmplY3RJZCk7Ci0gICAgICAgICAgICBXSS5ydW50aW1lTWFuYWdlci5n
ZXRQcm9wZXJ0aWVzRm9yUmVtb3RlT2JqZWN0KHJlbW90ZU9iamVjdC5vYmplY3RJZCwgcmVtb3Rl
T2JqZWN0UHJvcGVydGllc0F2YWlsYWJsZS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIHJlbW90ZU9iamVjdFByb3BlcnRpZXNBdmFpbGFibGUoZXJyb3IsIHByb3Bl
cnRpZXMpIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIHJlc3Vs
dFJlYWR5Q2FsbGJhY2soZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHsKLSAgICAgICAgICAgICAgICByZWdp
b25GbG93OiBudWxsLAotICAgICAgICAgICAgICAgIGNvbnRlbnRGbG93OiBudWxsLAotICAgICAg
ICAgICAgICAgIHJlZ2lvbnM6IG51bGwKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIHZh
ciByZWdpb25GbG93TmFtZVByb3BlcnR5ID0gcHJvcGVydGllcy5nZXQoInJlZ2lvbkZsb3dOYW1l
Iik7Ci0gICAgICAgICAgICBpZiAocmVnaW9uRmxvd05hbWVQcm9wZXJ0eSAmJiByZWdpb25GbG93
TmFtZVByb3BlcnR5LnZhbHVlICYmIHJlZ2lvbkZsb3dOYW1lUHJvcGVydHkudmFsdWUudmFsdWUp
IHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChyZWdpb25GbG93TmFtZVByb3BlcnR5
LnZhbHVlLnR5cGUgPT09ICJzdHJpbmciKTsKLSAgICAgICAgICAgICAgICB2YXIgcmVnaW9uRmxv
d0tleSA9IFdJLkRPTVRyZWVNYW5hZ2VyLl9mbG93UGF5bG9hZEhhc2hLZXkoe2RvY3VtZW50Tm9k
ZUlkOiBkb21Ob2RlLm93bmVyRG9jdW1lbnQuaWQsIG5hbWU6IHJlZ2lvbkZsb3dOYW1lUHJvcGVy
dHkudmFsdWUudmFsdWV9KTsKLSAgICAgICAgICAgICAgICByZXN1bHQucmVnaW9uRmxvdyA9IHRo
aXMuX2Zsb3dzLmdldChyZWdpb25GbG93S2V5KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgdmFyIGNvbnRlbnRGbG93TmFtZVByb3BlcnR5ID0gcHJvcGVydGllcy5nZXQoImNvbnRlbnRG
bG93TmFtZSIpOwotICAgICAgICAgICAgaWYgKGNvbnRlbnRGbG93TmFtZVByb3BlcnR5ICYmIGNv
bnRlbnRGbG93TmFtZVByb3BlcnR5LnZhbHVlICYmIGNvbnRlbnRGbG93TmFtZVByb3BlcnR5LnZh
bHVlLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudEZsb3dO
YW1lUHJvcGVydHkudmFsdWUudHlwZSA9PT0gInN0cmluZyIpOwotICAgICAgICAgICAgICAgIHZh
ciBjb250ZW50Rmxvd0tleSA9IFdJLkRPTVRyZWVNYW5hZ2VyLl9mbG93UGF5bG9hZEhhc2hLZXko
e2RvY3VtZW50Tm9kZUlkOiBkb21Ob2RlLm93bmVyRG9jdW1lbnQuaWQsIG5hbWU6IGNvbnRlbnRG
bG93TmFtZVByb3BlcnR5LnZhbHVlLnZhbHVlfSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmNv
bnRlbnRGbG93ID0gdGhpcy5fZmxvd3MuZ2V0KGNvbnRlbnRGbG93S2V5KTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgdmFyIHJlZ2lvbnNQcm9wZXJ0eSA9IHByb3BlcnRpZXMuZ2V0KCJy
ZWdpb25zIik7Ci0gICAgICAgICAgICBpZiAoIXJlZ2lvbnNQcm9wZXJ0eSB8fCAhcmVnaW9uc1By
b3BlcnR5LnZhbHVlLm9iamVjdElkKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGxpc3Qgb2Yg
cmVnaW9ucyBpcyBudWxsLgotICAgICAgICAgICAgICAgIHJlc3VsdFJlYWR5Q2FsbGJhY2sobnVs
bCwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHRoaXMuX2NvZXJjZVJlbW90ZUFycmF5T2ZET01Ob2RlcyhyZWdpb25zUHJvcGVy
dHkudmFsdWUsIGZ1bmN0aW9uKGVycm9yLCBub2RlcykgewotICAgICAgICAgICAgICAgIHJlc3Vs
dC5yZWdpb25zID0gbm9kZXM7Ci0gICAgICAgICAgICAgICAgcmVzdWx0UmVhZHlDYWxsYmFjayhl
cnJvciwgcmVzdWx0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gaW5zcGVjdGVkUGFnZV9ub2RlX2dldEZsb3dJbmZvKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRQcm9wZXJ0eShub2RlLCBwcm9wZXJ0eU5hbWUpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFub2RlLm93bmVyRG9jdW1lbnQgfHwg
IW5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGw7Ci0gICAgICAgICAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSBub2RlLm93bmVy
RG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gY29tcHV0ZWRTdHlsZSA/IGNvbXB1dGVkU3R5bGVbcHJvcGVydHlOYW1lXSA6
IG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGdldENvbnRlbnRG
bG93TmFtZShub2RlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAoOyBub2Rl
OyBub2RlID0gbm9kZS5wYXJlbnROb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmbG93
TmFtZSA9IGdldENvbXB1dGVkUHJvcGVydHkobm9kZSwgIndlYmtpdEZsb3dJbnRvIik7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChmbG93TmFtZSAmJiBmbG93TmFtZSAhPT0gIm5vbmUiKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsb3dOYW1lOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgdmFyIG5vZGUgPSB0aGlzOwotCi0gICAgICAgICAgICAvLyBFdmVuIGRldGFjaGVkIG5vZGVz
IGhhdmUgYW4gb3duZXJEb2N1bWVudC4KLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGUu
b3duZXJEb2N1bWVudCk7Ci0KLSAgICAgICAgICAgIHZhciByZXN1bHQgPSB7Ci0gICAgICAgICAg
ICAgICAgcmVnaW9uRmxvd05hbWU6IGdldENvbXB1dGVkUHJvcGVydHkobm9kZSwgIndlYmtpdEZs
b3dGcm9tIiksCi0gICAgICAgICAgICAgICAgY29udGVudEZsb3dOYW1lOiBnZXRDb250ZW50Rmxv
d05hbWUobm9kZSksCi0gICAgICAgICAgICAgICAgcmVnaW9uczogbnVsbAotICAgICAgICAgICAg
fTsKLQotICAgICAgICAgICAgaWYgKHJlc3VsdC5jb250ZW50Rmxvd05hbWUpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgZmxvd1RocmVhZCA9IG5vZGUub3duZXJEb2N1bWVudC53ZWJraXRHZXROYW1l
ZEZsb3dzKCkubmFtZWRJdGVtKHJlc3VsdC5jb250ZW50Rmxvd05hbWUpOwotICAgICAgICAgICAg
ICAgIGlmIChmbG93VGhyZWFkKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVnaW9ucyA9
IEFycmF5LmZyb20oZmxvd1RocmVhZC5nZXRSZWdpb25zQnlDb250ZW50KG5vZGUpKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotICAgIH0K
LQogICAgIC8vIFByaXZhdGUKIAogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCkBA
IC04MjksOCArNTQxLDQgQEAgV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQgPSB7CiAgICAgQ2hpbGRO
b2RlQ291bnRVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1jaGlsZC1ub2RlLWNvdW50LXVwZGF0
ZWQiLAogICAgIERPTU5vZGVXYXNJbnNwZWN0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWRvbS1ub2Rl
LXdhcy1pbnNwZWN0ZWQiLAogICAgIEluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkOiAiZG9tLXRyZWUt
bWFuYWdlci1pbnNwZWN0LW1vZGUtc3RhdGUtY2hhbmdlZCIsCi0gICAgQ29udGVudEZsb3dMaXN0
V2FzVXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItY29udGVudC1mbG93LWxpc3Qtd2FzLXVwZGF0
ZWQiLAotICAgIENvbnRlbnRGbG93V2FzQWRkZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWNvbnRlbnQt
Zmxvdy13YXMtYWRkZWQiLAotICAgIENvbnRlbnRGbG93V2FzUmVtb3ZlZDogImRvbS10cmVlLW1h
bmFnZXItY29udGVudC1mbG93LXdhcy1yZW1vdmVkIiwKLSAgICBSZWdpb25PdmVyc2V0Q2hhbmdl
ZDogImRvbS10cmVlLW1hbmFnZXItcmVnaW9uLW92ZXJzZXQtY2hhbmdlZCIKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZs
b3cuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NvbnRl
bnRGbG93LnN2ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQxMjNjZjJiZmIuLjAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9Db250ZW50Rmxvdy5zdmcKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTw/eG1sIHZl
cnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tIENvcHlyaWdodCDCqSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KLTxzdmcgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0icm9vdCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94
PSIwIDAgMTYgMTYiPgotICAgIDxwYXRoIGZpbGw9InJnYigxMTIsIDExMiwgMTEyKSIgZD0iTSAx
My4xNzkgMC43NSBIIDIuODIxIGMgLTEuMTQxIDAgLTIuMDcxIDAuOTMxIC0yLjA3MSAyLjA3MSB2
IDEwLjM1NyBjIDAgMS4xNDEgMC45MzEgMi4wNzEgMi4wNzEgMi4wNzEgaCAxMC4zNTcgYyAxLjE0
MSAwIDIuMDcxIC0wLjkzMSAyLjA3MSAtMi4wNzEgViAyLjgyMSBDIDE1LjI1IDEuNjgxIDE0LjMx
OSAwLjc1IDEzLjE3OSAwLjc1IE0gMTMuMTc5IDEuNzg1IGMgMC41NyAwIDEuMDM1IDAuNDY2IDEu
MDM1IDEuMDM2IHYgMTAuMzU3IGMgMCAwLjU3IC0wLjQ2NSAxLjAzNSAtMS4wMzUgMS4wMzUgSCAy
LjgyMSBjIC0wLjU3IDAgLTEuMDM2IC0wLjQ2NSAtMS4wMzYgLTEuMDM1IFYgMi44MjEgYyAwIC0w
LjU3IDAuNDY1IC0xLjAzNiAxLjAzNiAtMS4wMzYgSCAxMy4xNzkiLz4KLSAgICA8cmVjdCBmaWxs
PSJyZ2IoMTEyLCAxMTIsIDExMikiIHg9IjIuNjc2IiB5PSIyLjk2NyIgd2lkdGg9IjQuODU0IiBo
ZWlnaHQ9IjQuMDk0Ii8+Ci0gICAgPHJlY3QgZmlsbD0icmdiKDExMiwgMTEyLCAxMTIpIiB4PSIy
LjY3NiIgeT0iOC40OTciIHdpZHRoPSIyLjc1NSIgaGVpZ2h0PSI0LjM1Ii8+Ci0gICAgPHJlY3Qg
ZmlsbD0icmdiKDExMiwgMTEyLCAxMTIpIiB4PSI4Ljg5MSIgeT0iMi45NjciIHdpZHRoPSI0LjQx
MiIgaGVpZ2h0PSIxMC4xMDgiLz4KLTwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL2d0ay9Db250ZW50Rmxvdy5zdmcgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvZ3RrL0NvbnRlbnRGbG93LnN2Zwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYxNmZjMTA0OWYuLjAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9ndGsvQ29udGVu
dEZsb3cuc3ZnCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCEtLSBMaWNlbnNlZCB1bmRlciB0aGUgQ3JlYXRpdmUg
Q29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAzLjAgVW5pdGVkIFN0YXRlcyBMaWNlbnNl
IChodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvKSAtLT4KLTxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0icm9vdCIgdmVyc2lvbj0i
MS4xIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgotIDxwYXRoIGZpbGw9IiNiZWJlYmUiIGQ9Im0yLjgx
MjQgMC41MDA1NWExLjAwMDEgMS4wMDAxIDAgMCAwIC0wLjgxMjUgMXYxM2ExLjAwMDEgMS4wMDAx
IDAgMCAwIDEgMWgxMGExLjAwMDEgMS4wMDAxIDAgMCAwIDEgLTF2LTkuNDM3NWExLjAwMDEgMS4w
MDAxIDAgMCAwIC0wLjI4MTI1IC0wLjcxODc1bC0zLjU2My0zLjU2M2ExLjAwMDEgMS4wMDAxIDAg
MCAwIC0wLjcxODc1IC0wLjI4MTI1aC02LjQzNzVhMS4wMDAxIDEuMDAwMSAwIDAgMCAtMC4wOTM3
IDAgMS4wMDAxIDEuMDAwMSAwIDAgMCAtMC4wOTM3IDB6bTEuMTg3NSAyaDV2M2gzdjhoLTh2LTEx
eiIvPgotIDxwYXRoIGZpbGw9IiNiZWJlYmUiIGQ9Im05LjQxNzMgNi4xMTFjLTAuODYwMjMgMC0x
LjU1NjMgMC43MjI0Ni0xLjU1NjMgMS41ODI3czAuNjk2MDggMS41NTYzIDEuNTU2MyAxLjU1NjNj
MC44NjAyNCAwIDEuNTgyNy0wLjY5NjA4IDEuNTgyNy0xLjU1NjMgMC0wLjg2MDIzLTAuNzIyNDYt
MS41ODI3LTEuNTgyNy0xLjU4Mjd6bTAgMS4wMDI0YzAuMzE5OCAwIDAuNTgwMzIgMC4yNjA1MyAw
LjU4MDMyIDAuNTgwMzIgMCAwLjMxOTgtMC4yNjA1MiAwLjU1Mzk1LTAuNTgwMzIgMC41NTM5NXMt
MC41NTM5NC0wLjIzNDE1LTAuNTUzOTQtMC41NTM5NWMwLTAuMzE5NzkgMC4yMzQxNC0wLjU4MDMy
IDAuNTUzOTQtMC41ODAzMnoiLz4KLSA8cmVjdCB3aWR0aD0iMi4xIiBoZWlnaHQ9IjUuNSIgeD0i
NSIgeT0iMy41NTg5IiBmaWxsPSIjYmViZWJlIi8+Ci0gPHJlY3Qgd2lkdGg9IjYiIGhlaWdodD0i
Mi40IiB4PSI1IiB5PSIxMC4xIiBmaWxsPSIjYmViZWJlIi8+Ci08L3N2Zz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA3ZmM2MDEyYzdhOS4u
MTJhMjk1YmYyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwKQEAgLTYyLDcgKzYyLDYgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9IlZpZXdzL0NvbnNvbGVQcm9tcHQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IlZpZXdzL0NvbnRlbnRCcm93c2VyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJWaWV3cy9Db250ZW50QnJvd3NlclRhYkNvbnRlbnRWaWV3LmNzcyI+Ci0gICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Db250ZW50Rmxvd0ljb24uY3NzIj4K
ICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0NvbnRlbnRWaWV3LmNzcyI+
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Db250ZW50Vmlld0NvbnRh
aW5lci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29udHJv
bFRvb2xiYXJJdGVtLmNzcyI+CkBAIC0zNDMsNyArMzQyLDYgQEAKICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0NvbGxlY3Rpb25FbnRyeVByZXZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvQ29sb3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
Q29uc29sZUNvbW1hbmRSZXN1bHRNZXNzYWdlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0NvbnRlbnRGbG93LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL0Nvb2tpZVN0b3JhZ2VPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvRE9NQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9ET01Ob2RlLmpzIj48L3NjcmlwdD4KQEAgLTU1NSw4ICs1NTMsNiBAQAogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db25zb2xlR3JvdXAuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9Db25zb2xlUHJvbXB0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
Q29uc29sZVNlc3Npb24uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db250
ZW50Rmxvd0RPTVRyZWVDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0NvbnRleHRNZW51LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb24uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29sbGVjdGlvbi5qcwpp
bmRleCA1Mzk0M2IxMzZmYS4uYzU0ZjkyYmNhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uLmpzCkBAIC0xMTIs
NyArMTEyLDYgQEAgV0kuQ29sbGVjdGlvbiA9IGNsYXNzIENvbGxlY3Rpb24gZXh0ZW5kcyBXSS5P
YmplY3QKIAogIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyID0gewogICAgIEFueTogKG9iamVj
dCkgPT4gdHJ1ZSwKLSAgICBDb250ZW50RmxvdzogKG9iamVjdCkgPT4gb2JqZWN0IGluc3RhbmNl
b2YgV0kuQ29udGVudEZsb3csCiAgICAgRnJhbWU6IChvYmplY3QpID0+IG9iamVjdCBpbnN0YW5j
ZW9mIFdJLkZyYW1lLAogICAgIFJlc291cmNlOiAob2JqZWN0KSA9PiBvYmplY3QgaW5zdGFuY2Vv
ZiBXSS5SZXNvdXJjZSwKICAgICBTY3JpcHQ6IChvYmplY3QpID0+IG9iamVjdCBpbnN0YW5jZW9m
IFdJLlNjcmlwdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9Db250ZW50Rmxvdy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Db250ZW50Rmxvdy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzJiZWYwMjE2ZmIuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Db250ZW50Rmxvdy5qcworKysgL2Rldi9udWxsCkBAIC0xLDEw
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jw
b3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQot
ICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVdJLkNvbnRlbnRGbG93ID0g
Y2xhc3MgQ29udGVudEZsb3cgZXh0ZW5kcyBXSS5PYmplY3QKLXsKLSAgICBjb25zdHJ1Y3Rvcihk
b2N1bWVudE5vZGVJZGVudGlmaWVyLCBuYW1lLCBvdmVyc2V0LCBjb250ZW50Tm9kZXMpCi0gICAg
ewotICAgICAgICBzdXBlcigpOwotCi0gICAgICAgIHRoaXMuX2RvY3VtZW50Tm9kZUlkZW50aWZp
ZXIgPSBkb2N1bWVudE5vZGVJZGVudGlmaWVyOwotICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTsK
LSAgICAgICAgdGhpcy5fb3ZlcnNldCA9IG92ZXJzZXQ7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRO
b2RlcyA9IGNvbnRlbnROb2RlczsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdldCBp
ZCgpCi0gICAgewotICAgICAgICAvLyBVc2UgdGhlIGZsb3cgbm9kZSBpZCwgdG8gYXZvaWQgY29s
bGlzaW9ucyB3aGVuIHdlIGNoYW5nZSBtYWluIGRvY3VtZW50IGlkLgotICAgICAgICByZXR1cm4g
dGhpcy5fZG9jdW1lbnROb2RlSWRlbnRpZmllciArICI6IiArIHRoaXMuX25hbWU7Ci0gICAgfQot
Ci0gICAgZ2V0IGRvY3VtZW50Tm9kZUlkZW50aWZpZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2RvY3VtZW50Tm9kZUlkZW50aWZpZXI7Ci0gICAgfQotCi0gICAgZ2V0IG5hbWUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7Ci0gICAgfQotCi0gICAgZ2V0IG92ZXJz
ZXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJzZXQ7Ci0gICAgfQotCi0gICAg
c2V0IG92ZXJzZXQob3ZlcnNldCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9vdmVyc2V0ID09
PSBvdmVyc2V0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9vdmVyc2V0ID0g
b3ZlcnNldDsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29udGVu
dEZsb3cuRXZlbnQuRmxvd092ZXJzZXRXYXNDaGFuZ2VkKTsKLSAgICB9Ci0KLSAgICBnZXQgY29u
dGVudE5vZGVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Tm9kZXM7Ci0g
ICAgfQotCi0gICAgaW5zZXJ0Q29udGVudE5vZGVCZWZvcmUoY29udGVudE5vZGUsIHJlZmVyZW5j
ZU5vZGUpCi0gICAgewotICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9jb250ZW50Tm9kZXMuaW5k
ZXhPZihyZWZlcmVuY2VOb2RlKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0x
KTsKLSAgICAgICAgdGhpcy5fY29udGVudE5vZGVzLnNwbGljZShpbmRleCwgMCwgY29udGVudE5v
ZGUpOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50Rmxv
dy5FdmVudC5Db250ZW50Tm9kZVdhc0FkZGVkLCB7bm9kZTogY29udGVudE5vZGUsIGJlZm9yZTog
cmVmZXJlbmNlTm9kZX0pOwotICAgIH0KLQotICAgIGFwcGVuZENvbnRlbnROb2RlKGNvbnRlbnRO
b2RlKQotICAgIHsKLSAgICAgICAgdGhpcy5fY29udGVudE5vZGVzLnB1c2goY29udGVudE5vZGUp
OwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50Rmxvdy5F
dmVudC5Db250ZW50Tm9kZVdhc0FkZGVkLCB7bm9kZTogY29udGVudE5vZGV9KTsKLSAgICB9Ci0K
LSAgICByZW1vdmVDb250ZW50Tm9kZShjb250ZW50Tm9kZSkKLSAgICB7Ci0gICAgICAgIHZhciBp
bmRleCA9IHRoaXMuX2NvbnRlbnROb2Rlcy5pbmRleE9mKGNvbnRlbnROb2RlKTsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKLSAgICAgICAgdGhpcy5fY29udGVudE5vZGVz
LnNwbGljZShpbmRleCwgMSk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkNvbnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwge25vZGU6IGNvbnRl
bnROb2RlfSk7Ci0gICAgfQotfTsKLQotV0kuQ29udGVudEZsb3cuRXZlbnQgPSB7Ci0gICAgT3Zl
cnNldFdhc0NoYW5nZWQ6ICJjb250ZW50LWZsb3ctb3ZlcnNldC13YXMtY2hhbmdlZCIsCi0gICAg
Q29udGVudE5vZGVXYXNBZGRlZDogImNvbnRlbnQtZmxvdy1jb250ZW50LW5vZGUtd2FzLWFkZGVk
IiwKLSAgICBDb250ZW50Tm9kZVdhc1JlbW92ZWQ6ICJjb250ZW50LWZsb3ctY29udGVudC1ub2Rl
LXdhcy1yZW1vdmVkIgotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01UcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RPTVRyZWUuanMKaW5kZXggM2Y3OTM3Mjk3MGYuLjg0YTYzOWVmMzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
RE9NVHJlZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvRE9NVHJlZS5qcwpAQCAtMzMsNyArMzMsNiBAQCBXSS5ET01UcmVlID0gY2xhc3MgRE9NVHJl
ZSBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIHRoaXMuX3Jvb3RET01Ob2RlID0gbnVsbDsK
ICAgICAgICAgdGhpcy5fcmVxdWVzdElkZW50aWZpZXIgPSAwOwotICAgICAgICB0aGlzLl9jb250
ZW50Rmxvd0NvbGxlY3Rpb24gPSBuZXcgV0kuQ29sbGVjdGlvbihXSS5Db2xsZWN0aW9uLlR5cGVW
ZXJpZmllci5Db250ZW50Rmxvdyk7CiAKICAgICAgICAgdGhpcy5fZnJhbWUuYWRkRXZlbnRMaXN0
ZW5lcihXSS5GcmFtZS5FdmVudC5QYWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQsIHRoaXMuX2Zy
YW1lUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzKTsKIApAQCAtNDQsMTYgKzQzLDEx
IEBAIFdJLkRPTVRyZWUgPSBjbGFzcyBET01UcmVlIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
ICAgICBXSS5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTVRyZWVNYW5hZ2Vy
LkV2ZW50Lk5vZGVSZW1vdmVkLCB0aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7CiAgICAgICAgICAg
ICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJj
ZURpZENoYW5nZSwgdGhpcy5fZnJhbWVNYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwogICAg
ICAgICB9Ci0KLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
T01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd0xpc3RXYXNVcGRhdGVkLCB0aGlzLl9jb250
ZW50Rmxvd0xpc3RXYXNVcGRhdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dhc0Fk
ZGVkLCB0aGlzLl9jb250ZW50Rmxvd1dhc0FkZGVkLCB0aGlzKTsKLSAgICAgICAgV0kuZG9tVHJl
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50
Rmxvd1dhc1JlbW92ZWQsIHRoaXMuX2NvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcyk7CiAgICAg
fQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZnJhbWUoKSB7IHJldHVybiB0aGlzLl9mcmFt
ZTsgfQotICAgIGdldCBjb250ZW50Rmxvd0NvbGxlY3Rpb24oKSB7IHJldHVybiB0aGlzLl9jb250
ZW50Rmxvd0NvbGxlY3Rpb247IH0KIAogICAgIGRpc2Nvbm5lY3QoKQogICAgIHsKQEAgLTExMiwx
NCArMTA2LDYgQEAgV0kuRE9NVHJlZSA9IGNsYXNzIERPTVRyZWUgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgdGhpcy5fcmVxdWVzdFJvb3RET01Ob2RlKCk7CiAgICAgfQogCi0gICAgcmVxdWVz
dENvbnRlbnRGbG93TGlzdCgpCi0gICAgewotICAgICAgICB0aGlzLnJlcXVlc3RSb290RE9NTm9k
ZShmdW5jdGlvbihyb290Tm9kZSkgewotICAgICAgICAgICAgLy8gTGV0IHRoZSBiYWNrZW5kIGtu
b3cgd2UgYXJlIGludGVyZXN0ZWQgYWJvdXQgdGhlIG5hbWVkIGZsb3cgZXZlbnRzIGZvciB0aGlz
IGRvY3VtZW50LgotICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuZ2V0TmFtZWRGbG93Q29s
bGVjdGlvbihyb290Tm9kZS5pZCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQogICAgIC8vIFByaXZh
dGUKIAogICAgIF9yZXF1ZXN0Um9vdERPTU5vZGUoKQpAQCAtMjM5LDcxICsyMjUsOCBAQCBXSS5E
T01UcmVlID0gY2xhc3MgRE9NVHJlZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhp
cy5fcmVxdWVzdFJvb3RET01Ob2RlKCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBfaXNDb250
ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fcm9vdERPTU5vZGUgJiYgdGhpcy5fcm9vdERPTU5vZGUuaWQgPT09IGZsb3cuZG9jdW1lbnRO
b2RlSWRlbnRpZmllcjsKLSAgICB9Ci0KLSAgICBfY29udGVudEZsb3dMaXN0V2FzVXBkYXRlZChl
dmVudCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcm9vdERPTU5vZGUgfHwgdGhpcy5fcm9v
dERPTU5vZGUuaWQgIT09IGV2ZW50LmRhdGEuZG9jdW1lbnROb2RlSWRlbnRpZmllcikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBBc3N1bWUgdGhhdCBhbGwgdGhlIGZsb3dzIGhh
dmUgYmVlbiByZW1vdmVkLgotICAgICAgICBsZXQgZGVsZXRlZEZsb3dzID0gbmV3IFNldCh0aGlz
Ll9jb250ZW50Rmxvd0NvbGxlY3Rpb24uaXRlbXMpOwotICAgICAgICBsZXQgbmV3Rmxvd3MgPSBu
ZXcgU2V0OwotICAgICAgICBmb3IgKGxldCBmbG93IG9mIGV2ZW50LmRhdGEuZmxvd3MpIHsKLSAg
ICAgICAgICAgIC8vIEFsbCB0aGUgZmxvd3MgcmVjZWl2ZWQgZnJvbSBXZWJLaXQgYXJlIHBhcnQg
b2YgdGhlIHNhbWUgZG9jdW1lbnQuCi0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9p
c0NvbnRlbnRGbG93SW5DdXJyZW50RG9jdW1lbnQoZmxvdykpOwotCi0gICAgICAgICAgICBpZiAo
dGhpcy5fY29udGVudEZsb3dDb2xsZWN0aW9uLml0ZW1zLmhhcyhmbG93KSkgewotICAgICAgICAg
ICAgICAgIC8vIFJlbW92ZSB0aGUgZmxvdyBuYW1lIGZyb20gdGhlIGRlbGV0ZWQgbGlzdC4KLSAg
ICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChkZWxldGVkRmxvd3MuaGFzKGZsb3cpKTsKLSAg
ICAgICAgICAgICAgICBkZWxldGVkRmxvd3MuZGVsZXRlKGZsb3cpOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50Rmxvd0NvbGxlY3Rpb24uYWRkKGZs
b3cpOwotICAgICAgICAgICAgICAgIG5ld0Zsb3dzLmFkZChmbG93KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIGZvciAobGV0IGZsb3cgb2YgZGVsZXRlZEZsb3dzKQotICAg
ICAgICAgICAgdGhpcy5fY29udGVudEZsb3dDb2xsZWN0aW9uLnJlbW92ZShmbG93KTsKLQotICAg
ICAgICAvLyBTZW5kIHVwZGF0ZSBldmVudHMgdG8gbGlzdGVuZXJzLgotCi0gICAgICAgIGZvciAo
bGV0IGZsb3cgb2YgZGVsZXRlZEZsb3dzKQotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHtmbG93
fSk7Ci0KLSAgICAgICAgZm9yIChsZXQgZmxvdyBvZiBuZXdGbG93cykKLSAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dX
YXNBZGRlZCwge2Zsb3d9KTsKLSAgICB9Ci0KLSAgICBfY29udGVudEZsb3dXYXNBZGRlZChldmVu
dCkKLSAgICB7Ci0gICAgICAgIGxldCBmbG93ID0gZXZlbnQuZGF0YS5mbG93OwotICAgICAgICBp
ZiAoIXRoaXMuX2lzQ29udGVudEZsb3dJbkN1cnJlbnREb2N1bWVudChmbG93KSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9jb250ZW50Rmxvd0NvbGxlY3Rpb24uYWRkKGZs
b3cpOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWUu
RXZlbnQuQ29udGVudEZsb3dXYXNBZGRlZCwge2Zsb3d9KTsKLSAgICB9Ci0KLSAgICBfY29udGVu
dEZsb3dXYXNSZW1vdmVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGZsb3cgPSBldmVudC5k
YXRhLmZsb3c7Ci0gICAgICAgIGlmICghdGhpcy5faXNDb250ZW50Rmxvd0luQ3VycmVudERvY3Vt
ZW50KGZsb3cpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2NvbnRlbnRG
bG93Q29sbGVjdGlvbi5yZW1vdmUoZmxvdyk7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHtmbG93
fSk7Ci0gICAgfQogfTsKIAogV0kuRE9NVHJlZS5FdmVudCA9IHsKICAgICBSb290RE9NTm9kZUlu
dmFsaWRhdGVkOiAiZG9tLXRyZWUtcm9vdC1kb20tbm9kZS1pbnZhbGlkYXRlZCIsCi0gICAgQ29u
dGVudEZsb3dXYXNBZGRlZDogImRvbS10cmVlLWNvbnRlbnQtZmxvdy13YXMtYWRkZWQiLAotICAg
IENvbnRlbnRGbG93V2FzUmVtb3ZlZDogImRvbS10cmVlLWNvbnRlbnQtZmxvdy13YXMtcmVtb3Zl
ZCIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9DU1NPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzCmluZGV4IGVkOWU2MzYxOWI2Li40NzRjYmI4YTY2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvQ1NTT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMKQEAgLTQ5LDMyICs0OSwzMSBAQCBXSS5DU1NPYnNl
cnZlciA9IGNsYXNzIENTU09ic2VydmVyCiAKICAgICBuYW1lZEZsb3dDcmVhdGVkKG5hbWVkRmxv
dykKICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLm5hbWVkRmxvd0NyZWF0ZWQobmFt
ZWRGbG93KTsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwKTogUmVtb3ZlZCBhZnRl
ciBpT1MgMTAuIElnbm9yZSBmb3IgaU9TIDEwIGFuZCBlYXJsaWVyLgogICAgIH0KIAogICAgIG5h
bWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKQogICAgIHsKLSAgICAgICAg
V0kuZG9tVHJlZU1hbmFnZXIubmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgZmxvd05h
bWUpOworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTApOiBSZW1vdmVkIGFmdGVyIGlP
UyAxMC4gSWdub3JlIGZvciBpT1MgMTAgYW5kIGVhcmxpZXIuCiAgICAgfQogCi0gICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDcpOiByZWdpb25MYXlvdXRVcGRhdGVkIHdhcyByZW1vdmVkIGFuZCBy
ZXBsYWNlZCBieSByZWdpb25PdmVyc2V0Q2hhbmdlZC4KICAgICByZWdpb25MYXlvdXRVcGRhdGVk
KG5hbWVkRmxvdykKICAgICB7Ci0gICAgICAgIHRoaXMucmVnaW9uT3ZlcnNldENoYW5nZWQobmFt
ZWRGbG93KTsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDcpOiByZWdpb25MYXlvdXRV
cGRhdGVkIHdhcyByZW1vdmVkIGFuZCByZXBsYWNlZCBieSByZWdpb25PdmVyc2V0Q2hhbmdlZC4g
SWdub3JlLgogICAgIH0KIAogICAgIHJlZ2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVkRmxvdykKICAg
ICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVk
Rmxvdyk7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMCk6IFJlbW92ZWQgYWZ0ZXIg
aU9TIDEwLiBJZ25vcmUgZm9yIGlPUyAxMCBhbmQgZWFybGllci4KICAgICB9CiAKICAgICByZWdp
c3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCBj
b250ZW50Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnROb2RlSWQpCiAgICAgewotICAgICAgICBX
SS5kb21UcmVlTWFuYWdlci5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1l
bnROb2RlSWQsIGZsb3dOYW1lLCBjb250ZW50Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnROb2Rl
SWQpOworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTApOiBSZW1vdmVkIGFmdGVyIGlP
UyAxMC4gSWdub3JlIGZvciBpT1MgMTAgYW5kIGVhcmxpZXIuCiAgICAgfQogCiAgICAgdW5yZWdp
c3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCBj
b250ZW50Tm9kZUlkKQogICAgIHsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIudW5yZWdpc3Rl
cmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCBjb250
ZW50Tm9kZUlkKTsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwKTogUmVtb3ZlZCBh
ZnRlciBpT1MgMTAuIElnbm9yZSBmb3IgaU9TIDEwIGFuZCBlYXJsaWVyLgogICAgIH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggZDBj
ZmIwNzNjYzkuLmM0NDcxZjk4ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGVzdC5odG1sCkBAIC0xMTYsNyArMTE2LDYgQEAKICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0NvbGxlY3Rpb25FbnRyeVByZXZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvQ29sb3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
Q29uc29sZUNvbW1hbmRSZXN1bHRNZXNzYWdlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0NvbnRlbnRGbG93LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL0Nvb2tpZVN0b3JhZ2VPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvRE9NQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9ET01Ob2RlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5q
cwppbmRleCAyYmFhNjBkMmJmZi4uMDM3MmQxMzcwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9u
Q29udGVudFZpZXcuanMKQEAgLTQ0LDEwICs0NCw2IEBAIFdJLkNvbGxlY3Rpb25Db250ZW50Vmll
dyA9IGNsYXNzIENvbGxlY3Rpb25Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAg
ICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJGcmFtZXMiKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuQ29udGVudEZs
b3c6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJGbG93cyIpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5TY3Jp
cHQ6CiAgICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJFeHRyYSBTY3JpcHRzIik7CiAg
ICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuY3NzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5l
bC5jc3MKaW5kZXggOTJlZjM5MjYxZGIuLmQ3MzNmYzVhY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1Bh
bmVsLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmNzcwpAQCAtMjcsMTQgKzI3LDYgQEAKICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB3aGl0ZTsKIH0KIAotLmRldGFpbHMtc2VjdGlvbiA+IC5jb250ZW50ID4g
Lmdyb3VwID4gLnJvdy5zaW1wbGUuY29udGVudC1mbG93LWxpbmsgPiAudmFsdWUgPiBzcGFuID4g
Lmljb24gewotICAgIHdpZHRoOiAxMnB4OwotICAgIGhlaWdodDogMTJweDsKLSAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL0NvbnRlbnRGbG93LnN2Zyk7Ci0gICAgbWFyZ2luLXJpZ2h0OiA0cHg7
Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLX0KLQogLmRldGFpbHMtc2VjdGlvbiA+
IC5jb250ZW50ID4gLmdyb3VwID4gLnJvdy5zaW1wbGUuY29udGVudC1mbG93LWxpbmsgc3Bhbgog
ewogICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURl
dGFpbHNQYW5lbC5qcwppbmRleCBkMmFkMGI3NmU3MC4uZmY5NjQ3NjlhOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVE
ZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMzYsNDMgKzM2LDYgQEAgV0ku
Q29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVEZXRhaWxzUGFu
ZWwgZXh0ZW5kcyBXSS5TdHlsZUQKIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IHJlZ2lvbkZs
b3coKSB7IHJldHVybiB0aGlzLl9yZWdpb25GbG93OyB9Ci0gICAgc2V0IHJlZ2lvbkZsb3cocmVn
aW9uRmxvdykKLSAgICB7Ci0gICAgICAgIHRoaXMuX3JlZ2lvbkZsb3cgPSByZWdpb25GbG93Owot
ICAgICAgICB0aGlzLl9yZWdpb25GbG93TmFtZUxhYmVsVmFsdWUudGV4dENvbnRlbnQgPSByZWdp
b25GbG93ID8gcmVnaW9uRmxvdy5uYW1lIDogIiI7Ci0gICAgICAgIHRoaXMuX3JlZ2lvbkZsb3dO
YW1lUm93LnZhbHVlID0gcmVnaW9uRmxvdyA/IHRoaXMuX3JlZ2lvbkZsb3dGcmFnbWVudCA6IG51
bGw7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUZsb3dOYW1lc1NlY3Rpb25WaXNpYmlsaXR5KCk7Ci0g
ICAgfQotCi0gICAgZ2V0IGNvbnRlbnRGbG93KCkgeyByZXR1cm4gdGhpcy5fY29udGVudEZsb3c7
IH0KLSAgICBzZXQgY29udGVudEZsb3coY29udGVudEZsb3cpCi0gICAgewotICAgICAgICB0aGlz
Ll9jb250ZW50RmxvdyA9IGNvbnRlbnRGbG93OwotICAgICAgICB0aGlzLl9jb250ZW50Rmxvd05h
bWVMYWJlbFZhbHVlLnRleHRDb250ZW50ID0gY29udGVudEZsb3cgPyBjb250ZW50Rmxvdy5uYW1l
IDogIiI7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRGbG93TmFtZVJvdy52YWx1ZSA9IGNvbnRlbnRG
bG93ID8gdGhpcy5fY29udGVudEZsb3dGcmFnbWVudCA6IG51bGw7Ci0gICAgICAgIHRoaXMuX3Vw
ZGF0ZUZsb3dOYW1lc1NlY3Rpb25WaXNpYmlsaXR5KCk7Ci0gICAgfQotCi0gICAgZ2V0IGNvbnRh
aW5lclJlZ2lvbnMoKSB7IHJldHVybiB0aGlzLl9jb250YWluZXJSZWdpb25zOyB9Ci0gICAgc2V0
IGNvbnRhaW5lclJlZ2lvbnMocmVnaW9ucykKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NvbnRhaW5l
clJlZ2lvbnMgPSByZWdpb25zOwotCi0gICAgICAgIGlmICghcmVnaW9ucyB8fCAhcmVnaW9ucy5s
ZW5ndGgpIHsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNGbG93U2VjdGlvbi5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdGhpcy5fY29udGFpbmVyUmVnaW9uc0RhdGFHcmlkLnJlbW92ZUNo
aWxkcmVuKCk7Ci0gICAgICAgIGZvciAodmFyIHJlZ2lvbk5vZGUgb2YgcmVnaW9ucykKLSAgICAg
ICAgICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNEYXRhR3JpZC5hcHBlbmRDaGlsZChuZXcgV0ku
RE9NVHJlZURhdGFHcmlkTm9kZShyZWdpb25Ob2RlKSk7Ci0KLSAgICAgICAgdGhpcy5fY29udGFp
bmVyUmVnaW9uc0Zsb3dTZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7
Ci0KLSAgICAgICAgdGhpcy5fY29udGFpbmVyUmVnaW9uc0RhdGFHcmlkLnVwZGF0ZUxheW91dElm
TmVlZGVkKCk7Ci0gICAgfQotCiAgICAgY3NzU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3JTaG93
UHJvcGVydHkocHJvcGVydHksIHNob3dTb3VyY2UpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBk
ZWxlZ2F0ZVNob3dQcm9wZXJ0eSgpIHsKQEAgLTEyMSw3ICs4NCw2IEBAIFdJLkNvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMg
V0kuU3R5bGVECiAKICAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3Iuc3R5bGUgPSB0
aGlzLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZTsKICAgICAgICAgdGhpcy5fdmFyaWFibGVzVGV4
dEVkaXRvci5zdHlsZSA9IHRoaXMubm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlOwotICAgICAgICB0
aGlzLl9yZWZyZXNoRmxvd0RldGFpbHModGhpcy5ub2RlU3R5bGVzLm5vZGUpOwogICAgICAgICB0
aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3cubm9kZVN0eWxlcyA9IHRoaXMubm9kZVN0eWxlczsKIAog
ICAgICAgICBzdXBlci5yZWZyZXNoKCk7CkBAIC0xNzcsNDQgKzEzOSw4IEBAIFdJLkNvbXB1dGVk
U3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVu
ZHMgV0kuU3R5bGVECiAKICAgICAgICAgdmFyaWFibGVzUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fdmFyaWFibGVzVGV4dEVkaXRvci5lbGVtZW50KTsKIAotICAgICAgICAvLyBSZWdpb24g
ZmxvdyBuYW1lIGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgImZsb3ctZnJvbSIgcHJvcGVydHkgb2Yg
dGhlIFJlZ2lvbiBDb250YWluZXJzLgotICAgICAgICB0aGlzLl9yZWdpb25GbG93RnJhZ21lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHRoaXMuX3JlZ2lvbkZs
b3dGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSkuY2xh
c3NOYW1lID0gImljb24iOwotICAgICAgICB0aGlzLl9yZWdpb25GbG93TmFtZUxhYmVsVmFsdWUg
PSB0aGlzLl9yZWdpb25GbG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpKTsKLQotICAgICAgICBsZXQgZ29Ub1JlZ2lvbkZsb3dCdXR0b24gPSB0aGlz
Ll9yZWdpb25GbG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQoV0kuY3JlYXRlR29Ub0Fycm93QnV0dG9u
KCkpOwotICAgICAgICBnb1RvUmVnaW9uRmxvd0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2dvVG9SZWdpb25GbG93QXJyb3dXYXNDbGlja2VkLmJpbmQodGhpcykpOwotCi0g
ICAgICAgIHRoaXMuX3JlZ2lvbkZsb3dOYW1lUm93ID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uU2lt
cGxlUm93KFdJLlVJU3RyaW5nKCJSZWdpb24gRmxvdyIpKTsKLSAgICAgICAgdGhpcy5fcmVnaW9u
Rmxvd05hbWVSb3cuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb250ZW50LWZsb3ctbGluayIpOwot
Ci0gICAgICAgIC8vIENvbnRlbnQgZmxvdyBuYW1lIGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgImZs
b3ctaW50byIgcHJvcGVydHkgb2YgdGhlIENvbnRlbnQgbm9kZXMuCi0gICAgICAgIHRoaXMuX2Nv
bnRlbnRGbG93RnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAg
ICAgIHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaW1nIikpLmNsYXNzTmFtZSA9ICJpY29uIjsKLSAgICAgICAgdGhpcy5fY29udGVu
dEZsb3dOYW1lTGFiZWxWYWx1ZSA9IHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKLQotICAgICAgICBsZXQgZ29Ub0Nv
bnRlbnRGbG93QnV0dG9uID0gdGhpcy5fY29udGVudEZsb3dGcmFnbWVudC5hcHBlbmRDaGlsZChX
SS5jcmVhdGVHb1RvQXJyb3dCdXR0b24oKSk7Ci0gICAgICAgIGdvVG9Db250ZW50Rmxvd0J1dHRv
bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2dvVG9Db250ZW50Rmxvd0Fycm93V2Fz
Q2xpY2tlZC5iaW5kKHRoaXMpKTsKLQotICAgICAgICB0aGlzLl9jb250ZW50Rmxvd05hbWVSb3cg
PSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV0kuVUlTdHJpbmcoIkNvbnRlbnQgRmxv
dyIpKTsKLSAgICAgICAgdGhpcy5fY29udGVudEZsb3dOYW1lUm93LmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiY29udGVudC1mbG93LWxpbmsiKTsKLQotICAgICAgICBsZXQgZmxvd05hbWVzR3JvdXAg
PSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fcmVnaW9uRmxvd05hbWVSb3csIHRo
aXMuX2NvbnRlbnRGbG93TmFtZVJvd10pOwotICAgICAgICB0aGlzLl9mbG93TmFtZXNTZWN0aW9u
ID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uKCJjb250ZW50LWZsb3ciLCBXSS5VSVN0cmluZygiRmxv
d3MiKSwgW2Zsb3dOYW1lc0dyb3VwXSk7Ci0KLSAgICAgICAgdGhpcy5fY29udGFpbmVyUmVnaW9u
c0RhdGFHcmlkID0gbmV3IFdJLkRPTVRyZWVEYXRhR3JpZDsKLSAgICAgICAgdGhpcy5fY29udGFp
bmVyUmVnaW9uc0RhdGFHcmlkLmhlYWRlclZpc2libGUgPSBmYWxzZTsKLQotICAgICAgICB0aGlz
Ll9jb250YWluZXJSZWdpb25zUm93ID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3co
dGhpcy5fY29udGFpbmVyUmVnaW9uc0RhdGFHcmlkKTsKLSAgICAgICAgbGV0IGNvbnRhaW5lclJl
Z2lvbnNHcm91cCA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9jb250YWluZXJS
ZWdpb25zUm93XSk7Ci0gICAgICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNGbG93U2VjdGlvbiA9
IG5ldyBXSS5EZXRhaWxzU2VjdGlvbigiY29udGFpbmVyLXJlZ2lvbnMiLCBXSS5VSVN0cmluZygi
Q29udGFpbmVyIFJlZ2lvbnMiKSwgW2NvbnRhaW5lclJlZ2lvbnNHcm91cF0pOwotCiAgICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50KTsKICAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ZhcmlhYmxlc1NlY3Rpb24uZWxl
bWVudCk7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9mbG93TmFtZXNT
ZWN0aW9uLmVsZW1lbnQpOwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Y29udGFpbmVyUmVnaW9uc0Zsb3dTZWN0aW9uLmVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMuX3Jl
c2V0Rmxvd0RldGFpbHMoKTsKIAogICAgICAgICB0aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3cgPSBu
ZXcgV0kuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdzsKIApAQCAtMjI0LDE0ICsxNTAsNiBAQCBX
SS5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbCBleHRlbmRzIFdJLlN0eWxlRAogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
Ym94TW9kZWxTZWN0aW9uLmVsZW1lbnQpOwogICAgIH0KIAotICAgIHNpemVEaWRDaGFuZ2UoKQot
ICAgIHsKLSAgICAgICAgc3VwZXIuc2l6ZURpZENoYW5nZSgpOwotCi0gICAgICAgIC8vIEZJWE1F
OiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjY5PiBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0IERl
dGFpbHNTZWN0aW9uIGNsYXNzZXMgdG8gdXNlIFZpZXcKLSAgICAgICAgdGhpcy5fY29udGFpbmVy
UmVnaW9uc1Jvdy5zaXplRGlkQ2hhbmdlKCk7Ci0gICAgfQotCiAgICAgLy8gUHJpdmF0ZQogCiAg
ICAgX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2tib3hWYWx1ZUNoYW5nZWQoZXZlbnQpCkBAIC0y
NTMsNTAgKzE3MSw2IEBAIFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV0kuU3R5bGVECiAgICAgICAgIGlmIChldmVu
dCAmJiBldmVudC5kYXRhICYmICFldmVudC5kYXRhLmNvbGxhcHNlZCkKICAgICAgICAgICAgIHRo
aXMuX3ZhcmlhYmxlc1RleHRFZGl0b3IucmVmcmVzaCgpOwogICAgIH0KLQotICAgIF91cGRhdGVG
bG93TmFtZXNTZWN0aW9uVmlzaWJpbGl0eSgpCi0gICAgewotICAgICAgICB0aGlzLl9mbG93TmFt
ZXNTZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZGVuIiwgIXRoaXMuX2NvbnRl
bnRGbG93ICYmICF0aGlzLl9yZWdpb25GbG93KTsKLSAgICB9Ci0KLSAgICBfcmVzZXRGbG93RGV0
YWlscyAoKQotICAgIHsKLSAgICAgICAgdGhpcy5yZWdpb25GbG93ID0gbnVsbDsKLSAgICAgICAg
dGhpcy5jb250ZW50RmxvdyA9IG51bGw7Ci0gICAgICAgIHRoaXMuY29udGFpbmVyUmVnaW9ucyA9
IG51bGw7Ci0gICAgfQotCi0gICAgX3JlZnJlc2hGbG93RGV0YWlscyhkb21Ob2RlKQotICAgIHsK
LSAgICAgICAgdGhpcy5fcmVzZXRGbG93RGV0YWlscygpOwotICAgICAgICBpZiAoIWRvbU5vZGUp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZnVuY3Rpb24gY29udGVudEZsb3dJbmZv
UmVhZHkoZXJyb3IsIGZsb3dEYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBFbGVtZW50
IGlzIG5vdCBwYXJ0IG9mIGFueSBmbG93LgotICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFmbG93
RGF0YSkgewotICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0Rmxvd0RldGFpbHMoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMucmVn
aW9uRmxvdyA9IGZsb3dEYXRhLnJlZ2lvbkZsb3c7Ci0gICAgICAgICAgICB0aGlzLmNvbnRlbnRG
bG93ID0gZmxvd0RhdGEuY29udGVudEZsb3c7Ci0gICAgICAgICAgICB0aGlzLmNvbnRhaW5lclJl
Z2lvbnMgPSBmbG93RGF0YS5yZWdpb25zOwotICAgICAgICB9Ci0KLSAgICAgICAgV0kuZG9tVHJl
ZU1hbmFnZXIuZ2V0Tm9kZUNvbnRlbnRGbG93SW5mbyhkb21Ob2RlLCBjb250ZW50Rmxvd0luZm9S
ZWFkeS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAgICBfZ29Ub1JlZ2lvbkZsb3dBcnJvd1dhc0Ns
aWNrZWQoKQotICAgIHsKLSAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KHRoaXMuX3Jl
Z2lvbkZsb3cpOwotICAgIH0KLQotICAgIF9nb1RvQ29udGVudEZsb3dBcnJvd1dhc0NsaWNrZWQo
KQotICAgIHsKLSAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KHRoaXMuX2NvbnRlbnRG
bG93LCB7bm9kZVRvU2VsZWN0OiB0aGlzLm5vZGVTdHlsZXMubm9kZX0pOwotICAgIH0KIH07CiAK
IFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAiY29tcHV0ZWQi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd0RPTVRyZWVDb250ZW50Vmlldy5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkxYmRmYzQ4M2YuLjAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93RE9N
VHJlZUNvbnRlbnRWaWV3LmpzCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0g
KiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICog
U1VDSCBEQU1BR0UuCi0gKi8KLQotV0kuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcgPSBj
bGFzcyBDb250ZW50Rmxvd0RPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkRPTVRyZWVDb250
ZW50VmlldwotewotICAgIGNvbnN0cnVjdG9yKGNvbnRlbnRGbG93KQotICAgIHsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoY29udGVudEZsb3cgaW5zdGFuY2VvZiBXSS5Db250ZW50RmxvdywgY29u
dGVudEZsb3cpOwotCi0gICAgICAgIHN1cGVyKGNvbnRlbnRGbG93KTsKLQotICAgICAgICBjb250
ZW50Rmxvdy5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2Rl
V2FzQWRkZWQsIHRoaXMuX2NvbnRlbnROb2RlV2FzQWRkZWQsIHRoaXMpOwotICAgICAgICBjb250
ZW50Rmxvdy5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2Rl
V2FzUmVtb3ZlZCwgdGhpcy5fY29udGVudE5vZGVXYXNSZW1vdmVkLCB0aGlzKTsKLQotICAgICAg
ICB0aGlzLl9jcmVhdGVDb250ZW50VHJlZXMoKTsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQot
ICAgIGNsb3NlZCgpCi0gICAgewotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92
ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0KLSAgICAgICAgc3VwZXIuY2xvc2Vk
KCk7Ci0gICAgfQotCi0gICAgZ2V0U2VhcmNoQ29udGV4dE5vZGVzKGNhbGxiYWNrKQotICAgIHsK
LSAgICAgICAgY2FsbGJhY2sodGhpcy5kb21UcmVlT3V0bGluZS5jaGlsZHJlbi5tYXAoZnVuY3Rp
b24odHJlZU91dGxpbmUpIHsKLSAgICAgICAgICAgIHJldHVybiB0cmVlT3V0bGluZS5yZXByZXNl
bnRlZE9iamVjdC5pZDsKLSAgICAgICAgfSkpOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQot
ICAgIF9jcmVhdGVDb250ZW50VHJlZXMoKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnROb2Rl
cyA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudE5vZGVzOwotICAgICAgICBmb3IgKHZh
ciBjb250ZW50Tm9kZSBvZiBjb250ZW50Tm9kZXMpCi0gICAgICAgICAgICB0aGlzLmRvbVRyZWVP
dXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXSS5ET01UcmVlRWxlbWVudChjb250ZW50Tm9kZSkpOwot
Ci0gICAgICAgIHZhciBkb2N1bWVudFVSTCA9IGNvbnRlbnROb2Rlcy5sZW5ndGggPyBjb250ZW50
Tm9kZXNbMF0ub3duZXJEb2N1bWVudC5kb2N1bWVudFVSTCA6IG51bGw7Ci0gICAgICAgIHRoaXMu
X3Jlc3RvcmVTZWxlY3RlZE5vZGVBZnRlclVwZGF0ZShkb2N1bWVudFVSTCwgY29udGVudE5vZGVz
WzBdKTsKLSAgICB9Ci0KLSAgICBfY29udGVudE5vZGVXYXNBZGRlZChldmVudCkKLSAgICB7Ci0g
ICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBXSS5ET01UcmVlRWxlbWVudChldmVudC5kYXRh
Lm5vZGUpOwotICAgICAgICBpZiAoIWV2ZW50LmRhdGEuYmVmb3JlKSB7Ci0gICAgICAgICAgICB0
aGlzLmRvbVRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRyZWVFbGVtZW50KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBiZWZvcmVFbGVtZW50ID0gdGhpcy5k
b21UcmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQoZXZlbnQuZGF0YS5iZWZvcmUpOwotICAgICAg
ICBjb25zb2xlLmFzc2VydChiZWZvcmVFbGVtZW50KTsKLQotICAgICAgICB2YXIgaW5kZXggPSB0
aGlzLmRvbVRyZWVPdXRsaW5lLmNoaWxkcmVuLmluZGV4T2YoYmVmb3JlRWxlbWVudCk7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ICE9PSAtMSk7Ci0KLSAgICAgICAgdGhpcy5kb21UcmVl
T3V0bGluZS5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwgaW5kZXgpOwotICAgIH0KLQotICAgIF9j
b250ZW50Tm9kZVdhc1JlbW92ZWQoZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgdHJlZUVsZW1l
bnQgPSB0aGlzLmRvbVRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChldmVudC5kYXRhLm5vZGUp
OwotICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7Ci0gICAgICAgIHRoaXMuZG9t
VHJlZU91dGxpbmUucmVtb3ZlQ2hpbGQodHJlZUVsZW1lbnQpOwotICAgIH0KLX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxv
d0ljb24uY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudEZsb3dJY29uLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAyZTJiM2U5
ODcuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRGbG93SWNvbi5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICog
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0uY29udGVudC1mbG93LWljb24gLmljb24g
ewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvQ29udGVudEZsb3cuc3ZnKTsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRG
bG93VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiMTZmZGRiZmUxNS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcworKysgL2Rldi9u
dWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3Rl
bXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgot
ICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICovCi0KLVdJLkNvbnRl
bnRGbG93VHJlZUVsZW1lbnQgPSBjbGFzcyBDb250ZW50Rmxvd1RyZWVFbGVtZW50IGV4dGVuZHMg
V0kuR2VuZXJhbFRyZWVFbGVtZW50Ci17Ci0gICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmpl
Y3QpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdJLkNvbnRlbnRGbG93KTsKLQotICAgICAgICBjb25zdCBzdWJ0aXRsZSA9IG51bGw7
Ci0gICAgICAgIHN1cGVyKCJjb250ZW50LWZsb3ctaWNvbiIsIHJlcHJlc2VudGVkT2JqZWN0Lm5h
bWUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgfQotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcu
anMKaW5kZXggMjI0NjIxMzBlYWQuLjUwMjczODRiZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwpAQCAt
MTUyLDkgKzE1Miw2IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5WaWV3CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkxv
Z09iamVjdCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuTG9nQ29udGVudFZpZXcocmVwcmVz
ZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKIAotICAgICAgICBpZiAocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXSS5Db250ZW50RmxvdykKLSAgICAgICAgICAgIHJldHVybiBuZXcg
V0kuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJh
QXJndW1lbnRzKTsKLQogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
SS5DYWxsaW5nQ29udGV4dFRyZWUpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlByb2ZpbGVW
aWV3KHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cyk7CiAKQEAgLTI4Miw4ICsyNzks
NiBAQCBXSS5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdJLkxvZ09iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Db250ZW50RmxvdykKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXSS5DYWxsaW5nQ29udGV4dFRyZWUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSGVhcFNuYXBzaG90UHJv
eHkgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5IZWFwU25hcHNob3REaWZmUHJv
eHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9GcmFtZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcwppbmRleCBiNDk1MWYzMTAxYi4uOWM5ZTA1MTA4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtNDIsMTUgKzQyLDEwIEBAIFdJLkZy
YW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBGcmFtZVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuUmVzb3Vy
Y2VUcmVlRWxlbWVudAogICAgICAgICBmcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2
ZW50LkNoaWxkRnJhbWVXYXNBZGRlZCwgdGhpcy5fY2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzKTsK
ICAgICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5DaGlsZEZyYW1l
V2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMpOwogCi0gICAgICAg
IGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlLkV2ZW50LkNvbnRlbnRG
bG93V2FzQWRkZWQsIHRoaXMuX2NoaWxkQ29udGVudEZsb3dXYXNBZGRlZCwgdGhpcyk7Ci0gICAg
ICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlLkV2ZW50LkNvbnRl
bnRGbG93V2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRDb250ZW50Rmxvd1dhc1JlbW92ZWQsIHRoaXMp
OwotICAgICAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZS5FdmVu
dC5Sb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzLl9yb290RE9NTm9kZUludmFsaWRhdGVkLCB0
aGlzKTsKLQogICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7CiAgICAg
ICAgIHRoaXMuZm9sZGVyU2V0dGluZ3NLZXkgPSB0aGlzLl9mcmFtZS51cmwuaGFzaDsKIAogICAg
ICAgICB0aGlzLnJlZ2lzdGVyRm9sZGVyaXplU2V0dGluZ3MoImZyYW1lcyIsIFdJLlVJU3RyaW5n
KCJGcmFtZXMiKSwgdGhpcy5fZnJhbWUuY2hpbGRGcmFtZUNvbGxlY3Rpb24sIFdJLkZyYW1lVHJl
ZUVsZW1lbnQpOwotICAgICAgICB0aGlzLnJlZ2lzdGVyRm9sZGVyaXplU2V0dGluZ3MoImZsb3dz
IiwgV0kuVUlTdHJpbmcoIkZsb3dzIiksIHRoaXMuX2ZyYW1lLmRvbVRyZWUuY29udGVudEZsb3dD
b2xsZWN0aW9uLCBXSS5Db250ZW50Rmxvd1RyZWVFbGVtZW50KTsKICAgICAgICAgdGhpcy5yZWdp
c3RlckZvbGRlcml6ZVNldHRpbmdzKCJleHRyYS1zY3JpcHRzIiwgV0kuVUlTdHJpbmcoIkV4dHJh
IFNjcmlwdHMiKSwgdGhpcy5fZnJhbWUuZXh0cmFTY3JpcHRDb2xsZWN0aW9uLCBXSS5TY3JpcHRU
cmVlRWxlbWVudCk7CiAKICAgICAgICAgaWYgKHdpbmRvdy5DYW52YXNBZ2VudCAmJiBXSS5zZXR0
aW5ncy5leHBlcmltZW50YWxTaG93Q2FudmFzQ29udGV4dHNJblJlc291cmNlcy52YWx1ZSkKQEAg
LTE5MSw5ICsxODYsNiBAQCBXSS5GcmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgRnJhbWVUcmVlRWxl
bWVudCBleHRlbmRzIFdJLlJlc291cmNlVHJlZUVsZW1lbnQKICAgICAgICAgICAgICAgICB0aGlz
LmFkZENoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Qoc291cmNlTWFwLnJlc291cmNlc1tqXSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBmb3IgKGxldCBjb250ZW50RmxvdyBvZiB0aGlzLl9mcmFtZS5k
b21UcmVlLmNvbnRlbnRGbG93Q29sbGVjdGlvbi5pdGVtcykKLSAgICAgICAgICAgIHRoaXMuYWRk
Q2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChjb250ZW50Rmxvdyk7Ci0KICAgICAgICAgZm9yIChs
ZXQgZXh0cmFTY3JpcHQgb2YgdGhpcy5fZnJhbWUuZXh0cmFTY3JpcHRDb2xsZWN0aW9uLml0ZW1z
KSB7CiAgICAgICAgICAgICBpZiAoZXh0cmFTY3JpcHQuc291cmNlVVJMIHx8IGV4dHJhU2NyaXB0
LnNvdXJjZU1hcHBpbmdVUkwpCiAgICAgICAgICAgICAgICAgdGhpcy5hZGRDaGlsZEZvclJlcHJl
c2VudGVkT2JqZWN0KGV4dHJhU2NyaXB0KTsKQEAgLTIxMSw3ICsyMDMsNiBAQCBXSS5GcmFtZVRy
ZWVFbGVtZW50ID0gY2xhc3MgRnJhbWVUcmVlRWxlbWVudCBleHRlbmRzIFdJLlJlc291cmNlVHJl
ZUVsZW1lbnQKICAgICBvbmV4cGFuZCgpCiAgICAgewogICAgICAgICB0aGlzLl9leHBhbmRlZFNl
dHRpbmcudmFsdWUgPSB0cnVlOwotICAgICAgICB0aGlzLl9mcmFtZS5kb21UcmVlLnJlcXVlc3RD
b250ZW50Rmxvd0xpc3QoKTsKICAgICB9CiAKICAgICBvbmNvbGxhcHNlKCkKQEAgLTI3NCwyMiAr
MjY1LDYgQEAgV0kuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZyYW1lVHJlZUVsZW1lbnQgZXh0
ZW5kcyBXSS5SZXNvdXJjZVRyZWVFbGVtZW50CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRGb3JS
ZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmNoaWxkRnJhbWUpOwogICAgIH0KIAotICAgIF9j
aGlsZENvbnRlbnRGbG93V2FzQWRkZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLmFkZFJl
cHJlc2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVlKGV2ZW50LmRhdGEuZmxvdyk7Ci0gICAgfQot
Ci0gICAgX2NoaWxkQ29udGVudEZsb3dXYXNSZW1vdmVkKGV2ZW50KQotICAgIHsKLSAgICAgICAg
dGhpcy5yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGV2ZW50LmRhdGEuZmxvdyk7Ci0g
ICAgfQotCi0gICAgX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQoKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuZXhwYW5kZWQpCi0gICAgICAgICAgICB0aGlzLl9mcmFtZS5kb21UcmVlLnJlcXVlc3RD
b250ZW50Rmxvd0xpc3QoKTsKLSAgICB9Ci0KICAgICBfc3R5bGVTaGVldEFkZGVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgaWYgKCFldmVudC5kYXRhLnN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHls
ZVNoZWV0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDEwOGRkYjU1
ZmNlLi5mNGU2NTlkY2IyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKQEAg
LTQ2NSw3ICs0NjUsNiBAQCBXSS5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNl
U2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogICAgICAgICAgICAgfHwg
dHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZVRyZWVFbGVtZW50CiAgICAgICAgICAg
ICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlNjcmlwdFRyZWVFbGVtZW50CiAgICAgICAg
ICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkNTU1N0eWxlU2hlZXRUcmVlRWxlbWVu
dAotICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5Db250ZW50Rmxvd1Ry
ZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkNhbnZh
c1RyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlNo
YWRlclByb2dyYW1UcmVlRWxlbWVudCkgewogICAgICAgICAgICAgY29uc3QgY29va2llID0gbnVs
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMKaW5kZXggNjg1NzEyNDVm
ZmIuLmVlYzA3NjM4MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5q
cwpAQCAtMzQsMTEgKzM0LDYgQEAgV0kuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBS
ZXNvdXJjZXNUYWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm8KICAgICAgICAgaWYg
KHdpbmRvdy5DYW52YXNBZ2VudCAmJiBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxTaG93Q2FudmFz
Q29udGV4dHNJblJlc291cmNlcy52YWx1ZSkKICAgICAgICAgICAgIGRldGFpbHNTaWRlYmFyUGFu
ZWxDb25zdHJ1Y3RvcnMucHVzaChXSS5DYW52YXNEZXRhaWxzU2lkZWJhclBhbmVsKTsKIAotICAg
ICAgICAvLyBGSVhNRTogVW50aWwgQ29udGVudEZsb3dzIGFyZSBtb3ZlZCB0byB0aGUgRWxlbWVu
dHMgdGFiLCB0aGVzZSBkZXRhaWxzIHNpZGViYXIgcGFuZWxzIG5lZWQgdG8gYmUgaW5jbHVkZWQu
Ci0gICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMgPSBkZXRhaWxzU2lkZWJh
clBhbmVsQ29uc3RydWN0b3JzLmNvbmNhdChbV0kuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWws
IFdJLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbF0pOwotICAgICAgICBpZiAod2luZG93Lkxh
eWVyVHJlZUFnZW50KQotICAgICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9y
cy5wdXNoKFdJLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwpOwotCiAgICAgICAgIHN1cGVy
KGlkZW50aWZpZXIgfHwgInJlc291cmNlcyIsICJyZXNvdXJjZXMiLCB0YWJCYXJJdGVtLCBXSS5S
ZXNvdXJjZVNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycyk7CiAg
ICAgfQogCkBAIC02OCw3ICs2Myw2IEBAIFdJLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3ID0gY2xh
c3MgUmVzb3VyY2VzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvCiAgICAgICAg
ICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlJlc291cmNlCiAgICAgICAg
ICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlNjcmlwdAogICAgICAgICAg
ICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5DU1NTdHlsZVNoZWV0Ci0gICAg
ICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkNvbnRlbnRGbG93CiAg
ICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkNhbnZhcwogICAg
ICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5TaGFkZXJQcm9ncmFt
CiAgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkNvbGxlY3Rp
b247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321472</attachid>
            <date>2017-09-21 13:31:47 -0700</date>
            <delta_ts>2017-09-21 15:32:53 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>regions-3.patch</filename>
            <type>text/plain</type>
            <size>108217</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YzNmNGRkY2JjNi4uMDFlZDhjMzQxZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxNy0wOS0yMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3Mjg3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9t
L2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVzLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctY29udGVudC1yZW1vdmFs
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2NvbnRlbnQt
Zmxvdy1jb250ZW50LXJlbW92YWwuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZG9tL2NvbnRlbnQtZmxvdy1saXN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1saXN0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2RvbS9jb250ZW50LW5vZGUtcmVnaW9uLWluZm8tZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIGluc3BlY3Rvci9kb20vY29udGVudC1ub2RlLXJlZ2lvbi1pbmZvLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RvbS9oaWdobGlnaHQtZmxvdy13aXRo
LW5vLXJlZ2lvbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Rv
bS9oaWdobGlnaHQtZmxvdy13aXRoLW5vLXJlZ2lvbi5odG1sOiBSZW1vdmVkLgorCiAyMDE3LTA5
LTIxICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmsg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9kb2N1bWVudC1t
ZXRhZGF0YS90aGUtbWV0YS1lbGVtZW50L3ByYWdtYS1kaXJlY3RpdmVzL2F0dHItbWV0YS1odHRw
LWVxdWl2LXJlZnJlc2gvcGFyc2luZy5odG1sIGFzIGZsYWt5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggN2U3NWI4MGFjZmIuLjIxYWExYTk4NWNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1MDMs
NyArMTUwMyw2IEBAIHdlYmtpdC5vcmcvYi8xNzU1OTcgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9nemlwLWNvbnRlbnQtdHlwZS1uby1jb250ZW50LWVuY29kCiBmYXN0L3JlZ2lvbnMgWyBTa2lw
IF0KIGNvbXBvc2l0aW5nL3JlZ2lvbnMgWyBTa2lwIF0KIGZhc3QvcnVieS9ydWJ5LXJ0LXdpdGgt
cmVnaW9uLWNyYXNoLmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9kb20vY29udGVudC1ub2RlLXJl
Z2lvbi1pbmZvLmh0bWwgWyBTa2lwIF0KIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRz
L3NoYXBlLW91dHNpZGUtZmxvYXRzLWxheW91dC1hZnRlci1pbml0aWFsLWxheW91dC1wYXNzLmh0
bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzE3MTk0NSBwZXJmL2NsYXNzLWxpc3QtcmVtb3Zl
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtbm9kZXMtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWQxYzgxNzBkMy4uMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctY29udGVu
dC1ub2Rlcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1UZXN0
aW5nIHRoYXQgdGhlIENvbnRlbnRGbG93cyBldmVudHMgYXJlIGNvcnJlY3RseSBkaXNwYXRjaGVk
IHdoZW4gbm9kZXMgYXJlIGF0dGFjaGVkIHRvL2RldGFjaGVkIGZyb20gYSBmbG93LgotCi1QQVNT
OiBDb250ZW50RmxvdyB3YXMgYWRkZWQuCi1QQVNTOiBDb250ZW50Rmxvdy5jb250ZW50Tm9kZXMg
aGFzIGEgbGVuZ3RoIG9mIDIuCi1QQVNTOiBDb250ZW50Rmxvdy5jb250ZW50Tm9kZXNbMF0uaWQg
aXMgIiNjb250ZW50U3RhdGljIi4KLVBBU1M6IENvbnRlbnRGbG93LmNvbnRlbnROb2Rlc1sxXS5p
ZCBpcyAiI2NvbnRlbnRSZW1vdmVkIi4KLVBBU1M6ICIjY29udGVudEFkZGVkQXRUaGVUb3AiIHdh
cyBhZGRlZCBiZWZvcmUgIiNjb250ZW50U3RhdGljIi4KLVBBU1M6ICIjY29udGVudEFkZGVkQXRU
aGVUb3AiIGlzIGZpcnN0IGluIHRoZSBjb250ZW50Tm9kZXMgbGlzdC4KLVBBU1M6ICIjY29udGVu
dEFkZGVkQXRUaGVCb3R0b20iIHdhcyBhZGRlZCBsYXN0LgotUEFTUzogIiNjb250ZW50QWRkZWRB
dFRoZUJvdHRvbSIgaXMgbGFzdCBpbiB0aGUgY29udGVudE5vZGVzIGxpc3QuCi1QQVNTOiAiI2Nv
bnRlbnRSZW1vdmVkIiB3YXMgcmVtb3ZlZC4KLVBBU1M6ICIjY29udGVudFJlbW92ZWQiIGNhbm5v
dCBiZSBmb3VuZCBpbiB0aGUgY29udGVudE5vZGVzIGxpc3QuCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtbm9kZXMuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtbm9kZXMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjMTE3YzQyNzkuLjAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtbm9kZXMu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzdHlsZT4KLS5jb250ZW50Ci17Ci0gICAgLXdlYmtpdC1mbG93LWludG86
IGZsb3c7Ci19Ci0uaGlkZGVuCi17Ci0gICAgLXdlYmtpdC1mbG93LWludG86IG5vbmU7Ci19Ci08
L3N0eWxlPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZnVuY3Rpb24gY2hhbmdl
Rmxvd0NvbnRlbnQoKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50QWRk
ZWRBdFRoZVRvcCIpLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOwotICAgIC8vIEZvcmNlIGEg
bGF5b3V0IHRvIG1ha2Ugc3VyZSB0aGUgZXZlbnRzIGFyZSBhbHdheXMgZmlyZWQgaW4gdGhlIGV4
cGVjdGVkIG9yZGVyLgotICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb250ZW50QWRkZWRBdFRoZUJvdHRvbSIpLmNsYXNzTGlzdC5yZW1v
dmUoImhpZGRlbiIpOwotICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb250ZW50UmVtb3ZlZCIpLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIp
OwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgY29udGVudEZsb3c7Ci0KLSAgICBm
dW5jdGlvbiBvblJvb3RET01Ob2RlSW52YWxpZGF0ZWQoKQotICAgIHsKLSAgICAgICAgV0kuZnJh
bWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLmRvbVRyZWUucmVxdWVzdENvbnRlbnRGbG93TGlz
dCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9uQ29udGVudEZsb3dXYXNBZGRlZChldmVudCkK
LSAgICB7Ci0gICAgICAgIGNvbnRlbnRGbG93ID0gZXZlbnQuZGF0YS5mbG93OwotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY29udGVudEZsb3cubmFtZSA9PT0gImZsb3ciLCAiQ29u
dGVudEZsb3cgd2FzIGFkZGVkLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQo
Y29udGVudEZsb3cuY29udGVudE5vZGVzLmxlbmd0aCA9PSAyLCAiQ29udGVudEZsb3cuY29udGVu
dE5vZGVzIGhhcyBhIGxlbmd0aCBvZiAyLiIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoY29udGVudEZsb3cuY29udGVudE5vZGVzWzBdLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0g
ImNvbnRlbnRTdGF0aWMiLCAiQ29udGVudEZsb3cuY29udGVudE5vZGVzWzBdLmlkIGlzIFwiI2Nv
bnRlbnRTdGF0aWNcIi4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGNvbnRl
bnRGbG93LmNvbnRlbnROb2Rlc1sxXS5nZXRBdHRyaWJ1dGUoImlkIikgPT09ICJjb250ZW50UmVt
b3ZlZCIsICJDb250ZW50Rmxvdy5jb250ZW50Tm9kZXNbMV0uaWQgaXMgXCIjY29udGVudFJlbW92
ZWRcIi4iKTsKLQotICAgICAgICBjb250ZW50Rmxvdy5hZGRFdmVudExpc3RlbmVyKFdJLkNvbnRl
bnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzQWRkZWQsIG9uQ29udGVudE5vZGVXYXNBZGRlZCwg
bnVsbCk7Ci0gICAgICAgIGNvbnRlbnRGbG93LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29udGVudEZs
b3cuRXZlbnQuQ29udGVudE5vZGVXYXNSZW1vdmVkLCBvbkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwg
bnVsbCk7Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2hhbmdlRmxv
d0NvbnRlbnQoKSIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9uQ29udGVudE5vZGVXYXNBZGRl
ZChldmVudCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoZXZlbnQuZGF0YS5ub2RlLmdldEF0dHJp
YnV0ZSgiaWQiKSkgewotICAgICAgICBjYXNlICJjb250ZW50QWRkZWRBdFRoZVRvcCI6Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5iZWZvcmUuZ2V0QXR0
cmlidXRlKCJpZCIpID09PSAiY29udGVudFN0YXRpYyIsICJcIiNjb250ZW50QWRkZWRBdFRoZVRv
cFwiIHdhcyBhZGRlZCBiZWZvcmUgXCIjY29udGVudFN0YXRpY1wiLiIpOwotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGNvbnRlbnRGbG93LmNvbnRlbnROb2Rlc1swXSA9PT0g
ZXZlbnQuZGF0YS5ub2RlLCAiXCIjY29udGVudEFkZGVkQXRUaGVUb3BcIiBpcyBmaXJzdCBpbiB0
aGUgY29udGVudE5vZGVzIGxpc3QuIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSAiY29udGVudEFkZGVkQXRUaGVCb3R0b20iOgotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KCFldmVudC5kYXRhLmJlZm9yZSwgIlwiI2NvbnRlbnRBZGRlZEF0VGhlQm90dG9t
XCIgd2FzIGFkZGVkIGxhc3QuIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoY29udGVudEZsb3cuY29udGVudE5vZGVzLmxhc3RWYWx1ZSA9PT0gZXZlbnQuZGF0YS5ub2Rl
LCAiXCIjY29udGVudEFkZGVkQXRUaGVCb3R0b21cIiBpcyBsYXN0IGluIHRoZSBjb250ZW50Tm9k
ZXMgbGlzdC4iKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IE9ubHkgdHdvIGFkZCBldmVudHMgYXJlIGV4
cGVjdGVkLiIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gb25Db250ZW50Tm9k
ZVdhc1JlbW92ZWQoZXZlbnQpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoZXZlbnQuZGF0YS5ub2RlLmdldEF0dHJpYnV0ZSgiaWQiKSA9PT0gImNvbnRlbnRSZW1vdmVk
IiwgIlwiI2NvbnRlbnRSZW1vdmVkXCIgd2FzIHJlbW92ZWQuIik7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdChjb250ZW50Rmxvdy5jb250ZW50Tm9kZXMuaW5kZXhPZihldmVudC5k
YXRhLm5vZGUpID09PSAtMSwgIlwiI2NvbnRlbnRSZW1vdmVkXCIgY2Fubm90IGJlIGZvdW5kIGlu
IHRoZSBjb250ZW50Tm9kZXMgbGlzdC4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKLSAgICB9Ci0KLSAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1l
LkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAg
dmFyIGRvbVRyZWUgPSBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuZG9tVHJlZTsK
LSAgICAgICAgZG9tVHJlZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTVRyZWUuRXZlbnQuUm9vdERP
TU5vZGVJbnZhbGlkYXRlZCwgb25Sb290RE9NTm9kZUludmFsaWRhdGVkLCBudWxsKTsKLSAgICAg
ICAgZG9tVHJlZS5hZGRFdmVudExpc3RlbmVyKFdJLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dX
YXNBZGRlZCwgb25Db250ZW50Rmxvd1dhc0FkZGVkLCBudWxsKTsKLSAgICAgICAgZG9tVHJlZS5y
ZXF1ZXN0Q29udGVudEZsb3dMaXN0KCk7Ci0gICAgfSk7Ci0KLSAgICBJbnNwZWN0b3JUZXN0LnJl
bG9hZFBhZ2UoKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgotICAgIDxwPlRlc3RpbmcgdGhhdCB0aGUgQ29udGVudEZsb3dzIGV2ZW50cyBhcmUgY29y
cmVjdGx5IGRpc3BhdGNoZWQgd2hlbiBub2RlcyBhcmUgYXR0YWNoZWQgdG8vZGV0YWNoZWQgZnJv
bSBhIGZsb3cuPC9wPgotCi0gICAgPGRpdiBpZD0iY29udGVudEFkZGVkQXRUaGVUb3AiIGNsYXNz
PSJjb250ZW50IGhpZGRlbiI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29udGVudFN0YXRpYyIgY2xh
c3M9ImNvbnRlbnQiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImNvbnRlbnRSZW1vdmVkIiBjbGFzcz0i
Y29udGVudCI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iY29udGVudEFkZGVkQXRUaGVCb3R0b20iIGNs
YXNzPSJjb250ZW50IGhpZGRlbiI+PC9kaXY+Ci0KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtcmVtb3Zh
bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1j
b250ZW50LXJlbW92YWwtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmNzg3YTA0YzI2Ni4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS9jb250ZW50LWZsb3ctY29udGVudC1yZW1vdmFsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDkgKzAsMCBAQAotVGVzdGluZyB0aGF0IHRoZSBDb250ZW50Rmxvd3MgZXZlbnRzIGFy
ZSBjb3JyZWN0bHkgZGlzcGF0Y2hlZCB3aGVuIGNvbnRlbnQgbm9kZXMgYXJlIGRldGFjaGVkIGZy
b20gdGhlIERPTS4KLQotUEFTUzogQ29udGVudEZsb3cgd2FzIGFkZGVkLgotUEFTUzogQ29udGVu
dEZsb3cuY29udGVudE5vZGVzIGhhcyBhIGxlbmd0aCBvZiAyLgotUEFTUzogQ29udGVudEZsb3cu
Y29udGVudE5vZGVzWzBdLmlkIGlzICIjY29udGVudFN0YXRpYyIuCi1QQVNTOiBDb250ZW50Rmxv
dy5jb250ZW50Tm9kZXNbMV0uaWQgaXMgIiNjb250ZW50UmVtb3ZlZCIuCi1QQVNTOiAiI2NvbnRl
bnRSZW1vdmVkIiB3YXMgcmVtb3ZlZC4KLVBBU1M6ICIjY29udGVudFJlbW92ZWQiIGNhbm5vdCBi
ZSBmb3VuZCBpbiB0aGUgY29udGVudE5vZGVzIGxpc3QuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWNvbnRlbnQtcmVtb3ZhbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctY29udGVudC1yZW1vdmFsLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0NmM5M2EwOWM4Li4wMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1jb250ZW50LXJlbW92
YWwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgot
PGh0bWw+Ci08aGVhZD4KLTxzdHlsZT4KLS5jb250ZW50Ci17Ci0gICAgLXdlYmtpdC1mbG93LWlu
dG86IGZsb3c7Ci19Ci08L3N0eWxlPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0Pgot
ZnVuY3Rpb24gY2hhbmdlRmxvd0NvbnRlbnQoKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb250ZW50UmVtb3ZlZCIpLnJlbW92ZSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsK
LSAgICB2YXIgY29udGVudEZsb3c7Ci0KLSAgICBmdW5jdGlvbiBvblJvb3RET01Ob2RlSW52YWxp
ZGF0ZWQoKQotICAgIHsKLSAgICAgICAgV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1l
LmRvbVRyZWUucmVxdWVzdENvbnRlbnRGbG93TGlzdCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IG9uQ29udGVudEZsb3dXYXNBZGRlZChldmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnRlbnRGbG93
ID0gZXZlbnQuZGF0YS5mbG93OwotICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY29u
dGVudEZsb3cubmFtZSA9PT0gImZsb3ciLCAiQ29udGVudEZsb3cgd2FzIGFkZGVkLiIpOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoY29udGVudEZsb3cuY29udGVudE5vZGVzLmxl
bmd0aCA9PT0gMiwgIkNvbnRlbnRGbG93LmNvbnRlbnROb2RlcyBoYXMgYSBsZW5ndGggb2YgMi4i
KTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGNvbnRlbnRGbG93LmNvbnRlbnRO
b2Rlc1swXS5nZXRBdHRyaWJ1dGUoImlkIikgPT09ICJjb250ZW50U3RhdGljIiwgIkNvbnRlbnRG
bG93LmNvbnRlbnROb2Rlc1swXS5pZCBpcyBcIiNjb250ZW50U3RhdGljXCIuIik7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjb250ZW50Rmxvdy5jb250ZW50Tm9kZXNbMV0uZ2V0
QXR0cmlidXRlKCJpZCIpID09PSAiY29udGVudFJlbW92ZWQiLCAiQ29udGVudEZsb3cuY29udGVu
dE5vZGVzWzFdLmlkIGlzIFwiI2NvbnRlbnRSZW1vdmVkXCIuIik7Ci0KLSAgICAgICAgY29udGVu
dEZsb3cuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdh
c1JlbW92ZWQsIG9uQ29udGVudE5vZGVXYXNSZW1vdmVkLCBudWxsKTsKLQotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjaGFuZ2VGbG93Q29udGVudCgpIik7Ci0gICAgfQot
Ci0gICAgZnVuY3Rpb24gb25Db250ZW50Tm9kZVdhc1JlbW92ZWQoZXZlbnQpCi0gICAgewotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXZlbnQuZGF0YS5ub2RlLmdldEF0dHJpYnV0
ZSgiaWQiKSA9PT0gImNvbnRlbnRSZW1vdmVkIiwgIlwiI2NvbnRlbnRSZW1vdmVkXCIgd2FzIHJl
bW92ZWQuIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChjb250ZW50Rmxvdy5j
b250ZW50Tm9kZXMuaW5kZXhPZihldmVudC5kYXRhLm5vZGUpID09PSAtMSwgIlwiI2NvbnRlbnRS
ZW1vdmVkXCIgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBjb250ZW50Tm9kZXMgbGlzdC4iKTsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLSAgICB9Ci0KLSAgICBXSS5GcmFt
ZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBkb21UcmVlID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIubWFpbkZyYW1lLmRvbVRyZWU7Ci0gICAgICAgIGRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihX
SS5ET01UcmVlLkV2ZW50LlJvb3RET01Ob2RlSW52YWxpZGF0ZWQsIG9uUm9vdERPTU5vZGVJbnZh
bGlkYXRlZCwgbnVsbCk7Ci0gICAgICAgIGRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01U
cmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzQWRkZWQsIG9uQ29udGVudEZsb3dXYXNBZGRlZCwgbnVs
bCk7Ci0gICAgICAgIGRvbVRyZWUucmVxdWVzdENvbnRlbnRGbG93TGlzdCgpOwotICAgIH0pOwot
Ci0gICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5UZXN0aW5nIHRoYXQgdGhlIENvbnRl
bnRGbG93cyBldmVudHMgYXJlIGNvcnJlY3RseSBkaXNwYXRjaGVkIHdoZW4gY29udGVudCBub2Rl
cyBhcmUgZGV0YWNoZWQgZnJvbSB0aGUgRE9NLjwvcD4KLQotICAgIDxkaXYgaWQ9ImNvbnRlbnRT
dGF0aWMiIGNsYXNzPSJjb250ZW50Ij48L2Rpdj4KLSAgICA8ZGl2IGlkPSJjb250ZW50UmVtb3Zl
ZCIgY2xhc3M9ImNvbnRlbnQiPjwvZGl2PgotCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtZmxvdy1saXN0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1mbG93LWxpc3QtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTE1MGMyNTg1Ny4uMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctbGlzdC1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLVRlc3RpbmcgdGhhdCB0aGUg
Q29udGVudEZsb3dzIGV2ZW50cyBhcmUgY29ycmVjdGx5IGRpc3BhdGNoZWQgd2hlbiBuZXcgZmxv
d3MgYXJlIGNyZWF0ZWQvcmVtb3ZlZC4KLQotUEFTUzogQ29udGVudEZsb3cgd2FzIGFkZGVkCi1Q
QVNTOiBGbG93IGNvdW50IGlzIDEKLVBBU1M6IENvbnRlbnRGbG93IHdhcyByZW1vdmVkCi1QQVNT
OiBGbG93IGNvdW50IGlzIDAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS9jb250ZW50LWZsb3ctbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250
ZW50LWZsb3ctbGlzdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjY3MzQz
ZWM5Mi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50
LWZsb3ctbGlzdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotPCFkb2N0eXBl
IGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHN0eWxlPgotI2Zsb3cxCi17Ci0gICAgLXdlYmtpdC1m
bG93LWludG86IGZsb3cxOwotfQotPC9zdHlsZT4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWZ1bmN0aW9uIGFkZEZsb3coKSB7Ci0gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgIGRpdi5pZCA9ICJmbG93MSI7Ci0gICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkaXYpOwotfQotCi1mdW5jdGlvbiByZW1vdmVGbG93KCkgewotICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbG93MSIpLnJlbW92ZSgpOwotfQotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICBsZXQgZG9tVHJlZTsKLQotICAgIGZ1bmN0aW9uIG9uUm9vdERPTU5vZGVJ
bnZhbGlkYXRlZCgpCi0gICAgewotICAgICAgICBkb21UcmVlLnJlcXVlc3RDb250ZW50Rmxvd0xp
c3QoKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiYWRkRmxvdygpIik7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gb25Db250ZW50Rmxvd1dhc0FkZGVkKGV2ZW50KQotICAg
IHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChldmVudC5kYXRhLmZsb3cubmFt
ZSwgImZsb3cxIiwgIkNvbnRlbnRGbG93IHdhcyBhZGRlZCIpOwotICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKGRvbVRyZWUuY29udGVudEZsb3dDb2xsZWN0aW9uLml0ZW1zLnNpemUs
IDEsICJGbG93IGNvdW50IGlzIDEiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZSgicmVtb3ZlRmxvdygpIik7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gb25Db250ZW50Rmxv
d1dhc1JlbW92ZWQoZXZlbnQpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGV2ZW50LmRhdGEuZmxvdy5uYW1lLCAiZmxvdzEiLCAiQ29udGVudEZsb3cgd2FzIHJlbW92
ZWQiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChkb21UcmVlLmNvbnRlbnRG
bG93Q29sbGVjdGlvbi5pdGVtcy5zaXplLCAwLCAiRmxvdyBjb3VudCBpcyAwIik7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgfQotCi0gICAgV0kuRnJhbWUuYWRk
RXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIGZ1bmN0
aW9uKCkgewotICAgICAgICBkb21UcmVlID0gV0kuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZy
YW1lLmRvbVRyZWU7Ci0gICAgICAgIGRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVl
LkV2ZW50LlJvb3RET01Ob2RlSW52YWxpZGF0ZWQsIG9uUm9vdERPTU5vZGVJbnZhbGlkYXRlZCk7
Ci0gICAgICAgIGRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlLkV2ZW50LkNvbnRl
bnRGbG93V2FzQWRkZWQsIG9uQ29udGVudEZsb3dXYXNBZGRlZCk7Ci0gICAgICAgIGRvbVRyZWUu
YWRkRXZlbnRMaXN0ZW5lcihXSS5ET01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzUmVtb3ZlZCwg
b25Db250ZW50Rmxvd1dhc1JlbW92ZWQpOwotICAgICAgICBkb21UcmVlLnJlcXVlc3RDb250ZW50
Rmxvd0xpc3QoKTsKLSAgICB9KTsKLQotICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSgpOwot
fQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0
aW5nIHRoYXQgdGhlIENvbnRlbnRGbG93cyBldmVudHMgYXJlIGNvcnJlY3RseSBkaXNwYXRjaGVk
IHdoZW4gbmV3IGZsb3dzIGFyZSBjcmVhdGVkL3JlbW92ZWQuPC9wPgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LW5vZGUtcmVn
aW9uLWluZm8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50
LW5vZGUtcmVnaW9uLWluZm8tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiNzc0YWU2MzBlMy4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS9jb250ZW50LW5vZGUtcmVnaW9uLWluZm8tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsMzkgKzAsMCBAQAotVGVzdGluZyB0aGF0IHRoZSBET01UcmVlTWFuYWdlci5nZXROb2Rl
Q29udGVudEZsb3dJbmZvIHJldHVybnMgdGhlIGNvbnRhaW5pbmcgcmVnaW9ucy4KLQotCi1TZWxl
Y3RvcjogI2Zsb3cKLVJlZ2lvbiBmbG93IG5hbWU6IG5vbmUKLUNvbnRlbnQgZmxvdyBuYW1lOiBu
b25lCi1SZWdpb25zIGNvdW50OiBOL0EKLVJlZ2lvbnM6IE4vQQotCi1TZWxlY3RvcjogLmNvbnRl
bnROb2RlMQotUmVnaW9uIGZsb3cgbmFtZTogbm9uZQotQ29udGVudCBmbG93IG5hbWU6IG5vbmUK
LVJlZ2lvbnMgY291bnQ6IE4vQQotUmVnaW9uczogTi9BCi0KLVNlbGVjdG9yOiAuY29udGVudE5v
ZGUyCi1SZWdpb24gZmxvdyBuYW1lOiBub25lCi1Db250ZW50IGZsb3cgbmFtZTogbm9uZQotUmVn
aW9ucyBjb3VudDogTi9BCi1SZWdpb25zOiBOL0EKLQotU2VsZWN0b3I6IGJvZHkKLVJlZ2lvbiBm
bG93IG5hbWU6IG5vbmUKLUNvbnRlbnQgZmxvdyBuYW1lOiBub25lCi1SZWdpb25zIGNvdW50OiBO
L0EKLVJlZ2lvbnM6IE4vQQotCi1TZWxlY3RvcjogI3JlZ2lvbjEKLVJlZ2lvbiBmbG93IG5hbWU6
IG5vbmUKLUNvbnRlbnQgZmxvdyBuYW1lOiBub25lCi1SZWdpb25zIGNvdW50OiBOL0EKLVJlZ2lv
bnM6IE4vQQotCi1TZWxlY3RvcjogI3JlZ2lvbjIKLVJlZ2lvbiBmbG93IG5hbWU6IG5vbmUKLUNv
bnRlbnQgZmxvdyBuYW1lOiBub25lCi1SZWdpb25zIGNvdW50OiBOL0EKLVJlZ2lvbnM6IE4vQQot
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2NvbnRlbnQtbm9kZS1yZWdp
b24taW5mby5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9jb250ZW50LW5vZGUtcmVn
aW9uLWluZm8uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThhM2RkZTIxODYu
LjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vY29udGVudC1ub2Rl
LXJlZ2lvbi1pbmZvLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi08IWRvY3R5
cGUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci0jZmxvdwotewotICAgIC13ZWJraXQt
Zmxvdy1pbnRvOiBmbG93OwotfQotLmNvbnRlbnROb2RlMQotewotICAgIHdpZHRoOiAxMDAlOwot
ICAgIGhlaWdodDogNTBweDsKLX0KLS5jb250ZW50Tm9kZTIKLXsKLSAgICB3aWR0aDogMTAwJTsK
LSAgICBoZWlnaHQ6IDE1MHB4OwotfQotLnJlZ2lvbgotewotICAgIC13ZWJraXQtZmxvdy1mcm9t
OiBmbG93OwotICAgIHdpZHRoOiAxMDBweDsKLSAgICBoZWlnaHQ6IDEwMHB4OwotfQotPC9zdHls
ZT4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWZ1bmN0aW9uIHRlc3QoKQotewot
ICAgIGxldCBkaXNwbGF5TmFtZUdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoV0kuRE9NTm9kZS5wcm90b3R5cGUsICJkaXNwbGF5TmFtZSIpLmdldDsKLSAgICBsZXQgcXVl
cnlMaXN0ID0gWyIjZmxvdyIsICIuY29udGVudE5vZGUxIiwgIi5jb250ZW50Tm9kZTIiLCAiYm9k
eSIsICIjcmVnaW9uMSIsICIjcmVnaW9uMiJdOwotICAgIGxldCBkb2N1bWVudE5vZGVJZCA9IG51
bGw7Ci0KLSAgICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoZnVuY3Rpb24oZG9j
dW1lbnROb2RlKSB7Ci0gICAgICAgIGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlLmlkOwot
ICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKGRvY3VtZW50
Tm9kZUlkKTsKLSAgICAgICAgbmV4dCgpOwotICAgIH0pOwotCi0gICAgZnVuY3Rpb24gcmVnaW9u
TWFwRnVuY3Rpb24ocmVnaW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGRpc3BsYXlOYW1lR2V0
dGVyLmNhbGwocmVnaW9uKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBxdWVyeShzZWxlY3Rvciwg
Y2FsbGJhY2spCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG5TZWxlY3Rvcjog
IiArIHNlbGVjdG9yKTsKLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucXVlcnlTZWxlY3Rvcihk
b2N1bWVudE5vZGVJZCwgc2VsZWN0b3IsIGZ1bmN0aW9uKGNvbnRlbnROb2RlSWQpIHsKLSAgICAg
ICAgICAgIGlmICghY29udGVudE5vZGVJZCkgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJET00gbm9kZSBub3QgZm91bmQuIik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2so
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxldCBkb21Ob2RlID0gV0kuZG9tVHJlZU1h
bmFnZXIubm9kZUZvcklkKGNvbnRlbnROb2RlSWQpOwotICAgICAgICAgICAgV0kuZG9tVHJlZU1h
bmFnZXIuZ2V0Tm9kZUNvbnRlbnRGbG93SW5mbyhkb21Ob2RlLCBmdW5jdGlvbihlcnJvciwgcmVz
dWx0KSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWVycm9yKTsKLSAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJSZWdpb24gZmxvdyBuYW1lOiAiICsgKHJlc3VsdC5yZWdpb25GbG93ID8gcmVzdWx0LnJl
Z2lvbkZsb3cubmFtZSA6ICJub25lIikpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiQ29udGVudCBmbG93IG5hbWU6ICIgKyAocmVzdWx0LmNvbnRlbnRGbG93ID8gcmVz
dWx0LmNvbnRlbnRGbG93Lm5hbWUgOiAibm9uZSIpKTsKLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlJlZ2lvbnMgY291bnQ6ICIgKyAocmVzdWx0LnJlZ2lvbnMgPyByZXN1
bHQucmVnaW9ucy5sZW5ndGggOiAiTi9BIikpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiUmVnaW9uczogIiArIChyZXN1bHQucmVnaW9ucyA/IHJlc3VsdC5yZWdpb25z
Lm1hcChyZWdpb25NYXBGdW5jdGlvbikuam9pbigiLCAiKSA6ICJOL0EiKSk7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJObyBy
ZWdpb24gZmxvdyBpbmZvcm1hdGlvbi4iKTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG5leHQo
KQotICAgIHsKLSAgICAgICAgaWYgKCFxdWVyeUxpc3QubGVuZ3RoKQotICAgICAgICAgICAgcmV0
dXJuIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci0gICAgICAgIHF1ZXJ5KHF1ZXJ5TGlz
dC5zaGlmdCgpLCBuZXh0KTsKLSAgICB9Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5UZXN0aW5nIHRoYXQgdGhlIERPTVRyZWVNYW5hZ2Vy
LmdldE5vZGVDb250ZW50Rmxvd0luZm8gcmV0dXJucyB0aGUgY29udGFpbmluZyByZWdpb25zLjwv
cD4KLQotICAgIDxkaXYgaWQ9ImZsb3ciPgotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Tm9k
ZTEiPjwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Tm9kZTIiPjwvZGl2PgotICAg
IDwvZGl2PgotCi0gICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+Ci0g
ICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2hpZ2hsaWdodC1mbG93
LXdpdGgtbm8tcmVnaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
aGlnaGxpZ2h0LWZsb3ctd2l0aC1uby1yZWdpb24tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5MGNjNmRmMjYzMi4uMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS9oaWdobGlnaHQtZmxvdy13aXRoLW5vLXJlZ2lvbi1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1UZXN0aW5nIHRoYXQgdGhlIGJhY2tlbmQg
aXMgbm90IGNyYXNoaW5nIHdoZW4gaGlnaGxpZ2h0aW5nIGEgbm9kZSB0aGF0IGhhcyBubyBhc3Nv
Y2lhdGVkIHJlZ2lvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vaGln
aGxpZ2h0LWZsb3ctd2l0aC1uby1yZWdpb24uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20vaGlnaGxpZ2h0LWZsb3ctd2l0aC1uby1yZWdpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTBiY2JlMmY1N2QuLjAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20vaGlnaGxpZ2h0LWZsb3ctd2l0aC1uby1yZWdpb24uaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ5ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0
PgotPHN0eWxlPgotI2Zsb3cgewotICAgIC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OwotfQotPC9z
dHlsZT4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBJbnNwZWN0b3JQcm90b2Nv
bC5zZW5kQ29tbWFuZCgiRE9NLmdldERvY3VtZW50Iiwge30sIG9uR290RG9jdW1lbnQpOwotCi0g
ICAgZnVuY3Rpb24gb25Hb3REb2N1bWVudChtc2cpIHsKLSAgICAgICAgSW5zcGVjdG9yUHJvdG9j
b2wuY2hlY2tGb3JFcnJvcihtc2cpOwotICAgICAgICB2YXIgbm9kZSA9IG1zZy5yZXN1bHQucm9v
dDsKLSAgICAgICAgSW5zcGVjdG9yUHJvdG9jb2wuc2VuZENvbW1hbmQoIkRPTS5xdWVyeVNlbGVj
dG9yIiwgeyAibm9kZUlkIjogbm9kZS5ub2RlSWQsICJzZWxlY3RvciI6ICIjaW5zcGVjdGVkRWxl
bWVudCIgfSwgb25RdWVyeVNlbGVjdG9yKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBvblF1ZXJ5
U2VsZWN0b3IobXNnKSB7Ci0gICAgICAgIEluc3BlY3RvclByb3RvY29sLmNoZWNrRm9yRXJyb3Io
bXNnKTsKLSAgICAgICAgdmFyIG5vZGUgPSBtc2cucmVzdWx0OwotICAgICAgICB2YXIgaGlnaGxp
Z2h0Q29uZmlnID0gewotICAgICAgICAgICAgc2hvd0luZm86IHRydWUsCi0gICAgICAgICAgICBj
b250ZW50Q29sb3I6IHtyOiAyNTUsIGc6IDI1NSwgYjogMjU1fSwKLSAgICAgICAgICAgIHBhZGRp
bmdDb2xvcjoge3I6IDI1NSwgZzogMjU1LCBiOiAyNTV9LAotICAgICAgICAgICAgYm9yZGVyQ29s
b3I6IHtyOiAyNTUsIGc6IDI1NSwgYjogMjU1fSwKLSAgICAgICAgICAgIG1hcmdpbkNvbG9yOiB7
cjogMjU1LCBnOiAyNTUsIGI6IDI1NX0sCi0gICAgICAgIH07Ci0gICAgICAgIEluc3BlY3RvclBy
b3RvY29sLnNlbmRDb21tYW5kKCJET00uaGlnaGxpZ2h0Tm9kZSIsIHsgImhpZ2hsaWdodENvbmZp
ZyI6IGhpZ2hsaWdodENvbmZpZywgIm5vZGVJZCI6IG5vZGUubm9kZUlkIH0sIG9uSGlnaGxpZ2h0
Q29tcGxldGUpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9uSGlnaGxpZ2h0Q29tcGxldGUobXNn
KSB7Ci0gICAgICAgIEluc3BlY3RvclByb3RvY29sLmNoZWNrRm9yRXJyb3IobXNnKTsKLSAgICAg
ICAgUHJvdG9jb2xUZXN0LmNvbXBsZXRlVGVzdCgpOwotICAgIH0KLX0KLTwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotCi08ZGl2IGlkPSJmbG93Ij4KLSAgICA8
ZGl2IGlkPSJpbnNwZWN0ZWRFbGVtZW50Ij48L2Rpdj4KLTwvZGl2PgotCi08cD5UZXN0aW5nIHRo
YXQgdGhlIGJhY2tlbmQgaXMgbm90IGNyYXNoaW5nIHdoZW4gaGlnaGxpZ2h0aW5nIGEgbm9kZSB0
aGF0IGhhcyBubyBhc3NvY2lhdGVkIHJlZ2lvbi48L3A+Ci0KLTwvYm9keT4KLTwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZjg0YTM0Y2RmY2Uu
LmI4NTE0MjlkYWQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMTc3NSwxMSArMTc3NSw2IEBAIHdlYmtpdC5vcmcvYi8xNzY4NzggWyBEZWJ1ZyBdIGZh
c3QvbXVsdGljb2wvc3Bhbm5lci1jcmFzaC13aGVuLWFkZGluZy1zdW1tYXJ5Lmh0CiAjIDxyZGFy
Oi8vcHJvYmxlbS8zNDUwNzk3Nz4KIHdlYmtpdC5vcmcvYi8xNzcxMTkgd2ViZ2wvMS4wLjIvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5o
dG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3NzI0OSBpbnNwZWN0b3IvZG9t
L2NvbnRlbnQtZmxvdy1jb250ZW50LW5vZGVzLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8x
NzcyNDkgaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctY29udGVudC1yZW1vdmFsLmh0bWwgWyBT
a2lwIF0KLXdlYmtpdC5vcmcvYi8xNzcyNDkgaW5zcGVjdG9yL2RvbS9jb250ZW50LWZsb3ctbGlz
dC5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTc3MjQ5IGluc3BlY3Rvci9kb20vY29udGVu
dC1ub2RlLXJlZ2lvbi1pbmZvLmh0bWwgWyBTa2lwIF0KLQogd2Via2l0Lm9yZy9iLzE3NzMxOSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1m
b3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50cy1maWx0ZXIuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMTc3MzIyIFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2RvY3VtZW50LW1ldGFkYXRhL3RoZS1tZXRhLWVsZW1lbnQvcHJhZ21h
LWRpcmVjdGl2ZXMvYXR0ci1tZXRhLWh0dHAtZXF1aXYtcmVmcmVzaC9wYXJzaW5nLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMWI1ZWQwMTVhMDYuLmYx
YTBlZjdmNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
Ny0wOS0yMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3Mjg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9j
b2wvQ1NTLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5q
c29uOgorCiAyMDE3LTA5LTIxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGtleWJvYXJkIHNob3J0Y3V0IGZvciAiUmVsb2FkIHBhZ2UgZnJv
bSBvcmlnaW4iIGRvZXNuJ3QgbWF0Y2ggU2FmYXJpLCBhbmQgZG9lc24ndCB3b3JrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NTUy5qc29uIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbgppbmRleCA2
MGFiYjVlYzEwZi4uOWM4YTQ0MTQ4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ1NTLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9wcm90b2NvbC9DU1MuanNvbgpAQCAtMjA4LDI3ICsyMDgsNiBAQAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlVVJMIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlVSTCBvZiB0aGUgZG9jdW1lbnQgY29udGFpbmlu
ZyB0aGUgbWVkaWEgcXVlcnkgZGVzY3JpcHRpb24uIiB9LAogICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic291cmNlTGluZSIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiTGluZSBpbiB0aGUgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgbWVkaWEg
cXVlcnkgKG5vdCBkZWZpbmVkIGZvciB0aGUgXCJzdHlsZXNoZWV0XCIgc291cmNlKS4iIH0KICAg
ICAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgImlkIjogIlJl
Z2lvbiIsCi0gICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAotICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSByZWdpb24gdGhhdCBmbG93cyBmcm9t
IGEgTmFtZWQgRmxvdy4iLAotICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJyZWdpb25PdmVyc2V0IiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0i
OiBbIm92ZXJzZXQiLCAiZml0IiwgImVtcHR5Il0sICJkZXNjcmlwdGlvbiI6ICJUaGUgXCJvdmVy
c2V0XCIgYXR0cmlidXRlIG9mIGEgTmFtZWQgRmxvdy4iIH0sCi0gICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRo
ZSBjb3JyZXNwb25kaW5nIERPTSBub2RlIGlkLiIgfQotICAgICAgICAgICAgXQotICAgICAgICB9
LAotICAgICAgICB7Ci0gICAgICAgICAgICAiaWQiOiAiTmFtZWRGbG93IiwKLSAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBvYmpl
Y3QgcmVwcmVzZW50cyBhIE5hbWVkIEZsb3cuIiwKLSAgICAgICAgICAgICJwcm9wZXJ0aWVzIjog
WwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJE
T00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiTmFtZWQgRmxvdyBpZGVudGlmaWVyLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm92ZXJzZXQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRoZSBc
Im92ZXJzZXRcIiBhdHRyaWJ1dGUgb2YgYSBOYW1lZCBGbG93LiIgfSwKLSAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYi
OiAiRE9NLk5vZGVJZCIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IG9mIG5vZGVzIHRoYXQg
ZmxvdyBpbnRvIHRoZSBOYW1lZCBGbG93LiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlZ2lvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiUmVnaW9uIiB9
LCAiZGVzY3JpcHRpb24iOiAiQW4gYXJyYXkgb2YgcmVnaW9ucyBhc3NvY2lhdGVkIHdpdGggdGhl
IE5hbWVkIEZsb3cuIiB9Ci0gICAgICAgICAgICBdCiAgICAgICAgIH0KICAgICBdLAogICAgICJj
b21tYW5kcyI6IFsKQEAgLTM3NCwxNiArMzUzLDYgQEAKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGVs
ZW1lbnQgaWQgZm9yIHdoaWNoIHRvIGZvcmNlIHRoZSBwc2V1ZG8gc3RhdGUuIiB9LAogICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZm9yY2VkUHNldWRvQ2xhc3NlcyIsICJ0eXBlIjogImFycmF5
IiwgIml0ZW1zIjogeyAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsiYWN0aXZlIiwgImZvY3Vz
IiwgImhvdmVyIiwgInZpc2l0ZWQiXSB9LCAiZGVzY3JpcHRpb24iOiAiRWxlbWVudCBwc2V1ZG8g
Y2xhc3NlcyB0byBmb3JjZSB3aGVuIGNvbXB1dGluZyB0aGUgZWxlbWVudCdzIHN0eWxlLiIgfQog
ICAgICAgICAgICAgXQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6
ICJnZXROYW1lZEZsb3dDb2xsZWN0aW9uIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJS
ZXR1cm5zIHRoZSBOYW1lZCBGbG93cyBmcm9tIHRoZSBkb2N1bWVudC4iLAotICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJ
ZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5v
ZGUgaWQgZm9yIHdoaWNoIHRvIGdldCB0aGUgTmFtZWQgRmxvdyBDb2xsZWN0aW9uLiIgfQotICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibmFtZWRGbG93cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6
ICJOYW1lZEZsb3ciIH0sICJkZXNjcmlwdGlvbiI6ICJBbiBhcnJheSBjb250YWluaW5nIHRoZSBO
YW1lZCBGbG93cyBpbiB0aGUgZG9jdW1lbnQuIiB9Ci0gICAgICAgICAgICBdCiAgICAgICAgIH0K
ICAgICBdLAogICAgICJldmVudHMiOiBbCkBAIC00MTEsNDcgKzM4MCw2IEBACiAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0eWxlU2hlZXRJ
ZCIsICIkcmVmIjogIlN0eWxlU2hlZXRJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9m
IHRoZSByZW1vdmVkIHN0eWxlc2hlZXQuIiB9CiAgICAgICAgICAgICBdCi0gICAgICAgIH0sCi0g
ICAgICAgIHsKLSAgICAgICAgICAgICJuYW1lIjogIm5hbWVkRmxvd0NyZWF0ZWQiLAotICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93IGlzIGNyZWF0ZWQu
IiwKLSAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93IiwgImRlc2NyaXB0aW9uIjogIlRoZSBu
ZXcgTmFtZWQgRmxvdy4iIH0KLSAgICAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAgewot
ICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93UmVtb3ZlZCIsCi0gICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgcmVtb3ZlZDogaGFzIG5vIGFz
c29jaWF0ZWQgY29udGVudCBub2RlcyBhbmQgcmVnaW9ucy4iLAotICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIk
cmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQu
IiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmxvd05hbWUiLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93
LiIgfQotICAgICAgICAgICAgXQotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAi
bmFtZSI6ICJyZWdpb25PdmVyc2V0Q2hhbmdlZCIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiRmlyZXMgaWYgYW55IG9mIHRoZSByZWdpb25PdmVyc2V0IHZhbHVlcyBjaGFuZ2VkIGluIGEg
TmFtZWQgRmxvdydzIHJlZ2lvbiBjaGFpbi4iLAotICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
Ci0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZs
b3ciLCAiZGVzY3JpcHRpb24iOiAiVGhlIE5hbWVkIEZsb3cgY29udGFpbmluZyB0aGUgcmVnaW9u
cyB3aG9zZSByZWdpb25PdmVyc2V0IHZhbHVlcyBjaGFuZ2VkLiIgfQotICAgICAgICAgICAgXQot
ICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICAibmFtZSI6ICJyZWdpc3RlcmVkTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVz
IHdoZW4gYSBOYW1lZCBGbG93J3MgaGFzIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIGEgbmV3IGNvbnRl
bnQgbm9kZS4iLAotICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZmxvd05hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTmFtZWQg
RmxvdyBpZGVudGlmaWVyIGZvciB3aGljaCB0aGUgbmV3IGNvbnRlbnQgZWxlbWVudCB3YXMgcmVn
aXN0ZXJlZC4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50Tm9kZUlkIiwg
IiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgbm9kZSBpZCBvZiB0aGUg
cmVnaXN0ZXJlZCBjb250ZW50IG5vZGUuIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bmV4dENvbnRlbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjog
IlRoZSBub2RlIGlkIG9mIHRoZSBlbGVtZW50IGZvbGxvd2luZyB0aGUgcmVnaXN0ZXJlZCBjb250
ZW50IG5vZGUuIiB9Ci0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAg
ICAgICAgICJuYW1lIjogInVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50IiwKLSAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdydzIGhhcyBi
ZWVuIHJlZ2lzdGVyZWQgd2l0aCBhIG5ldyBjb250ZW50IG5vZGUuIiwKLSAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQi
LCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2Rl
IGlkLiIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZsb3dOYW1lIiwgInR5cGUiOiAi
c3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk5hbWVkIEZsb3cgaWRlbnRpZmllciBmb3Igd2hpY2gg
dGhlIG5ldyBjb250ZW50IGVsZW1lbnQgd2FzIHVucmVnaXN0ZXJlZC4iIH0sCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJjb250ZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgbm9kZSBpZCBvZiB0aGUgdW5yZWdpc3RlcmVkIGNvbnRlbnQgbm9k
ZS4iIH0KLSAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvT3ZlcmxheVR5cGVzLmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5q
c29uCmluZGV4IDNhNGIwMTUwNzkzLi45YmI3MGRjYmVjZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9PdmVybGF5VHlwZXMuanNvbgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL092ZXJsYXlUeXBlcy5qc29u
CkBAIC0zNiwzOCArMzYsMTIgQEAKICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAgICAg
ewotICAgICAgICAgICAgImlkIjogIlJlZ2lvbiIsCi0gICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiQSBzaW5nbGUgcmVnaW9uIGluIGEgZmxvdyB0aHJlYWQuIiwKLSAgICAgICAgICAgICJ0eXBl
IjogIm9iamVjdCIsCi0gICAgICAgICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImJvcmRlclF1YWQiLCAiJHJlZiI6ICJRdWFkIiB9LAotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiaW5jb21pbmdRdWFkIiwgIiRyZWYiOiAiUXVhZCIgfSwKLSAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm91dGdvaW5nUXVhZCIsICIkcmVmIjogIlF1YWQiIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJpc0hpZ2hsaWdodGVkIiwgInR5cGUiOiAiYm9vbGVhbiIs
ICJvcHRpb25hbCI6IHRydWUgfQotICAgICAgICAgICAgXQotICAgICAgICB9LAotICAgICAgICB7
CiAgICAgICAgICAgICAiaWQiOiAiRGlzcGxheVBhdGgiLAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkEgdmVjdG9yIHBhdGggZGVzY3JpYmVkIHVzaW5nIFNWRyBwYXRoIHN5bnRheC4iLAog
ICAgICAgICAgICAgInR5cGUiOiAiYXJyYXkiLAogICAgICAgICAgICAgIml0ZW1zIjogeyAidHlw
ZSI6ICJhbnkiIH0KICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgImlkIjogIlJl
Z2lvbkZsb3dEYXRhIiwKLSAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCi0gICAgICAgICAg
ICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlZ2lvbnMiLCAi
dHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiUmVnaW9uIn0gfSwKLSAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciIH0KLSAgICAgICAgICAg
IF0KLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgImlkIjogIkNvbnRlbnRGbG93
RGF0YSIsCi0gICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAotICAgICAgICAgICAgInByb3Bl
cnRpZXMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3Ry
aW5nIiB9Ci0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsKICAgICAgICAgICAg
ICJpZCI6ICJTaGFwZU91dHNpZGVEYXRhIiwKICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIs
CiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKQEAgLTg3LDggKzYxLDYgQEAKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInNpemUiLCAiJHJlZiI6ICJTaXplIiwgIm9wdGlvbmFsIjogdHJ1
ZSB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicm9sZSIsICJ0eXBlIjogInN0cmluZyIs
ICJkZXNjcmlwdGlvbiI6ICJDb21wdXRlZCBhY2Nlc3NpYmlsaXR5IHJvbGUgZm9yIHRoZSBlbGVt
ZW50LiIsICJvcHRpb25hbCI6IHRydWUgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBz
ZXVkb0VsZW1lbnQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlIH0sCi0gICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyZWdpb25GbG93RGF0YSIsICIkcmVmIjogIlJlZ2lvbkZs
b3dEYXRhIiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Y29udGVudEZsb3dEYXRhIiwgIiRyZWYiOiAiQ29udGVudEZsb3dEYXRhIiwgIm9wdGlvbmFsIjog
dHJ1ZSB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hhcGVPdXRzaWRlRGF0YSIsICIk
cmVmIjogIlNoYXBlT3V0c2lkZURhdGEiLCAib3B0aW9uYWwiOiB0cnVlIH0KICAgICAgICAgICAg
IF0KICAgICAgICAgfSwKQEAgLTEwMiw4ICs3NCw3IEBACiAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJjb250ZW50T3V0bGluZUNvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9LAogICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicGFkZGluZ0NvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9LAogICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm9yZGVyQ29sb3IiLCAidHlwZSI6ICJzdHJpbmciIH0s
Ci0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXJnaW5Db2xvciIsICJ0eXBlIjogInN0cmlu
ZyIgfSwKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlZ2lvbkNsaXBwaW5nQXJlYSIsICIk
cmVmIjogIlF1YWQiLCAib3B0aW9uYWwiOiB0cnVlIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm1hcmdpbkNvbG9yIiwgInR5cGUiOiAic3RyaW5nIiB9CiAgICAgICAgICAgICBdCiAgICAg
ICAgIH0sCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2MzMDgxNTA5Yy4uZmUwNTI5ZmQ5NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wOS0yMSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBz
dXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc3Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkUmVuZGVyZXJIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGROb2RlSGlnaGxp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmdldEhpZ2hsaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpidWlsZEFycmF5Rm9yUmVuZGVyZXJGcmFnbWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRRdWFkT2JqZWN0Rm9yQ1NTUmVnaW9uQ29udGVudENs
aXApOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5UGFnZS5q
czoKKyAgICAgICAgKF9jcmVhdGVFbGVtZW50VGl0bGUpOgorICAgICAgICAoX2RyYXdFbGVtZW50
VGl0bGUpOgorICAgICAgICAoX2RyYXdGcmFnbWVudEhpZ2hsaWdodCk6CisgICAgICAgIChkcmF3
Tm9kZUhpZ2hsaWdodCk6CisgICAgICAgIChfZHJhd1JlZ2lvbk51bWJlcik6IERlbGV0ZWQuCisg
ICAgICAgIChfcXVhZE1pZFBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKF9kcmF3UmVnaW9uTGlu
ayk6IERlbGV0ZWQuCisgICAgICAgIChfZHJhd1JlZ2lvbnNIaWdobGlnaHQpOiBEZWxldGVkLgor
CiAyMDE3LTA5LTIxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGtleWJvYXJkIHNob3J0Y3V0IGZvciAiUmVsb2FkIHBhZ2UgZnJvbSBvcmln
aW4iIGRvZXNuJ3QgbWF0Y2ggU2FmYXJpLCBhbmQgZG9lc24ndCB3b3JrCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBkMWQ2ODVjZmQ4OC4u
YzY4MzdlMWFjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcApAQCAtNzc3LDE3ICs3NzcsNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpm
b3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgYwog
ICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuc3R5bGVTY29wZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRF
bnZpcm9ubWVudCgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dD
b2xsZWN0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGRvY3VtZW50Tm9kZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpOYW1lZEZsb3c+PiYgcmVzdWx0KQotewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZG9t
QWdlbnQtPmFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCk7Ci0gICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBuYW1lZEZsb3dzID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1l
ZEZsb3c+OjpjcmVhdGUoKTsKLQotICAgIHJlc3VsdCA9IFdURk1vdmUobmFtZWRGbG93cyk7Ci19
Ci0KIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsZWRFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1
dG8gaXQgPSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZCgmZWxlbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDQ5NmZhNDE1
MGI0Li4zODI5YTFkNzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgKQEAgLTExMSw3ICsxMTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTdXBw
b3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIHJl
c3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFt
ZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5n
Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgZm9yY2Vk
UHNldWRvQ2xhc3Nlcykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9u
KEVycm9yU3RyaW5nJiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+PiYgcmVzdWx0
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBTdHlsZVNoZWV0QWN0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDgwN2Qw
MjIyOTI0Li5jOGRlNGIxYWY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcApAQCAtNDksOSArNDksNyBAQAogI2luY2x1ZGUgIlJlY3RhbmdsZVNo
YXBlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5k
ZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJl
bmRlcklubGluZS5oIgotI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgpAQCAtODIsNyArODAsNyBAQCBzdGF0aWMgdm9pZCBjb250ZW50c1F1YWRU
b1BhZ2UoY29uc3QgRnJhbWVWaWV3KiBtYWluVmlldywgY29uc3QgRnJhbWVWaWV3KiB2aWV3LAog
ICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWluVmlldywgdmlldywgcXVhZCwg
SW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbTo6Vmlldyk7CiB9CiAKLXN0YXRpYyB2
b2lkIGJ1aWxkUmVuZGVyZXJIaWdobGlnaHQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVy
UmVnaW9uKiByZWdpb24sIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBI
aWdobGlnaHQmIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6Q29vcmRpbmF0ZVN5c3RlbSBj
b29yZGluYXRlU3lzdGVtKQorc3RhdGljIHZvaWQgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZp
ZywgSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0
ZW0gY29vcmRpbmF0ZVN5c3RlbSkKIHsKICAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gcmVu
ZGVyZXItPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWNvbnRhaW5pbmdGcmFtZSkKQEAg
LTExMCwxNCArMTA4LDYgQEAgc3RhdGljIHZvaWQgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwKICAgICAgICAgICAgIGF1
dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKTsKIAogICAgICAg
ICAgICAgTGF5b3V0Qm94RXh0ZW50IG1hcmdpbnMocmVuZGVyQm94Lm1hcmdpblRvcCgpLCByZW5k
ZXJCb3gubWFyZ2luUmlnaHQoKSwgcmVuZGVyQm94Lm1hcmdpbkJvdHRvbSgpLCByZW5kZXJCb3gu
bWFyZ2luTGVmdCgpKTsKLQotICAgICAgICAgICAgaWYgKCFyZW5kZXJCb3guaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgJiYgcmVnaW9uKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyQm94OjpMb2dp
Y2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7Ci0gICAgICAgICAgICAgICAg
cmVuZGVyQm94LmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihjb21wdXRlZFZhbHVlcywgcmVn
aW9uKTsKLSAgICAgICAgICAgICAgICBtYXJnaW5zLnN0YXJ0KHJlbmRlckJveC5zdHlsZSgpLndy
aXRpbmdNb2RlKCkpID0gY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fc3RhcnQ7Ci0gICAgICAg
ICAgICAgICAgbWFyZ2lucy5lbmQocmVuZGVyQm94LnN0eWxlKCkud3JpdGluZ01vZGUoKSkgPSBj
b21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9lbmQ7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAg
ICAgIHBhZGRpbmdCb3ggPSByZW5kZXJCb3guY2xpZW50Qm94UmVjdCgpOwogICAgICAgICAgICAg
Y29udGVudEJveCA9IExheW91dFJlY3QocGFkZGluZ0JveC54KCkgKyByZW5kZXJCb3gucGFkZGlu
Z0xlZnQoKSwgcGFkZGluZ0JveC55KCkgKyByZW5kZXJCb3gucGFkZGluZ1RvcCgpLAogICAgICAg
ICAgICAgICAgIHBhZGRpbmdCb3gud2lkdGgoKSAtIHJlbmRlckJveC5wYWRkaW5nTGVmdCgpIC0g
cmVuZGVyQm94LnBhZGRpbmdSaWdodCgpLCBwYWRkaW5nQm94LmhlaWdodCgpIC0gcmVuZGVyQm94
LnBhZGRpbmdUb3AoKSAtIHJlbmRlckJveC5wYWRkaW5nQm90dG9tKCkpOwpAQCAtMTM5LDQxICsx
MjksMTAgQEAgc3RhdGljIHZvaWQgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwKICAgICAgICAgICAgICAgICBib3JkZXJC
b3gud2lkdGgoKSArIHJlbmRlcklubGluZS5ob3Jpem9udGFsTWFyZ2luRXh0ZW50KCksIGJvcmRl
ckJveC5oZWlnaHQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBGbG9hdFF1YWQgYWJzQ29udGVu
dFF1YWQ7Ci0gICAgICAgIEZsb2F0UXVhZCBhYnNQYWRkaW5nUXVhZDsKLSAgICAgICAgRmxvYXRR
dWFkIGFic0JvcmRlclF1YWQ7Ci0gICAgICAgIEZsb2F0UXVhZCBhYnNNYXJnaW5RdWFkOwotCi0g
ICAgICAgIGlmIChyZWdpb24pIHsKLSAgICAgICAgICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dU
aHJlYWQgPSByZWdpb24tPmZsb3dUaHJlYWQoKTsKLQotICAgICAgICAgICAgLy8gRmlndXJlIG91
dCB0aGUgcXVhZHMgaW4gdGhlIHNwYWNlIG9mIHRoZSBSZW5kZXJGbG93VGhyZWFkLgotICAgICAg
ICAgICAgYWJzQ29udGVudFF1YWQgPSByZW5kZXJlci0+bG9jYWxUb0NvbnRhaW5lclF1YWQoRmxv
YXRSZWN0KGNvbnRlbnRCb3gpLCBmbG93VGhyZWFkKTsKLSAgICAgICAgICAgIGFic1BhZGRpbmdR
dWFkID0gcmVuZGVyZXItPmxvY2FsVG9Db250YWluZXJRdWFkKEZsb2F0UmVjdChwYWRkaW5nQm94
KSwgZmxvd1RocmVhZCk7Ci0gICAgICAgICAgICBhYnNCb3JkZXJRdWFkID0gcmVuZGVyZXItPmxv
Y2FsVG9Db250YWluZXJRdWFkKEZsb2F0UmVjdChib3JkZXJCb3gpLCBmbG93VGhyZWFkKTsKLSAg
ICAgICAgICAgIGFic01hcmdpblF1YWQgPSByZW5kZXJlci0+bG9jYWxUb0NvbnRhaW5lclF1YWQo
RmxvYXRSZWN0KG1hcmdpbkJveCksIGZsb3dUaHJlYWQpOwotCi0gICAgICAgICAgICAvLyBNb3Zl
IHRoZSBxdWFkIHJlbGF0aXZlIHRvIHRoZSBzcGFjZSBvZiB0aGUgY3VycmVudCByZWdpb24uCi0g
ICAgICAgICAgICBMYXlvdXRSZWN0IGZsaXBwZWRSZWdpb25SZWN0KHJlZ2lvbi0+Zmxvd1RocmVh
ZFBvcnRpb25SZWN0KCkpOwotICAgICAgICAgICAgZmxvd1RocmVhZC0+ZmxpcEZvcldyaXRpbmdN
b2RlKGZsaXBwZWRSZWdpb25SZWN0KTsKLQotICAgICAgICAgICAgRmxvYXRTaXplIGRlbHRhID0g
cmVnaW9uLT5jb250ZW50Qm94UmVjdCgpLmxvY2F0aW9uKCkgLSBmbGlwcGVkUmVnaW9uUmVjdC5s
b2NhdGlvbigpOwotICAgICAgICAgICAgYWJzQ29udGVudFF1YWQubW92ZShkZWx0YSk7Ci0gICAg
ICAgICAgICBhYnNQYWRkaW5nUXVhZC5tb3ZlKGRlbHRhKTsKLSAgICAgICAgICAgIGFic0JvcmRl
clF1YWQubW92ZShkZWx0YSk7Ci0gICAgICAgICAgICBhYnNNYXJnaW5RdWFkLm1vdmUoZGVsdGEp
OwotCi0gICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBhYnNvbHV0ZSBxdWFkcyBzdGFydGluZyBm
cm9tIHRoZSBjdXJyZW50IHJlZ2lvbi4KLSAgICAgICAgICAgIGFic0NvbnRlbnRRdWFkID0gcmVn
aW9uLT5sb2NhbFRvQWJzb2x1dGVRdWFkKGFic0NvbnRlbnRRdWFkKTsKLSAgICAgICAgICAgIGFi
c1BhZGRpbmdRdWFkID0gcmVnaW9uLT5sb2NhbFRvQWJzb2x1dGVRdWFkKGFic1BhZGRpbmdRdWFk
KTsKLSAgICAgICAgICAgIGFic0JvcmRlclF1YWQgPSByZWdpb24tPmxvY2FsVG9BYnNvbHV0ZVF1
YWQoYWJzQm9yZGVyUXVhZCk7Ci0gICAgICAgICAgICBhYnNNYXJnaW5RdWFkID0gcmVnaW9uLT5s
b2NhbFRvQWJzb2x1dGVRdWFkKGFic01hcmdpblF1YWQpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgYWJzQ29udGVudFF1YWQgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChG
bG9hdFJlY3QoY29udGVudEJveCkpOwotICAgICAgICAgICAgYWJzUGFkZGluZ1F1YWQgPSByZW5k
ZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QocGFkZGluZ0JveCkpOwotICAgICAg
ICAgICAgYWJzQm9yZGVyUXVhZCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0
UmVjdChib3JkZXJCb3gpKTsKLSAgICAgICAgICAgIGFic01hcmdpblF1YWQgPSByZW5kZXJlci0+
bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobWFyZ2luQm94KSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgRmxvYXRRdWFkIGFic0NvbnRlbnRRdWFkID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0
ZVF1YWQoRmxvYXRSZWN0KGNvbnRlbnRCb3gpKTsKKyAgICAgICAgRmxvYXRRdWFkIGFic1BhZGRp
bmdRdWFkID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHBhZGRpbmdC
b3gpKTsKKyAgICAgICAgRmxvYXRRdWFkIGFic0JvcmRlclF1YWQgPSByZW5kZXJlci0+bG9jYWxU
b0Fic29sdXRlUXVhZChGbG9hdFJlY3QoYm9yZGVyQm94KSk7CisgICAgICAgIEZsb2F0UXVhZCBh
YnNNYXJnaW5RdWFkID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KG1h
cmdpbkJveCkpOwogCiAgICAgICAgIGNvbnRlbnRzUXVhZFRvQ29vcmRpbmF0ZVN5c3RlbShtYWlu
VmlldywgY29udGFpbmluZ1ZpZXcsIGFic0NvbnRlbnRRdWFkLCBjb29yZGluYXRlU3lzdGVtKTsK
ICAgICAgICAgY29udGVudHNRdWFkVG9Db29yZGluYXRlU3lzdGVtKG1haW5WaWV3LCBjb250YWlu
aW5nVmlldywgYWJzUGFkZGluZ1F1YWQsIGNvb3JkaW5hdGVTeXN0ZW0pOwpAQCAtMTg4LDEzICsx
NDcsMTMgQEAgc3RhdGljIHZvaWQgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lk
IGJ1aWxkTm9kZUhpZ2hsaWdodChOb2RlJiBub2RlLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgY29u
c3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcsIEhpZ2hsaWdodCYgaGlnaGxpZ2h0
LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCitz
dGF0aWMgdm9pZCBidWlsZE5vZGVIaWdobGlnaHQoTm9kZSYgbm9kZSwgY29uc3QgSGlnaGxpZ2h0
Q29uZmlnJiBoaWdobGlnaHRDb25maWcsIEhpZ2hsaWdodCYgaGlnaGxpZ2h0LCBJbnNwZWN0b3JP
dmVybGF5OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCiB7CiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVyLCBy
ZWdpb24sIGhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0LCBjb29yZGluYXRlU3lzdGVtKTsKKyAg
ICBidWlsZFJlbmRlcmVySGlnaGxpZ2h0KHJlbmRlcmVyLCBoaWdobGlnaHRDb25maWcsIGhpZ2hs
aWdodCwgY29vcmRpbmF0ZVN5c3RlbSk7CiB9CiAKIHN0YXRpYyB2b2lkIGJ1aWxkUXVhZEhpZ2hs
aWdodChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnLCBIaWdobGlnaHQmIGhpZ2hsaWdodCkKQEAgLTIzMywxMiArMTkyLDEyIEBAIHZv
aWQgSW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCYgaGlnaGxpZ2h0LCBJ
bnNwZWN0b3JPdmVybGF5OjpDb29yCiAKICAgICBoaWdobGlnaHQudHlwZSA9IEhpZ2hsaWdodFR5
cGU6OlJlY3RzOwogICAgIGlmIChtX2hpZ2hsaWdodE5vZGUpCi0gICAgICAgIGJ1aWxkTm9kZUhp
Z2hsaWdodCgqbV9oaWdobGlnaHROb2RlLCBudWxscHRyLCBtX25vZGVIaWdobGlnaHRDb25maWcs
IGhpZ2hsaWdodCwgY29vcmRpbmF0ZVN5c3RlbSk7CisgICAgICAgIGJ1aWxkTm9kZUhpZ2hsaWdo
dCgqbV9oaWdobGlnaHROb2RlLCBtX25vZGVIaWdobGlnaHRDb25maWcsIGhpZ2hsaWdodCwgY29v
cmRpbmF0ZVN5c3RlbSk7CiAgICAgZWxzZSBpZiAobV9oaWdobGlnaHROb2RlTGlzdCkgewogICAg
ICAgICBoaWdobGlnaHQuc2V0RGF0YUZyb21Db25maWcobV9ub2RlSGlnaGxpZ2h0Q29uZmlnKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faGlnaGxpZ2h0Tm9kZUxpc3QtPmxl
bmd0aCgpOyArK2kpIHsKICAgICAgICAgICAgIEhpZ2hsaWdodCBub2RlSGlnaGxpZ2h0OwotICAg
ICAgICAgICAgYnVpbGROb2RlSGlnaGxpZ2h0KCoobV9oaWdobGlnaHROb2RlTGlzdC0+aXRlbShp
KSksIG51bGxwdHIsIG1fbm9kZUhpZ2hsaWdodENvbmZpZywgbm9kZUhpZ2hsaWdodCwgY29vcmRp
bmF0ZVN5c3RlbSk7CisgICAgICAgICAgICBidWlsZE5vZGVIaWdobGlnaHQoKihtX2hpZ2hsaWdo
dE5vZGVMaXN0LT5pdGVtKGkpKSwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCBub2RlSGlnaGxpZ2h0
LCBjb29yZGluYXRlU3lzdGVtKTsKICAgICAgICAgICAgIGlmIChub2RlSGlnaGxpZ2h0LnR5cGUg
PT0gSGlnaGxpZ2h0VHlwZTo6Tm9kZSkKICAgICAgICAgICAgICAgICBoaWdobGlnaHQucXVhZHMu
YXBwZW5kVmVjdG9yKG5vZGVIaWdobGlnaHQucXVhZHMpOwogICAgICAgICB9CkBAIC00MDEsMjkg
KzM2MCw2IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpT
aXplPiBidWlsZE9iamVjdEZvclNpemUoY29uc3QgSW50CiAgICAgICAgIC5yZWxlYXNlKCk7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpRdWFk
PiBidWlsZFF1YWRPYmplY3RGb3JDU1NSZWdpb25Db250ZW50Q2xpcChSZW5kZXJSZWdpb24qIHJl
Z2lvbikKLXsKLSAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gcmVnaW9uLT5kb2N1bWVudCgp
LmZyYW1lKCk7Ci0gICAgaWYgKCFjb250YWluaW5nRnJhbWUpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgRnJhbWVWaWV3KiBjb250YWluaW5nVmlldyA9IGNvbnRhaW5pbmdGcmFtZS0+
dmlldygpOwotICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBjb250YWluaW5nRnJhbWUtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCkudmlldygpOwotICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQg
PSByZWdpb24tPmZsb3dUaHJlYWQoKTsKLQotICAgIC8vIEdldCB0aGUgY2xpcCBib3ggb2YgdGhl
IGN1cnJlbnQgcmVnaW9uIGFuZCBjb3ZlcnQgaXQgaW50byBhbiBhYnNvbHV0ZSBxdWFkLgotICAg
IExheW91dFJlY3QgZmxpcHBlZFJlZ2lvblJlY3QocmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvbk92
ZXJmbG93UmVjdCgpKTsKLSAgICBmbG93VGhyZWFkLT5mbGlwRm9yV3JpdGluZ01vZGUoZmxpcHBl
ZFJlZ2lvblJlY3QpOwotCi0gICAgLy8gQXBwbHkgYW55IGJvcmRlciBvciBwYWRkaW5nIG9mIHRo
ZSByZWdpb24uCi0gICAgZmxpcHBlZFJlZ2lvblJlY3Quc2V0TG9jYXRpb24ocmVnaW9uLT5jb250
ZW50Qm94UmVjdCgpLmxvY2F0aW9uKCkpOwotICAgIAotICAgIEZsb2F0UXVhZCBjbGlwUXVhZCA9
IHJlZ2lvbi0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoZmxpcHBlZFJlZ2lvblJlY3Qp
KTsKLSAgICBjb250ZW50c1F1YWRUb1BhZ2UobWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBjbGlw
UXVhZCk7Ci0KLSAgICByZXR1cm4gYnVpbGRBcnJheUZvclF1YWQoY2xpcFF1YWQpOwotfQotCiB2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldFNob3dpbmdQYWludFJlY3RzKGJvb2wgc2hvd2luZ1Bh
aW50UmVjdHMpCiB7CiAgICAgaWYgKG1fc2hvd2luZ1BhaW50UmVjdHMgPT0gc2hvd2luZ1BhaW50
UmVjdHMpCkBAIC00OTUsMzYgKzQzMSw5IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnCiB7CiAg
ICAgYXV0byBhcnJheU9mRnJhZ21lbnRzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE+Ojpj
cmVhdGUoKTsKIAotICAgIFJlbmRlckZsb3dUaHJlYWQqIGNvbnRhaW5pbmdGbG93VGhyZWFkID0g
cmVuZGVyZXItPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAoIWNvbnRhaW5p
bmdGbG93VGhyZWFkKSB7Ci0gICAgICAgIEhpZ2hsaWdodCBoaWdobGlnaHQ7Ci0gICAgICAgIGJ1
aWxkUmVuZGVyZXJIaWdobGlnaHQocmVuZGVyZXIsIG51bGxwdHIsIGNvbmZpZywgaGlnaGxpZ2h0
LCBJbnNwZWN0b3JPdmVybGF5OjpDb29yZGluYXRlU3lzdGVtOjpWaWV3KTsKLSAgICAgICAgYXJy
YXlPZkZyYWdtZW50cy0+YWRkSXRlbShidWlsZE9iamVjdEZvckhpZ2hsaWdodChoaWdobGlnaHQp
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVs
bHB0cjsKLSAgICAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOwotICAgICAg
ICBpZiAoIWNvbnRhaW5pbmdGbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCgmcmVuZGVy
ZXItPmVuY2xvc2luZ0JveCgpLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkgewotICAgICAgICAg
ICAgLy8gVGhlIGZsb3cgaGFzIG5vIHZpc2libGUgcmVnaW9ucy4gVGhlIHJlbmRlcmVyIGlzIG5v
dCB2aXNpYmxlIG9uIHNjcmVlbi4KLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVnaW9uTGlzdCA9IGNvbnRh
aW5pbmdGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7Ci0gICAgICAgIGZvciAoUmVuZGVy
UmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHJlZ2lvbkxpc3QuZmluZChzdGFydFJl
Z2lvbik7IGl0ZXIgIT0gcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgICAgICBS
ZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwotICAgICAgICAgICAgaWYgKHJlZ2lvbi0+aXNW
YWxpZCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgaGlnaGxpZ2h0IG9mIHRo
ZSBmcmFnbWVudCBpbnNpZGUgdGhlIGN1cnJlbnQgcmVnaW9uLgotICAgICAgICAgICAgICAgIEhp
Z2hsaWdodCBoaWdobGlnaHQ7Ci0gICAgICAgICAgICAgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdo
dChyZW5kZXJlciwgcmVnaW9uLCBjb25maWcsIGhpZ2hsaWdodCwgSW5zcGVjdG9yT3ZlcmxheTo6
Q29vcmRpbmF0ZVN5c3RlbTo6Vmlldyk7Ci0gICAgICAgICAgICAgICAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZ21lbnRIaWdobGlnaHREYXRhPiBmcmFnbWVudEhp
Z2hsaWdodCA9IGJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0KGhpZ2hsaWdodCk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBDb21wdXRlIHRoZSBjbGlwcGluZyBhcmVhIG9mIHRoZSByZWdpb24uCi0gICAg
ICAgICAgICAgICAgZnJhZ21lbnRIaWdobGlnaHQtPnNldFJlZ2lvbkNsaXBwaW5nQXJlYShidWls
ZFF1YWRPYmplY3RGb3JDU1NSZWdpb25Db250ZW50Q2xpcChyZWdpb24pKTsKLSAgICAgICAgICAg
ICAgICBhcnJheU9mRnJhZ21lbnRzLT5hZGRJdGVtKFdURk1vdmUoZnJhZ21lbnRIaWdobGlnaHQp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9uKQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQorICAgIEhpZ2hsaWdodCBo
aWdobGlnaHQ7CisgICAgYnVpbGRSZW5kZXJlckhpZ2hsaWdodChyZW5kZXJlciwgY29uZmlnLCBo
aWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5hdGVTeXN0ZW06OlZpZXcpOworICAg
IGFycmF5T2ZGcmFnbWVudHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JIaWdobGlnaHQoaGlnaGxp
Z2h0KSk7CiAKICAgICByZXR1cm4gV1RGTW92ZShhcnJheU9mRnJhZ21lbnRzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5UGFnZS5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5UGFnZS5qcwppbmRleCAz
NTI5OTZmNzBkNS4uZmE3MTk4OTY4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5UGFnZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheVBhZ2UuanMKQEAgLTMsMjEgKzMsNiBAQCBjb25zdCBkYXJrR3Jp
ZENvbG9yID0gInJnYmEoMCwwLDAsMC41KSI7CiBjb25zdCB0cmFuc3BhcmVudENvbG9yID0gInJn
YmEoMCwgMCwgMCwgMCkiOwogY29uc3QgZ3JpZEJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuNikiOwogCi0vLyBDU1MgUmVnaW9ucyBoaWdobGlnaHQgY29sb3JzLgotY29u
c3QgaGlnaGxpZ2h0ZWRSZWdpb25CYWNrZ3JvdW5kQ29sb3IgPSAicmdiYSgxMjcsIDIxMSwgMjQ4
LCAwLjEpIjsKLWNvbnN0IHJlZ2lvbkJhY2tncm91bmRDb2xvciA9ICJyZ2JhKDEyNywgMjExLCAy
NDgsIDAuNDUpIjsKLWNvbnN0IHJlZ2lvblN0cm9rZUNvbG9yID0gInJnYmEoOTgsIDIwNywgMjU1
LCAwLjg1KSI7Ci0KLS8vIENTUyBSZWdpb25zIGNoYWluIGhpZ2hsaWdodCBjb2xvcnMuCi1jb25z
dCByZWdpb25MaW5rQm94QmFja2dyb3VuZENvbG9yID0gInJnYmEoMjU1LCAyNTUsIDI1NSwgMC43
MSkiOwotY29uc3QgcmVnaW9uTGlua0JveFN0cm9rZUNvbG9yID0gInJnYmEoOTgsIDIwNywgMjU1
LCAwLjg1KSI7Ci1jb25zdCByZWdpb25DaGFpblN0cm9rZUNvbG9yID0gInJnYmEoOTgsIDIwNywg
MjU1LCAwLjg1KSI7Ci0KLS8vIENTUyBSZWdpb24gbnVtYmVyIHN0eWxlLgotY29uc3QgcmVnaW9u
TnVtYmVyRm9udCA9ICJib2xkIDQwcHQgc2Fucy1zZXJpZiI7Ci1jb25zdCByZWdpb25OdW1iZXJG
aWxsQ29sb3IgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpIjsKLWNvbnN0IHJlZ2lvbk51bWJl
clN0cm9rZUNvbG9yID0gInJnYig2MSwgMTI3LCAyMDQpIjsKLQogLy8gQ1NTIFNoYXBlcyBoaWdo
bGlnaHQgY29sb3JzCiBjb25zdCBzaGFwZUhpZ2hsaWdodENvbG9yID0gInJnYmEoOTYsIDgyLCAx
MjcsIDAuOCkiOwogY29uc3Qgc2hhcGVNYXJnaW5IaWdobGlnaHRDb2xvciA9ICJyZ2JhKDk2LCA4
MiwgMTI3LCAwLjYpIjsKQEAgLTMyLDIxICsxNyw2IEBAIGZ1bmN0aW9uIGRyYXdQYXVzZWRJbkRl
YnVnZ2VyTWVzc2FnZShtZXNzYWdlKQogICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgi
ZGltbWVkIik7CiB9CiAKLWZ1bmN0aW9uIF9kcmF3UmVnaW9uTnVtYmVyKHF1YWQsIG51bWJlcikK
LXsKLSAgICBjb250ZXh0LnNhdmUoKTsKLSAgICB2YXIgbWlkUG9pbnQgPSBfcXVhZE1pZFBvaW50
KHF1YWQpOwotICAgIGNvbnRleHQuZm9udCA9IHJlZ2lvbk51bWJlckZvbnQ7Ci0gICAgY29udGV4
dC50ZXh0QWxpZ24gPSAiY2VudGVyIjsKLSAgICBjb250ZXh0LnRleHRCYXNlbGluZSA9ICJtaWRk
bGUiOwotICAgIGNvbnRleHQuZmlsbFN0eWxlID0gcmVnaW9uTnVtYmVyRmlsbENvbG9yOwotICAg
IGNvbnRleHQuZmlsbFRleHQobnVtYmVyLCBtaWRQb2ludC54LCBtaWRQb2ludC55KTsKLSAgICBj
b250ZXh0LnN0cm9rZVdpZHRoID0gNDsKLSAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gcmVnaW9u
TnVtYmVyU3Ryb2tlQ29sb3I7Ci0gICAgY29udGV4dC5zdHJva2VUZXh0KG51bWJlciwgbWlkUG9p
bnQueCwgbWlkUG9pbnQueSk7Ci0gICAgY29udGV4dC5yZXN0b3JlKCk7Ci19Ci0KIGZ1bmN0aW9u
IHF1YWRUb1BhdGgocXVhZCkKIHsKICAgICBjb250ZXh0LmJlZ2luUGF0aCgpOwpAQCAtMjgxLDgg
KzI1MSw2IEBAIGZ1bmN0aW9uIF9jcmVhdGVFbGVtZW50VGl0bGUoZWxlbWVudERhdGEpCiAgICAg
YnVpbGRlci5hcHBlbmRTcGFuKCJweCIsICJweCIpOwogCiAgICAgYnVpbGRlci5hcHBlbmRQcm9w
ZXJ0eUlmTm90TnVsbCgicm9sZS1uYW1lIiwgIlJvbGUiLCBlbGVtZW50RGF0YS5yb2xlKTsKLSAg
ICBidWlsZGVyLmFwcGVuZFByb3BlcnR5SWZOb3ROdWxsKCJyZWdpb24tZmxvdy1uYW1lIiwgIlJl
Z2lvbiBGbG93IiwgZWxlbWVudERhdGEucmVnaW9uRmxvd0RhdGEgPyBlbGVtZW50RGF0YS5yZWdp
b25GbG93RGF0YS5uYW1lIDogbnVsbCk7Ci0gICAgYnVpbGRlci5hcHBlbmRQcm9wZXJ0eUlmTm90
TnVsbCgiY29udGVudC1mbG93LW5hbWUiLCAiQ29udGVudCBGbG93IiwgZWxlbWVudERhdGEuY29u
dGVudEZsb3dEYXRhID8gZWxlbWVudERhdGEuY29udGVudEZsb3dEYXRhLm5hbWUgOiBudWxsKTsK
IAogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGVtZW50LXRpdGxlLWNvbnRhaW5lciIp
LmFwcGVuZENoaWxkKGJ1aWxkZXIuZWxlbWVudCk7CiAKQEAgLTMxMCwxNSArMjc4LDYgQEAgZnVu
Y3Rpb24gX2RyYXdFbGVtZW50VGl0bGUoZWxlbWVudERhdGEsIGZyYWdtZW50SGlnaGxpZ2h0LCBz
Y3JvbGwpCiAKICAgICB2YXIgYm94WCA9IG1hcmdpblF1YWRbMF0ueDsKIAotICAgIHZhciBjbGlw
UXVhZCA9IGZyYWdtZW50SGlnaGxpZ2h0LnJlZ2lvbkNsaXBwaW5nQXJlYTsKLSAgICBpZiAoY2xp
cFF1YWQpIHsKLSAgICAgICAgLy8gUmVzdHJpY3QgdGhlIHBvc2l0aW9uIG9mIHRoZSB0aXRsZSBi
b3ggdG8gdGhlIGFyZWEgb2YgdGhlIGNvbnRhaW5pbmcgcmVnaW9uLgotICAgICAgICBhbmNob3JU
b3AgPSBNYXRoLm1heChhbmNob3JUb3AsIE1hdGgubWluKGNsaXBRdWFkWzBdLnksIGNsaXBRdWFk
WzFdLnksIGNsaXBRdWFkWzJdLnksIGNsaXBRdWFkWzNdLnkpKTsKLSAgICAgICAgYW5jaG9yQm90
dG9tID0gTWF0aC5taW4oYW5jaG9yQm90dG9tLCBNYXRoLm1heChjbGlwUXVhZFswXS55LCBjbGlw
UXVhZFsxXS55LCBjbGlwUXVhZFsyXS55LCBjbGlwUXVhZFszXS55KSk7Ci0gICAgICAgIGJveFgg
PSBNYXRoLm1heChib3hYLCBNYXRoLm1pbihjbGlwUXVhZFswXS54LCBjbGlwUXVhZFsxXS54LCBj
bGlwUXVhZFsyXS54LCBjbGlwUXVhZFszXS54KSk7Ci0gICAgICAgIGJveFggPSBNYXRoLm1pbihi
b3hYLCBNYXRoLm1heChjbGlwUXVhZFswXS54LCBjbGlwUXVhZFsxXS54LCBjbGlwUXVhZFsyXS54
LCBjbGlwUXVhZFszXS54KSk7Ci0gICAgfQotCiAgICAgYm94WCA9IE1hdGgubWF4KDIsIGJveFgg
LSBzY3JvbGwueCk7CiAgICAgYW5jaG9yVG9wIC09IHNjcm9sbC55OwogICAgIGFuY2hvckJvdHRv
bSAtPSBzY3JvbGwueTsKQEAgLTM3MSw0OSArMzMwLDYgQEAgZnVuY3Rpb24gX2RyYXdFbGVtZW50
VGl0bGUoZWxlbWVudERhdGEsIGZyYWdtZW50SGlnaGxpZ2h0LCBzY3JvbGwpCiAgICAgZWxlbWVu
dFRpdGxlLnN0eWxlLmxlZnQgPSAoYm94WCArIDMpICsgInB4IjsKIH0KIAotZnVuY3Rpb24gX3F1
YWRNaWRQb2ludChxdWFkKQotewotICAgIHJldHVybiB7Ci0gICAgICAgIHg6IChxdWFkWzBdLngg
KyBxdWFkWzFdLnggKyBxdWFkWzJdLnggKyBxdWFkWzNdLngpIC8gNCwKLSAgICAgICAgeTogKHF1
YWRbMF0ueSArIHF1YWRbMV0ueSArIHF1YWRbMl0ueSArIHF1YWRbM10ueSkgLyA0LAotICAgIH07
Ci19Ci0KLWZ1bmN0aW9uIF9kcmF3UmVnaW9uTGluayhwb2ludEEsIHBvaW50QikKLXsKLSAgICBj
b250ZXh0LnNhdmUoKTsKLSAgICBjb250ZXh0LmxpbmVXaWR0aCA9IDI7Ci0gICAgY29udGV4dC5z
dHJva2VTdHlsZSA9IHJlZ2lvbkNoYWluU3Ryb2tlQ29sb3I7Ci0gICAgY29udGV4dC5iZWdpblBh
dGgoKTsKLSAgICBjb250ZXh0Lm1vdmVUbyhwb2ludEEueCwgcG9pbnRBLnkpOwotICAgIGNvbnRl
eHQubGluZVRvKHBvaW50Qi54LCBwb2ludEIueSk7Ci0gICAgY29udGV4dC5zdHJva2UoKTsKLSAg
ICBjb250ZXh0LnJlc3RvcmUoKTsKLX0KLQotZnVuY3Rpb24gX2RyYXdSZWdpb25zSGlnaGxpZ2h0
KHJlZ2lvbnMpCi17Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWdpb25zLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIHZhciByZWdpb24gPSByZWdpb25zW2ldOwotICAgICAgICBkcmF3T3V0bGlu
ZWRRdWFkKHJlZ2lvbi5ib3JkZXJRdWFkLCByZWdpb24uaXNIaWdobGlnaHRlZCA/IGhpZ2hsaWdo
dGVkUmVnaW9uQmFja2dyb3VuZENvbG9yIDogcmVnaW9uQmFja2dyb3VuZENvbG9yLCByZWdpb25T
dHJva2VDb2xvcik7Ci0gICAgICAgIF9kcmF3UmVnaW9uTnVtYmVyKHJlZ2lvbi5ib3JkZXJRdWFk
LCBpICsgMSk7Ci0gICAgfQotCi0gICAgZm9yICh2YXIgaSA9IDE7IGkgPCByZWdpb25zLmxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIHZhciByZWdpb25BID0gcmVnaW9uc1tpIC0gMV0sCi0gICAgICAg
ICAgICByZWdpb25CID0gcmVnaW9uc1tpXTsKLSAgICAgICAgX2RyYXdSZWdpb25MaW5rKF9xdWFk
TWlkUG9pbnQocmVnaW9uQS5vdXRnb2luZ1F1YWQpLCBfcXVhZE1pZFBvaW50KHJlZ2lvbkIuaW5j
b21pbmdRdWFkKSk7Ci0gICAgfQotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWdpb25zLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciByZWdpb24gPSByZWdpb25zW2ldOwotICAgICAgICBp
ZiAoaSA+IDApCi0gICAgICAgICAgICBkcmF3T3V0bGluZWRRdWFkKHJlZ2lvbi5pbmNvbWluZ1F1
YWQsIHJlZ2lvbkxpbmtCb3hCYWNrZ3JvdW5kQ29sb3IsIHJlZ2lvbkxpbmtCb3hTdHJva2VDb2xv
cik7Ci0gICAgICAgIGlmIChpICE9PSByZWdpb25zLmxlbmd0aCAtIDEpCi0gICAgICAgICAgICBk
cmF3T3V0bGluZWRRdWFkKHJlZ2lvbi5vdXRnb2luZ1F1YWQsIHJlZ2lvbkxpbmtCb3hCYWNrZ3Jv
dW5kQ29sb3IsIHJlZ2lvbkxpbmtCb3hTdHJva2VDb2xvcik7Ci0gICAgfQotfQotCiBmdW5jdGlv
biBfZHJhd1NoYXBlSGlnaGxpZ2h0KHNoYXBlSW5mbykKIHsKICAgICBpZiAoc2hhcGVJbmZvLm1h
cmdpblNoYXBlKQpAQCAtNDMzLDExICszNDksNiBAQCBmdW5jdGlvbiBfZHJhd0ZyYWdtZW50SGln
aGxpZ2h0KGhpZ2hsaWdodCkKIAogICAgIGNvbnRleHQuc2F2ZSgpOwogCi0gICAgaWYgKGhpZ2hs
aWdodC5yZWdpb25DbGlwcGluZ0FyZWEpIHsKLSAgICAgICAgLy8gQ2xpcCB0byB0aGUgY29udGFp
bmluZyByZWdpb24gdG8gYXZvaWQgc2hvd2luZyBmcmFnbWVudHMgdGhhdCBhcmUgbm90IHJlbmRl
cmVkIGJ5IHRoaXMgcmVnaW9uLgotICAgICAgICBxdWFkVG9QYXRoKGhpZ2hsaWdodC5yZWdpb25D
bGlwcGluZ0FyZWEpLmNsaXAoKTsKLSAgICB9Ci0KICAgICB2YXIgcXVhZHMgPSBoaWdobGlnaHQu
cXVhZHMuc2xpY2UoKTsKICAgICB2YXIgY29udGVudFF1YWQgPSBxdWFkcy5wb3AoKTsKICAgICB2
YXIgcGFkZGluZ1F1YWQgPSBxdWFkcy5wb3AoKTsKQEAgLTUwNCw5ICs0MTUsNiBAQCBmdW5jdGlv
biBkcmF3Tm9kZUhpZ2hsaWdodChhbGxIaWdobGlnaHRzKQogICAgICAgICBmb3IgKHZhciBmcmFn
bWVudCBvZiBoaWdobGlnaHQuZnJhZ21lbnRzKQogICAgICAgICAgICAgX2RyYXdGcmFnbWVudEhp
Z2hsaWdodChmcmFnbWVudCk7CiAKLSAgICAgICAgaWYgKGhpZ2hsaWdodC5lbGVtZW50RGF0YSAm
JiBoaWdobGlnaHQuZWxlbWVudERhdGEucmVnaW9uRmxvd0RhdGEpCi0gICAgICAgICAgICBfZHJh
d1JlZ2lvbnNIaWdobGlnaHQoaGlnaGxpZ2h0LmVsZW1lbnREYXRhLnJlZ2lvbkZsb3dEYXRhLnJl
Z2lvbnMpOwotCiAgICAgICAgIGlmIChoaWdobGlnaHQuZWxlbWVudERhdGEgJiYgaGlnaGxpZ2h0
LmVsZW1lbnREYXRhLnNoYXBlT3V0c2lkZURhdGEpCiAgICAgICAgICAgICBfZHJhd1NoYXBlSGln
aGxpZ2h0KGhpZ2hsaWdodC5lbGVtZW50RGF0YS5zaGFwZU91dHNpZGVEYXRhKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKaW5kZXggNzFlMThhZTZlMGQuLjI1Y2E4ODA1NjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OSBAQAorMjAxNy0wOS0yMSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92
ZSBzdXBwb3J0IGZvciBDU1MgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc3Mjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpz
OgorICAgICAgICAoV0kuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLm5hbWVkRmxvd0NyZWF0ZWQpOgor
ICAgICAgICAoV0kuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLm5hbWVkRmxvd1JlbW92ZWQpOgorICAg
ICAgICAoV0kuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLnJlZ2lvbkxheW91dFVwZGF0ZWQpOgorICAg
ICAgICAoV0kuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKToKKyAg
ICAgICAgKFdJLkNTU09ic2VydmVyLnByb3RvdHlwZS5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVu
dEVsZW1lbnQpOgorICAgICAgICAoV0kuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLnVucmVnaXN0ZXJl
ZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KToKKyAgICAgICAgTGVhdmUgb2JzZXJ2ZXIgZnVuY3Rp
b25zIGluIGZvciBvbGRlciBiYWNrZW5kcyB0aGF0IHdpbGwgc2VuZAorICAgICAgICB0aGVzZSBt
ZXNzYWdlcywgYnV0IHdlIGp1c3QgaWdub3JlIHRoZW0uCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RP
TVRyZWVNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIpOgorICAgICAgICAo
V0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLl91bmJpbmQpOgorICAgICAgICAoV0kuRE9NVHJl
ZU1hbmFnZXIuX2Zsb3dQYXlsb2FkSGFzaEtleSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01U
cmVlTWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZUNvbnRlbnRGbG93RnJvbVBheWxvYWQpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVDb250ZW50
Rmxvd0Zyb21QYXlsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVNYW5hZ2VyLnBy
b3RvdHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uLm9uTmFtZWRGbG93Q29sbGVjdGlvbkF2YWls
YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUuZ2V0
TmFtZWRGbG93Q29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlTWFuYWdl
ci5wcm90b3R5cGUubmFtZWRGbG93Q3JlYXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01U
cmVlTWFuYWdlci5wcm90b3R5cGUubmFtZWRGbG93UmVtb3ZlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUuX3NlbmROYW1lZEZsb3dVcGRhdGVFdmVudHMp
OiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLnJlZ2lvbk92
ZXJzZXRDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVNYW5hZ2VyLnByb3Rv
dHlwZS5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLl9yZW1vdmVDb250ZW50Tm9kZUZyb21GbG93
SWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBl
LnVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5fY29lcmNlUmVtb3RlQXJyYXlPZkRPTU5vZGVz
Lm5vZGVSZXF1ZXN0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJv
dG90eXBlLl9jb2VyY2VSZW1vdGVBcnJheU9mRE9NTm9kZXMpOiBEZWxldGVkLgorICAgICAgICAo
V0kuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLmdldE5vZGVDb250ZW50Rmxvd0luZm8ucmVnaW9u
Tm9kZXNBdmFpbGFibGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZU1hbmFnZXIucHJv
dG90eXBlLmdldE5vZGVDb250ZW50Rmxvd0luZm8ucmVtb3RlT2JqZWN0UHJvcGVydGllc0F2YWls
YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUuZ2V0
Tm9kZUNvbnRlbnRGbG93SW5mby5pbnNwZWN0ZWRQYWdlX25vZGVfZ2V0Rmxvd0luZm8uZ2V0Q29t
cHV0ZWRQcm9wZXJ0eSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01UcmVlTWFuYWdlci5wcm90
b3R5cGUuZ2V0Tm9kZUNvbnRlbnRGbG93SW5mby5pbnNwZWN0ZWRQYWdlX25vZGVfZ2V0Rmxvd0lu
Zm8uZ2V0Q29udGVudEZsb3dOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTVRyZWVNYW5h
Z2VyLnByb3RvdHlwZS5nZXROb2RlQ29udGVudEZsb3dJbmZvKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0ltYWdlcy9Db250ZW50Rmxvdy5zdmc6IFJlbW92ZWQuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9JbWFnZXMvZ3RrL0NvbnRlbnRGbG93LnN2ZzogUmVtb3ZlZC4KKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9Db2xsZWN0aW9uLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0Nv
bnRlbnRGbG93LmpzOiBSZW1vdmVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RP
TVRyZWUuanM6CisgICAgICAgIChXSS5ET01UcmVlKToKKyAgICAgICAgKFdJLkRPTVRyZWUucHJv
dG90eXBlLmdldCBmcmFtZSk6CisgICAgICAgIChXSS5ET01UcmVlLnByb3RvdHlwZS5fZnJhbWVQ
YWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQpOgorICAgICAgICAoV0kuRE9NVHJlZS5wcm90b3R5
cGUuZ2V0IGNvbnRlbnRGbG93Q29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01U
cmVlLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudEZsb3dMaXN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkRPTVRyZWUucHJvdG90eXBlLl9pc0NvbnRlbnRGbG93SW5DdXJyZW50RG9jdW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZS5wcm90b3R5cGUuX2NvbnRlbnRGbG93TGlzdFdh
c1VwZGF0ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZS5wcm90b3R5cGUuX2NvbnRl
bnRGbG93V2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NVHJlZS5wcm90b3R5cGUu
X2NvbnRlbnRGbG93V2FzUmVtb3ZlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29u
dGVudFZpZXcuanM6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3M6Cisg
ICAgICAgICguZGV0YWlscy1zZWN0aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAucm93LnNpbXBs
ZS5jb250ZW50LWZsb3ctbGluayA+IC52YWx1ZSA+IHNwYW4gPiAuaWNvbik6IERlbGV0ZWQuCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpz
OgorICAgICAgICAoV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUucmVmcmVz
aCk6CisgICAgICAgIChXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5pbml0
aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90
eXBlLl9oYW5kbGVWYXJpYWJsZXNTZWN0aW9uQ29sbGFwc2VkU3RhdGVDaGFuZ2VkKToKKyAgICAg
ICAgKFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwpOgorICAgICAgICAoV0kuQ29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuZ2V0IHJlZ2lvbkZsb3cpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuc2V0IHJlZ2lvbkZs
b3cpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuZ2V0IGNvbnRlbnRGbG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNldCBjb250ZW50Rmxvdyk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5nZXQgY29udGFpbmVy
UmVnaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVs
LnByb3RvdHlwZS5zZXQgY29udGFpbmVyUmVnaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5D
b21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zaXplRGlkQ2hhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl91cGRh
dGVGbG93TmFtZXNTZWN0aW9uVmlzaWJpbGl0eSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5Db21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcmVzZXRGbG93RGV0YWlscyk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fcmVm
cmVzaEZsb3dEZXRhaWxzLmNvbnRlbnRGbG93SW5mb1JlYWR5KTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9yZWZyZXNoRmxvd0RldGFp
bHMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuX2dvVG9SZWdpb25GbG93QXJyb3dXYXNDbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9nb1RvQ29udGVudEZsb3dB
cnJvd1dhc0NsaWNrZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcuanM6IFJlbW92ZWQuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd0ljb24uY3NzOiBSZW1vdmVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qczogUmVtb3ZlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAo
V0kuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdJ
LkNvbnRlbnRWaWV3LmlzVmlld2FibGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
RnJhbWVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90
eXBlLm9ucG9wdWxhdGUpOgorICAgICAgICAoV0kuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUu
b25leHBhbmQpOgorICAgICAgICAoV0kuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NoaWxk
Q29udGVudEZsb3dXYXNBZGRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5GcmFtZVRyZWVFbGVt
ZW50LnByb3RvdHlwZS5fY2hpbGRDb250ZW50Rmxvd1dhc1JlbW92ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Jvb3RET01Ob2RlSW52YWxpZGF0
ZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRl
YmFyUGFuZWwuanM6CisgICAgICAgIChXSS5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUu
X3RyZWVTZWxlY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
UmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5SZXNvdXJjZXNUYWJDb250
ZW50Vmlldyk6CisgICAgICAgIChXSS5SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5wcm90b3R5cGUu
Y2FuU2hvd1JlcHJlc2VudGVkT2JqZWN0KToKKwogMjAxNy0wOS0yMSAgUm9zcyBLaXJzbGluZyAg
PHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIGRl
dGFpbHMgc2lkZWJhciB0byBMYXllcnMgdGFiLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IGFhYzY4MjQxYmQ4Li43YmU5NjhiNWY0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFp
bi5qcwpAQCAtMTA5OSwxMCArMTA5OSw2IEBAIFdJLnRhYkNvbnRlbnRWaWV3Q2xhc3NGb3JSZXBy
ZXNlbnRlZE9iamVjdCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgICAgICB8fCBy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlNoYWRlclByb2dyYW0pCiAgICAgICAgIHJl
dHVybiBXSS5SZXNvdXJjZXNUYWJDb250ZW50VmlldzsKIAotICAgIC8vIEZJWE1FOiBNb3ZlIENv
bnRlbnQgRmxvd3MgdG8gdGhlIEVsZW1lbnRzIHRhYj8KLSAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXSS5Db250ZW50RmxvdykKLSAgICAgICAgcmV0dXJuIFdJLlJlc291cmNl
c1RhYkNvbnRlbnRWaWV3OwotCiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gYSBTdG9yYWdl
IHRhYi4KICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5ET01TdG9yYWdl
T2JqZWN0IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQ29va2llU3RvcmFnZU9i
amVjdCB8fAogICAgICAgICByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkRhdGFiYXNl
VGFibGVPYmplY3QgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5EYXRhYmFzZU9i
amVjdCB8fApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcwppbmRleCA1NDdkOGVhN2Y2
Ni4uZjAxYTljMzNiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTVRyZWVNYW5hZ2VyLmpzCkBAIC0z
OSwyMiArMzksMTIgQEAgV0kuRE9NVHJlZU1hbmFnZXIgPSBjbGFzcyBET01UcmVlTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9pZFRvRE9NTm9kZSA9IHt9OwogICAgICAg
ICB0aGlzLl9kb2N1bWVudCA9IG51bGw7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZUxvYWROb2Rl
SWRzID0ge307Ci0gICAgICAgIHRoaXMuX2Zsb3dzID0gbmV3IE1hcDsKLSAgICAgICAgdGhpcy5f
Y29udGVudE5vZGVzVG9GbG93c01hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVT
ZWxlY3RlZE5vZGVJc0FsbG93ZWQgPSB0cnVlOwogICAgICAgICB0aGlzLl9sb2FkTm9kZUF0dHJp
YnV0ZXNUaW1lb3V0ID0gMDsKIAogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJ
LkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlk
Q2hhbmdlLCB0aGlzKTsKICAgICB9CiAKLSAgICAvLyBTdGF0aWMKLQotICAgIHN0YXRpYyBfZmxv
d1BheWxvYWRIYXNoS2V5KGZsb3dQYXlsb2FkKQotICAgIHsKLSAgICAgICAgLy8gVXNlIHRoZSBm
bG93IG5vZGUgaWQsIHRvIGF2b2lkIGNvbGxpc2lvbnMgd2hlbiB3ZSBjaGFuZ2UgbWFpbiBkb2N1
bWVudCBpZC4KLSAgICAgICAgcmV0dXJuIGZsb3dQYXlsb2FkLmRvY3VtZW50Tm9kZUlkICsgIjoi
ICsgZmxvd1BheWxvYWQubmFtZTsKLSAgICB9Ci0KICAgICAvLyBQdWJsaWMKIAogICAgIHJlcXVl
c3REb2N1bWVudChjYWxsYmFjaykKQEAgLTMyMSw4ICszMTEsNiBAQCBXSS5ET01UcmVlTWFuYWdl
ciA9IGNsYXNzIERPTVRyZWVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfdW5iaW5k
KG5vZGUpCiAgICAgewotICAgICAgICB0aGlzLl9yZW1vdmVDb250ZW50Tm9kZUZyb21GbG93SWZO
ZWVkZWQobm9kZSk7Ci0KICAgICAgICAgZGVsZXRlIHRoaXMuX2lkVG9ET01Ob2RlW25vZGUuaWRd
OwogCiAgICAgICAgIGZvciAobGV0IGkgPSAwOyBub2RlLmNoaWxkcmVuICYmIGkgPCBub2RlLmNo
aWxkcmVuLmxlbmd0aDsgKytpKQpAQCAtNTMzLDI4MiArNTIxLDYgQEAgV0kuRE9NVHJlZU1hbmFn
ZXIgPSBjbGFzcyBET01UcmVlTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1
cm4gaGlnaGxpZ2h0Q29uZmlnOwogICAgIH0KIAotICAgIF9jcmVhdGVDb250ZW50Rmxvd0Zyb21Q
YXlsb2FkKGZsb3dQYXlsb2FkKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IENvbGxlY3QgdGhl
IHJlZ2lvbnMgZnJvbSB0aGUgcGF5bG9hZC4KLSAgICAgICAgdmFyIGZsb3cgPSBuZXcgV0kuQ29u
dGVudEZsb3coZmxvd1BheWxvYWQuZG9jdW1lbnROb2RlSWQsIGZsb3dQYXlsb2FkLm5hbWUsIGZs
b3dQYXlsb2FkLm92ZXJzZXQsIGZsb3dQYXlsb2FkLmNvbnRlbnQubWFwKHRoaXMubm9kZUZvcklk
LmJpbmQodGhpcykpKTsKLQotICAgICAgICBmb3IgKHZhciBjb250ZW50Tm9kZSBvZiBmbG93LmNv
bnRlbnROb2RlcykgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2NvbnRlbnRO
b2Rlc1RvRmxvd3NNYXAuaGFzKGNvbnRlbnROb2RlLmlkKSk7Ci0gICAgICAgICAgICB0aGlzLl9j
b250ZW50Tm9kZXNUb0Zsb3dzTWFwLnNldChjb250ZW50Tm9kZS5pZCwgZmxvdyk7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gZmxvdzsKLSAgICB9Ci0KLSAgICBfdXBkYXRlQ29udGVudEZs
b3dGcm9tUGF5bG9hZChjb250ZW50RmxvdywgZmxvd1BheWxvYWQpCi0gICAgewotICAgICAgICBj
b25zb2xlLmFzc2VydChjb250ZW50Rmxvdy5jb250ZW50Tm9kZXMubGVuZ3RoID09PSBmbG93UGF5
bG9hZC5jb250ZW50Lmxlbmd0aCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRGbG93
LmNvbnRlbnROb2Rlcy5ldmVyeSgobm9kZSwgaSkgPT4gbm9kZS5pZCA9PT0gZmxvd1BheWxvYWQu
Y29udGVudFtpXSkpOwotCi0gICAgICAgIC8vIEZJWE1FOiBDb2xsZWN0IHRoZSByZWdpb25zIGZy
b20gdGhlIHBheWxvYWQuCi0gICAgICAgIGNvbnRlbnRGbG93Lm92ZXJzZXQgPSBmbG93UGF5bG9h
ZC5vdmVyc2V0OwotICAgIH0KLQotICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oZG9jdW1lbnRO
b2RlSWRlbnRpZmllcikKLSAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIG9uTmFtZWRGbG93Q29sbGVj
dGlvbkF2YWlsYWJsZShlcnJvciwgZmxvd3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChl
cnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9jb250ZW50
Tm9kZXNUb0Zsb3dzTWFwLmNsZWFyKCk7Ci0gICAgICAgICAgICB2YXIgY29udGVudEZsb3dzID0g
W107Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZsb3dzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGZsb3dQYXlsb2FkID0gZmxvd3NbaV07Ci0gICAgICAgICAg
ICAgICAgdmFyIGZsb3dLZXkgPSBXSS5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRIYXNoS2V5
KGZsb3dQYXlsb2FkKTsKLSAgICAgICAgICAgICAgICB2YXIgY29udGVudEZsb3cgPSB0aGlzLl9m
bG93cy5nZXQoZmxvd0tleSk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRGbG93KQotICAg
ICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDb250ZW50Rmxvd0Zyb21QYXlsb2FkKGNvbnRl
bnRGbG93LCBmbG93UGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRlbnRGbG93ID0gdGhpcy5fY3JlYXRlQ29udGVudEZsb3dGcm9tUGF5bG9h
ZChmbG93UGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Zsb3dzLnNldChmbG93
S2V5LCBjb250ZW50Rmxvdyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNv
bnRlbnRGbG93cy5wdXNoKGNvbnRlbnRGbG93KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNv
bnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQsIHtkb2N1bWVudE5vZGVJZGVudGlmaWVyLCBmbG93czog
Y29udGVudEZsb3dzfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod2luZG93LkNTU0FnZW50
KQotICAgICAgICAgICAgQ1NTQWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihkb2N1bWVudE5v
ZGVJZGVudGlmaWVyLCBvbk5hbWVkRmxvd0NvbGxlY3Rpb25BdmFpbGFibGUuYmluZCh0aGlzKSk7
Ci0gICAgfQotCi0gICAgbmFtZWRGbG93Q3JlYXRlZChmbG93UGF5bG9hZCkKLSAgICB7Ci0gICAg
ICAgIHZhciBmbG93S2V5ID0gV0kuRE9NVHJlZU1hbmFnZXIuX2Zsb3dQYXlsb2FkSGFzaEtleShm
bG93UGF5bG9hZCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mbG93cy5oYXMoZmxv
d0tleSkpOwotICAgICAgICB2YXIgY29udGVudEZsb3cgPSB0aGlzLl9jcmVhdGVDb250ZW50Rmxv
d0Zyb21QYXlsb2FkKGZsb3dQYXlsb2FkKTsKLSAgICAgICAgdGhpcy5fZmxvd3Muc2V0KGZsb3dL
ZXksIGNvbnRlbnRGbG93KTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dXYXNBZGRlZCwge2Zsb3c6IGNvbnRl
bnRGbG93fSk7Ci0gICAgfQotCi0gICAgbmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZGVu
dGlmaWVyLCBmbG93TmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBmbG93S2V5ID0gV0kuRE9NVHJl
ZU1hbmFnZXIuX2Zsb3dQYXlsb2FkSGFzaEtleSh7ZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9k
ZUlkZW50aWZpZXIsIG5hbWU6IGZsb3dOYW1lfSk7Ci0gICAgICAgIHZhciBjb250ZW50RmxvdyA9
IHRoaXMuX2Zsb3dzLmdldChmbG93S2V5KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVu
dEZsb3cpOwotICAgICAgICB0aGlzLl9mbG93cy5kZWxldGUoZmxvd0tleSk7Ci0KLSAgICAgICAg
Ly8gUmVtb3ZlIGFueSBiYWNrIGxpbmtzIHRvIHRoaXMgZmxvdyBmcm9tIHRoZSBjb250ZW50IG5v
ZGVzLgotICAgICAgICBmb3IgKHZhciBjb250ZW50Tm9kZSBvZiBjb250ZW50Rmxvdy5jb250ZW50
Tm9kZXMpCi0gICAgICAgICAgICB0aGlzLl9jb250ZW50Tm9kZXNUb0Zsb3dzTWFwLmRlbGV0ZShj
b250ZW50Tm9kZS5pZCk7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1vdmVkLCB7ZmxvdzogY29u
dGVudEZsb3d9KTsKLSAgICB9Ci0KLSAgICBfc2VuZE5hbWVkRmxvd1VwZGF0ZUV2ZW50cyhmbG93
UGF5bG9hZCkKLSAgICB7Ci0gICAgICAgIHZhciBmbG93S2V5ID0gV0kuRE9NVHJlZU1hbmFnZXIu
X2Zsb3dQYXlsb2FkSGFzaEtleShmbG93UGF5bG9hZCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX2Zsb3dzLmhhcyhmbG93S2V5KSk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRG
bG93RnJvbVBheWxvYWQodGhpcy5fZmxvd3MuZ2V0KGZsb3dLZXkpLCBmbG93UGF5bG9hZCk7Ci0g
ICAgfQotCi0gICAgcmVnaW9uT3ZlcnNldENoYW5nZWQoZmxvd1BheWxvYWQpCi0gICAgewotICAg
ICAgICB0aGlzLl9zZW5kTmFtZWRGbG93VXBkYXRlRXZlbnRzKGZsb3dQYXlsb2FkKTsKLSAgICB9
Ci0KLSAgICByZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnROb2RlSWRl
bnRpZmllciwgZmxvd05hbWUsIGNvbnRlbnROb2RlSWQsIG5leHRDb250ZW50RWxlbWVudE5vZGVJ
ZCkKLSAgICB7Ci0gICAgICAgIHZhciBmbG93S2V5ID0gV0kuRE9NVHJlZU1hbmFnZXIuX2Zsb3dQ
YXlsb2FkSGFzaEtleSh7ZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIG5h
bWU6IGZsb3dOYW1lfSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Zsb3dzLmhhcyhm
bG93S2V5KSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9jb250ZW50Tm9kZXNUb0Zs
b3dzTWFwLmhhcyhjb250ZW50Tm9kZUlkKSk7Ci0KLSAgICAgICAgdmFyIGZsb3cgPSB0aGlzLl9m
bG93cy5nZXQoZmxvd0tleSk7Ci0gICAgICAgIHZhciBjb250ZW50Tm9kZSA9IHRoaXMubm9kZUZv
cklkKGNvbnRlbnROb2RlSWQpOwotCi0gICAgICAgIHRoaXMuX2NvbnRlbnROb2Rlc1RvRmxvd3NN
YXAuc2V0KGNvbnRlbnROb2RlLmlkLCBmbG93KTsKLQotICAgICAgICBpZiAobmV4dENvbnRlbnRF
bGVtZW50Tm9kZUlkKQotICAgICAgICAgICAgZmxvdy5pbnNlcnRDb250ZW50Tm9kZUJlZm9yZShj
b250ZW50Tm9kZSwgdGhpcy5ub2RlRm9ySWQobmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZsb3cuYXBwZW5kQ29udGVudE5vZGUoY29udGVudE5v
ZGUpOwotICAgIH0KLQotICAgIF9yZW1vdmVDb250ZW50Tm9kZUZyb21GbG93SWZOZWVkZWQobm9k
ZSkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fY29udGVudE5vZGVzVG9GbG93c01hcC5oYXMo
bm9kZS5pZCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHZhciBmbG93ID0gdGhpcy5f
Y29udGVudE5vZGVzVG9GbG93c01hcC5nZXQobm9kZS5pZCk7Ci0gICAgICAgIHRoaXMuX2NvbnRl
bnROb2Rlc1RvRmxvd3NNYXAuZGVsZXRlKG5vZGUuaWQpOwotICAgICAgICBmbG93LnJlbW92ZUNv
bnRlbnROb2RlKG5vZGUpOwotICAgIH0KLQotICAgIHVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRl
bnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIGZsb3dOYW1lLCBjb250ZW50Tm9kZUlk
KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29udGVudE5vZGVzVG9GbG93
c01hcC5oYXMoY29udGVudE5vZGVJZCkpOwotCi0gICAgICAgIHZhciBmbG93ID0gdGhpcy5fY29u
dGVudE5vZGVzVG9GbG93c01hcC5nZXQoY29udGVudE5vZGVJZCk7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGZsb3cuaWQgPT09IFdJLkRPTVRyZWVNYW5hZ2VyLl9mbG93UGF5bG9hZEhhc2hLZXko
e2RvY3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZGVudGlmaWVyLCBuYW1lOiBmbG93TmFtZX0p
KTsKLQotICAgICAgICB0aGlzLl9jb250ZW50Tm9kZXNUb0Zsb3dzTWFwLmRlbGV0ZShjb250ZW50
Tm9kZUlkKTsKLSAgICAgICAgZmxvdy5yZW1vdmVDb250ZW50Tm9kZSh0aGlzLm5vZGVGb3JJZChj
b250ZW50Tm9kZUlkKSk7Ci0gICAgfQotCi0gICAgX2NvZXJjZVJlbW90ZUFycmF5T2ZET01Ob2Rl
cyhyZW1vdGVPYmplY3QsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
cmVtb3RlT2JqZWN0LnR5cGUgPT09ICJvYmplY3QiKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
cmVtb3RlT2JqZWN0LnN1YnR5cGUgPT09ICJhcnJheSIpOwotCi0gICAgICAgIGxldCBsZW5ndGgg
PSByZW1vdGVPYmplY3Quc2l6ZTsKLSAgICAgICAgaWYgKCFsZW5ndGgpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKG51bGwsIFtdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGxldCBub2RlczsKLSAgICAgICAgbGV0IHJlY2VpdmVkID0gMDsKLSAgICAgICAgbGV0
IGxhc3RFcnJvciA9IG51bGw7Ci0gICAgICAgIGxldCBkb21UcmVlTWFuYWdlciA9IHRoaXM7Ci0K
LSAgICAgICAgZnVuY3Rpb24gbm9kZVJlcXVlc3RlZChpbmRleCwgZXJyb3IsIG5vZGVJZCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIGxhc3RFcnJv
ciA9IGVycm9yOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5vZGVzW2luZGV4
XSA9IGRvbVRyZWVNYW5hZ2VyLl9pZFRvRE9NTm9kZVtub2RlSWRdOwotICAgICAgICAgICAgaWYg
KCsrcmVjZWl2ZWQgPT09IGxlbmd0aCkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhsYXN0RXJy
b3IsIG5vZGVzKTsKLSAgICAgICAgfQotCi0gICAgICAgIFdJLnJ1bnRpbWVNYW5hZ2VyLmdldFBy
b3BlcnRpZXNGb3JSZW1vdGVPYmplY3QocmVtb3RlT2JqZWN0Lm9iamVjdElkLCBmdW5jdGlvbihl
cnJvciwgcHJvcGVydGllcykgewotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAg
ICAgICAgY2FsbGJhY2soZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgbm9kZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTsKLSAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBs
ZXQgbm9kZVByb3BlcnR5ID0gcHJvcGVydGllcy5nZXQoU3RyaW5nKGkpKTsKLSAgICAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChub2RlUHJvcGVydHkudmFsdWUudHlwZSA9PT0gIm9iamVjdCIp
OwotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGVQcm9wZXJ0eS52YWx1ZS5zdWJ0
eXBlID09PSAibm9kZSIpOwotICAgICAgICAgICAgICAgIERPTUFnZW50LnJlcXVlc3ROb2RlKG5v
ZGVQcm9wZXJ0eS52YWx1ZS5vYmplY3RJZCwgbm9kZVJlcXVlc3RlZC5iaW5kKG51bGwsIGkpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgZ2V0Tm9kZUNvbnRlbnRG
bG93SW5mbyhkb21Ob2RlLCByZXN1bHRSZWFkeUNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgV0ku
UmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlKGRvbU5vZGUpLnRoZW4oKHJlbW90ZU9iamVjdCkgPT4g
ewotICAgICAgICAgICAgbGV0IGV2YWxQYXJhbWV0ZXJzID0gewotICAgICAgICAgICAgICAgIG9i
amVjdElkOiByZW1vdGVPYmplY3Qub2JqZWN0SWQsCi0gICAgICAgICAgICAgICAgZnVuY3Rpb25E
ZWNsYXJhdGlvbjogYXBwZW5kV2ViSW5zcGVjdG9yU291cmNlVVJMKGluc3BlY3RlZFBhZ2Vfbm9k
ZV9nZXRGbG93SW5mby50b1N0cmluZygpKSwKLSAgICAgICAgICAgICAgICBkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGU6IHRydWUsCi0gICAgICAgICAgICAgICAgcmV0dXJuQnlW
YWx1ZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGVQcmV2aWV3OiBmYWxzZQotICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5jYWxsRnVuY3Rpb25Pbi5pbnZv
a2UoZXZhbFBhcmFtZXRlcnMsIHJlZ2lvbk5vZGVzQXZhaWxhYmxlLmJpbmQodGhpcykpOwotICAg
ICAgICB9KS5jYXRjaChyZXN1bHRSZWFkeUNhbGxiYWNrKTsKLQotICAgICAgICBmdW5jdGlvbiBy
ZWdpb25Ob2Rlc0F2YWlsYWJsZShlcnJvciwgcmVtb3RlT2JqZWN0LCB3YXNUaHJvd24pCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIHJlc3VsdFJl
YWR5Q2FsbGJhY2soZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKHdhc1Rocm93bikgewotICAgICAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBuZXZlciBnZXQgaGVyZSwgYnV0IGhhdmluZyB0aGUgZXJyb3IgaXMgdXNlZnVsIGZv
ciBkZWJ1Z2dpbmcuCi0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRXJyb3Igd2hpbGUg
ZXhlY3V0aW5nIGJhY2tlbmQgZnVuY3Rpb246IiwgSlNPTi5zdHJpbmdpZnkocmVtb3RlT2JqZWN0
KSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0UmVhZHlDYWxsYmFjayhudWxsKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRoZSBiYWNr
ZW5kIGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gbnVsbC4KLSAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHJlbW90ZU9iamVjdC50eXBlID09PSAib2JqZWN0Iik7Ci0gICAgICAgICAgICBjb25z
b2xlLmFzc2VydChyZW1vdGVPYmplY3Qub2JqZWN0SWQpOwotICAgICAgICAgICAgV0kucnVudGlt
ZU1hbmFnZXIuZ2V0UHJvcGVydGllc0ZvclJlbW90ZU9iamVjdChyZW1vdGVPYmplY3Qub2JqZWN0
SWQsIHJlbW90ZU9iamVjdFByb3BlcnRpZXNBdmFpbGFibGUuYmluZCh0aGlzKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiByZW1vdGVPYmplY3RQcm9wZXJ0aWVzQXZhaWxhYmxlKGVy
cm9yLCBwcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
ICAgICByZXN1bHRSZWFkeUNhbGxiYWNrKGVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciByZXN1bHQgPSB7Ci0gICAgICAgICAg
ICAgICAgcmVnaW9uRmxvdzogbnVsbCwKLSAgICAgICAgICAgICAgICBjb250ZW50RmxvdzogbnVs
bCwKLSAgICAgICAgICAgICAgICByZWdpb25zOiBudWxsCi0gICAgICAgICAgICB9OwotCi0gICAg
ICAgICAgICB2YXIgcmVnaW9uRmxvd05hbWVQcm9wZXJ0eSA9IHByb3BlcnRpZXMuZ2V0KCJyZWdp
b25GbG93TmFtZSIpOwotICAgICAgICAgICAgaWYgKHJlZ2lvbkZsb3dOYW1lUHJvcGVydHkgJiYg
cmVnaW9uRmxvd05hbWVQcm9wZXJ0eS52YWx1ZSAmJiByZWdpb25GbG93TmFtZVByb3BlcnR5LnZh
bHVlLnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocmVnaW9uRmxvd05h
bWVQcm9wZXJ0eS52YWx1ZS50eXBlID09PSAic3RyaW5nIik7Ci0gICAgICAgICAgICAgICAgdmFy
IHJlZ2lvbkZsb3dLZXkgPSBXSS5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRIYXNoS2V5KHtk
b2N1bWVudE5vZGVJZDogZG9tTm9kZS5vd25lckRvY3VtZW50LmlkLCBuYW1lOiByZWdpb25GbG93
TmFtZVByb3BlcnR5LnZhbHVlLnZhbHVlfSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnJlZ2lv
bkZsb3cgPSB0aGlzLl9mbG93cy5nZXQocmVnaW9uRmxvd0tleSk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHZhciBjb250ZW50Rmxvd05hbWVQcm9wZXJ0eSA9IHByb3BlcnRpZXMuZ2V0
KCJjb250ZW50Rmxvd05hbWUiKTsKLSAgICAgICAgICAgIGlmIChjb250ZW50Rmxvd05hbWVQcm9w
ZXJ0eSAmJiBjb250ZW50Rmxvd05hbWVQcm9wZXJ0eS52YWx1ZSAmJiBjb250ZW50Rmxvd05hbWVQ
cm9wZXJ0eS52YWx1ZS52YWx1ZSkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNv
bnRlbnRGbG93TmFtZVByb3BlcnR5LnZhbHVlLnR5cGUgPT09ICJzdHJpbmciKTsKLSAgICAgICAg
ICAgICAgICB2YXIgY29udGVudEZsb3dLZXkgPSBXSS5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxv
YWRIYXNoS2V5KHtkb2N1bWVudE5vZGVJZDogZG9tTm9kZS5vd25lckRvY3VtZW50LmlkLCBuYW1l
OiBjb250ZW50Rmxvd05hbWVQcm9wZXJ0eS52YWx1ZS52YWx1ZX0pOwotICAgICAgICAgICAgICAg
IHJlc3VsdC5jb250ZW50RmxvdyA9IHRoaXMuX2Zsb3dzLmdldChjb250ZW50Rmxvd0tleSk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciByZWdpb25zUHJvcGVydHkgPSBwcm9wZXJ0
aWVzLmdldCgicmVnaW9ucyIpOwotICAgICAgICAgICAgaWYgKCFyZWdpb25zUHJvcGVydHkgfHwg
IXJlZ2lvbnNQcm9wZXJ0eS52YWx1ZS5vYmplY3RJZCkgewotICAgICAgICAgICAgICAgIC8vIFRo
ZSBsaXN0IG9mIHJlZ2lvbnMgaXMgbnVsbC4KLSAgICAgICAgICAgICAgICByZXN1bHRSZWFkeUNh
bGxiYWNrKG51bGwsIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICB0aGlzLl9jb2VyY2VSZW1vdGVBcnJheU9mRE9NTm9kZXMocmVn
aW9uc1Byb3BlcnR5LnZhbHVlLCBmdW5jdGlvbihlcnJvciwgbm9kZXMpIHsKLSAgICAgICAgICAg
ICAgICByZXN1bHQucmVnaW9ucyA9IG5vZGVzOwotICAgICAgICAgICAgICAgIHJlc3VsdFJlYWR5
Q2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIGluc3BlY3RlZFBhZ2Vfbm9kZV9nZXRGbG93SW5mbygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGdldENvbXB1dGVkUHJvcGVydHkobm9kZSwgcHJvcGVy
dHlOYW1lKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghbm9kZS5vd25lckRv
Y3VtZW50IHx8ICFub2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgIHZhciBjb21wdXRlZFN0eWxlID0g
bm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVkU3R5bGUgPyBjb21wdXRlZFN0eWxlW3Byb3Bl
cnR5TmFtZV0gOiBudWxsOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBn
ZXRDb250ZW50Rmxvd05hbWUobm9kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBm
b3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSkgewotICAgICAgICAgICAgICAgICAg
ICB2YXIgZmxvd05hbWUgPSBnZXRDb21wdXRlZFByb3BlcnR5KG5vZGUsICJ3ZWJraXRGbG93SW50
byIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZmxvd05hbWUgJiYgZmxvd05hbWUgIT09ICJu
b25lIikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbG93TmFtZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHZhciBub2RlID0gdGhpczsKLQotICAgICAgICAgICAgLy8gRXZlbiBkZXRh
Y2hlZCBub2RlcyBoYXZlIGFuIG93bmVyRG9jdW1lbnQuCi0gICAgICAgICAgICBjb25zb2xlLmFz
c2VydChub2RlLm93bmVyRG9jdW1lbnQpOwotCi0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gewot
ICAgICAgICAgICAgICAgIHJlZ2lvbkZsb3dOYW1lOiBnZXRDb21wdXRlZFByb3BlcnR5KG5vZGUs
ICJ3ZWJraXRGbG93RnJvbSIpLAotICAgICAgICAgICAgICAgIGNvbnRlbnRGbG93TmFtZTogZ2V0
Q29udGVudEZsb3dOYW1lKG5vZGUpLAotICAgICAgICAgICAgICAgIHJlZ2lvbnM6IG51bGwKLSAg
ICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGlmIChyZXN1bHQuY29udGVudEZsb3dOYW1lKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGZsb3dUaHJlYWQgPSBub2RlLm93bmVyRG9jdW1lbnQud2Vi
a2l0R2V0TmFtZWRGbG93cygpLm5hbWVkSXRlbShyZXN1bHQuY29udGVudEZsb3dOYW1lKTsKLSAg
ICAgICAgICAgICAgICBpZiAoZmxvd1RocmVhZCkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LnJlZ2lvbnMgPSBBcnJheS5mcm9tKGZsb3dUaHJlYWQuZ2V0UmVnaW9uc0J5Q29udGVudChub2Rl
KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAg
IH0KLSAgICB9Ci0KICAgICAvLyBQcml2YXRlCiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdl
KGV2ZW50KQpAQCAtODI5LDggKzU0MSw0IEBAIFdJLkRPTVRyZWVNYW5hZ2VyLkV2ZW50ID0gewog
ICAgIENoaWxkTm9kZUNvdW50VXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItY2hpbGQtbm9kZS1j
b3VudC11cGRhdGVkIiwKICAgICBET01Ob2RlV2FzSW5zcGVjdGVkOiAiZG9tLXRyZWUtbWFuYWdl
ci1kb20tbm9kZS13YXMtaW5zcGVjdGVkIiwKICAgICBJbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZDog
ImRvbS10cmVlLW1hbmFnZXItaW5zcGVjdC1tb2RlLXN0YXRlLWNoYW5nZWQiLAotICAgIENvbnRl
bnRGbG93TGlzdFdhc1VwZGF0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWNvbnRlbnQtZmxvdy1saXN0
LXdhcy11cGRhdGVkIiwKLSAgICBDb250ZW50Rmxvd1dhc0FkZGVkOiAiZG9tLXRyZWUtbWFuYWdl
ci1jb250ZW50LWZsb3ctd2FzLWFkZGVkIiwKLSAgICBDb250ZW50Rmxvd1dhc1JlbW92ZWQ6ICJk
b20tdHJlZS1tYW5hZ2VyLWNvbnRlbnQtZmxvdy13YXMtcmVtb3ZlZCIsCi0gICAgUmVnaW9uT3Zl
cnNldENoYW5nZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLXJlZ2lvbi1vdmVyc2V0LWNoYW5nZWQiCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2Vz
L0NvbnRlbnRGbG93LnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0lt
YWdlcy9Db250ZW50Rmxvdy5zdmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMTIz
Y2YyYmZiLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3ZnCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBA
Ci08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLSBDb3B5cmlnaHQg
wqkgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Ci08c3Zn
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InJvb3QiIHZlcnNpb249IjEu
MSIgdmlld0JveD0iMCAwIDE2IDE2Ij4KLSAgICA8cGF0aCBmaWxsPSJyZ2IoMTEyLCAxMTIsIDEx
MikiIGQ9Ik0gMTMuMTc5IDAuNzUgSCAyLjgyMSBjIC0xLjE0MSAwIC0yLjA3MSAwLjkzMSAtMi4w
NzEgMi4wNzEgdiAxMC4zNTcgYyAwIDEuMTQxIDAuOTMxIDIuMDcxIDIuMDcxIDIuMDcxIGggMTAu
MzU3IGMgMS4xNDEgMCAyLjA3MSAtMC45MzEgMi4wNzEgLTIuMDcxIFYgMi44MjEgQyAxNS4yNSAx
LjY4MSAxNC4zMTkgMC43NSAxMy4xNzkgMC43NSBNIDEzLjE3OSAxLjc4NSBjIDAuNTcgMCAxLjAz
NSAwLjQ2NiAxLjAzNSAxLjAzNiB2IDEwLjM1NyBjIDAgMC41NyAtMC40NjUgMS4wMzUgLTEuMDM1
IDEuMDM1IEggMi44MjEgYyAtMC41NyAwIC0xLjAzNiAtMC40NjUgLTEuMDM2IC0xLjAzNSBWIDIu
ODIxIGMgMCAtMC41NyAwLjQ2NSAtMS4wMzYgMS4wMzYgLTEuMDM2IEggMTMuMTc5Ii8+Ci0gICAg
PHJlY3QgZmlsbD0icmdiKDExMiwgMTEyLCAxMTIpIiB4PSIyLjY3NiIgeT0iMi45NjciIHdpZHRo
PSI0Ljg1NCIgaGVpZ2h0PSI0LjA5NCIvPgotICAgIDxyZWN0IGZpbGw9InJnYigxMTIsIDExMiwg
MTEyKSIgeD0iMi42NzYiIHk9IjguNDk3IiB3aWR0aD0iMi43NTUiIGhlaWdodD0iNC4zNSIvPgot
ICAgIDxyZWN0IGZpbGw9InJnYigxMTIsIDExMiwgMTEyKSIgeD0iOC44OTEiIHk9IjIuOTY3IiB3
aWR0aD0iNC40MTIiIGhlaWdodD0iMTAuMTA4Ii8+Ci08L3N2Zz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9ndGsvQ29udGVudEZsb3cuc3Zn
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL2d0ay9Db250ZW50
Rmxvdy5zdmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMTZmYzEwNDlmLi4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMv
Z3RrL0NvbnRlbnRGbG93LnN2ZworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhLS0gTGljZW5zZWQgdW5kZXIgdGhl
IENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmUgQWxpa2UgMy4wIFVuaXRlZCBTdGF0
ZXMgTGljZW5zZSAoaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4w
LykgLS0+Ci08c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InJvb3Qi
IHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDE2IDE2Ij4KLSA8cGF0aCBmaWxsPSIjYmViZWJl
IiBkPSJtMi44MTI0IDAuNTAwNTVhMS4wMDAxIDEuMDAwMSAwIDAgMCAtMC44MTI1IDF2MTNhMS4w
MDAxIDEuMDAwMSAwIDAgMCAxIDFoMTBhMS4wMDAxIDEuMDAwMSAwIDAgMCAxIC0xdi05LjQzNzVh
MS4wMDAxIDEuMDAwMSAwIDAgMCAtMC4yODEyNSAtMC43MTg3NWwtMy41NjMtMy41NjNhMS4wMDAx
IDEuMDAwMSAwIDAgMCAtMC43MTg3NSAtMC4yODEyNWgtNi40Mzc1YTEuMDAwMSAxLjAwMDEgMCAw
IDAgLTAuMDkzNyAwIDEuMDAwMSAxLjAwMDEgMCAwIDAgLTAuMDkzNyAwem0xLjE4NzUgMmg1djNo
M3Y4aC04di0xMXoiLz4KLSA8cGF0aCBmaWxsPSIjYmViZWJlIiBkPSJtOS40MTczIDYuMTExYy0w
Ljg2MDIzIDAtMS41NTYzIDAuNzIyNDYtMS41NTYzIDEuNTgyN3MwLjY5NjA4IDEuNTU2MyAxLjU1
NjMgMS41NTYzYzAuODYwMjQgMCAxLjU4MjctMC42OTYwOCAxLjU4MjctMS41NTYzIDAtMC44NjAy
My0wLjcyMjQ2LTEuNTgyNy0xLjU4MjctMS41ODI3em0wIDEuMDAyNGMwLjMxOTggMCAwLjU4MDMy
IDAuMjYwNTMgMC41ODAzMiAwLjU4MDMyIDAgMC4zMTk4LTAuMjYwNTIgMC41NTM5NS0wLjU4MDMy
IDAuNTUzOTVzLTAuNTUzOTQtMC4yMzQxNS0wLjU1Mzk0LTAuNTUzOTVjMC0wLjMxOTc5IDAuMjM0
MTQtMC41ODAzMiAwLjU1Mzk0LTAuNTgwMzJ6Ii8+Ci0gPHJlY3Qgd2lkdGg9IjIuMSIgaGVpZ2h0
PSI1LjUiIHg9IjUiIHk9IjMuNTU4OSIgZmlsbD0iI2JlYmViZSIvPgotIDxyZWN0IHdpZHRoPSI2
IiBoZWlnaHQ9IjIuNCIgeD0iNSIgeT0iMTAuMSIgZmlsbD0iI2JlYmViZSIvPgotPC9zdmc+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggN2Zj
NjAxMmM3YTkuLjEyYTI5NWJmMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sCkBAIC02Miw3ICs2Miw2IEBACiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9Db25zb2xlUHJvbXB0LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Db250ZW50QnJvd3Nlci5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29udGVudEJyb3dzZXJUYWJDb250ZW50Vmlldy5j
c3MiPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29udGVudEZsb3dJ
Y29uLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Db250ZW50
Vmlldy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQ29udGVu
dFZpZXdDb250YWluZXIuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL0NvbnRyb2xUb29sYmFySXRlbS5jc3MiPgpAQCAtMzQzLDcgKzM0Miw2IEBACiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9Db2xsZWN0aW9uRW50cnlQcmV2aWV3LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NvbG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0NvbnNvbGVDb21tYW5kUmVzdWx0TWVzc2FnZS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9Db250ZW50Rmxvdy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9Db29raWVTdG9yYWdlT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvRE9NTm9kZS5qcyI+PC9zY3JpcHQ+CkBAIC01NTUsOCArNTUzLDYgQEAKICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvQ29uc29sZUdyb3VwLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvQ29uc29sZVByb21wdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvQ29udGVudFZpZXdDb250YWluZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db250ZXh0TWVudS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0
aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxl
Y3Rpb24uanMKaW5kZXggNTM5NDNiMTM2ZmEuLmM1NGY5MmJjYTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29sbGVjdGlvbi5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29sbGVjdGlvbi5q
cwpAQCAtMTEyLDcgKzExMiw2IEBAIFdJLkNvbGxlY3Rpb24gPSBjbGFzcyBDb2xsZWN0aW9uIGV4
dGVuZHMgV0kuT2JqZWN0CiAKICBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmllciA9IHsKICAgICBB
bnk6IChvYmplY3QpID0+IHRydWUsCi0gICAgQ29udGVudEZsb3c6IChvYmplY3QpID0+IG9iamVj
dCBpbnN0YW5jZW9mIFdJLkNvbnRlbnRGbG93LAogICAgIEZyYW1lOiAob2JqZWN0KSA9PiBvYmpl
Y3QgaW5zdGFuY2VvZiBXSS5GcmFtZSwKICAgICBSZXNvdXJjZTogKG9iamVjdCkgPT4gb2JqZWN0
IGluc3RhbmNlb2YgV0kuUmVzb3VyY2UsCiAgICAgU2NyaXB0OiAob2JqZWN0KSA9PiBvYmplY3Qg
aW5zdGFuY2VvZiBXSS5TY3JpcHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ29udGVudEZsb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29udGVudEZsb3cuanMKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDMyYmVmMDIxNmZiLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29udGVudEZsb3cuanMKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IK
LSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5Db250
ZW50RmxvdyA9IGNsYXNzIENvbnRlbnRGbG93IGV4dGVuZHMgV0kuT2JqZWN0Ci17Ci0gICAgY29u
c3RydWN0b3IoZG9jdW1lbnROb2RlSWRlbnRpZmllciwgbmFtZSwgb3ZlcnNldCwgY29udGVudE5v
ZGVzKQotICAgIHsKLSAgICAgICAgc3VwZXIoKTsKLQotICAgICAgICB0aGlzLl9kb2N1bWVudE5v
ZGVJZGVudGlmaWVyID0gZG9jdW1lbnROb2RlSWRlbnRpZmllcjsKLSAgICAgICAgdGhpcy5fbmFt
ZSA9IG5hbWU7Ci0gICAgICAgIHRoaXMuX292ZXJzZXQgPSBvdmVyc2V0OwotICAgICAgICB0aGlz
Ll9jb250ZW50Tm9kZXMgPSBjb250ZW50Tm9kZXM7Ci0gICAgfQotCi0gICAgLy8gUHVibGljCi0K
LSAgICBnZXQgaWQoKQotICAgIHsKLSAgICAgICAgLy8gVXNlIHRoZSBmbG93IG5vZGUgaWQsIHRv
IGF2b2lkIGNvbGxpc2lvbnMgd2hlbiB3ZSBjaGFuZ2UgbWFpbiBkb2N1bWVudCBpZC4KLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Tm9kZUlkZW50aWZpZXIgKyAiOiIgKyB0aGlzLl9uYW1l
OwotICAgIH0KLQotICAgIGdldCBkb2N1bWVudE5vZGVJZGVudGlmaWVyKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9kb2N1bWVudE5vZGVJZGVudGlmaWVyOwotICAgIH0KLQotICAgIGdl
dCBuYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9uYW1lOwotICAgIH0KLQotICAg
IGdldCBvdmVyc2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9vdmVyc2V0OwotICAg
IH0KLQotICAgIHNldCBvdmVyc2V0KG92ZXJzZXQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5f
b3ZlcnNldCA9PT0gb3ZlcnNldCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5f
b3ZlcnNldCA9IG92ZXJzZXQ7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkNvbnRlbnRGbG93LkV2ZW50LkZsb3dPdmVyc2V0V2FzQ2hhbmdlZCk7Ci0gICAgfQotCi0g
ICAgZ2V0IGNvbnRlbnROb2RlcygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29udGVu
dE5vZGVzOwotICAgIH0KLQotICAgIGluc2VydENvbnRlbnROb2RlQmVmb3JlKGNvbnRlbnROb2Rl
LCByZWZlcmVuY2VOb2RlKQotICAgIHsKLSAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fY29udGVu
dE5vZGVzLmluZGV4T2YocmVmZXJlbmNlTm9kZSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlu
ZGV4ICE9PSAtMSk7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnROb2Rlcy5zcGxpY2UoaW5kZXgsIDAs
IGNvbnRlbnROb2RlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
Q29udGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNBZGRlZCwge25vZGU6IGNvbnRlbnROb2Rl
LCBiZWZvcmU6IHJlZmVyZW5jZU5vZGV9KTsKLSAgICB9Ci0KLSAgICBhcHBlbmRDb250ZW50Tm9k
ZShjb250ZW50Tm9kZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnROb2Rlcy5wdXNoKGNv
bnRlbnROb2RlKTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29u
dGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNBZGRlZCwge25vZGU6IGNvbnRlbnROb2RlfSk7
Ci0gICAgfQotCi0gICAgcmVtb3ZlQ29udGVudE5vZGUoY29udGVudE5vZGUpCi0gICAgewotICAg
ICAgICB2YXIgaW5kZXggPSB0aGlzLl9jb250ZW50Tm9kZXMuaW5kZXhPZihjb250ZW50Tm9kZSk7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ICE9PSAtMSk7Ci0gICAgICAgIHRoaXMuX2Nv
bnRlbnROb2Rlcy5zcGxpY2UoaW5kZXgsIDEpOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdhc1JlbW92ZWQsIHtu
b2RlOiBjb250ZW50Tm9kZX0pOwotICAgIH0KLX07Ci0KLVdJLkNvbnRlbnRGbG93LkV2ZW50ID0g
ewotICAgIE92ZXJzZXRXYXNDaGFuZ2VkOiAiY29udGVudC1mbG93LW92ZXJzZXQtd2FzLWNoYW5n
ZWQiLAotICAgIENvbnRlbnROb2RlV2FzQWRkZWQ6ICJjb250ZW50LWZsb3ctY29udGVudC1ub2Rl
LXdhcy1hZGRlZCIsCi0gICAgQ29udGVudE5vZGVXYXNSZW1vdmVkOiAiY29udGVudC1mbG93LWNv
bnRlbnQtbm9kZS13YXMtcmVtb3ZlZCIKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NVHJlZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01UcmVlLmpzCmluZGV4IDNmNzkzNzI5NzBmLi44
NGE2MzllZjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTVRyZWUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0RPTVRyZWUuanMKQEAgLTMzLDcgKzMzLDYgQEAgV0kuRE9NVHJlZSA9IGNs
YXNzIERPTVRyZWUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLl9yb290RE9NTm9k
ZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RJZGVudGlmaWVyID0gMDsKLSAgICAgICAg
dGhpcy5fY29udGVudEZsb3dDb2xsZWN0aW9uID0gbmV3IFdJLkNvbGxlY3Rpb24oV0kuQ29sbGVj
dGlvbi5UeXBlVmVyaWZpZXIuQ29udGVudEZsb3cpOwogCiAgICAgICAgIHRoaXMuX2ZyYW1lLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2Vk
LCB0aGlzLl9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZCwgdGhpcyk7CiAKQEAgLTQ0
LDE2ICs0MywxMSBAQCBXSS5ET01UcmVlID0gY2xhc3MgRE9NVHJlZSBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01U
cmVlTWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQsIHRoaXMpOwog
ICAgICAgICAgICAgdGhpcy5fZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5N
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX2ZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0
aGlzKTsKICAgICAgICAgfQotCi0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dMaXN0V2FzVXBkYXRlZCwg
dGhpcy5fY29udGVudEZsb3dMaXN0V2FzVXBkYXRlZCwgdGhpcyk7Ci0gICAgICAgIFdJLmRvbVRy
ZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVu
dEZsb3dXYXNBZGRlZCwgdGhpcy5fY29udGVudEZsb3dXYXNBZGRlZCwgdGhpcyk7Ci0gICAgICAg
IFdJLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NVHJlZU1hbmFnZXIuRXZl
bnQuQ29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzLl9jb250ZW50Rmxvd1dhc1JlbW92ZWQsIHRo
aXMpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGZyYW1lKCkgeyByZXR1cm4g
dGhpcy5fZnJhbWU7IH0KLSAgICBnZXQgY29udGVudEZsb3dDb2xsZWN0aW9uKCkgeyByZXR1cm4g
dGhpcy5fY29udGVudEZsb3dDb2xsZWN0aW9uOyB9CiAKICAgICBkaXNjb25uZWN0KCkKICAgICB7
CkBAIC0xMTIsMTQgKzEwNiw2IEBAIFdJLkRPTVRyZWUgPSBjbGFzcyBET01UcmVlIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX3JlcXVlc3RSb290RE9NTm9kZSgpOwogICAgIH0KIAot
ICAgIHJlcXVlc3RDb250ZW50Rmxvd0xpc3QoKQotICAgIHsKLSAgICAgICAgdGhpcy5yZXF1ZXN0
Um9vdERPTU5vZGUoZnVuY3Rpb24ocm9vdE5vZGUpIHsKLSAgICAgICAgICAgIC8vIExldCB0aGUg
YmFja2VuZCBrbm93IHdlIGFyZSBpbnRlcmVzdGVkIGFib3V0IHRoZSBuYW1lZCBmbG93IGV2ZW50
cyBmb3IgdGhpcyBkb2N1bWVudC4KLSAgICAgICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLmdldE5h
bWVkRmxvd0NvbGxlY3Rpb24ocm9vdE5vZGUuaWQpOwotICAgICAgICB9KTsKLSAgICB9Ci0KICAg
ICAvLyBQcml2YXRlCiAKICAgICBfcmVxdWVzdFJvb3RET01Ob2RlKCkKQEAgLTIzOSw3MSArMjI1
LDggQEAgV0kuRE9NVHJlZSA9IGNsYXNzIERPTVRyZWUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgICAgIHRoaXMuX3JlcXVlc3RSb290RE9NTm9kZSgpOwogICAgICAgICB9CiAgICAgfQotCi0g
ICAgX2lzQ29udGVudEZsb3dJbkN1cnJlbnREb2N1bWVudChmbG93KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX3Jvb3RET01Ob2RlICYmIHRoaXMuX3Jvb3RET01Ob2RlLmlkID09PSBmbG93
LmRvY3VtZW50Tm9kZUlkZW50aWZpZXI7Ci0gICAgfQotCi0gICAgX2NvbnRlbnRGbG93TGlzdFdh
c1VwZGF0ZWQoZXZlbnQpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3Jvb3RET01Ob2RlIHx8
IHRoaXMuX3Jvb3RET01Ob2RlLmlkICE9PSBldmVudC5kYXRhLmRvY3VtZW50Tm9kZUlkZW50aWZp
ZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQXNzdW1lIHRoYXQgYWxsIHRo
ZSBmbG93cyBoYXZlIGJlZW4gcmVtb3ZlZC4KLSAgICAgICAgbGV0IGRlbGV0ZWRGbG93cyA9IG5l
dyBTZXQodGhpcy5fY29udGVudEZsb3dDb2xsZWN0aW9uLml0ZW1zKTsKLSAgICAgICAgbGV0IG5l
d0Zsb3dzID0gbmV3IFNldDsKLSAgICAgICAgZm9yIChsZXQgZmxvdyBvZiBldmVudC5kYXRhLmZs
b3dzKSB7Ci0gICAgICAgICAgICAvLyBBbGwgdGhlIGZsb3dzIHJlY2VpdmVkIGZyb20gV2ViS2l0
IGFyZSBwYXJ0IG9mIHRoZSBzYW1lIGRvY3VtZW50LgotICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5faXNDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpKTsKLQotICAgICAg
ICAgICAgaWYgKHRoaXMuX2NvbnRlbnRGbG93Q29sbGVjdGlvbi5pdGVtcy5oYXMoZmxvdykpIHsK
LSAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGZsb3cgbmFtZSBmcm9tIHRoZSBkZWxldGVk
IGxpc3QuCi0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZGVsZXRlZEZsb3dzLmhhcyhm
bG93KSk7Ci0gICAgICAgICAgICAgICAgZGVsZXRlZEZsb3dzLmRlbGV0ZShmbG93KTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudEZsb3dDb2xsZWN0
aW9uLmFkZChmbG93KTsKLSAgICAgICAgICAgICAgICBuZXdGbG93cy5hZGQoZmxvdyk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGxldCBmbG93IG9mIGRlbGV0ZWRG
bG93cykKLSAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRGbG93Q29sbGVjdGlvbi5yZW1vdmUoZmxv
dyk7Ci0KLSAgICAgICAgLy8gU2VuZCB1cGRhdGUgZXZlbnRzIHRvIGxpc3RlbmVycy4KLQotICAg
ICAgICBmb3IgKGxldCBmbG93IG9mIGRlbGV0ZWRGbG93cykKLSAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1v
dmVkLCB7Zmxvd30pOwotCi0gICAgICAgIGZvciAobGV0IGZsb3cgb2YgbmV3Rmxvd3MpCi0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01UcmVlLkV2ZW50LkNv
bnRlbnRGbG93V2FzQWRkZWQsIHtmbG93fSk7Ci0gICAgfQotCi0gICAgX2NvbnRlbnRGbG93V2Fz
QWRkZWQoZXZlbnQpCi0gICAgewotICAgICAgICBsZXQgZmxvdyA9IGV2ZW50LmRhdGEuZmxvdzsK
LSAgICAgICAgaWYgKCF0aGlzLl9pc0NvbnRlbnRGbG93SW5DdXJyZW50RG9jdW1lbnQoZmxvdykp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fY29udGVudEZsb3dDb2xsZWN0
aW9uLmFkZChmbG93KTsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5ET01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzQWRkZWQsIHtmbG93fSk7Ci0gICAgfQotCi0g
ICAgX2NvbnRlbnRGbG93V2FzUmVtb3ZlZChldmVudCkKLSAgICB7Ci0gICAgICAgIGxldCBmbG93
ID0gZXZlbnQuZGF0YS5mbG93OwotICAgICAgICBpZiAoIXRoaXMuX2lzQ29udGVudEZsb3dJbkN1
cnJlbnREb2N1bWVudChmbG93KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlz
Ll9jb250ZW50Rmxvd0NvbGxlY3Rpb24ucmVtb3ZlKGZsb3cpOwotCi0gICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1v
dmVkLCB7Zmxvd30pOwotICAgIH0KIH07CiAKIFdJLkRPTVRyZWUuRXZlbnQgPSB7CiAgICAgUm9v
dERPTU5vZGVJbnZhbGlkYXRlZDogImRvbS10cmVlLXJvb3QtZG9tLW5vZGUtaW52YWxpZGF0ZWQi
LAotICAgIENvbnRlbnRGbG93V2FzQWRkZWQ6ICJkb20tdHJlZS1jb250ZW50LWZsb3ctd2FzLWFk
ZGVkIiwKLSAgICBDb250ZW50Rmxvd1dhc1JlbW92ZWQ6ICJkb20tdHJlZS1jb250ZW50LWZsb3ct
d2FzLXJlbW92ZWQiCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NPYnNlcnZlci5qcwppbmRleCBlZDllNjM2MTliNi4u
NDc0Y2JiOGE2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzCkBAIC00OSwzMiArNDksMzEgQEAg
V0kuQ1NTT2JzZXJ2ZXIgPSBjbGFzcyBDU1NPYnNlcnZlcgogCiAgICAgbmFtZWRGbG93Q3JlYXRl
ZChuYW1lZEZsb3cpCiAgICAgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5uYW1lZEZsb3dD
cmVhdGVkKG5hbWVkRmxvdyk7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMCk6IFJl
bW92ZWQgYWZ0ZXIgaU9TIDEwLiBJZ25vcmUgZm9yIGlPUyAxMCBhbmQgZWFybGllci4KICAgICB9
CiAKICAgICBuYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKICAgICB7
Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2VyLm5hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2Rl
SWQsIGZsb3dOYW1lKTsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwKTogUmVtb3Zl
ZCBhZnRlciBpT1MgMTAuIElnbm9yZSBmb3IgaU9TIDEwIGFuZCBlYXJsaWVyLgogICAgIH0KIAot
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA3KTogcmVnaW9uTGF5b3V0VXBkYXRlZCB3YXMgcmVt
b3ZlZCBhbmQgcmVwbGFjZWQgYnkgcmVnaW9uT3ZlcnNldENoYW5nZWQuCiAgICAgcmVnaW9uTGF5
b3V0VXBkYXRlZChuYW1lZEZsb3cpCiAgICAgewotICAgICAgICB0aGlzLnJlZ2lvbk92ZXJzZXRD
aGFuZ2VkKG5hbWVkRmxvdyk7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA3KTogcmVn
aW9uTGF5b3V0VXBkYXRlZCB3YXMgcmVtb3ZlZCBhbmQgcmVwbGFjZWQgYnkgcmVnaW9uT3ZlcnNl
dENoYW5nZWQuIElnbm9yZS4KICAgICB9CiAKICAgICByZWdpb25PdmVyc2V0Q2hhbmdlZChuYW1l
ZEZsb3cpCiAgICAgewotICAgICAgICBXSS5kb21UcmVlTWFuYWdlci5yZWdpb25PdmVyc2V0Q2hh
bmdlZChuYW1lZEZsb3cpOworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTApOiBSZW1v
dmVkIGFmdGVyIGlPUyAxMC4gSWdub3JlIGZvciBpT1MgMTAgYW5kIGVhcmxpZXIuCiAgICAgfQog
CiAgICAgcmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBm
bG93TmFtZSwgY29udGVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKQogICAgIHsK
LSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVt
ZW50KGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSwgY29udGVudE5vZGVJZCwgbmV4dENvbnRlbnRF
bGVtZW50Tm9kZUlkKTsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwKTogUmVtb3Zl
ZCBhZnRlciBpT1MgMTAuIElnbm9yZSBmb3IgaU9TIDEwIGFuZCBlYXJsaWVyLgogICAgIH0KIAog
ICAgIHVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBm
bG93TmFtZSwgY29udGVudE5vZGVJZCkKICAgICB7Ci0gICAgICAgIFdJLmRvbVRyZWVNYW5hZ2Vy
LnVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlkLCBmbG93
TmFtZSwgY29udGVudE5vZGVJZCk7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMCk6
IFJlbW92ZWQgYWZ0ZXIgaU9TIDEwLiBJZ25vcmUgZm9yIGlPUyAxMCBhbmQgZWFybGllci4KICAg
ICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
CmluZGV4IGQwY2ZiMDczY2M5Li5jNDQ3MWY5ODg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMTE2LDcgKzExNiw2IEBACiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9Db2xsZWN0aW9uRW50cnlQcmV2aWV3LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NvbG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0NvbnNvbGVDb21tYW5kUmVzdWx0TWVzc2FnZS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9Db250ZW50Rmxvdy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9Db29raWVTdG9yYWdlT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvRE9NTm9kZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29u
dGVudFZpZXcuanMKaW5kZXggMmJhYTYwZDJiZmYuLjAzNzJkMTM3MGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29udGVu
dFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCkBAIC00NCwxMCArNDQsNiBAQCBXSS5Db2xsZWN0aW9u
Q29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmlldwogICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiRnJhbWVzIik7CiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVy
LkNvbnRlbnRGbG93OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiRmxvd3MiKTsK
LSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVy
aWZpZXIuU2NyaXB0OgogICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiRXh0cmEgU2Ny
aXB0cyIpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmNzcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVE
ZXRhaWxzUGFuZWwuY3NzCmluZGV4IDkyZWYzOTI2MWRiLi5mN2FlYzA5ZDU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHls
ZURldGFpbHNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5jc3MKQEAgLTI3LDE5ICsyNyw2IEBA
CiAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiB9CiAKLS5kZXRhaWxzLXNlY3Rpb24gPiAu
Y29udGVudCA+IC5ncm91cCA+IC5yb3cuc2ltcGxlLmNvbnRlbnQtZmxvdy1saW5rID4gLnZhbHVl
ID4gc3BhbiA+IC5pY29uIHsKLSAgICB3aWR0aDogMTJweDsKLSAgICBoZWlnaHQ6IDEycHg7Ci0g
ICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9Db250ZW50Rmxvdy5zdmcpOwotICAgIG1hcmdpbi1y
aWdodDogNHB4OwotICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci19Ci0KLS5kZXRhaWxz
LXNlY3Rpb24gPiAuY29udGVudCA+IC5ncm91cCA+IC5yb3cuc2ltcGxlLmNvbnRlbnQtZmxvdy1s
aW5rIHNwYW4KLXsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotfQotCiAuZGV0YWlscy1zZWN0
aW9uID4gLmNvbnRlbnQgPiAuZ3JvdXAgPiAucm93IC5Db2RlTWlycm9yLWNvZGUgcHJlIC5nby10
by1hcnJvdyB7CiAgICAgZGlzcGxheTogbm9uZTsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCBkMmFkMGI3NmU3
MC4uZmY5NjQ3NjlhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5l
bC5qcwpAQCAtMzYsNDMgKzM2LDYgQEAgV0kuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNs
YXNzIENvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXSS5TdHlsZUQKIAogICAgIC8v
IFB1YmxpYwogCi0gICAgZ2V0IHJlZ2lvbkZsb3coKSB7IHJldHVybiB0aGlzLl9yZWdpb25GbG93
OyB9Ci0gICAgc2V0IHJlZ2lvbkZsb3cocmVnaW9uRmxvdykKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3JlZ2lvbkZsb3cgPSByZWdpb25GbG93OwotICAgICAgICB0aGlzLl9yZWdpb25GbG93TmFtZUxh
YmVsVmFsdWUudGV4dENvbnRlbnQgPSByZWdpb25GbG93ID8gcmVnaW9uRmxvdy5uYW1lIDogIiI7
Ci0gICAgICAgIHRoaXMuX3JlZ2lvbkZsb3dOYW1lUm93LnZhbHVlID0gcmVnaW9uRmxvdyA/IHRo
aXMuX3JlZ2lvbkZsb3dGcmFnbWVudCA6IG51bGw7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUZsb3dO
YW1lc1NlY3Rpb25WaXNpYmlsaXR5KCk7Ci0gICAgfQotCi0gICAgZ2V0IGNvbnRlbnRGbG93KCkg
eyByZXR1cm4gdGhpcy5fY29udGVudEZsb3c7IH0KLSAgICBzZXQgY29udGVudEZsb3coY29udGVu
dEZsb3cpCi0gICAgewotICAgICAgICB0aGlzLl9jb250ZW50RmxvdyA9IGNvbnRlbnRGbG93Owot
ICAgICAgICB0aGlzLl9jb250ZW50Rmxvd05hbWVMYWJlbFZhbHVlLnRleHRDb250ZW50ID0gY29u
dGVudEZsb3cgPyBjb250ZW50Rmxvdy5uYW1lIDogIiI7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRG
bG93TmFtZVJvdy52YWx1ZSA9IGNvbnRlbnRGbG93ID8gdGhpcy5fY29udGVudEZsb3dGcmFnbWVu
dCA6IG51bGw7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUZsb3dOYW1lc1NlY3Rpb25WaXNpYmlsaXR5
KCk7Ci0gICAgfQotCi0gICAgZ2V0IGNvbnRhaW5lclJlZ2lvbnMoKSB7IHJldHVybiB0aGlzLl9j
b250YWluZXJSZWdpb25zOyB9Ci0gICAgc2V0IGNvbnRhaW5lclJlZ2lvbnMocmVnaW9ucykKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnMgPSByZWdpb25zOwotCi0gICAgICAg
IGlmICghcmVnaW9ucyB8fCAhcmVnaW9ucy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHRoaXMuX2Nv
bnRhaW5lclJlZ2lvbnNGbG93U2VjdGlvbi5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fY29udGFp
bmVyUmVnaW9uc0RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIGZvciAodmFyIHJl
Z2lvbk5vZGUgb2YgcmVnaW9ucykKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNE
YXRhR3JpZC5hcHBlbmRDaGlsZChuZXcgV0kuRE9NVHJlZURhdGFHcmlkTm9kZShyZWdpb25Ob2Rl
KSk7Ci0KLSAgICAgICAgdGhpcy5fY29udGFpbmVyUmVnaW9uc0Zsb3dTZWN0aW9uLmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Ci0KLSAgICAgICAgdGhpcy5fY29udGFpbmVyUmVn
aW9uc0RhdGFHcmlkLnVwZGF0ZUxheW91dElmTmVlZGVkKCk7Ci0gICAgfQotCiAgICAgY3NzU3R5
bGVEZWNsYXJhdGlvblRleHRFZGl0b3JTaG93UHJvcGVydHkocHJvcGVydHksIHNob3dTb3VyY2Up
CiAgICAgewogICAgICAgICBmdW5jdGlvbiBkZWxlZ2F0ZVNob3dQcm9wZXJ0eSgpIHsKQEAgLTEy
MSw3ICs4NCw2IEBAIFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21wdXRl
ZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV0kuU3R5bGVECiAKICAgICAgICAgdGhpcy5fcHJv
cGVydGllc1RleHRFZGl0b3Iuc3R5bGUgPSB0aGlzLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZTsK
ICAgICAgICAgdGhpcy5fdmFyaWFibGVzVGV4dEVkaXRvci5zdHlsZSA9IHRoaXMubm9kZVN0eWxl
cy5jb21wdXRlZFN0eWxlOwotICAgICAgICB0aGlzLl9yZWZyZXNoRmxvd0RldGFpbHModGhpcy5u
b2RlU3R5bGVzLm5vZGUpOwogICAgICAgICB0aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3cubm9kZVN0
eWxlcyA9IHRoaXMubm9kZVN0eWxlczsKIAogICAgICAgICBzdXBlci5yZWZyZXNoKCk7CkBAIC0x
NzcsNDQgKzEzOSw4IEBAIFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21w
dXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMgV0kuU3R5bGVECiAKICAgICAgICAgdmFyaWFi
bGVzUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdmFyaWFibGVzVGV4dEVkaXRvci5lbGVt
ZW50KTsKIAotICAgICAgICAvLyBSZWdpb24gZmxvdyBuYW1lIGlzIHVzZWQgdG8gZGlzcGxheSB0
aGUgImZsb3ctZnJvbSIgcHJvcGVydHkgb2YgdGhlIFJlZ2lvbiBDb250YWluZXJzLgotICAgICAg
ICB0aGlzLl9yZWdpb25GbG93RnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7Ci0gICAgICAgIHRoaXMuX3JlZ2lvbkZsb3dGcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbWciKSkuY2xhc3NOYW1lID0gImljb24iOwotICAgICAgICB0aGlz
Ll9yZWdpb25GbG93TmFtZUxhYmVsVmFsdWUgPSB0aGlzLl9yZWdpb25GbG93RnJhZ21lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKLQotICAgICAgICBsZXQg
Z29Ub1JlZ2lvbkZsb3dCdXR0b24gPSB0aGlzLl9yZWdpb25GbG93RnJhZ21lbnQuYXBwZW5kQ2hp
bGQoV0kuY3JlYXRlR29Ub0Fycm93QnV0dG9uKCkpOwotICAgICAgICBnb1RvUmVnaW9uRmxvd0J1
dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2dvVG9SZWdpb25GbG93QXJyb3dX
YXNDbGlja2VkLmJpbmQodGhpcykpOwotCi0gICAgICAgIHRoaXMuX3JlZ2lvbkZsb3dOYW1lUm93
ID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdJLlVJU3RyaW5nKCJSZWdpb24gRmxv
dyIpKTsKLSAgICAgICAgdGhpcy5fcmVnaW9uRmxvd05hbWVSb3cuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJjb250ZW50LWZsb3ctbGluayIpOwotCi0gICAgICAgIC8vIENvbnRlbnQgZmxvdyBuYW1l
IGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgImZsb3ctaW50byIgcHJvcGVydHkgb2YgdGhlIENvbnRl
bnQgbm9kZXMuCi0gICAgICAgIHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpLmNsYXNzTmFtZSA9ICJp
Y29uIjsKLSAgICAgICAgdGhpcy5fY29udGVudEZsb3dOYW1lTGFiZWxWYWx1ZSA9IHRoaXMuX2Nv
bnRlbnRGbG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpKTsKLQotICAgICAgICBsZXQgZ29Ub0NvbnRlbnRGbG93QnV0dG9uID0gdGhpcy5fY29udGVu
dEZsb3dGcmFnbWVudC5hcHBlbmRDaGlsZChXSS5jcmVhdGVHb1RvQXJyb3dCdXR0b24oKSk7Ci0g
ICAgICAgIGdvVG9Db250ZW50Rmxvd0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2dvVG9Db250ZW50Rmxvd0Fycm93V2FzQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLQotICAgICAg
ICB0aGlzLl9jb250ZW50Rmxvd05hbWVSb3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25TaW1wbGVS
b3coV0kuVUlTdHJpbmcoIkNvbnRlbnQgRmxvdyIpKTsKLSAgICAgICAgdGhpcy5fY29udGVudEZs
b3dOYW1lUm93LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1mbG93LWxpbmsiKTsKLQot
ICAgICAgICBsZXQgZmxvd05hbWVzR3JvdXAgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Hcm91cChb
dGhpcy5fcmVnaW9uRmxvd05hbWVSb3csIHRoaXMuX2NvbnRlbnRGbG93TmFtZVJvd10pOwotICAg
ICAgICB0aGlzLl9mbG93TmFtZXNTZWN0aW9uID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uKCJjb250
ZW50LWZsb3ciLCBXSS5VSVN0cmluZygiRmxvd3MiKSwgW2Zsb3dOYW1lc0dyb3VwXSk7Ci0KLSAg
ICAgICAgdGhpcy5fY29udGFpbmVyUmVnaW9uc0RhdGFHcmlkID0gbmV3IFdJLkRPTVRyZWVEYXRh
R3JpZDsKLSAgICAgICAgdGhpcy5fY29udGFpbmVyUmVnaW9uc0RhdGFHcmlkLmhlYWRlclZpc2li
bGUgPSBmYWxzZTsKLQotICAgICAgICB0aGlzLl9jb250YWluZXJSZWdpb25zUm93ID0gbmV3IFdJ
LkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3codGhpcy5fY29udGFpbmVyUmVnaW9uc0RhdGFHcmlk
KTsKLSAgICAgICAgbGV0IGNvbnRhaW5lclJlZ2lvbnNHcm91cCA9IG5ldyBXSS5EZXRhaWxzU2Vj
dGlvbkdyb3VwKFt0aGlzLl9jb250YWluZXJSZWdpb25zUm93XSk7Ci0gICAgICAgIHRoaXMuX2Nv
bnRhaW5lclJlZ2lvbnNGbG93U2VjdGlvbiA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvbigiY29udGFp
bmVyLXJlZ2lvbnMiLCBXSS5VSVN0cmluZygiQ29udGFpbmVyIFJlZ2lvbnMiKSwgW2NvbnRhaW5l
clJlZ2lvbnNHcm91cF0pOwotCiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9w
ZXJ0aWVzU2VjdGlvbi5lbGVtZW50KTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX3ZhcmlhYmxlc1NlY3Rpb24uZWxlbWVudCk7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9mbG93TmFtZXNTZWN0aW9uLmVsZW1lbnQpOwotICAgICAgICB0aGlz
LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyUmVnaW9uc0Zsb3dTZWN0aW9uLmVs
ZW1lbnQpOwotCi0gICAgICAgIHRoaXMuX3Jlc2V0Rmxvd0RldGFpbHMoKTsKIAogICAgICAgICB0
aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3cgPSBuZXcgV0kuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJv
dzsKIApAQCAtMjI0LDE0ICsxNTAsNiBAQCBXSS5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsID0g
Y2xhc3MgQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdJLlN0eWxlRAogICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoYm94TW9kZWxTZWN0aW9uLmVsZW1lbnQpOwogICAg
IH0KIAotICAgIHNpemVEaWRDaGFuZ2UoKQotICAgIHsKLSAgICAgICAgc3VwZXIuc2l6ZURpZENo
YW5nZSgpOwotCi0gICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUyMjY5
PiBXZWIgSW5zcGVjdG9yOiBDb252ZXJ0IERldGFpbHNTZWN0aW9uIGNsYXNzZXMgdG8gdXNlIFZp
ZXcKLSAgICAgICAgdGhpcy5fY29udGFpbmVyUmVnaW9uc1Jvdy5zaXplRGlkQ2hhbmdlKCk7Ci0g
ICAgfQotCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2ti
b3hWYWx1ZUNoYW5nZWQoZXZlbnQpCkBAIC0yNTMsNTAgKzE3MSw2IEBAIFdJLkNvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBDb21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMg
V0kuU3R5bGVECiAgICAgICAgIGlmIChldmVudCAmJiBldmVudC5kYXRhICYmICFldmVudC5kYXRh
LmNvbGxhcHNlZCkKICAgICAgICAgICAgIHRoaXMuX3ZhcmlhYmxlc1RleHRFZGl0b3IucmVmcmVz
aCgpOwogICAgIH0KLQotICAgIF91cGRhdGVGbG93TmFtZXNTZWN0aW9uVmlzaWJpbGl0eSgpCi0g
ICAgewotICAgICAgICB0aGlzLl9mbG93TmFtZXNTZWN0aW9uLmVsZW1lbnQuY2xhc3NMaXN0LnRv
Z2dsZSgiaGlkZGVuIiwgIXRoaXMuX2NvbnRlbnRGbG93ICYmICF0aGlzLl9yZWdpb25GbG93KTsK
LSAgICB9Ci0KLSAgICBfcmVzZXRGbG93RGV0YWlscyAoKQotICAgIHsKLSAgICAgICAgdGhpcy5y
ZWdpb25GbG93ID0gbnVsbDsKLSAgICAgICAgdGhpcy5jb250ZW50RmxvdyA9IG51bGw7Ci0gICAg
ICAgIHRoaXMuY29udGFpbmVyUmVnaW9ucyA9IG51bGw7Ci0gICAgfQotCi0gICAgX3JlZnJlc2hG
bG93RGV0YWlscyhkb21Ob2RlKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVzZXRGbG93RGV0YWls
cygpOwotICAgICAgICBpZiAoIWRvbU5vZGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgZnVuY3Rpb24gY29udGVudEZsb3dJbmZvUmVhZHkoZXJyb3IsIGZsb3dEYXRhKQotICAgICAg
ICB7Ci0gICAgICAgICAgICAvLyBFbGVtZW50IGlzIG5vdCBwYXJ0IG9mIGFueSBmbG93LgotICAg
ICAgICAgICAgaWYgKGVycm9yIHx8ICFmbG93RGF0YSkgewotICAgICAgICAgICAgICAgIHRoaXMu
X3Jlc2V0Rmxvd0RldGFpbHMoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHRoaXMucmVnaW9uRmxvdyA9IGZsb3dEYXRhLnJlZ2lvbkZsb3c7
Ci0gICAgICAgICAgICB0aGlzLmNvbnRlbnRGbG93ID0gZmxvd0RhdGEuY29udGVudEZsb3c7Ci0g
ICAgICAgICAgICB0aGlzLmNvbnRhaW5lclJlZ2lvbnMgPSBmbG93RGF0YS5yZWdpb25zOwotICAg
ICAgICB9Ci0KLSAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIuZ2V0Tm9kZUNvbnRlbnRGbG93SW5m
byhkb21Ob2RlLCBjb250ZW50Rmxvd0luZm9SZWFkeS5iaW5kKHRoaXMpKTsKLSAgICB9Ci0KLSAg
ICBfZ29Ub1JlZ2lvbkZsb3dBcnJvd1dhc0NsaWNrZWQoKQotICAgIHsKLSAgICAgICAgV0kuc2hv
d1JlcHJlc2VudGVkT2JqZWN0KHRoaXMuX3JlZ2lvbkZsb3cpOwotICAgIH0KLQotICAgIF9nb1Rv
Q29udGVudEZsb3dBcnJvd1dhc0NsaWNrZWQoKQotICAgIHsKLSAgICAgICAgV0kuc2hvd1JlcHJl
c2VudGVkT2JqZWN0KHRoaXMuX2NvbnRlbnRGbG93LCB7bm9kZVRvU2VsZWN0OiB0aGlzLm5vZGVT
dHlsZXMubm9kZX0pOwotICAgIH0KIH07CiAKIFdJLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwu
U3R5bGVDbGFzc05hbWUgPSAiY29tcHV0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxv
d0RPTVRyZWVDb250ZW50Vmlldy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkx
YmRmYzQ4M2YuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3LmpzCisrKyAvZGV2L251
bGwKQEAgLTEsOTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCi0gKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUiAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCi0g
KiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQotV0kuQ29udGVu
dEZsb3dET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50Rmxvd0RPTVRyZWVDb250ZW50
VmlldyBleHRlbmRzIFdJLkRPTVRyZWVDb250ZW50VmlldwotewotICAgIGNvbnN0cnVjdG9yKGNv
bnRlbnRGbG93KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudEZsb3cgaW5z
dGFuY2VvZiBXSS5Db250ZW50RmxvdywgY29udGVudEZsb3cpOwotCi0gICAgICAgIHN1cGVyKGNv
bnRlbnRGbG93KTsKLQotICAgICAgICBjb250ZW50Rmxvdy5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzQWRkZWQsIHRoaXMuX2NvbnRlbnROb2RlV2Fz
QWRkZWQsIHRoaXMpOwotICAgICAgICBjb250ZW50Rmxvdy5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwgdGhpcy5fY29udGVudE5vZGVX
YXNSZW1vdmVkLCB0aGlzKTsKLQotICAgICAgICB0aGlzLl9jcmVhdGVDb250ZW50VHJlZXMoKTsK
LSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGNsb3NlZCgpCi0gICAgewotICAgICAgICB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhp
cyk7Ci0KLSAgICAgICAgc3VwZXIuY2xvc2VkKCk7Ci0gICAgfQotCi0gICAgZ2V0U2VhcmNoQ29u
dGV4dE5vZGVzKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgY2FsbGJhY2sodGhpcy5kb21UcmVl
T3V0bGluZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24odHJlZU91dGxpbmUpIHsKLSAgICAgICAgICAg
IHJldHVybiB0cmVlT3V0bGluZS5yZXByZXNlbnRlZE9iamVjdC5pZDsKLSAgICAgICAgfSkpOwot
ICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9jcmVhdGVDb250ZW50VHJlZXMoKQotICAg
IHsKLSAgICAgICAgdmFyIGNvbnRlbnROb2RlcyA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29u
dGVudE5vZGVzOwotICAgICAgICBmb3IgKHZhciBjb250ZW50Tm9kZSBvZiBjb250ZW50Tm9kZXMp
Ci0gICAgICAgICAgICB0aGlzLmRvbVRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXSS5ET01U
cmVlRWxlbWVudChjb250ZW50Tm9kZSkpOwotCi0gICAgICAgIHZhciBkb2N1bWVudFVSTCA9IGNv
bnRlbnROb2Rlcy5sZW5ndGggPyBjb250ZW50Tm9kZXNbMF0ub3duZXJEb2N1bWVudC5kb2N1bWVu
dFVSTCA6IG51bGw7Ci0gICAgICAgIHRoaXMuX3Jlc3RvcmVTZWxlY3RlZE5vZGVBZnRlclVwZGF0
ZShkb2N1bWVudFVSTCwgY29udGVudE5vZGVzWzBdKTsKLSAgICB9Ci0KLSAgICBfY29udGVudE5v
ZGVXYXNBZGRlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBX
SS5ET01UcmVlRWxlbWVudChldmVudC5kYXRhLm5vZGUpOwotICAgICAgICBpZiAoIWV2ZW50LmRh
dGEuYmVmb3JlKSB7Ci0gICAgICAgICAgICB0aGlzLmRvbVRyZWVPdXRsaW5lLmFwcGVuZENoaWxk
KHRyZWVFbGVtZW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciBiZWZvcmVFbGVtZW50ID0gdGhpcy5kb21UcmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQo
ZXZlbnQuZGF0YS5iZWZvcmUpOwotICAgICAgICBjb25zb2xlLmFzc2VydChiZWZvcmVFbGVtZW50
KTsKLQotICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmRvbVRyZWVPdXRsaW5lLmNoaWxkcmVuLmlu
ZGV4T2YoYmVmb3JlRWxlbWVudCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ICE9PSAt
MSk7Ci0KLSAgICAgICAgdGhpcy5kb21UcmVlT3V0bGluZS5pbnNlcnRDaGlsZCh0cmVlRWxlbWVu
dCwgaW5kZXgpOwotICAgIH0KLQotICAgIF9jb250ZW50Tm9kZVdhc1JlbW92ZWQoZXZlbnQpCi0g
ICAgewotICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLmRvbVRyZWVPdXRsaW5lLmZpbmRU
cmVlRWxlbWVudChldmVudC5kYXRhLm5vZGUpOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVl
RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuZG9tVHJlZU91dGxpbmUucmVtb3ZlQ2hpbGQodHJlZUVs
ZW1lbnQpOwotICAgIH0KLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd0ljb24uY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dJY29uLmNzcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDAyZTJiM2U5ODcuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93SWNvbi5jc3MKKysr
IC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAg
ICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKLSAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IKLSAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRgotICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0uY29udGVudC1mbG93LWljb24gLmljb24gewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMv
Q29udGVudEZsb3cuc3ZnKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50Lmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTZmZGRiZmUxNS4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZs
b3dUcmVlRWxlbWVudC5qcworKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKLSAqICAgIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscwotICog
ICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQotICogTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAotICogT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgotICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCi0gKiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSAqIFNV
Q0ggREFNQUdFLgotICovCi0KLVdJLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQgPSBjbGFzcyBDb250
ZW50Rmxvd1RyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGVtZW50Ci17Ci0gICAg
Y29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCi0gICAgewotICAgICAgICBjb25zb2xlLmFz
c2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkNvbnRlbnRGbG93KTsKLQotICAg
ICAgICBjb25zdCBzdWJ0aXRsZSA9IG51bGw7Ci0gICAgICAgIHN1cGVyKCJjb250ZW50LWZsb3ct
aWNvbiIsIHJlcHJlc2VudGVkT2JqZWN0Lm5hbWUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVj
dCk7Ci0gICAgfQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXggMjI0NjIxMzBlYWQuLjUwMjczODRi
ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZW50Vmlldy5qcwpAQCAtMTUyLDkgKzE1Miw2IEBAIFdJLkNvbnRlbnRWaWV3
ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlmIChyZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkxvZ09iamVjdCkKICAgICAgICAgICAgIHJldHVybiBu
ZXcgV0kuTG9nQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsK
IAotICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Db250ZW50Rmxv
dykKLSAgICAgICAgICAgIHJldHVybiBuZXcgV0kuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZp
ZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKLQogICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5DYWxsaW5nQ29udGV4dFRyZWUpCiAgICAgICAg
ICAgICByZXR1cm4gbmV3IFdJLlByb2ZpbGVWaWV3KHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFy
Z3VtZW50cyk7CiAKQEAgLTI4Miw4ICsyNzksNiBAQCBXSS5Db250ZW50VmlldyA9IGNsYXNzIENv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkxvZ09iamVjdCkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXSS5Db250ZW50RmxvdykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBp
ZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5DYWxsaW5nQ29udGV4dFRyZWUpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV0kuSGVhcFNuYXBzaG90UHJveHkgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXSS5IZWFwU25hcHNob3REaWZmUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcwpp
bmRleCBiNDk1MWYzMTAxYi4uOWM5ZTA1MTA4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5q
cwpAQCAtNDIsMTUgKzQyLDEwIEBAIFdJLkZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBGcmFtZVRy
ZWVFbGVtZW50IGV4dGVuZHMgV0kuUmVzb3VyY2VUcmVlRWxlbWVudAogICAgICAgICBmcmFtZS5h
ZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNBZGRlZCwgdGhpcy5f
Y2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzKTsKICAgICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5l
cihXSS5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRGcmFtZVdh
c1JlbW92ZWQsIHRoaXMpOwogCi0gICAgICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5l
cihXSS5ET01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzQWRkZWQsIHRoaXMuX2NoaWxkQ29udGVu
dEZsb3dXYXNBZGRlZCwgdGhpcyk7Ci0gICAgICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0
ZW5lcihXSS5ET01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRD
b250ZW50Rmxvd1dhc1JlbW92ZWQsIHRoaXMpOwotICAgICAgICBmcmFtZS5kb21UcmVlLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRE9NVHJlZS5FdmVudC5Sb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlz
Ll9yb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzKTsKLQogICAgICAgICB0aGlzLnNob3VsZFJl
ZnJlc2hDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgIHRoaXMuZm9sZGVyU2V0dGluZ3NLZXkgPSB0
aGlzLl9mcmFtZS51cmwuaGFzaDsKIAogICAgICAgICB0aGlzLnJlZ2lzdGVyRm9sZGVyaXplU2V0
dGluZ3MoImZyYW1lcyIsIFdJLlVJU3RyaW5nKCJGcmFtZXMiKSwgdGhpcy5fZnJhbWUuY2hpbGRG
cmFtZUNvbGxlY3Rpb24sIFdJLkZyYW1lVHJlZUVsZW1lbnQpOwotICAgICAgICB0aGlzLnJlZ2lz
dGVyRm9sZGVyaXplU2V0dGluZ3MoImZsb3dzIiwgV0kuVUlTdHJpbmcoIkZsb3dzIiksIHRoaXMu
X2ZyYW1lLmRvbVRyZWUuY29udGVudEZsb3dDb2xsZWN0aW9uLCBXSS5Db250ZW50Rmxvd1RyZWVF
bGVtZW50KTsKICAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRpbmdzKCJleHRyYS1z
Y3JpcHRzIiwgV0kuVUlTdHJpbmcoIkV4dHJhIFNjcmlwdHMiKSwgdGhpcy5fZnJhbWUuZXh0cmFT
Y3JpcHRDb2xsZWN0aW9uLCBXSS5TY3JpcHRUcmVlRWxlbWVudCk7CiAKICAgICAgICAgaWYgKHdp
bmRvdy5DYW52YXNBZ2VudCAmJiBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxTaG93Q2FudmFzQ29u
dGV4dHNJblJlc291cmNlcy52YWx1ZSkKQEAgLTE5MSw5ICsxODYsNiBAQCBXSS5GcmFtZVRyZWVF
bGVtZW50ID0gY2xhc3MgRnJhbWVUcmVlRWxlbWVudCBleHRlbmRzIFdJLlJlc291cmNlVHJlZUVs
ZW1lbnQKICAgICAgICAgICAgICAgICB0aGlzLmFkZENoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Qo
c291cmNlTWFwLnJlc291cmNlc1tqXSk7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGxldCBj
b250ZW50RmxvdyBvZiB0aGlzLl9mcmFtZS5kb21UcmVlLmNvbnRlbnRGbG93Q29sbGVjdGlvbi5p
dGVtcykKLSAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChjb250
ZW50Rmxvdyk7Ci0KICAgICAgICAgZm9yIChsZXQgZXh0cmFTY3JpcHQgb2YgdGhpcy5fZnJhbWUu
ZXh0cmFTY3JpcHRDb2xsZWN0aW9uLml0ZW1zKSB7CiAgICAgICAgICAgICBpZiAoZXh0cmFTY3Jp
cHQuc291cmNlVVJMIHx8IGV4dHJhU2NyaXB0LnNvdXJjZU1hcHBpbmdVUkwpCiAgICAgICAgICAg
ICAgICAgdGhpcy5hZGRDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGV4dHJhU2NyaXB0KTsKQEAg
LTIxMSw3ICsyMDMsNiBAQCBXSS5GcmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgRnJhbWVUcmVlRWxl
bWVudCBleHRlbmRzIFdJLlJlc291cmNlVHJlZUVsZW1lbnQKICAgICBvbmV4cGFuZCgpCiAgICAg
ewogICAgICAgICB0aGlzLl9leHBhbmRlZFNldHRpbmcudmFsdWUgPSB0cnVlOwotICAgICAgICB0
aGlzLl9mcmFtZS5kb21UcmVlLnJlcXVlc3RDb250ZW50Rmxvd0xpc3QoKTsKICAgICB9CiAKICAg
ICBvbmNvbGxhcHNlKCkKQEAgLTI3NCwyMiArMjY1LDYgQEAgV0kuRnJhbWVUcmVlRWxlbWVudCA9
IGNsYXNzIEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5SZXNvdXJjZVRyZWVFbGVtZW50CiAg
ICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmNo
aWxkRnJhbWUpOwogICAgIH0KIAotICAgIF9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQoZXZlbnQp
Ci0gICAgewotICAgICAgICB0aGlzLmFkZFJlcHJlc2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVl
KGV2ZW50LmRhdGEuZmxvdyk7Ci0gICAgfQotCi0gICAgX2NoaWxkQ29udGVudEZsb3dXYXNSZW1v
dmVkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVk
T2JqZWN0KGV2ZW50LmRhdGEuZmxvdyk7Ci0gICAgfQotCi0gICAgX3Jvb3RET01Ob2RlSW52YWxp
ZGF0ZWQoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCi0gICAgICAgICAgICB0
aGlzLl9mcmFtZS5kb21UcmVlLnJlcXVlc3RDb250ZW50Rmxvd0xpc3QoKTsKLSAgICB9Ci0KICAg
ICBfc3R5bGVTaGVldEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCFldmVudC5kYXRh
LnN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lk
ZWJhclBhbmVsLmpzCmluZGV4IDEwOGRkYjU1ZmNlLi5mNGU2NTlkY2IyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFy
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKQEAgLTQ2NSw3ICs0NjUsNiBAQCBXSS5SZXNvdXJjZVNp
ZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNlU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuTmF2aWdh
dGlvblNpZGViYQogICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5SZXNv
dXJjZVRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJ
LlNjcmlwdFRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9m
IFdJLkNTU1N0eWxlU2hlZXRUcmVlRWxlbWVudAotICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQg
aW5zdGFuY2VvZiBXSS5Db250ZW50Rmxvd1RyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVl
RWxlbWVudCBpbnN0YW5jZW9mIFdJLkNhbnZhc1RyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0
cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlNoYWRlclByb2dyYW1UcmVlRWxlbWVudCkgewogICAg
ICAgICAgICAgY29uc3QgY29va2llID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29u
dGVudFZpZXcuanMKaW5kZXggNjg1NzEyNDVmZmIuLmVlYzA3NjM4MDRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNUYWJDb250
ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5qcwpAQCAtMzQsMTEgKzM0LDYgQEAgV0kuUmVzb3Vy
Y2VzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZXNUYWJDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRCcm8KICAgICAgICAgaWYgKHdpbmRvdy5DYW52YXNBZ2VudCAmJiBXSS5zZXR0
aW5ncy5leHBlcmltZW50YWxTaG93Q2FudmFzQ29udGV4dHNJblJlc291cmNlcy52YWx1ZSkKICAg
ICAgICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMucHVzaChXSS5DYW52YXNE
ZXRhaWxzU2lkZWJhclBhbmVsKTsKIAotICAgICAgICAvLyBGSVhNRTogVW50aWwgQ29udGVudEZs
b3dzIGFyZSBtb3ZlZCB0byB0aGUgRWxlbWVudHMgdGFiLCB0aGVzZSBkZXRhaWxzIHNpZGViYXIg
cGFuZWxzIG5lZWQgdG8gYmUgaW5jbHVkZWQuCi0gICAgICAgIGRldGFpbHNTaWRlYmFyUGFuZWxD
b25zdHJ1Y3RvcnMgPSBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLmNvbmNhdChbV0ku
RE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwsIFdJLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bF0pOwotICAgICAgICBpZiAod2luZG93LkxheWVyVHJlZUFnZW50KQotICAgICAgICAgICAgZGV0
YWlsc1NpZGViYXJQYW5lbENvbnN0cnVjdG9ycy5wdXNoKFdJLkxheWVyVHJlZURldGFpbHNTaWRl
YmFyUGFuZWwpOwotCiAgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgInJlc291cmNlcyIsICJy
ZXNvdXJjZXMiLCB0YWJCYXJJdGVtLCBXSS5SZXNvdXJjZVNpZGViYXJQYW5lbCwgZGV0YWlsc1Np
ZGViYXJQYW5lbENvbnN0cnVjdG9ycyk7CiAgICAgfQogCkBAIC02OCw3ICs2Myw2IEBAIFdJLlJl
c291cmNlc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VzVGFiQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50QnJvCiAgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdJLlJlc291cmNlCiAgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdJLlNjcmlwdAogICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXSS5DU1NTdHlsZVNoZWV0Ci0gICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdJLkNvbnRlbnRGbG93CiAgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdJLkNhbnZhcwogICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXSS5TaGFkZXJQcm9ncmFtCiAgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdJLkNvbGxlY3Rpb247Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>