<?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>97680</bug_id>
          
          <creation_ts>2012-09-26 07:07:24 -0700</creation_ts>
          <short_desc>Web Inspector: Move UISourceCode creation out from ResourceScriptMapping.</short_desc>
          <delta_ts>2012-10-02 05:12:53 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>97231</dependson>
          <blocked>97032</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>728514</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-26 07:07:24 -0700</bug_when>
    <thetext>UISourceCodes for scripts having sourceURL are now created by NetworkUISourceCodeProvider.
UISourceCodes for anonymous, dynamic and concatenated scripts are now created on demand only.
All UISourceCodes created by ResourceScriptMapping are now &quot;temporary&quot;.
Temporary UISourceCodes are not stored in workspace and removed when a normal UISourceCode with the same url is available.
UISourceCodeReplaced event was replaced with TemporaryUISourceCodeAdded/Removed events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728529</commentid>
    <comment_count>1</comment_count>
      <attachid>165797</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-26 07:21:23 -0700</bug_when>
    <thetext>Created attachment 165797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728549</commentid>
    <comment_count>2</comment_count>
      <attachid>165797</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-26 07:49:32 -0700</bug_when>
    <thetext>Comment on attachment 165797
Patch

Too much ChangeLog!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728552</commentid>
    <comment_count>3</comment_count>
      <attachid>165801</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-26 07:52:39 -0700</bug_when>
    <thetext>Created attachment 165801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728611</commentid>
    <comment_count>4</comment_count>
      <attachid>165801</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-26 08:51:12 -0700</bug_when>
    <thetext>Comment on attachment 165801
Patch

Attachment 165801 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14019569

New failing tests:
inspector/debugger/source-url-comment.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729335</commentid>
    <comment_count>5</comment_count>
      <attachid>165801</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-27 02:17:28 -0700</bug_when>
    <thetext>Comment on attachment 165801
Patch

Attachment 165801 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14009055

New failing tests:
inspector/debugger/source-url-comment.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732567</commentid>
    <comment_count>6</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-10-02 05:12:53 -0700</bug_when>
    <thetext>Committed r130155: &lt;http://trac.webkit.org/changeset/130155&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165797</attachid>
            <date>2012-09-26 07:21:23 -0700</date>
            <delta_ts>2012-09-26 07:52:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97680-20120926182041.patch</filename>
            <type>text/plain</type>
            <size>64418</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWNlNjU5ZWNlMTRmOGNk
ODUzNWY5Mzc4ODFiOWQzOTFiN2QyMTJhYy4uNTEyMzQwN2M3MjBlMzRmNzViMWI0YzMzNzg0ZDg5
YWY4YTdhZDY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA5LTI2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE1vdmUgVUlTb3VyY2VDb2RlIGNyZWF0aW9uIG91dCBmcm9tIFJlc291cmNlU2NyaXB0TWFw
cGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
NjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVUlT
b3VyY2VDb2RlcyBmb3Igc2NyaXB0cyBoYXZpbmcgc291cmNlVVJMIGFyZSBub3cgY3JlYXRlZCBi
eSBOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuCisgICAgICAgIFVJU291cmNlQ29kZXMgZm9y
IGFub255bW91cywgZHluYW1pYyBhbmQgY29uY2F0ZW5hdGVkIHNjcmlwdHMgYXJlIG5vdyBjcmVh
dGVkIG9uIGRlbWFuZCBvbmx5LgorICAgICAgICBBbGwgVUlTb3VyY2VDb2RlcyBjcmVhdGVkIGJ5
IFJlc291cmNlU2NyaXB0TWFwcGluZyBhcmUgbm93ICJ0ZW1wb3JhcnkiLgorICAgICAgICBUZW1w
b3JhcnkgVUlTb3VyY2VDb2RlcyBhcmUgbm90IHN0b3JlZCBpbiB3b3Jrc3BhY2UgYW5kIHJlbW92
ZWQgd2hlbiBhIG5vcm1hbCBVSVNvdXJjZUNvZGUgd2l0aCB0aGUgc2FtZSB1cmwgaXMgYXZhaWxh
YmxlLgorICAgICAgICBVSVNvdXJjZUNvZGVSZXBsYWNlZCBldmVudCB3YXMgcmVwbGFjZWQgd2l0
aCBUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZC9SZW1vdmVkIGV2ZW50cy4KKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlUmVtb3ZlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3Zl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvclZpZXcuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIucHJvdG90eXBl
Ll9wYXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2Ny
aXB0TWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5n
LnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fd29ya3NwYWNlVUlTb3VyY2VDb2Rl
Rm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcu
cHJvdG90eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLmFkZFNjcmlwdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fZGVsZXRlVGVtcG9y
YXJ5VUlTb3VyY2VDb2RlRm9yU2NyaXB0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5faXNE
eW5hbWljU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBp
bmcucHJvdG90eXBlLl9nZXRPckNyZWF0ZVRlbXBvcmFyeVVJU291cmNlQ29kZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fdWlTb3VyY2VD
b2RlQWRkZWRUb1dvcmtzcGFjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLnByb3RvdHlwZS5fc2NyaXB0c0ZvclVJU291cmNlQ29kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fcmVzZXQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmlldy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvbkhpc3RvcnlWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5l
ci5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qczoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZS5hZGRUZW1wb3JhcnlVSVNvdXJjZUNvZGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2plY3QucHJvdG90eXBlLnJlbW92ZVRlbXBvcmFyeVVJU291
cmNlQ29kZSk6CisKKzIwMTItMDktMjAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSB0byBkaXN0aW5n
dWlzaCBzY3JpcHRzIGhhdmluZyBzb3VyY2VVUkwgZnJvbSBzdGFuZGFsb25lIHNjcmlwdHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzIzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlYnVnZ2VyQWdl
bnQgbm93IHNjYW5zIHNjcmlwdHMgZm9yIHNvdXJjZVVSTCBjb21tZW50IGFuZCBwcm92aWRlcwor
ICAgICAgICBoYXNTb3VyY2VVUkwgZmxhZyBmb3IgZWFjaCBub24taW5saW5lIHNjcmlwdCB3aXRo
IHN1Y2ggYSBjb21tZW50LgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlk
UGFyc2VTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLl9wYXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlzcGF0Y2hlci5wcm90b3R5cGUuc2NyaXB0UGFyc2Vk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHQpOgorCisyMDEyLTA5LTI2ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2
aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERlZmF1bHRUZXh0RWRp
dG9yIHRocm93cyBleGNlcHRpb24gc29tZXRpbWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGNoZWNrIHRoYXQgbGluZSBudW1iZXIgZG9l
cyBub3QgZXhjZWVkIHRleHQgbW9kZWwgbGluZSBjb3VudC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3Bvc2l0aW9uVG9TZWxlY3Rpb24pOgorCiAy
MDEyLTA5LTI2ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuIFJvbGwgb3V0IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzEyOTUwMiBzaW5jZSBpdCBicm9rZSBjb29raWUgdGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggYWE2MGEyZGQ4YTM1OGJm
YzVkZTExZDNiMGM0NzBlMmViOTE0ZGJhMS4uOWIyYjA5MzZiODNmZjI0MGJjZTU2MTY2NWIwZGJk
NDFkNTkyZGI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmNwcApAQCAtMzI2LDggKzMyNiwxMSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpkaXNwYXRjaERpZFBhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIFNv
dQogICAgIHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRlbnRTY3JpcHQ7CiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChzY3JpcHQudXJsLmlzRW1wdHkoKSkKLSAgICAgICAg
c2NyaXB0LnVybCA9IENvbnRlbnRTZWFyY2hVdGlsczo6ZmluZFNvdXJjZVVSTChzY3JpcHQuc291
cmNlKTsKKyAgICBpZiAoIXNjcmlwdC5zdGFydExpbmUgJiYgIXNjcmlwdC5zdGFydENvbHVtbikg
eworICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gQ29udGVudFNlYXJjaFV0aWxzOjpmaW5kU291
cmNlVVJMKHNjcmlwdC5zb3VyY2UpOworICAgICAgICBpZiAoIXNvdXJjZVVSTC5pc0VtcHR5KCkp
CisgICAgICAgICAgICBzY3JpcHQudXJsID0gc291cmNlVVJMOworICAgIH0KICNlbmRpZgogCiAg
ICAgaW50IHNvdXJjZUxlbmd0aCA9IHNjcmlwdC5zb3VyY2UubGVuZ3RoKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggMjFkOTI3YzIxMzg3ZDYyZWMxZDZjNDI0
NDdjYWVkNWUyMTJjNjhjMi4uZjI4NzA0YjBhYmRkNzE4ZWRiOTFhN2Q0NDdjMjFiNzM3ZTY3YTM0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjc2MCw3ICsy
NzYwLDggQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmRMaW5lIiwgInR5cGUi
OiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJMYXN0IGxpbmUgb2YgdGhlIHNjcmlwdC4iIH0s
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5kQ29sdW1uIiwgInR5cGUiOiAiaW50
ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJMZW5ndGggb2YgdGhlIGxhc3QgbGluZSBvZiB0aGUgc2Ny
aXB0LiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpc0NvbnRlbnRTY3JpcHQi
LCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkRl
dGVybWluZXMgd2hldGhlciB0aGlzIHNjcmlwdCBpcyBhIHVzZXIgZXh0ZW5zaW9uIHNjcmlwdC4i
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlTWFwVVJMIiwgInR5cGUi
OiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlVSTCBvZiBzb3Vy
Y2UgbWFwIGFzc29jaWF0ZWQgd2l0aCBzY3JpcHQgKGlmIGFueSkuIiB9CisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAic291cmNlTWFwVVJMIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlVSTCBvZiBzb3VyY2UgbWFwIGFzc29jaWF0ZWQg
d2l0aCBzY3JpcHQgKGlmIGFueSkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Imhhc1NvdXJjZVVSTCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVHJ1ZSwgaWYgdGhpcyBzY3JpcHQgaGFzIHNvdXJjZVVSTC4iIH0KICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlZCB3aGVu
IHZpcnR1YWwgbWFjaGluZSBwYXJzZXMgc2NyaXB0LiBUaGlzIGV2ZW50IGlzIGFsc28gZmlyZWQg
Zm9yIGFsbCBrbm93biBhbmQgdW5jb2xsZWN0ZWQgc2NyaXB0cyB1cG9uIGVuYWJsaW5nIGRlYnVn
Z2VyLiIKICAgICAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYWEwNDdjOTE0MDQ3ZTQ5Mjk1YTUwMDJm
MDRkNzNkYWQzYWFmMDA0My4uMTI3YzFjYWQ1YWNlYTJkNGQ3NTQwYjAxNWRkNmVmNzAzZmU3ZDFm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtNjMwLDcgKzYzMCwxMiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZFBhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFNjcmlwdAog
ICAgIGNvbnN0IGJvb2wqIGlzQ29udGVudFNjcmlwdCA9IHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQg
PyAmc2NyaXB0LmlzQ29udGVudFNjcmlwdCA6IDA7CiAgICAgU3RyaW5nIHNvdXJjZU1hcFVSTCA9
IHNvdXJjZU1hcFVSTEZvclNjcmlwdChzY3JpcHQpOwogICAgIFN0cmluZyogc291cmNlTWFwVVJM
UGFyYW0gPSBzb3VyY2VNYXBVUkwuaXNOdWxsKCkgPyAwIDogJnNvdXJjZU1hcFVSTDsKLSAgICBt
X2Zyb250ZW5kLT5zY3JpcHRQYXJzZWQoc2NyaXB0SWQsIHNjcmlwdC51cmwsIHNjcmlwdC5zdGFy
dExpbmUsIHNjcmlwdC5zdGFydENvbHVtbiwgc2NyaXB0LmVuZExpbmUsIHNjcmlwdC5lbmRDb2x1
bW4sIGlzQ29udGVudFNjcmlwdCwgc291cmNlTWFwVVJMUGFyYW0pOworICAgIFN0cmluZyBzb3Vy
Y2VVUkw7CisgICAgaWYgKCFzY3JpcHQuc3RhcnRMaW5lICYmICFzY3JpcHQuc3RhcnRDb2x1bW4p
CisgICAgICAgIHNvdXJjZVVSTCA9IENvbnRlbnRTZWFyY2hVdGlsczo6ZmluZFNvdXJjZVVSTChz
Y3JpcHQuc291cmNlKTsKKyAgICBib29sIGhhc1NvdXJjZVVSTCA9ICFzb3VyY2VVUkwuaXNFbXB0
eSgpICYmIHNvdXJjZVVSTCA9PSBzY3JpcHQudXJsOworICAgIGJvb2wqIGhhc1NvdXJjZVVSTFBh
cmFtID0gaGFzU291cmNlVVJMID8gJmhhc1NvdXJjZVVSTCA6IDA7CisgICAgbV9mcm9udGVuZC0+
c2NyaXB0UGFyc2VkKHNjcmlwdElkLCBzY3JpcHQudXJsLCBzY3JpcHQuc3RhcnRMaW5lLCBzY3Jp
cHQuc3RhcnRDb2x1bW4sIHNjcmlwdC5lbmRMaW5lLCBzY3JpcHQuZW5kQ29sdW1uLCBpc0NvbnRl
bnRTY3JpcHQsIHNvdXJjZU1hcFVSTFBhcmFtLCBoYXNTb3VyY2VVUkxQYXJhbSk7CiAKICAgICBt
X3NjcmlwdHMuc2V0KHNjcmlwdElkLCBzY3JpcHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRleCA4ZTlk
NGI2NTVjMjIwYTI0YTI0OTAwZjllODAzNzQ2YjlkNmQ4MzQ5Li40NTA3YmM5ZTQ2MTYxMjI5ZjA2
Y2Y3YjNmNWFiZmM0Nzk1YTc1NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKQEAgLTQ5LDYgKzQ5LDggQEAg
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rpb24oYnJlYWtwb2ludFN0b3Jh
Z2UsIGRlYnVnZ2VyTW9kZWwsIHdvcmsKICAgICB0aGlzLl9kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZXNv
bHZlZCwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkLCB0aGlzKTsKICAgICB0aGlzLl93b3Jrc3Bh
Y2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuV29ya3NwYWNlLkV2ZW50cy5Qcm9qZWN0
V2lsbFJlc2V0LCB0aGlzLl93b3Jrc3BhY2VSZXNldCwgdGhpcyk7CiAgICAgdGhpcy5fd29ya3Nw
YWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2
ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwgdGhpcy5fdWlTb3VyY2VDb2RlQWRkZWQsIHRoaXMpOwor
ICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGVQcm92aWRlci5FdmVudHMuVGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWQsIHRoaXMuX3Vp
U291cmNlQ29kZUFkZGVkLCB0aGlzKTsKKyAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJ
U291cmNlQ29kZVJlbW92ZWQsIHRoaXMuX3VpU291cmNlQ29kZVJlbW92ZWQsIHRoaXMpOwogfQog
CiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRXZlbnRzID0gewpAQCAtODksNiArOTEs
MzggQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICB9
LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50Cisg
ICAgICovCisgICAgX3VpU291cmNlQ29kZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgaWYgKCEodWlTb3VyY2VDb2RlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICAgICAgdmFyIHNvdXJjZUZpbGVJZCA9IHVpU291cmNlQ29kZS5icmVh
a3BvaW50U3RvcmFnZUlkKCk7CisgICAgICAgIGlmICghc291cmNlRmlsZUlkKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fYnJl
YWtwb2ludHMuc2xpY2UoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBicmVha3BvaW50
c1tpXTsKKyAgICAgICAgICAgIGZvciAodmFyIHN0cmluZ2lmaWVkTG9jYXRpb24gaW4gYnJlYWtw
b2ludC5fdWlMb2NhdGlvbnMpIHsKKyAgICAgICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IGJy
ZWFrcG9pbnQuX3VpTG9jYXRpb25zW3N0cmluZ2lmaWVkTG9jYXRpb25dOworICAgICAgICAgICAg
ICAgIGlmICh1aUxvY2F0aW9uLnVpU291cmNlQ29kZSA9PT0gdWlTb3VyY2VDb2RlKQorICAgICAg
ICAgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZUZpbGVzV2l0aFJl
c3RvcmVkQnJlYWtwb2ludHNbc291cmNlRmlsZUlkXTsKKyAgICAgICAgCisgICAgICAgIHZhciB1
aVNvdXJjZUNvZGVzID0gdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZXMoKTsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICBpZiAodWlTb3VyY2VDb2Rlc1tpXS5icmVha3BvaW50U3RvcmFnZUlkKCkgPT09IHNvdXJj
ZUZpbGVJZCkKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3RvcmVCcmVha3BvaW50cyh1aVNvdXJj
ZUNvZGVzW2ldKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQogICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmRpdGlvbgpAQCAt
Mzc3LDExICs0MTEsMTUgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9p
bnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9mYWtlQnJlYWtwb2ludEF0UHJpbWFyeUxv
Y2F0aW9uKCk7CiAgICAgfSwKIAotICAgIHJlbW92ZTogZnVuY3Rpb24oKQorICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbj19IGtlZXBJblN0b3JhZ2UKKyAgICAgKi8KKyAgICByZW1vdmU6
IGZ1bmN0aW9uKGtlZXBJblN0b3JhZ2UpCiAgICAgeworICAgICAgICB2YXIgcmVtb3ZlRnJvbVN0
b3JhZ2UgPSAha2VlcEluU3RvcmFnZTsKICAgICAgICAgdGhpcy5fcmVzZXRMb2NhdGlvbnMoKTsK
ICAgICAgICAgdGhpcy5fcmVtb3ZlRnJvbURlYnVnZ2VyKCk7Ci0gICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRNYW5hZ2VyLl9yZW1vdmVCcmVha3BvaW50KHRoaXMsIHRydWUpOworICAgICAgICB0aGlz
Ll9icmVha3BvaW50TWFuYWdlci5fcmVtb3ZlQnJlYWtwb2ludCh0aGlzLCByZW1vdmVGcm9tU3Rv
cmFnZSk7CiAgICAgfSwKIAogICAgIF9zZXRJbkRlYnVnZ2VyOiBmdW5jdGlvbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKaW5k
ZXggMjFmYjQ1YmExNjYzZTdjYTFhYWE5ZmYyMjRlMGZjMGRjYTc1ODUxNC4uYWZmZWZlMGYwZWEz
MGVlNTUzNzcyNWQ2N2M5MDUyNTY3ODFkNWUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcwpAQCAtMzcxLDEwICszNzEsMTIg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBlbmRMaW5lCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZENvbHVtbgogICAg
ICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNDb250ZW50U2NyaXB0CisgICAgICogQHBhcmFtIHtzdHJp
bmc9fSBzb3VyY2VNYXBVUkwKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBoYXNTb3VyY2VVUkwK
ICAgICAgKi8KLSAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihzY3JpcHRJZCwgc291
cmNlVVJMLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29u
dGVudFNjcmlwdCwgc291cmNlTWFwVVJMKQorICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0
aW9uKHNjcmlwdElkLCBzb3VyY2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUs
IGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2VNYXBVUkwsIGhhc1NvdXJjZVVSTCkK
ICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChzY3Jp
cHRJZCwgc291cmNlVVJMLCBzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1
bW4sIGlzQ29udGVudFNjcmlwdCwgc291cmNlTWFwVVJMKTsKKyAgICAgICAgdmFyIHNjcmlwdCA9
IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KHNjcmlwdElkLCBzb3VyY2VVUkwsIHN0YXJ0TGluZSwg
c3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2VN
YXBVUkwsIGhhc1NvdXJjZVVSTCk7CiAgICAgICAgIHRoaXMuX3JlZ2lzdGVyU2NyaXB0KHNjcmlw
dCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLkV2ZW50cy5QYXJzZWRTY3JpcHRTb3VyY2UsIHNjcmlwdCk7CiAgICAgfSwK
QEAgLTYzNywxMCArNjM5LDExIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlckRpc3BhdGNoZXIucHJv
dG90eXBlID0gewogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRDb2x1bW4KICAgICAgKiBAcGFy
YW0ge2Jvb2xlYW49fSBpc0NvbnRlbnRTY3JpcHQKICAgICAgKiBAcGFyYW0ge3N0cmluZz19IHNv
dXJjZU1hcFVSTAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGhhc1NvdXJjZVVSTAogICAgICAq
LwotICAgIHNjcmlwdFBhcnNlZDogZnVuY3Rpb24oc2NyaXB0SWQsIHNvdXJjZVVSTCwgc3RhcnRM
aW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQsIHNv
dXJjZU1hcFVSTCkKKyAgICBzY3JpcHRQYXJzZWQ6IGZ1bmN0aW9uKHNjcmlwdElkLCBzb3VyY2VV
UkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50
U2NyaXB0LCBzb3VyY2VNYXBVUkwsIGhhc1NvdXJjZVVSTCkKICAgICB7Ci0gICAgICAgIHRoaXMu
X2RlYnVnZ2VyTW9kZWwuX3BhcnNlZFNjcmlwdFNvdXJjZShzY3JpcHRJZCwgc291cmNlVVJMLCBz
dGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sICEhaXNDb250ZW50U2Ny
aXB0LCBzb3VyY2VNYXBVUkwpOworICAgICAgICB0aGlzLl9kZWJ1Z2dlck1vZGVsLl9wYXJzZWRT
Y3JpcHRTb3VyY2Uoc2NyaXB0SWQsIHNvdXJjZVVSTCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwg
ZW5kTGluZSwgZW5kQ29sdW1uLCAhIWlzQ29udGVudFNjcmlwdCwgc291cmNlTWFwVVJMLCBoYXNT
b3VyY2VVUkwpOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRUZXh0RWRpdG9yLmpzCmluZGV4IDQ0ZTg0N2Uw
Y2I0NThmMmQ2YjZhZWEzYTI5NjI0YjNkMGIxZjhlZGIuLjJlZDllODg5MTM3ODBkZWM1Y2RhM2Rj
YTM2MzNkMDMwMzdhMDUyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGVmYXVsdFRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZWZhdWx0VGV4dEVkaXRvci5qcwpAQCAtMjAyOSw3ICsyMDI5LDcgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdmFyIHJhbmdlQm91bmRhcnkgPSBsaW5lUm93LnJhbmdlQm91bmRhcnlGb3JPZmZzZXQoY29s
dW1uKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gY29sdW1uOwot
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IGNodW5rLnN0YXJ0TGluZTsgaSA8IGxpbmU7ICsraSkK
KyAgICAgICAgICAgIGZvciAodmFyIGkgPSBjaHVuay5zdGFydExpbmU7IGkgPCBsaW5lICYmIGkg
PCB0aGlzLl90ZXh0TW9kZWwubGluZXNDb3VudDsgKytpKQogICAgICAgICAgICAgICAgIG9mZnNl
dCArPSB0aGlzLl90ZXh0TW9kZWwubGluZUxlbmd0aChpKSArIDE7IC8vIFxuCiAgICAgICAgICAg
ICBsaW5lUm93ID0gY2h1bmsuZWxlbWVudDsKICAgICAgICAgICAgIGlmIChsaW5lUm93LmZpcnN0
Q2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05h
dmlnYXRvclZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdmln
YXRvclZpZXcuanMKaW5kZXggYTAyMjE3NDc0MzFiY2JiZWIwZWEyOGIzYjQ5OTBjODkzODdkYjZm
Yy4uYjBmMWE5MGE0ZWQwODdmMDVlMWZlODQzMjg1NDBiZmNlM2U4YTg2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9yVmlldy5qcwpAQCAt
MTQ5LDI5ICsxNDksNiBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gb2xkVUlTb3VyY2VDb2RlCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8KLSAgICByZXBsYWNlVUlTb3VyY2VDb2RlOiBm
dW5jdGlvbihvbGRVSVNvdXJjZUNvZGUsIHVpU291cmNlQ29kZSkKLSAgICB7Ci0gICAgICAgIHZh
ciBhZGRlZCA9IGZhbHNlOwotICAgICAgICB2YXIgc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICAgICAg
aWYgKHRoaXMuX3NjcmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLmdldChvbGRVSVNvdXJj
ZUNvZGUpKSB7Ci0gICAgICAgICAgICBhZGRlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIGlmICh0
aGlzLl9sYXN0U2VsZWN0ZWRVSVNvdXJjZUNvZGUgPT09IG9sZFVJU291cmNlQ29kZSkKLSAgICAg
ICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLnJlbW92ZVVJU291
cmNlQ29kZShvbGRVSVNvdXJjZUNvZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFhZGRl
ZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5hZGRVSVNvdXJjZUNvZGUodWlT
b3VyY2VDb2RlKTsKLSAgICAgICAgaWYgKHNlbGVjdGVkKQotICAgICAgICAgICAgdGhpcy5yZXZl
YWxVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICB9LAotCi0gICAgLyoqCiAgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKiBA
cGFyYW0ge2Jvb2xlYW59IGZvY3VzU291cmNlCiAgICAgICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNlQ29k
ZVByb3ZpZGVyLmpzCmluZGV4IGFlMzRmZWJhMDEwYjYzZWMwMWJjOWIwNWNlMzZhOWZhMjYxYjY0
NmYuLmJiZDI2NzJlMWJhN2NiZmQwZDA0YzhlMzlmMWNkYTlkMWQ3YTNhNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNlQ29kZVBy
b3ZpZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29y
a1VJU291cmNlQ29kZVByb3ZpZGVyLmpzCkBAIC0zOCw2ICszOCw3IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIgPSBmdW5jdGlvbih3b3Jrc3BhY2UpCiAgICAgV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgdGhpcy5fcmVzb3Vy
Y2VBZGRlZCwgdGhpcyk7CiAgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5fcHJvamVj
dFdpbGxSZXNldCwgdGhpcyk7CiAgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdERpZFJlc2V0LCB0aGlzLl9wcm9q
ZWN0RGlkUmVzZXQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlBhcnNlZFNjcmlw
dFNvdXJjZSwgdGhpcy5fcGFyc2VkU2NyaXB0U291cmNlLCB0aGlzKTsKIAogICAgIHRoaXMuX3Vp
U291cmNlQ29kZUZvclJlc291cmNlID0ge307CiB9CkBAIC02MSw2ICs2MiwyMSBAQCBXZWJJbnNw
ZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioK
ICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKICAgICAgKi8KKyAgICBf
cGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBz
Y3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50LmRhdGE7Cisg
ICAgICAgIGlmICghc2NyaXB0Lmhhc1NvdXJjZVVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgaWYgKHRoaXMuX3VpU291cmNlQ29kZUZvclJlc291cmNlW3NjcmlwdC5zb3VyY2VVUkxd
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdCwgdHJ1
ZSk7CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclJlc291cmNlW3NjcmlwdC5zb3VyY2VV
UkxdID0gdWlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl93b3Jrc3BhY2UucHJvamVjdCgpLmFk
ZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KICAgICBfcmVzb3VyY2VB
ZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gKi8gZXZlbnQuZGF0YTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5n
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1h
cHBpbmcuanMKaW5kZXggZDcyYTFjNjQ5MTQyOWViMDgzMzQ3NzdmNTMxYzM1MzliNjczYzNkMi4u
ZmRhMGRiODFkYmRiZTA0YzllYzNlZjdiNDEzZGU2ODBmNTIwNjYxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1h
cHBpbmcuanMKQEAgLTQwLDExICs0MCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1h
cHBpbmcgPSBmdW5jdGlvbih3b3Jrc3BhY2UpCiAgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJj
ZUNvZGVBZGRlZCwgdGhpcy5fdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZSwgdGhpcyk7CiAK
ICAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
Pn0gKi8KLSAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OwotICAgIHRoaXMu
X3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlID0gbmV3IE1hcCgpOwotICAgIHRoaXMuX3RlbXBvcmFy
eVVJU291cmNlQ29kZXMgPSBuZXcgTWFwKCk7Ci0gICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmlu
ZywgbnVtYmVyPn0gKi8KLSAgICB0aGlzLl9uZXh0RHluYW1pY1NjcmlwdEluZGV4Rm9yVVJMID0g
e307CisgICAgdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2RlRm9yU2NyaXB0SWQgPSB7fTsKICAg
ICB0aGlzLl9zY3JpcHRzID0gW107CiB9CiAKQEAgLTU3LDExICs1MywyMyBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZh
ciBkZWJ1Z2dlck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1vZGVsLkxvY2F0aW9ufSAqLyByYXdMb2NhdGlvbjsKICAgICAgICAgdmFyIHNjcmlwdCA9IFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKGRlYnVnZ2VyTW9kZWxMb2NhdGlv
bi5zY3JpcHRJZCk7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTY3JpcHRJZFtkZWJ1Z2dlck1vZGVsTG9jYXRpb24uc2NyaXB0SWRdOworICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlVUlTb3VyY2VDb2RlRm9yU2NyaXB0KHNj
cmlwdCkgfHwgdGhpcy5fZ2V0T3JDcmVhdGVUZW1wb3JhcnlVSVNvdXJjZUNvZGUoc2NyaXB0KTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoISF1aVNvdXJjZUNvZGUpOwogICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgZGVidWdnZXJNb2RlbExv
Y2F0aW9uLmxpbmVOdW1iZXIsIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwg
MCk7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlw
dH0gc2NyaXB0CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0KKyAg
ICAgKi8KKyAgICBfd29ya3NwYWNlVUlTb3VyY2VDb2RlRm9yU2NyaXB0OiBmdW5jdGlvbihzY3Jp
cHQpCisgICAgeworICAgICAgICBpZiAoc2NyaXB0LmlzQW5vbnltb3VzU2NyaXB0KCkgfHwgdGhp
cy5faXNEeW5hbWljU2NyaXB0KHNjcmlwdCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkwoc2NyaXB0LnNv
dXJjZVVSTCk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVO
dW1iZXIKICAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCkBAIC02OSw5ICs3Nyw5
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUs
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHRJZCA9
IHRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOwotICAgICAg
ICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9ySWQoc2Ny
aXB0SWQpOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRl
UmF3TG9jYXRpb24oc2NyaXB0LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICB2
YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoc2NyaXB0cy5sZW5ndGgpOworICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRlUmF3TG9jYXRpb24oc2NyaXB0c1swXSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC03OSwyMCAr
ODcsMzUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewotICAgICAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNj
cmlwdElkXSk7Ci0KLSAgICAgICAgdmFyIGlzRHluYW1pY1NjcmlwdCA9IGZhbHNlOwotICAgICAg
ICBpZiAoIXNjcmlwdC5pc0Fub255bW91c1NjcmlwdCgpKSB7CisgICAgICAgIGlmICghc2NyaXB0
LmlzQW5vbnltb3VzU2NyaXB0KCkpCiAgICAgICAgICAgICB0aGlzLl9zY3JpcHRzLnB1c2goc2Ny
aXB0KTsKLSAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3BhY2UudWlT
b3VyY2VDb2RlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwotICAgICAgICAgICAgaXNEeW5hbWlj
U2NyaXB0ID0gISF1aVNvdXJjZUNvZGUgJiYgdWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkgPT09
IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50ICYmICFzY3JpcHQuaXNJbmxpbmVT
Y3JpcHQoKTsKLSAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUgJiYgIWlzRHluYW1pY1Njcmlw
dCAmJiAhdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2Rlcy5nZXQodWlTb3VyY2VDb2RlKSkKLSAg
ICAgICAgICAgICAgICB0aGlzLl9iaW5kVUlTb3VyY2VDb2RlVG9TY3JpcHRzKHVpU291cmNlQ29k
ZSwgW3NjcmlwdF0pOworICAgICAgICBzY3JpcHQuc2V0U291cmNlTWFwcGluZyh0aGlzKTsKKyAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVVJU291cmNlQ29kZUZvclNj
cmlwdChzY3JpcHQpOworICAgICAgICBpZiAodWlTb3VyY2VDb2RlKSB7CisgICAgICAgICAgICB0
aGlzLl9iaW5kVUlTb3VyY2VDb2RlVG9TY3JpcHRzKHVpU291cmNlQ29kZSwgW3NjcmlwdF0pOwor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmICghdGhpcy5fdWlTb3Vy
Y2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSkKLSAgICAgICAgICAgIHRoaXMuX2Fk
ZE9yUmVwbGFjZVRlbXBvcmFyeVVJU291cmNlQ29kZShzY3JpcHQsIGlzRHluYW1pY1NjcmlwdCk7
CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRb
c2NyaXB0LnNjcmlwdElkXSk7CisgICAgICAgIHZhciBzY3JpcHRzID0gc2NyaXB0LmlzSW5saW5l
U2NyaXB0KCkgPyB0aGlzLl9zY3JpcHRzRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwsIHRy
dWUpIDogW3NjcmlwdF07CisgICAgICAgIGlmICh0aGlzLl9kZWxldGVUZW1wb3JhcnlVSVNvdXJj
ZUNvZGVGb3JTY3JpcHRzKHNjcmlwdHMpKQorICAgICAgICAgICAgdWlTb3VyY2VDb2RlID0gdGhp
cy5fZ2V0T3JDcmVhdGVUZW1wb3JhcnlVSVNvdXJjZUNvZGUoc2NyaXB0KTsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlNjcmlwdD59IHNjcmlw
dHMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIF9kZWxldGVUZW1wb3Jh
cnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRzOiBmdW5jdGlvbihzY3JpcHRzKQorICAgIHsKKyAgICAg
ICAgdmFyIHRlbXBvcmFyeVVJU291cmNlQ29kZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gc2NyaXB0
c1tpXTsKKyAgICAgICAgICAgIHRlbXBvcmFyeVVJU291cmNlQ29kZSA9IHRlbXBvcmFyeVVJU291
cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQu
c2NyaXB0SWRdOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29k
ZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF07CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRl
bXBvcmFyeVVJU291cmNlQ29kZSkKKyAgICAgICAgICAgIHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0
KCkucmVtb3ZlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlKHRlbXBvcmFyeVVJU291cmNlQ29kZSk7Cisg
ICAgICAgIHJldHVybiAhIXRlbXBvcmFyeVVJU291cmNlQ29kZTsKICAgICB9LAogCiAgICAgLyoq
CkBAIC0xMDIsMTQgKzEyNSwyMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5n
LnByb3RvdHlwZSA9IHsKICAgICBfYmluZFVJU291cmNlQ29kZVRvU2NyaXB0czogZnVuY3Rpb24o
dWlTb3VyY2VDb2RlLCBzY3JpcHRzKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc2Ny
aXB0cy5sZW5ndGgpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2Ny
aXB0c1tpXS5zY3JpcHRJZF0gPSB1aVNvdXJjZUNvZGU7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHNjcmlwdHNbaV0uc2V0U291
cmNlTWFwcGluZyh0aGlzKTsKLSAgICAgICAgfQogICAgICAgICB1aVNvdXJjZUNvZGUuaXNDb250
ZW50U2NyaXB0ID0gc2NyaXB0c1swXS5pc0NvbnRlbnRTY3JpcHQ7CiAgICAgICAgIHVpU291cmNl
Q29kZS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwotICAgICAgICB0aGlzLl9zY3JpcHRJZEZvclVJ
U291cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzY3JpcHRzWzBdLnNjcmlwdElkKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQK
KyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIF9pc0R5bmFtaWNTY3JpcHQ6
IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICB7CisgICAgICAgIGlmIChzY3JpcHQuaXNBbm9ueW1vdXNT
Y3JpcHQoKSB8fCBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgdmFyIGlubGluZVNjcmlwdHNXaXRoVGhlU2FtZVVSTCA9IHRoaXMuX3Nj
cmlwdHNGb3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCwgdHJ1ZSk7CisgICAgICAgIHJldHVy
biAhIWlubGluZVNjcmlwdHNXaXRoVGhlU2FtZVVSTC5sZW5ndGg7CiAgICAgfSwKIAogICAgIC8q
KgpAQCAtMTI5LDU0ICsxNjAsNDQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGlu
Zy5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5T
Y3JpcHR9IHNjcmlwdAotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEeW5hbWljU2NyaXB0Cisg
ICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0KICAgICAgKi8KLSAgICBf
YWRkT3JSZXBsYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlOiBmdW5jdGlvbihzY3JpcHQsIGlzRHlu
YW1pY1NjcmlwdCkKKyAgICBfZ2V0T3JDcmVhdGVUZW1wb3JhcnlVSVNvdXJjZUNvZGU6IGZ1bmN0
aW9uKHNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHRzID0gc2NyaXB0LmlzSW5saW5l
U2NyaXB0KCkgPyB0aGlzLl9zY3JpcHRzRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwsIHRy
dWUpIDogW3NjcmlwdF07Ci0KLSAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZTsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBv
bGRVSVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHRzW2ld
LnNjcmlwdElkXTsKLSAgICAgICAgICAgIGlmIChvbGRVSVNvdXJjZUNvZGUpCi0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoIW9sZFVJU291
cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLmdldChvbGRVSVNvdXJjZUNv
ZGUpKTsKKyAgICAgICAgdmFyIHRlbXBvcmFyeVVJU291cmNlQ29kZSA9IHRoaXMuX3RlbXBvcmFy
eVVJU291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF07CisgICAgICAgIGlmICh0
ZW1wb3JhcnlVSVNvdXJjZUNvZGUpCisgICAgICAgICAgICByZXR1cm4gdGVtcG9yYXJ5VUlTb3Vy
Y2VDb2RlOwogCisgICAgICAgIHZhciBzY3JpcHRzID0gc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkg
PyB0aGlzLl9zY3JpcHRzRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwsIHRydWUpIDogW3Nj
cmlwdF07CiAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBzY3JpcHQuaXNJbmxpbmVTY3Jp
cHQoKSA/IG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRl
cihzY3JpcHRzKSA6IHNjcmlwdDsKLSAgICAgICAgdmFyIHVybCA9IHNjcmlwdC5zb3VyY2VVUkw7
Ci0gICAgICAgIGlmIChpc0R5bmFtaWNTY3JpcHQpIHsKLSAgICAgICAgICAgIHZhciBuZXh0SW5k
ZXggPSB0aGlzLl9uZXh0RHluYW1pY1NjcmlwdEluZGV4Rm9yVVJMW3NjcmlwdC5zb3VyY2VVUkxd
IHx8IDE7Ci0gICAgICAgICAgICB1cmwgKz0gIiAoIiArIG5leHRJbmRleCArICIpIjsKLSAgICAg
ICAgICAgIHRoaXMuX25leHREeW5hbWljU2NyaXB0SW5kZXhGb3JVUkxbc2NyaXB0LnNvdXJjZVVS
TF0gPSBuZXh0SW5kZXggKyAxOwotICAgICAgICB9Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UodXJsLCBjb250ZW50UHJvdmlkZXIs
ICFzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSk7Ci0gICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291
cmNlQ29kZXMucHV0KHVpU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy5f
YmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyh1aVNvdXJjZUNvZGUsIHNjcmlwdHMpOwotCi0gICAg
ICAgIGlmICghc2NyaXB0LnNvdXJjZVVSTCkKLSAgICAgICAgICAgIHJldHVybiB1aVNvdXJjZUNv
ZGU7Ci0KLSAgICAgICAgaWYgKG9sZFVJU291cmNlQ29kZSkKLSAgICAgICAgICAgIHRoaXMuX3Vp
U291cmNlQ29kZVJlcGxhY2VkKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJj
ZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsKKyAgICAg
ICAgdmFyIGlzRHluYW1pY1NjcmlwdCA9IHRoaXMuX2lzRHluYW1pY1NjcmlwdChzY3JpcHQpOwor
ICAgICAgICB2YXIgdXJsID0gaXNEeW5hbWljU2NyaXB0ID8gIiIgOiBzY3JpcHQuc291cmNlVVJM
OworICAgICAgICB0ZW1wb3JhcnlVSVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFT
Y3JpcHRTb3VyY2UodXJsLCBjb250ZW50UHJvdmlkZXIsICFzY3JpcHQuaXNJbmxpbmVTY3JpcHQo
KSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdHNb
aV0uc2NyaXB0SWRdID0gdGVtcG9yYXJ5VUlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl9iaW5k
VUlTb3VyY2VDb2RlVG9TY3JpcHRzKHRlbXBvcmFyeVVJU291cmNlQ29kZSwgc2NyaXB0cyk7Cisg
ICAgICAgIHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0KCkuYWRkVGVtcG9yYXJ5VUlTb3VyY2VDb2Rl
KHRlbXBvcmFyeVVJU291cmNlQ29kZSk7CisgICAgICAgIHJldHVybiB0ZW1wb3JhcnlVSVNvdXJj
ZUNvZGU7CiAgICAgfSwKIAogICAgIF91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlOiBmdW5j
dGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCF0aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2Rl
KSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLmdldCh1aVNvdXJjZUNvZGUpKTsKLSAg
ICAgICAgaWYgKCF1aVNvdXJjZUNvZGUudXJsIHx8IHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29k
ZXMuZ2V0KHVpU291cmNlQ29kZSkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdWlTb3VyY2VD
b2RlLnVybCk7CisKKyAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzRm9yVUlTb3Vy
Y2VDb2RlKHVpU291cmNlQ29kZSk7CisgICAgICAgIGlmICghc2NyaXB0cy5sZW5ndGgpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2FkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNv
ZGUpOworCisgICAgICAgIHRoaXMuX2RlbGV0ZVRlbXBvcmFyeVVJU291cmNlQ29kZUZvclNjcmlw
dHMoc2NyaXB0cyk7CisgICAgICAgIHRoaXMuX2JpbmRVSVNvdXJjZUNvZGVUb1NjcmlwdHModWlT
b3VyY2VDb2RlLCBzY3JpcHRzKTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcmV0dXJuIHtB
cnJheS48V2ViSW5zcGVjdG9yLlNjcmlwdD59CiAgICAgICovCi0gICAgX2FkZFVJU291cmNlQ29k
ZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQorICAgIF9zY3JpcHRzRm9yVUlTb3VyY2VDb2RlOiBm
dW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICB2YXIgaXNJbmxpbmVTY3JpcHQ7
CiAgICAgICAgIHN3aXRjaCAodWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkpIHsKQEAgLTE4Nyw0
MSArMjA4LDE1IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgaXNJbmxpbmVTY3JpcHQgPSBmYWxzZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
cmV0dXJuIFtdOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3Jp
cHRzRm9yU291cmNlVVJMKHVpU291cmNlQ29kZS51cmwsIGlzSW5saW5lU2NyaXB0KTsKLSAgICAg
ICAgaWYgKCFzY3JpcHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2
YXIgb2xkVUlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0
c1swXS5zY3JpcHRJZF07Ci0gICAgICAgIHRoaXMuX2JpbmRVSVNvdXJjZUNvZGVUb1NjcmlwdHMo
dWlTb3VyY2VDb2RlLCBzY3JpcHRzKTsKLQotICAgICAgICBpZiAob2xkVUlTb3VyY2VDb2RlKSB7
Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVz
LmdldChvbGRVSVNvdXJjZUNvZGUpKTsKLSAgICAgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZVJl
cGxhY2VkKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlLmdldCh1aVNv
dXJjZUNvZGUpICYmICF0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLmdldCh1aVNvdXJjZUNv
ZGUpKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSBvbGRVSVNvdXJjZUNvZGUKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqLwotICAgIF91aVNvdXJjZUNvZGVSZXBs
YWNlZDogZnVuY3Rpb24ob2xkVUlTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGUpCi0gICAgewotICAg
ICAgICB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLnJlbW92ZShvbGRVSVNvdXJjZUNvZGUp
OwotICAgICAgICB0aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29kZS5yZW1vdmUob2xkVUlTb3Vy
Y2VDb2RlKTsKLSAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5yZXBsYWNlVUlTb3Vy
Y2VDb2RlKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3NjcmlwdHNGb3JTb3VyY2VVUkwodWlTb3VyY2VDb2RlLnVybCwgaXNJbmxpbmVTY3JpcHQp
OwogICAgIH0sCiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMu
X3VpU291cmNlQ29kZUZvclNjcmlwdElkID0ge307Ci0gICAgICAgIHRoaXMuX3NjcmlwdElkRm9y
VUlTb3VyY2VDb2RlLmNsZWFyKCk7Ci0gICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29k
ZXMuY2xlYXIoKTsKLSAgICAgICAgdGhpcy5fbmV4dER5bmFtaWNTY3JpcHRJbmRleEZvclVSTCA9
IHt9OworICAgICAgICB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9
OwogICAgICAgICB0aGlzLl9zY3JpcHRzID0gW107CiAgICAgfSwKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmlldy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmlldy5q
cwppbmRleCBmODBlNDk4YWEwODk3OTg0OTJmZDJiNTAwODA0YzAzYmFlMDllNWI1Li44ZTkwNzg4
ZjVjNzA1M2U4YTJiOTlmZjhjZjBmY2U5NDEyMTc3NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JldmlzaW9uSGlzdG9yeVZpZXcuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXZpc2lvbkhpc3RvcnlWaWV3LmpzCkBA
IC01NSw4ICs1NSw4IEBAIFdlYkluc3BlY3Rvci5SZXZpc2lvbkhpc3RvcnlWaWV3ID0gZnVuY3Rp
b24oKQogCiAgICAgV2ViSW5zcGVjdG9yLndvcmtzcGFjZS51aVNvdXJjZUNvZGVzKCkuZm9yRWFj
aChwb3B1bGF0ZVJldmlzaW9ucy5iaW5kKHRoaXMpKTsKICAgICBXZWJJbnNwZWN0b3Iud29ya3Nw
YWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuVUlTb3Vy
Y2VDb2RlQ29udGVudENvbW1pdHRlZCwgdGhpcy5fcmV2aXNpb25BZGRlZCwgdGhpcyk7Ci0gICAg
V2ViSW5zcGVjdG9yLndvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsIHRoaXMuX3VpU291
cmNlQ29kZVJlcGxhY2VkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNv
dXJjZUNvZGVSZW1vdmVkLCB0aGlzLl91aVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzKTsKKyAgICBX
ZWJJbnNwZWN0b3Iud29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlz
Ll91aVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3Iud29ya3NwYWNl
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdFdp
bGxSZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOwogCiAgICAgdGhpcy5fc3RhdHVzRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKQEAgLTE2MSwxNyArMTYxLDYgQEAgV2Vi
SW5zcGVjdG9yLlJldmlzaW9uSGlzdG9yeVZpZXcucHJvdG90eXBlID0gewogICAgIH0sCiAKICAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKLSAgICAgKi8K
LSAgICBfdWlTb3VyY2VDb2RlUmVwbGFjZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gZXZlbnQuZGF0YS5vbGRVSVNvdXJjZUNvZGU7Ci0gICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRh
dGEudWlTb3VyY2VDb2RlOwotICAgICAgICB0aGlzLl9yZW1vdmVVSVNvdXJjZUNvZGUob2xkVUlT
b3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy5fcmV2ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNlQ29k
ZSk7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICovCiAgICAgX3JlbW92ZVVJU291cmNlQ29kZTog
ZnVuY3Rpb24odWlTb3VyY2VDb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdC5qcwppbmRleCA5MWJmMjZkYzI3MTYyMWI0MzBhMzAyYjQ5YzVmNTliODAxNDJh
OTYxLi4yNzZhOWU5NmE0OTY5OWNlYjVhZjJmMWMyMmQ1ZmY3NWUwZjcxY2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwpAQCAtMzQsOCArMzQsOSBA
QAogICogQHBhcmFtIHtudW1iZXJ9IGVuZENvbHVtbgogICogQHBhcmFtIHtib29sZWFufSBpc0Nv
bnRlbnRTY3JpcHQKICAqIEBwYXJhbSB7c3RyaW5nPX0gc291cmNlTWFwVVJMCisgKiBAcGFyYW0g
e2Jvb2xlYW49fSBoYXNTb3VyY2VVUkwKICAqLwotV2ViSW5zcGVjdG9yLlNjcmlwdCA9IGZ1bmN0
aW9uKHNjcmlwdElkLCBzb3VyY2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUs
IGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2VNYXBVUkwpCitXZWJJbnNwZWN0b3Iu
U2NyaXB0ID0gZnVuY3Rpb24oc2NyaXB0SWQsIHNvdXJjZVVSTCwgc3RhcnRMaW5lLCBzdGFydENv
bHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQsIHNvdXJjZU1hcFVSTCwg
aGFzU291cmNlVVJMKQogewogICAgIHRoaXMuc2NyaXB0SWQgPSBzY3JpcHRJZDsKICAgICB0aGlz
LnNvdXJjZVVSTCA9IHNvdXJjZVVSTDsKQEAgLTQ1LDYgKzQ2LDcgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdCA9IGZ1bmN0aW9uKHNjcmlwdElkLCBzb3VyY2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1
bW4sIGVuZEwKICAgICB0aGlzLmVuZENvbHVtbiA9IGVuZENvbHVtbjsKICAgICB0aGlzLmlzQ29u
dGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKICAgICB0aGlzLnNvdXJjZU1hcFVSTCA9IHNv
dXJjZU1hcFVSTDsKKyAgICB0aGlzLmhhc1NvdXJjZVVSTCA9IGhhc1NvdXJjZVVSTDsKICAgICB0
aGlzLl9sb2NhdGlvbnMgPSBbXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCmluZGV4IDJlZWVmNzNjN2Q1YTll
OTQ1ZTdlNjZiZjA1NDIyNzg4YmZhZmU2YjkuLmNlYjRkZWNiMmFmYmIwODhjNmE5NWRjNjY0OWY5
OWMyZmRjNjAyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c05hdmlnYXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMKQEAgLTEzMCwxNyArMTMwLDYgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IG9sZFVJU291cmNlQ29kZQot
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0g
ICAgICovCi0gICAgcmVwbGFjZVVJU291cmNlQ29kZTogZnVuY3Rpb24ob2xkVUlTb3VyY2VDb2Rl
LCB1aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB0aGlzLl9zY3JpcHRzVmlldy5yZXBsYWNl
VUlTb3VyY2VDb2RlKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKLSAgICAgICAgdGhp
cy5fY29udGVudFNjcmlwdHNWaWV3LnJlcGxhY2VVSVNvdXJjZUNvZGUob2xkVUlTb3VyY2VDb2Rl
LCB1aVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9zbmlwcGV0c1ZpZXcucmVwbGFjZVVJU291
cmNlQ29kZShvbGRVSVNvdXJjZUNvZGUsIHVpU291cmNlQ29kZSk7Ci0gICAgfSwKLQotICAgIC8q
KgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2Rl
CiAgICAgICogQHBhcmFtIHtmdW5jdGlvbihib29sZWFuKT19IGNhbGxiYWNrCiAgICAgICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpz
CmluZGV4IDkyZWViOWEyNzFiNjJkN2U2ZTI1ZmQwMDk4NTU0ZTc3ZTUwZGYyNjAuLjg5NjlmZWQ0
ZGRhNmNjZTI4MWY3MGE4M2FkYWQzODMyODk0NWNjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0xOTQsOCArMTk0LDgg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKHdvcmtzcGFjZUZvclRlc3Qp
CiAgICAgV2ViSW5zcGVjdG9yLmVuZEJhdGNoVXBkYXRlKCk7CiAKICAgICB0aGlzLl93b3Jrc3Bh
Y2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZl
bnRzLlVJU291cmNlQ29kZUFkZGVkLCB0aGlzLl91aVNvdXJjZUNvZGVBZGRlZCwgdGhpcyk7Ci0g
ICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBsYWNlZCwgdGhpcy5fdWlTb3VyY2VD
b2RlUmVwbGFjZWQsIHRoaXMpOwogICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlUmVt
b3ZlZCwgdGhpcy5fdWlTb3VyY2VDb2RlUmVtb3ZlZCwgdGhpcyk7CisgICAgdGhpcy5fd29ya3Nw
YWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2
ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzLl91aVNvdXJjZUNvZGVSZW1v
dmVkLCB0aGlzKTsKICAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuV29ya3NwYWNlLkV2ZW50cy5Qcm9qZWN0V2lsbFJlc2V0LCB0aGlzLl9yZXNldC5iaW5k
KHRoaXMpLCB0aGlzKTsKIAogICAgIFdlYkluc3BlY3Rvci5hZHZhbmNlZFNlYXJjaENvbnRyb2xs
ZXIucmVnaXN0ZXJTZWFyY2hTY29wZShuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNTZWFyY2hTY29w
ZSh0aGlzLl93b3Jrc3BhY2UpKTsKQEAgLTQ4MiwxOSArNDgyLDYgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHNvdXJjZUZyYW1lLmRldGFjaCgpOwog
ICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZl
bnQKLSAgICAgKi8KLSAgICBfdWlTb3VyY2VDb2RlUmVwbGFjZWQ6IGZ1bmN0aW9uKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YS5vbGRVSVNvdXJjZUNvZGU7Ci0gICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9
ICovIGV2ZW50LmRhdGEudWlTb3VyY2VDb2RlOwotCi0gICAgICAgIHRoaXMuX25hdmlnYXRvci5y
ZXBsYWNlVUlTb3VyY2VDb2RlKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKLSAgICAg
ICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLnJlcGxhY2VGaWxlKG9sZFVJU291cmNlQ29kZSwgdWlT
b3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy5fcmVtb3ZlU291cmNlRnJhbWUob2xkVUlTb3VyY2VD
b2RlKTsKLSAgICB9LAotCiAgICAgX2NsZWFyQ3VycmVudEV4ZWN1dGlvbkxpbmU6IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29u
dGFpbmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0
b3JDb250YWluZXIuanMKaW5kZXggYWQwNTc2ODEzYjJiMDJlNWQxMGVhZTFjNWJiNGU4N2FjMTBi
MWY3NS4uOTNmZTk5YjRkMDQ1YTU0NmUzMDMwMWFiMjdmNGQ2ZTk0MDQyODE4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250YWlu
ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0
b3JDb250YWluZXIuanMKQEAgLTMxOSwzMCArMzE5LDYgQEAgV2ViSW5zcGVjdG9yLlRhYmJlZEVk
aXRvckNvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gb2xkVUlTb3VyY2VDb2RlCi0gICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8K
LSAgICByZXBsYWNlRmlsZTogZnVuY3Rpb24ob2xkVUlTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGUp
Ci0gICAgewotICAgICAgICB2YXIgdGFiSWQgPSB0aGlzLl90YWJJZHMuZ2V0KG9sZFVJU291cmNl
Q29kZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIXRhYklkKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKLSAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVzW3RoaXMuX3RhYklkcy5nZXQo
b2xkVUlTb3VyY2VDb2RlKV0KLSAgICAgICAgdGhpcy5fdGFiSWRzLnJlbW92ZShvbGRVSVNvdXJj
ZUNvZGUpOwotICAgICAgICB0aGlzLl90YWJJZHMucHV0KHVpU291cmNlQ29kZSwgdGFiSWQpOwot
ICAgICAgICB0aGlzLl9maWxlc1t0YWJJZF0gPSB1aVNvdXJjZUNvZGU7Ci0KLSAgICAgICAgdGhp
cy5fdGFiYmVkUGFuZS5jaGFuZ2VUYWJUaXRsZSh0YWJJZCwgdGhpcy5fdGl0bGVGb3JGaWxlKHVp
U291cmNlQ29kZSkpOwotICAgICAgICB0aGlzLl90YWJiZWRQYW5lLmNoYW5nZVRhYlZpZXcodGFi
SWQsIHRoaXMuX2RlbGVnYXRlLnZpZXdGb3JGaWxlKHVpU291cmNlQ29kZSkpOwotICAgICAgICB0
aGlzLl90YWJiZWRQYW5lLmNoYW5nZVRhYlRvb2x0aXAodGFiSWQsIHRoaXMuX3Rvb2x0aXBGb3JG
aWxlKHVpU291cmNlQ29kZSkpOwotCi0gICAgICAgIHRoaXMuX3JlbW92ZVVJU291cmNlQ29kZUxp
c3RlbmVycyhvbGRVSVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9hZGRVSVNvdXJjZUNvZGVM
aXN0ZW5lcnModWlTb3VyY2VDb2RlKTsKLSAgICB9LAotCi0gICAgLyoqCiAgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKi8KICAgICBf
YWRkVUlTb3VyY2VDb2RlTGlzdGVuZXJzOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCmluZGV4
IDlhYmZlYjY4ZDMzMjlkZTEyODI1NWY5MDA1OThjYjdiYjIxMGQxODUuLjI4ZmIwZjVhZTI0MmVk
ZjhmOTZmMzg0NzJkYzU5M2I2MzBkMmJkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCkBAIC01NTEsNyArNTUxLDggQEAgV2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzID0gewogICAgIFVJU291cmNlQ29kZUFkZGVk
OiAiVUlTb3VyY2VDb2RlQWRkZWQiLAotICAgIFVJU291cmNlQ29kZVJlcGxhY2VkOiAiVUlTb3Vy
Y2VDb2RlUmVwbGFjZWQiLAorICAgIFRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkOiAiVGVtcG9y
YXJ5VUlTb3VyY2VDb2RlQWRkZWQiLAorICAgIFRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQ6
ICJUZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkIiwKICAgICBVSVNvdXJjZUNvZGVSZW1vdmVk
OiAiVUlTb3VyY2VDb2RlUmVtb3ZlZCIKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qcwppbmRleCAwNTA4N2M4ZDU4YmQ4MmE5ZmM3MTAyYmZi
ZjYzODQ1OTY4ZmM4NzI1Li4yZjI1ODI5OTI1ODg5ZDczNWRjMDQxYzRjNmExOTk2MDBmZThjZTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFj
ZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5q
cwpAQCAtNzcsMTYgKzc3LDExIEBAIFdlYkluc3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZSA9IHsK
ICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlfSBvbGRVSVNvdXJjZUNvZGUKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGV9IHVpU291cmNlQ29kZQogICAgICAqLwotICAgIHJlcGxhY2VVSVNvdXJjZUNvZGU6IGZ1
bmN0aW9uKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKQorICAgIGFkZFRlbXBvcmFyeVVJ
U291cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgdGhpcy5f
dWlTb3VyY2VDb2Rlcy5zcGxpY2UodGhpcy5fdWlTb3VyY2VDb2Rlcy5pbmRleE9mKG9sZFVJU291
cmNlQ29kZSksIDEpOwotICAgICAgICBpZiAodGhpcy5fdWlTb3VyY2VDb2Rlcy5pbmRleE9mKHVp
U291cmNlQ29kZSkgPT09IC0xKQotICAgICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2Rlcy5wdXNo
KHVpU291cmNlQ29kZSk7Ci0gICAgICAgIHZhciBkYXRhID0geyBvbGRVSVNvdXJjZUNvZGU6IG9s
ZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlOiB1aVNvdXJjZUNvZGUgfTsKLSAgICAgICAgdGhp
cy5fd29ya3NwYWNlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCBkYXRhKTsKKyAgICAg
ICAgdGhpcy5fd29ya3NwYWNlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkLCB1
aVNvdXJjZUNvZGUpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTk5LDYgKzk0LDE0IEBAIFdlYklu
c3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKi8K
KyAgICByZW1vdmVUZW1wb3JhcnlVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkK
KyAgICB7CisgICAgICAgIHRoaXMuX3dvcmtzcGFjZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJj
ZUNvZGVSZW1vdmVkLCB1aVNvdXJjZUNvZGUpOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gdXJsCiAgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGV9CiAgICAgICovCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTZiZDE4YjdhODI0MTI0MzY5YThmYjRmODAzYzVjNzIx
Yzk3MjQwNC4uNDZmZmFlOGQ3OGRjZGVlMWFlMGFjOTJjMTBmNzI5NWYwMTVjMmE3OCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMzIEBACisyMDEyLTA5LTI2ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgVUlTb3VyY2VDb2RlIGNy
ZWF0aW9uIG91dCBmcm9tIFJlc291cmNlU2NyaXB0TWFwcGluZy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NjgwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jr
c3BhY2UtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfV29ya3NwYWNlVGVzdC5JbnNwZWN0
b3JUZXN0LmNyZWF0ZVdvcmtzcGFjZSk6CisgICAgICAgIChpbml0aWFsaXplX1dvcmtzcGFjZVRl
c3QuSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRk
ZWRFdmVudC50ZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZCk6CisgICAgICAgIChpbml0aWFsaXpl
X1dvcmtzcGFjZVRlc3QuSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlT
b3VyY2VDb2RlQWRkZWRFdmVudCk6CisgICAgICAgIChpbml0aWFsaXplX1dvcmtzcGFjZVRlc3Qu
SW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlUmVtb3Zl
ZEV2ZW50LnRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAoaW5pdGlhbGl6
ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVRlbXBvcmFyeVVJ
U291cmNlQ29kZVJlbW92ZWRFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2Jy
ZWFrcG9pbnQtbWFuYWdlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9keW5hbWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy5odG1sOgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sOgorCisyMDEyLTA5LTIwICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBy
b3ZpZGUgYSB3YXkgdG8gZGlzdGluZ3Vpc2ggc2NyaXB0cyBoYXZpbmcgc291cmNlVVJMIGZyb20g
c3RhbmRhbG9uZSBzY3JpcHRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTcyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtdXJsLWNvbW1lbnQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtdXJsLWNvbW1lbnQu
aHRtbDoKKwogMjAxMi0wOS0yNiAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcwppbmRleCA3
YzI1N2Y2MDRjMzYxOWI4MWQyZDNkY2EzZDNkNGQ2NWExYzlhNmM1Li5mNGRiYzA5OWRlNTE2Yjgy
NDMzYzJjNGYxNTg5ZDFjYmYwNTQ3NGVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcwpAQCAtNSwyMSArNSw5IEBAIEluc3BlY3Rv
clRlc3QuY3JlYXRlV29ya3NwYWNlID0gZnVuY3Rpb24oKQogewogICAgIEluc3BlY3RvclRlc3Qu
dGVzdFdvcmtzcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7CiAgICAgSW5zcGVj
dG9yVGVzdC50ZXN0V29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwgSW5zcGVjdG9yVGVzdC5f
ZGVmYXVsdFVJU291cmNlQ29kZVByb3ZpZGVyRXZlbnRIYW5kbGVyKTsKLSAgICBJbnNwZWN0b3JU
ZXN0LnRlc3RXb3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCBJbnNwZWN0b3JUZXN0Ll9k
ZWZhdWx0VUlTb3VyY2VDb2RlUHJvdmlkZXJFdmVudEhhbmRsZXIpOwogICAgIEluc3BlY3RvclRl
c3QudGVzdFdvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlUmVtb3ZlZCwgSW5zcGVjdG9yVGVzdC5fZGVm
YXVsdFVJU291cmNlQ29kZVByb3ZpZGVyRXZlbnRIYW5kbGVyKTsKLX0KLQotSW5zcGVjdG9yVGVz
dC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlUmVwbGFjZWRFdmVudCA9IGZ1bmN0aW9uKGNh
bGxiYWNrKQotewotICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZS5yZW1vdmVFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VD
b2RlUmVwbGFjZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2
ZW50SGFuZGxlcik7Ci0gICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNv
ZGVSZXBsYWNlZCwgdWlTb3VyY2VDb2RlUmVwbGFjZWQpOwotCi0gICAgZnVuY3Rpb24gdWlTb3Vy
Y2VDb2RlUmVwbGFjZWQoZXZlbnQpCi0gICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LnRlc3RX
b3Jrc3BhY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJv
dmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCB1aVNvdXJjZUNvZGVSZXBsYWNlZCk7
Ci0gICAgICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFj
ZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2ZW50SGFuZGxl
cik7Ci0gICAgICAgIGNhbGxiYWNrKGV2ZW50LmRhdGEudWlTb3VyY2VDb2RlLCBldmVudC5kYXRh
Lm9sZFVJU291cmNlQ29kZSk7Ci0gICAgfQorICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFj
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVu
dHMuVGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNv
dXJjZUNvZGVQcm92aWRlckV2ZW50SGFuZGxlcik7CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29y
a3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVy
LkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkLCBJbnNwZWN0b3JUZXN0Ll9kZWZh
dWx0VUlTb3VyY2VDb2RlUHJvdmlkZXJFdmVudEhhbmRsZXIpOwogfQogCiBJbnNwZWN0b3JUZXN0
LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50ID0gZnVuY3Rpb24oY2FsbGJh
Y2spCkBAIC0zNSw2ICsyMywzMiBAQCBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNv
dXJjZUNvZGVBZGRlZEV2ZW50ID0gZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgfQogfQogCitJbnNw
ZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZEV2ZW50
ID0gZnVuY3Rpb24oY2FsbGJhY2spCit7CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNl
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2
ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZCwgSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJ
U291cmNlQ29kZVByb3ZpZGVyRXZlbnRIYW5kbGVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LnRlc3RX
b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlk
ZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkLCB0ZW1wb3JhcnlVSVNvdXJjZUNv
ZGVBZGRlZCk7CisKKyAgICBmdW5jdGlvbiB0ZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZChldmVu
dCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZS5yZW1vdmVFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVGVtcG9y
YXJ5VUlTb3VyY2VDb2RlQWRkZWQsIHRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRl
ZCwgSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJU291cmNlQ29kZVByb3ZpZGVyRXZlbnRIYW5kbGVy
KTsKKyAgICAgICAgY2FsbGJhY2soZXZlbnQuZGF0YSk7CisgICAgfQorfQorCitJbnNwZWN0b3JU
ZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkRXZlbnQgPSBm
dW5jdGlvbihjYWxsYmFjaykKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRz
LlRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNv
dXJjZUNvZGVQcm92aWRlckV2ZW50SGFuZGxlcik7CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29y
a3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVy
LkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkLCB0ZW1wb3JhcnlVSVNvdXJjZUNv
ZGVSZW1vdmVkKTsKKworICAgIGZ1bmN0aW9uIHRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQo
ZXZlbnQpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRl
bXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQsIHRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNl
Q29kZVJlbW92ZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2
ZW50SGFuZGxlcik7CisgICAgICAgIGNhbGxiYWNrKGV2ZW50LmRhdGEpOworICAgIH0KK30KKwog
SW5zcGVjdG9yVGVzdC5hZGRNb2NrVUlTb3VyY2VDb2RlVG9Xb3Jrc3BhY2UgPSBmdW5jdGlvbih1
cmwsIHR5cGUsIGNvbnRlbnQpCiB7CiAgICAgdmFyIGlzRG9jdW1lbnQgPSB0eXBlID09PSBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci1leHBlY3RlZC50
eHQKaW5kZXggYWVmMTY4YTdlNGIxMGY1NzZiOTY3MmUyYjcyNDgyNmZmM2UxMWY1ZS4uMzM4ODY3
MDEyODE3OTM5ZjY0MmYzMWE5ZWJmYWVlYTRlZWQ0ZDNhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci1leHBl
Y3RlZC50eHQKQEAgLTEwMyw2ICsxMDMsMzcgQEAgUnVubmluZzogdGVzdFJlc3RvcmVCcmVha3Bv
aW50c1R3aWNlCiAgICAgZGVidWdnZXJNb2RlbC5yZW1vdmVCcmVha3BvaW50KGEuanM6MTApCiAg
ICAgYnJlYWtwb2ludFJlbW92ZWQoYS5qcywgMjApCiAKK1J1bm5pbmc6IHRlc3RSZXN0b3JlQnJl
YWtwb2ludHNBZnRlclRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQKKyAgQ3JlYXRlZCBicmVh
a3BvaW50cyBtYW5hZ2VyCisgIER1bXBpbmcgU3RvcmFnZQorICAgIGEuanM6MTAgZW5hYmxlZDp0
cnVlIGNvbmRpdGlvbjpmb28gPT0gYmFyCisgICAgYS5qczoyMCBlbmFibGVkOmZhbHNlIGNvbmRp
dGlvbjoKKyAgICBiLmpzOjMgZW5hYmxlZDp0cnVlIGNvbmRpdGlvbjoKKyAgQWRkaW5nIHRlbXBv
cmFyeSBVSVNvdXJjZUNvZGU6IGEuanMpCisgICAgZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50
KGEuanM6MTA6Zm9vID09IGJhcikKKyAgICBicmVha3BvaW50QWRkZWQoYS5qcywgMTAsIGZvbyA9
PSBiYXIsIHRydWUpCisgICAgTG9jYXRpb24gY3JlYXRlZDogYS5qczoxMAorICAgIGJyZWFrcG9p
bnRBZGRlZChhLmpzLCAyMCwgLCBmYWxzZSkKKyAgQWRkaW5nIFVJU291cmNlQ29kZTogYS5qcykK
KyAgUmVtb3ZpbmcgdGVtcG9yYXJ5IFVJU291cmNlQ29kZTogYS5qcykKKyAgICBicmVha3BvaW50
UmVtb3ZlZChhLmpzLCAxMCkKKyAgICBMb2NhdGlvbiBkaXNwb3NlZDogYS5qczoxMAorICAgIGRl
YnVnZ2VyTW9kZWwucmVtb3ZlQnJlYWtwb2ludChhLmpzOjEwKQorICAgIGJyZWFrcG9pbnRSZW1v
dmVkKGEuanMsIDIwKQorICAgIGRlYnVnZ2VyTW9kZWwuc2V0QnJlYWtwb2ludChhLmpzOjEwOmZv
byA9PSBiYXIpCisgICAgYnJlYWtwb2ludEFkZGVkKGEuanMsIDEwLCBmb28gPT0gYmFyLCB0cnVl
KQorICAgIExvY2F0aW9uIGNyZWF0ZWQ6IGEuanM6MTAKKyAgICBicmVha3BvaW50QWRkZWQoYS5q
cywgMjAsICwgZmFsc2UpCisgIER1bXBpbmcgU3RvcmFnZQorICAgIGEuanM6MTAgZW5hYmxlZDp0
cnVlIGNvbmRpdGlvbjpmb28gPT0gYmFyCisgICAgYS5qczoyMCBlbmFibGVkOmZhbHNlIGNvbmRp
dGlvbjoKKyAgICBiLmpzOjMgZW5hYmxlZDp0cnVlIGNvbmRpdGlvbjoKKyAgUmVzZXR0aW5nIGJy
ZWFrcG9pbnQgbWFuYWdlcgorICAgIGJyZWFrcG9pbnRSZW1vdmVkKGEuanMsIDEwKQorICAgIExv
Y2F0aW9uIGRpc3Bvc2VkOiBhLmpzOjEwCisgICAgZGVidWdnZXJNb2RlbC5yZW1vdmVCcmVha3Bv
aW50KGEuanM6MTApCisgICAgYnJlYWtwb2ludFJlbW92ZWQoYS5qcywgMjApCisKIFJ1bm5pbmc6
IHRlc3RSZW1vdmVCcmVha3BvaW50cwogICBDcmVhdGVkIGJyZWFrcG9pbnRzIG1hbmFnZXIKICAg
RHVtcGluZyBTdG9yYWdlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKaW5kZXggNDExMDA0YzFkYmJiYzUzMTJjNzMxYzA0
YjZkMmE3ODFjZWNhM2MzZC4uMTA2N2Y0MjQwZDA2YmE0MzhlOGVkNGE5ZDI0YzRmMDZkNDk0NmUz
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQt
bWFuYWdlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50LW1hbmFnZXIuaHRtbApAQCAtMTA4LDYgKzEwOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
IHsKICAgICB9CiAKKyAgICB2YXIgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlcyA9IHt9OwogICAgIFdv
cmtzcGFjZU1vY2sucHJvdG90eXBlID0gewogICAgICAgICBfYWRkVUlTb3VyY2VDb2RlOiBmdW5j
dGlvbih1cmwpCiAgICAgICAgIHsKQEAgLTExOCw2ICsxMTksMjkgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgICAgICByZXR1cm4gdWlTb3VyY2VDb2RlOwogICAgICAgICB9LAogCisgICAgICAg
IF9hZGRUZW1wb3JhcnlVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVybCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNv
dXJjZSh1cmwsIG51bGwsIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAgIHVpU291cmNlQ29kZS5x
cSA9IDM0NTsKKyAgICAgICAgICAgIHVpU291cmNlQ29kZS5zZXRTb3VyY2VNYXBwaW5nKGRlZmF1
bHRNYXBwaW5nKTsKKyAgICAgICAgICAgIHVpU291cmNlQ29kZXNbdXJsXSA9IHVpU291cmNlQ29k
ZTsKKyAgICAgICAgICAgIHRlbXBvcmFyeVVJU291cmNlQ29kZXNbdXJsXSA9IHVpU291cmNlQ29k
ZTsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWQs
IHVpU291cmNlQ29kZSk7CisgICAgICAgICAgICByZXR1cm4gdWlTb3VyY2VDb2RlOworICAgICAg
ICB9LAorCisgICAgICAgIF9yZW1vdmVUZW1wb3JhcnlVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVy
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJj
ZUNvZGVSZW1vdmVkLCB0ZW1wb3JhcnlVSVNvdXJjZUNvZGVzW3VybF0pOworICAgICAgICAgICAg
ZGVsZXRlIHRlbXBvcmFyeVVJU291cmNlQ29kZXNbdXJsXTsKKyAgICAgICAgICAgIGRlbGV0ZSB1
aVNvdXJjZUNvZGVzW3VybF07CisgICAgICAgIH0sCisKKyAgICAgICAgdWlTb3VyY2VDb2Rlczog
ZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh1
aVNvdXJjZUNvZGVzKTsKKyAgICAgICAgfSwKKwogICAgICAgICByZXNldDogZnVuY3Rpb24oKQog
ICAgICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICBSZXNldHRp
bmcgd29ya3NwYWNlLiIpOwpAQCAtMTYwLDYgKzE4NCwxOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgcmV0dXJuIGJyZWFrcG9pbnRNYW5hZ2VyLl93b3Jrc3BhY2UuX2FkZFVJU291cmNlQ29k
ZSh1cmwpOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIGFkZFRlbXBvcmFyeVVJU291cmNlQ29kZShi
cmVha3BvaW50TWFuYWdlciwgdXJsKQorICAgIHsKKyAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIu
X2RlYnVnZ2VyTW9kZWwuX2FkZFNjcmlwdCh1cmwsIHVybCk7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCIgIEFkZGluZyB0ZW1wb3JhcnkgVUlTb3VyY2VDb2RlOiAiICsgdXJsICsg
IikiKTsKKyAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnRNYW5hZ2VyLl93b3Jrc3BhY2UuX2FkZFRl
bXBvcmFyeVVJU291cmNlQ29kZSh1cmwpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlbW92ZVRl
bXBvcmFyeVVJU291cmNlQ29kZShicmVha3BvaW50TWFuYWdlciwgdXJsKQorICAgIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgUmVtb3ZpbmcgdGVtcG9yYXJ5IFVJU291cmNl
Q29kZTogIiArIHVybCArICIpIik7CisgICAgICAgIGJyZWFrcG9pbnRNYW5hZ2VyLl93b3Jrc3Bh
Y2UuX3JlbW92ZVRlbXBvcmFyeVVJU291cmNlQ29kZSh1cmwpOworICAgIH0KKwogICAgIGZ1bmN0
aW9uIGNyZWF0ZUJyZWFrcG9pbnQodWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIsIGNvbmRpdGlv
biwgZW5hYmxlZCkKICAgICB7CiAgICAgICAgIHJldHVybiB7IHNvdXJjZUZpbGVJZDogdWlTb3Vy
Y2VDb2RlSWQsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbmRpdGlvbjogY29uZGl0aW9uLCBl
bmFibGVkOiBlbmFibGVkIH07CkBAIC0yNjQsNiArMzAxLDE1IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICAgICAgcmVzZXRCcmVha3BvaW50TWFuYWdlcihicmVha3BvaW50TWFuYWdlciwgbmV4
dCk7CiAgICAgICAgIH0sCiAKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlc3RvcmVCcmVha3BvaW50
c0FmdGVyVGVtcG9yYXJ5VUlTb3VyY2VDb2RlUmVtb3ZlZChuZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgYnJlYWtwb2ludE1hbmFnZXIgPSBjcmVhdGVCcmVha3BvaW50TWFuYWdlcihz
ZXJpYWxpemVkQnJlYWtwb2ludHMpOworICAgICAgICAgICAgYWRkVGVtcG9yYXJ5VUlTb3VyY2VD
b2RlKGJyZWFrcG9pbnRNYW5hZ2VyLCAiYS5qcyIpOworICAgICAgICAgICAgYWRkVUlTb3VyY2VD
b2RlKGJyZWFrcG9pbnRNYW5hZ2VyLCAiYS5qcyIpOworICAgICAgICAgICAgcmVtb3ZlVGVtcG9y
YXJ5VUlTb3VyY2VDb2RlKGJyZWFrcG9pbnRNYW5hZ2VyLCAiYS5qcyIpOworICAgICAgICAgICAg
cmVzZXRCcmVha3BvaW50TWFuYWdlcihicmVha3BvaW50TWFuYWdlciwgbmV4dCk7CisgICAgICAg
IH0sCisKICAgICAgICAgZnVuY3Rpb24gdGVzdFJlbW92ZUJyZWFrcG9pbnRzKG5leHQpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHZhciBicmVha3BvaW50TWFuYWdlciA9IGNyZWF0ZUJyZWFrcG9p
bnRNYW5hZ2VyKHNlcmlhbGl6ZWRCcmVha3BvaW50cyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWctZXhwZWN0ZWQu
dHh0CmluZGV4IGY4OWViNDgwYmRlOGJhNDRjZjJkZjkwODI5YzlmOGVmOTA1YWJmZmQuLjVkNTk5
MWMyMjZjZDNiZGYwOWVjOWUxYzI5MjQ3NmI2YTA0YzVjMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWctZXhw
ZWN0ZWQudHh0CkBAIC05LDEyICs5LDEyIEBAIHNjcmlwdDI6IExheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWcuaHRtbAogSXMgYW5vbnltb3VzOmZhbHNlCiBJ
cyBpbmxpbmUgc2NyaXB0OmZhbHNlCiBEdW1waW5nIHVpU291cmNlQ29kZXM6Ci1VSVNvdXJjZUNv
ZGU6IExheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWcuaHRt
bCAoMSkKK1VJU291cmNlQ29kZTogCiBVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUKIFVJ
U291cmNlQ29kZSBpcyBjb250ZW50IHNjcmlwdDogZmFsc2UKIE1pbWUgdHlwZTogdGV4dC9qYXZh
c2NyaXB0CiBVSVNvdXJjZUNvZGUgY29udGVudDogZnVuY3Rpb24gZm9vKCkgeyB9Ci1VSVNvdXJj
ZUNvZGU6IExheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWcu
aHRtbCAoMikKK1VJU291cmNlQ29kZTogCiBVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUK
IFVJU291cmNlQ29kZSBpcyBjb250ZW50IHNjcmlwdDogZmFsc2UKIE1pbWUgdHlwZTogdGV4dC9q
YXZhc2NyaXB0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVz
b3VyY2Utc2NyaXB0LW1hcHBpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy5odG1sCmluZGV4IDY5ZTdkNWE5Y2UzMDBmODFlY2Yw
NWEzZTZjYjNhYWRmMGFlOWMxNTMuLjAzZjRjMmRkMzUwOGExZGQ1MTQ5MzExMTg1ZDE4NzRkMGY4
MzllOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJj
ZS1zY3JpcHQtbWFwcGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy5odG1sCkBAIC0yNSwzMiArMjUsMzQgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNv
ZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5nIHNjcmlwdCBmb3IgcGVuZGluZyByZXF1ZXN0LiIpOwog
ICAgICAgICAgICAgICAgIHNjcmlwdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jayh1
cmwsIDAsIDAsIHRydWUsICI8Y29udGVudCBzY3JpcHQgc291cmNlPiIpOwogICAgICAgICAgICAg
ICAgIHJlc291cmNlU2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2NyaXB0KTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRG
b3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHRlbXBvcmFyeVVJU291
cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBzY3JpcHQucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24oMCwgNSk7CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUFkZGVkKHVp
U291cmNlQ29kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdC5yYXdMb2NhdGlvblRv
VUlMb2NhdGlvbigwLCA1KSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jh
d0xvY2F0aW9uKHNjcmlwdCwgMTAsIDAsIHVpU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2Nh
dGlvbigxMCwgMCkpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNl
Q29kZSh1aVNvdXJjZUNvZGUsIHN0ZXAyKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZW1w
b3JhcnlVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJj
ZUNvZGUsIDAsIDUsIHNjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDEw
LCAwLCB1aVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTAsIDApKTsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29k
ZSwgc3RlcDIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZnVuY3Rpb24gc3RlcDIoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJBZGRpbmcgdWlTb3VyY2VDb2RlIGZvciBmaW5pc2hlZCByZXNv
dXJjZS4iKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VV
SVNvdXJjZUNvZGVSZXBsYWNlZEV2ZW50KHVpU291cmNlQ29kZVJlcGxhY2VkV2l0aFJlc291cmNl
KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJj
ZUNvZGVBZGRlZEV2ZW50KGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkRXZlbnQo
ZnVuY3Rpb24oKSB7IH0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldv
cmtzcGFjZVVJU291cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VDb2RlQWRkZWQpOwogICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkTW9ja1VJU291cmNlQ29kZVRvV29ya3NwYWNlKHVy
bCwgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCAiPGNvbnRlbnQgc2NyaXB0IHJl
c291cmNlIGNvbnRlbnQ+Iik7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9u
IHVpU291cmNlQ29kZVJlcGxhY2VkV2l0aFJlc291cmNlKHVpU291cmNlQ29kZSwgb2xkVUlTb3Vy
Y2VDb2RlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hl
Y2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMCwgNSwgc2NyaXB0LnJhd0xvY2F0aW9uVG9VSUxv
Y2F0aW9uKDAsIDUpKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9j
YXRpb24oc2NyaXB0LCAxMCwgMCwgdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9u
KDEwLCAwKSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2Rl
KHVpU291cmNlQ29kZSwgbmV4dCk7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gdWlTb3VyY2VD
b2RlQWRkZWQodWlTb3VyY2VDb2RlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAwLCA1LCBz
Y3JpcHQucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxMCwgMCwgdWlTb3VyY2VD
b2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7CisgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIG5leHQpOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSwKIApAQCAtOTgsNDcgKzEw
MCw1MCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtz
cGFjZVVJU291cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VDb2RlQWRkZWQpOwogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZGRpbmcgZmlyc3Qgc2NyaXB0IGZvciBw
ZW5kaW5nIHJlcXVlc3QuIik7CiAgICAgICAgICAgICAgICAgc2NyaXB0MSA9IEluc3BlY3RvclRl
c3QuY3JlYXRlU2NyaXB0TW9jayh1cmwsIDAsIDEwLCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDE+
Iik7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFkZFNjcmlwdChzY3Jp
cHQxKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZEV2
ZW50KHRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBzY3JpcHQx
LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDUpOwogCi0gICAgICAgICAgICBmdW5jdGlvbiB1
aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAwLCA1LCBz
Y3JpcHQxLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDUpKTsKLSAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgMTAsIDAsIHVpU291cmNlQ29k
ZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxMCwgMCkpOwotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIHN0ZXAyKTsKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiB0ZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNo
ZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdDEucmF3TG9jYXRpb25Ub1VJ
TG9jYXRpb24oMCwgNSkpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNr
UmF3TG9jYXRpb24oc2NyaXB0MSwgMTAsIDAsIHVpU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdM
b2NhdGlvbigxMCwgMCkpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBV
SVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBzdGVwMik7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyBzZWNvbmQg
c2NyaXB0IGZvciBwZW5kaW5nIHJlcXVlc3QuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlUmVwbGFjZWRFdmVudCh1aVNvdXJjZUNv
ZGVSZXBsYWNlZCk7CiAgICAgICAgICAgICAgICAgc2NyaXB0MiA9IEluc3BlY3RvclRlc3QuY3Jl
YXRlU2NyaXB0TW9jayh1cmwsIDAsIDQ1LCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDI+Iik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlT
b3VyY2VDb2RlUmVtb3ZlZEV2ZW50KGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZEV2
ZW50KHRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKTsKICAgICAgICAgICAgICAgICByZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdDIpOwotICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVSZXBsYWNlZCh1aVNvdXJjZUNvZGUsIG9sZFVJ
U291cmNlQ29kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdDIucmF3TG9jYXRpb25U
b1VJTG9jYXRpb24oMCwgNSkpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tS
YXdMb2NhdGlvbihzY3JpcHQxLCAxMCwgMCwgdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xv
Y2F0aW9uKDEwLCAwKSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3Vy
Y2VDb2RlKHVpU291cmNlQ29kZSwgc3RlcDMpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRl
bXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291
cmNlQ29kZSwgMCwgNSwgc2NyaXB0Mi5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQx
LCAxMCwgMCwgdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJj
ZUNvZGUsIHN0ZXAzKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5nIHVpU291cmNlQ29kZSBmb3IgZmluaXNoZWQg
cmVzb3VyY2UuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3Nw
YWNlVUlTb3VyY2VDb2RlUmVwbGFjZWRFdmVudCh1aVNvdXJjZUNvZGVSZXBsYWNlZFdpdGhSZXNv
dXJjZSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlT
b3VyY2VDb2RlQWRkZWRFdmVudChmdW5jdGlvbigpIHsgfSk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlUmVtb3ZlZEV2
ZW50KGZ1bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRG
b3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZE1vY2tVSVNvdXJjZUNvZGVUb1dvcmtzcGFj
ZSh1cmwsIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50LCAiPHJlc291cmNlIGNv
bnRlbnQ+Iik7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNl
Q29kZVJlcGxhY2VkV2l0aFJlc291cmNlKHVpU291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0
aW9uKHVpU291cmNlQ29kZSwgMCwgNSwgc2NyaXB0MS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigw
LCA1KSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNj
cmlwdDEsIDEwLCAwLCB1aVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTAsIDAp
KTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3Vy
Y2VDb2RlLCBuZXh0KTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVBZGRl
ZCh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdDEu
cmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgMTAsIDAsIHVpU291cmNlQ29kZS51
aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxMCwgMCkpOworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBuZXh0KTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dApp
bmRleCBiYTIzZDFmNmJhZmEyNWM3NDYyMTdlMjBlZjFhMDU0OWZhNDAxZGJjLi5jZGI2ODJlMzYx
NTdhZmY5Mzk0YmI5Y2UyMjc4ZWUwZWQ1Yzg0ODU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwtZXhwZWN0ZWQudHh0CkBAIC0y
MSw5ICsyMSw4IEBAIER1bXBpbmcgU2NyaXB0c05hdmlnYXRvciAnU2NyaXB0cycgdGFiOgogICBi
YXIuanMKIER1bXBpbmcgU2NyaXB0c05hdmlnYXRvciAnQ29udGVudCBzY3JpcHRzJyB0YWI6CiAK
LVJ1bm5pbmc6IHRlc3RTb3VyY2VSZXBsYWNlZAorUnVubmluZzogdGVzdFRlbXBvcmFyeVVJU291
cmNlQ29kZUFkZGVkQW5kUmVtb3ZlZAogRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdTY3JpcHRz
JyB0YWI6Ci0gIGNvbXBpbGVkLmpzCiAgIGZvby5qcwogRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9y
ICdDb250ZW50IHNjcmlwdHMnIHRhYjoKIER1bXBpbmcgU2NyaXB0c05hdmlnYXRvciAnU2NyaXB0
cycgdGFiOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Njcmlw
dHMtcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBh
bmVsLmh0bWwKaW5kZXggNTIyMjFiZjQxMjJjOWRhZDVhMGNmNzY0Y2JjMTVlNTIxMzkxOWQ5Yi4u
ZWQ2MjI4MDY0ZmE1YzJmYTk0MjQzNTI5NGVkMzM5YmEzNDIxMmFmMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCkBAIC04Niw3ICs4
Niw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9LAog
Ci0gICAgICAgIGZ1bmN0aW9uIHRlc3RTb3VyY2VSZXBsYWNlZChuZXh0KQorICAgICAgICBmdW5j
dGlvbiB0ZXN0VGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWRBbmRSZW1vdmVkKG5leHQpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHZhciB3b3Jrc3BhY2UgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtz
cGFjZSgpOwogICAgICAgICAgICAgdmFyIHBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwod29ya3NwYWNlKTsKQEAgLTk1LDEzICs5NSwxNCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVGb28gPSBjcmVhdGVVSVNvdWNlQ29kZSgiZm9vLmpz
Iik7CiAgICAgICAgICAgICB3b3Jrc3BhY2UucHJvamVjdCgpLmFkZFVJU291cmNlQ29kZSh1aVNv
dXJjZUNvZGVGb28pOwogICAgICAgICAgICAgdmFyIGNvbXBpbGVkU291cmNlQ29kZSA9IGNyZWF0
ZVVJU291Y2VDb2RlKCJjb21waWxlZC5qcyIpOwotICAgICAgICAgICAgd29ya3NwYWNlLnByb2pl
Y3QoKS5hZGRVSVNvdXJjZUNvZGUoY29tcGlsZWRTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgIHdv
cmtzcGFjZS5wcm9qZWN0KCkuYWRkVGVtcG9yYXJ5VUlTb3VyY2VDb2RlKGNvbXBpbGVkU291cmNl
Q29kZSk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNjcmlwdHNOYXZpZ2F0b3Io
cGFuZWwuX25hdmlnYXRvcik7CiAKICAgICAgICAgICAgIC8vIFBsdWcgY29tcGlsZXIgc291cmNl
IG1hcHBpbmcuCiAgICAgICAgICAgICB2YXIgc291cmNlU291cmNlQ29kZSA9IGNyZWF0ZVVJU291
Y2VDb2RlKCJzb3VyY2UuanMiKTsKLSAgICAgICAgICAgIHdvcmtzcGFjZS5wcm9qZWN0KCkucmVw
bGFjZVVJU291cmNlQ29kZShjb21waWxlZFNvdXJjZUNvZGUsIHNvdXJjZVNvdXJjZUNvZGUpOwor
ICAgICAgICAgICAgd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUoc291cmNlU291
cmNlQ29kZSk7CisgICAgICAgICAgICB3b3Jrc3BhY2UucHJvamVjdCgpLnJlbW92ZVRlbXBvcmFy
eVVJU291cmNlQ29kZShjb21waWxlZFNvdXJjZUNvZGUpOwogCiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdhdG9yKHBhbmVsLl9uYXZpZ2F0b3IpOwogICAgICAgICAg
ICAgbmV4dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nv
dXJjZS11cmwtY29tbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc291cmNlLXVybC1jb21tZW50LWV4cGVjdGVkLnR4dAppbmRleCAwNGJiYzE5YWMzOGM1
NGM0MjNjYmE3MjdjNGZmMDFiNjAxNTdlMDkyLi41ZWU5ZmI4NGU3ZmJkMDc4NjE3MjEyYzhjYWQ3
N2MyMDFlMTAzNmZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c291cmNlLXVybC1jb21tZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc291cmNlLXVybC1jb21tZW50LWV4cGVjdGVkLnR4dApAQCAtMiw4ICsyLDE0
IEBAIFRlc3RzIHRoYXQgZXZhbHMgd2l0aCBzb3VyY2VVUkwgY29tbWVudCBhcmUgc2hvd24gaW4g
c2NyaXB0cyBwYW5lbC4KIAogRGVidWdnZXIgd2FzIGVuYWJsZWQuCiAKK1J1bm5pbmc6IHRlc3RT
b3VyY2VVUkxDb21tZW50SW5JbmxpbmVTY3JpcHQKKwogUnVubmluZzogdGVzdFNvdXJjZVVSTENv
bW1lbnQKIGZ1bmN0aW9uIGtlZXBBbGl2ZSgpIHt9CiAvL0Agc291cmNlVVJMPWV2YWxVUkwuanMK
KworUnVubmluZzogdGVzdFNvdXJjZVVSTENvbW1lbnRJbkR5bmFtaWNTY3JpcHQKK2Z1bmN0aW9u
IGtlZXBBbGl2ZUluRHluYW1pY1NjcmlwdCgpIHt9CisvL0Agc291cmNlVVJMPWR5bmFtaWNTY3Jp
cHRVUkwuanMKIERlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS11cmwtY29tbWVudC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS11cmwtY29tbWVudC5odG1sCmluZGV4IDFlYjI4
YTk4ZmEwMjliMjgxNGRiNGYxYTY3MGEzOWM5MmQ2NzI0YzMuLjMzMjU3YWNmNzg1ZjY2N2MxNjQw
MjQwZWE5MGIwNjIwNDZkNGZjMzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zb3VyY2UtdXJsLWNvbW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc291cmNlLXVybC1jb21tZW50Lmh0bWwKQEAgLTIsMTcgKzIsNTcgQEAKIDxo
ZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci10ZXN0LmpzIj48L3NjcmlwdD4KLQogPHNjcmlwdD4KK2Z1bmN0aW9uIGtlZXBB
bGl2ZUluSW5saW5lU2NyaXB0KCkgeyB9CiAKKy8vQCBzb3VyY2VVUkw9aW5saW5lU2NyaXB0VVJM
LmpzCis8L3NjcmlwdD4KKzxzY3JpcHQ+CiBmdW5jdGlvbiBkb0V2YWwoKQogewogICAgIGV2YWwo
ImZ1bmN0aW9uIGtlZXBBbGl2ZSgpIHt9XG4vL0Agc291cmNlVVJMPWV2YWxVUkwuanMiKTsKIH0K
IAorZnVuY3Rpb24gZG9EeW5hbWljU2NyaXB0KCkKK3sKKyAgICB2YXIgc2NyaXB0RWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOworICAgIHNjcmlwdEVsZW1lbnQudGV4
dENvbnRlbnQgPSAiZnVuY3Rpb24ga2VlcEFsaXZlSW5EeW5hbWljU2NyaXB0KCkge31cbi8vQCBz
b3VyY2VVUkw9ZHluYW1pY1NjcmlwdFVSTC5qcyI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChzY3JpcHRFbGVtZW50KTsKK30KKwogZnVuY3Rpb24gdGVzdCgpCisKIHsKKyAgICBmdW5j
dGlvbiBmb3JFYWNoU2NyaXB0TWF0Y2hpbmdVUkwodXJsLCBoYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgdmFyIHNjcmlwdHMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzOworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIGlmIChzY3JpcHRzW2ldLnNvdXJjZVVSTC5pbmRleE9mKHVybCkgIT09IC0xKQorICAgICAg
ICAgICAgICAgIGhhbmRsZXIoc2NyaXB0c1tpXSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBJ
bnNwZWN0b3JUZXN0LnJ1bkRlYnVnZ2VyVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVz
dFNvdXJjZVVSTENvbW1lbnRJbklubGluZVNjcmlwdChuZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UoInNvdXJjZS11cmwtY29tbWVudC5o
dG1sIiwgZGlkU2hvd1NjcmlwdFNvdXJjZSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNo
b3dTY3JpcHRTb3VyY2Uoc291cmNlRnJhbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gY2hlY2tTY3JpcHREb2VzTm90SGF2ZVNvdXJjZVVSTChzY3JpcHQpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRy
dWUoIXNjcmlwdC5oYXNTb3VyY2VVUkwsICJoYXNTb3VyY2VVUkwgZmxhZyBpcyBzZXQgZm9yIGlu
bGluZSBzY3JpcHQiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIg
cGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWwoInNjcmlwdHMiKTsKKyAgICAgICAgICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlcyA9IHBhbmVsLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlcygpOworICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlTb3VyY2VDb2Rlcy5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKHVpU291cmNl
Q29kZXNbaV0udXJsLmluZGV4T2YoImlubGluZVNjcmlwdFVSTC5qcyIpID09PSAtMSwgInNvdXJj
ZVVSTCBjb21tZW50IGluIGlubGluZSBzY3JpcHQgd2FzIHVzZWQgYXMgYSBzY3JpcHQgbmFtZSIp
OworICAgICAgICAgICAgICAgIGZvckVhY2hTY3JpcHRNYXRjaGluZ1VSTCgic291cmNlLXVybC1j
b21tZW50Lmh0bWwiLCBjaGVja1NjcmlwdERvZXNOb3RIYXZlU291cmNlVVJMKQorICAgICAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKwogICAgICAgICBmdW5j
dGlvbiB0ZXN0U291cmNlVVJMQ29tbWVudChuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UoImV2YWxVUkwuanMiLCBkaWRTaG93U2NyaXB0
U291cmNlKTsKQEAgLTIwLDcgKzYwLDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBkaWRTaG93U2NyaXB0U291cmNlKHNvdXJjZUZyYW1lKQogICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrU2NyaXB0SGFzU291cmNlVVJMKHNjcmlw
dCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0VHJ1ZShzY3JpcHQuaGFzU291cmNlVVJMLCAiaGFzU291cmNlVVJMIGZsYWcgaXMgbm90
IHNldCBmb3IgZXZhbCB3aXRoIHNvdXJjZVVSTCBjb21tZW50Iik7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoc291cmNlRnJhbWUu
dGV4dEVkaXRvci50ZXh0KCkpOworICAgICAgICAgICAgICAgIGZvckVhY2hTY3JpcHRNYXRjaGlu
Z1VSTCgiZXZhbFVSTC5qcyIsIGNoZWNrU2NyaXB0SGFzU291cmNlVVJMKTsKKyAgICAgICAgICAg
ICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rp
b24gdGVzdFNvdXJjZVVSTENvbW1lbnRJbkR5bmFtaWNTY3JpcHQobmV4dCkKKyAgICAgICAgewor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlKCJkeW5hbWljU2NyaXB0
VVJMLmpzIiwgZGlkU2hvd1NjcmlwdFNvdXJjZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKCJzZXRUaW1lb3V0KGRvRHluYW1pY1NjcmlwdCwgMCkiKTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gZGlkU2hvd1NjcmlwdFNvdXJjZShzb3VyY2VGcmFtZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1NjcmlwdEhhc1NvdXJjZVVS
TChzY3JpcHQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydFRydWUoc2NyaXB0Lmhhc1NvdXJjZVVSTCwgImhhc1NvdXJjZVVSTCBmbGFn
IGlzIG5vdCBzZXQgZm9yIGR5bmFtaWMgc2NyaXB0IHdpdGggc291cmNlVVJMIGNvbW1lbnQiKTsK
KyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChzb3VyY2VGcmFtZS50ZXh0RWRpdG9yLnRleHQoKSk7CisgICAgICAgICAgICAgICAgZm9y
RWFjaFNjcmlwdE1hdGNoaW5nVVJMKCJkeW5hbWljU2NyaXB0VVJMLmpzIiwgY2hlY2tTY3JpcHRI
YXNTb3VyY2VVUkwpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165801</attachid>
            <date>2012-09-26 07:52:39 -0700</date>
            <delta_ts>2012-09-27 02:17:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97680-20120926185157.patch</filename>
            <type>text/plain</type>
            <size>50660</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg3NTM1ZjE0NGU2OGFj
NjVhNGQ0ZGEyMDk5Y2QyYjkzN2JiYTAxYS4uYmQxOWZjZjFjNDA4NDVkOTc2MTVkMjNjNjZjNjY4
YjM3NzdhZGYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA5LTI2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE1vdmUgVUlTb3VyY2VDb2RlIGNyZWF0aW9uIG91dCBmcm9tIFJlc291cmNlU2NyaXB0TWFw
cGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
NjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVUlT
b3VyY2VDb2RlcyBmb3Igc2NyaXB0cyBoYXZpbmcgc291cmNlVVJMIGFyZSBub3cgY3JlYXRlZCBi
eSBOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuCisgICAgICAgIFVJU291cmNlQ29kZXMgZm9y
IGFub255bW91cywgZHluYW1pYyBhbmQgY29uY2F0ZW5hdGVkIHNjcmlwdHMgYXJlIG5vdyBjcmVh
dGVkIG9uIGRlbWFuZCBvbmx5LgorICAgICAgICBBbGwgVUlTb3VyY2VDb2RlcyBjcmVhdGVkIGJ5
IFJlc291cmNlU2NyaXB0TWFwcGluZyBhcmUgbm93ICJ0ZW1wb3JhcnkiLgorICAgICAgICBUZW1w
b3JhcnkgVUlTb3VyY2VDb2RlcyBhcmUgbm90IHN0b3JlZCBpbiB3b3Jrc3BhY2UgYW5kIHJlbW92
ZWQgd2hlbiBhIG5vcm1hbCBVSVNvdXJjZUNvZGUgd2l0aCB0aGUgc2FtZSB1cmwgaXMgYXZhaWxh
YmxlLgorICAgICAgICBVSVNvdXJjZUNvZGVSZXBsYWNlZCBldmVudCB3YXMgcmVwbGFjZWQgd2l0
aCBUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZC9SZW1vdmVkIGV2ZW50cy4KKworICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlUmVtb3ZlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3Zl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05hdmlnYXRvclZpZXcuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIucHJvdG90eXBl
Ll9wYXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2Ny
aXB0TWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5n
LnByb3RvdHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fd29ya3NwYWNlVUlTb3VyY2VDb2Rl
Rm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcu
cHJvdG90eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLmFkZFNjcmlwdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fZGVsZXRlVGVtcG9y
YXJ5VUlTb3VyY2VDb2RlRm9yU2NyaXB0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5faXNE
eW5hbWljU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBp
bmcucHJvdG90eXBlLl9nZXRPckNyZWF0ZVRlbXBvcmFyeVVJU291cmNlQ29kZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fdWlTb3VyY2VD
b2RlQWRkZWRUb1dvcmtzcGFjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLnByb3RvdHlwZS5fc2NyaXB0c0ZvclVJU291cmNlQ29kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fcmVzZXQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmlldy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXZpc2lvbkhpc3RvcnlWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5l
ci5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5qczoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZS5hZGRUZW1wb3JhcnlVSVNvdXJjZUNvZGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2plY3QucHJvdG90eXBlLnJlbW92ZVRlbXBvcmFyeVVJU291
cmNlQ29kZSk6CisKIDIwMTItMDktMjAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdmlkZSBhIHdheSB0byBkaXN0aW5n
dWlzaCBzY3JpcHRzIGhhdmluZyBzb3VyY2VVUkwgZnJvbSBzdGFuZGFsb25lIHNjcmlwdHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRN
YW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50
TWFuYWdlci5qcwppbmRleCA4ZTlkNGI2NTVjMjIwYTI0YTI0OTAwZjllODAzNzQ2YjlkNmQ4MzQ5
Li40NTA3YmM5ZTQ2MTYxMjI5ZjA2Y2Y3YjNmNWFiZmM0Nzk1YTc1NTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIu
anMKQEAgLTQ5LDYgKzQ5LDggQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyID0gZnVu
Y3Rpb24oYnJlYWtwb2ludFN0b3JhZ2UsIGRlYnVnZ2VyTW9kZWwsIHdvcmsKICAgICB0aGlzLl9k
ZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
RXZlbnRzLkJyZWFrcG9pbnRSZXNvbHZlZCwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkLCB0aGlz
KTsKICAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuV29y
a3NwYWNlLkV2ZW50cy5Qcm9qZWN0V2lsbFJlc2V0LCB0aGlzLl93b3Jrc3BhY2VSZXNldCwgdGhp
cyk7CiAgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwgdGhpcy5fdWlTb3Vy
Y2VDb2RlQWRkZWQsIHRoaXMpOworICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVGVtcG9yYXJ5VUlTb3Vy
Y2VDb2RlQWRkZWQsIHRoaXMuX3VpU291cmNlQ29kZUFkZGVkLCB0aGlzKTsKKyAgICB0aGlzLl93
b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlk
ZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQsIHRoaXMuX3VpU291cmNlQ29k
ZVJlbW92ZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRXZl
bnRzID0gewpAQCAtODksNiArOTEsMzggQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX3VpU291cmNlQ29kZVJlbW92ZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgaWYg
KCEodWlTb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2Up
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgdmFyIHNvdXJjZUZpbGVJ
ZCA9IHVpU291cmNlQ29kZS5icmVha3BvaW50U3RvcmFnZUlkKCk7CisgICAgICAgIGlmICghc291
cmNlRmlsZUlkKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgdmFyIGJy
ZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHMuc2xpY2UoKTsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSBicmVha3BvaW50c1tpXTsKKyAgICAgICAgICAgIGZvciAodmFyIHN0cmluZ2lm
aWVkTG9jYXRpb24gaW4gYnJlYWtwb2ludC5fdWlMb2NhdGlvbnMpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgdWlMb2NhdGlvbiA9IGJyZWFrcG9pbnQuX3VpTG9jYXRpb25zW3N0cmluZ2lmaWVkTG9j
YXRpb25dOworICAgICAgICAgICAgICAgIGlmICh1aUxvY2F0aW9uLnVpU291cmNlQ29kZSA9PT0g
dWlTb3VyY2VDb2RlKQorICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSh0cnVl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZGVsZXRlIHRo
aXMuX3NvdXJjZUZpbGVzV2l0aFJlc3RvcmVkQnJlYWtwb2ludHNbc291cmNlRmlsZUlkXTsKKyAg
ICAgICAgCisgICAgICAgIHZhciB1aVNvdXJjZUNvZGVzID0gdGhpcy5fd29ya3NwYWNlLnVpU291
cmNlQ29kZXMoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAodWlTb3VyY2VDb2Rlc1tpXS5icmVha3BvaW50
U3RvcmFnZUlkKCkgPT09IHNvdXJjZUZpbGVJZCkKKyAgICAgICAgICAgICAgICB0aGlzLnJlc3Rv
cmVCcmVha3BvaW50cyh1aVNvdXJjZUNvZGVzW2ldKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAg
ICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNl
Q29kZQogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAgICogQHBhcmFtIHtz
dHJpbmd9IGNvbmRpdGlvbgpAQCAtMzc3LDExICs0MTEsMTUgQEAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9mYWtl
QnJlYWtwb2ludEF0UHJpbWFyeUxvY2F0aW9uKCk7CiAgICAgfSwKIAotICAgIHJlbW92ZTogZnVu
Y3Rpb24oKQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGtlZXBJblN0b3JhZ2UK
KyAgICAgKi8KKyAgICByZW1vdmU6IGZ1bmN0aW9uKGtlZXBJblN0b3JhZ2UpCiAgICAgeworICAg
ICAgICB2YXIgcmVtb3ZlRnJvbVN0b3JhZ2UgPSAha2VlcEluU3RvcmFnZTsKICAgICAgICAgdGhp
cy5fcmVzZXRMb2NhdGlvbnMoKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlRnJvbURlYnVnZ2VyKCk7
Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLl9yZW1vdmVCcmVha3BvaW50KHRoaXMs
IHRydWUpOworICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5fcmVtb3ZlQnJlYWtwb2lu
dCh0aGlzLCByZW1vdmVGcm9tU3RvcmFnZSk7CiAgICAgfSwKIAogICAgIF9zZXRJbkRlYnVnZ2Vy
OiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05hdmlnYXRvclZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05hdmlnYXRvclZpZXcuanMKaW5kZXggYTAyMjE3NDc0MzFiY2JiZWIwZWEyOGIzYjQ5OTBjODkz
ODdkYjZmYy4uYjBmMWE5MGE0ZWQwODdmMDVlMWZlODQzMjg1NDBiZmNlM2U4YTg2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXZpZ2F0b3JWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF2aWdhdG9yVmlldy5q
cwpAQCAtMTQ5LDI5ICsxNDksNiBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZX0gb2xkVUlTb3VyY2VDb2RlCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8KLSAgICByZXBsYWNlVUlTb3VyY2VD
b2RlOiBmdW5jdGlvbihvbGRVSVNvdXJjZUNvZGUsIHVpU291cmNlQ29kZSkKLSAgICB7Ci0gICAg
ICAgIHZhciBhZGRlZCA9IGZhbHNlOwotICAgICAgICB2YXIgc2VsZWN0ZWQgPSBmYWxzZTsKLSAg
ICAgICAgaWYgKHRoaXMuX3NjcmlwdFRyZWVFbGVtZW50c0J5VUlTb3VyY2VDb2RlLmdldChvbGRV
SVNvdXJjZUNvZGUpKSB7Ci0gICAgICAgICAgICBhZGRlZCA9IHRydWU7Ci0KLSAgICAgICAgICAg
IGlmICh0aGlzLl9sYXN0U2VsZWN0ZWRVSVNvdXJjZUNvZGUgPT09IG9sZFVJU291cmNlQ29kZSkK
LSAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLnJlbW92
ZVVJU291cmNlQ29kZShvbGRVSVNvdXJjZUNvZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFhZGRlZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5hZGRVSVNvdXJjZUNv
ZGUodWlTb3VyY2VDb2RlKTsKLSAgICAgICAgaWYgKHNlbGVjdGVkKQotICAgICAgICAgICAgdGhp
cy5yZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICB9LAotCi0gICAgLyoqCiAg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAg
ICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvY3VzU291cmNlCiAgICAgICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92
aWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1VJU291
cmNlQ29kZVByb3ZpZGVyLmpzCmluZGV4IGFlMzRmZWJhMDEwYjYzZWMwMWJjOWIwNWNlMzZhOWZh
MjYxYjY0NmYuLmJiZDI2NzJlMWJhN2NiZmQwZDA0YzhlMzlmMWNkYTlkMWQ3YTNhNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNl
Q29kZVByb3ZpZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzCkBAIC0zOCw2ICszOCw3IEBAIFdlYkluc3Bl
Y3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIgPSBmdW5jdGlvbih3b3Jrc3BhY2UpCiAg
ICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgdGhpcy5f
cmVzb3VyY2VBZGRlZCwgdGhpcyk7CiAgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5f
cHJvamVjdFdpbGxSZXNldCwgdGhpcyk7CiAgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdERpZFJlc2V0LCB0aGlz
Ll9wcm9qZWN0RGlkUmVzZXQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlBhcnNl
ZFNjcmlwdFNvdXJjZSwgdGhpcy5fcGFyc2VkU2NyaXB0U291cmNlLCB0aGlzKTsKIAogICAgIHRo
aXMuX3VpU291cmNlQ29kZUZvclJlc291cmNlID0ge307CiB9CkBAIC02MSw2ICs2MiwyMSBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAg
ICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKICAgICAgKi8K
KyAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHZhciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50LmRh
dGE7CisgICAgICAgIGlmICghc2NyaXB0Lmhhc1NvdXJjZVVSTCkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKHRoaXMuX3VpU291cmNlQ29kZUZvclJlc291cmNlW3NjcmlwdC5zb3Vy
Y2VVUkxdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
bmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlw
dCwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUZvclJlc291cmNlW3NjcmlwdC5z
b3VyY2VVUkxdID0gdWlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl93b3Jrc3BhY2UucHJvamVj
dCgpLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KICAgICBfcmVz
b3VyY2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2Ug
PSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gKi8gZXZlbnQuZGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRN
YXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNj
cmlwdE1hcHBpbmcuanMKaW5kZXggZDcyYTFjNjQ5MTQyOWViMDgzMzQ3NzdmNTMxYzM1MzliNjcz
YzNkMi4uZmRhMGRiODFkYmRiZTA0YzllYzNlZjdiNDEzZGU2ODBmNTIwNjYxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBp
bmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNj
cmlwdE1hcHBpbmcuanMKQEAgLTQwLDExICs0MCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNj
cmlwdE1hcHBpbmcgPSBmdW5jdGlvbih3b3Jrc3BhY2UpCiAgICAgdGhpcy5fd29ya3NwYWNlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5V
SVNvdXJjZUNvZGVBZGRlZCwgdGhpcy5fdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZSwgdGhp
cyk7CiAKICAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlPn0gKi8KLSAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OwotICAg
IHRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlID0gbmV3IE1hcCgpOwotICAgIHRoaXMuX3Rl
bXBvcmFyeVVJU291cmNlQ29kZXMgPSBuZXcgTWFwKCk7Ci0gICAgLyoqIEB0eXBlIHtPYmplY3Qu
PHN0cmluZywgbnVtYmVyPn0gKi8KLSAgICB0aGlzLl9uZXh0RHluYW1pY1NjcmlwdEluZGV4Rm9y
VVJMID0ge307CisgICAgdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2RlRm9yU2NyaXB0SWQgPSB7
fTsKICAgICB0aGlzLl9zY3JpcHRzID0gW107CiB9CiAKQEAgLTU3LDExICs1MywyMyBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIHZhciBkZWJ1Z2dlck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLkxvY2F0aW9ufSAqLyByYXdMb2NhdGlvbjsKICAgICAgICAgdmFyIHNjcmlw
dCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKGRlYnVnZ2VyTW9kZWxM
b2NhdGlvbi5zY3JpcHRJZCk7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNv
dXJjZUNvZGVGb3JTY3JpcHRJZFtkZWJ1Z2dlck1vZGVsTG9jYXRpb24uc2NyaXB0SWRdOworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlVUlTb3VyY2VDb2RlRm9yU2Ny
aXB0KHNjcmlwdCkgfHwgdGhpcy5fZ2V0T3JDcmVhdGVUZW1wb3JhcnlVSVNvdXJjZUNvZGUoc2Ny
aXB0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoISF1aVNvdXJjZUNvZGUpOwogICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgZGVidWdnZXJN
b2RlbExvY2F0aW9uLmxpbmVOdW1iZXIsIGRlYnVnZ2VyTW9kZWxMb2NhdGlvbi5jb2x1bW5OdW1i
ZXIgfHwgMCk7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlNjcmlwdH0gc2NyaXB0CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0KKyAgICAgKi8KKyAgICBfd29ya3NwYWNlVUlTb3VyY2VDb2RlRm9yU2NyaXB0OiBmdW5jdGlv
bihzY3JpcHQpCisgICAgeworICAgICAgICBpZiAoc2NyaXB0LmlzQW5vbnltb3VzU2NyaXB0KCkg
fHwgdGhpcy5faXNEeW5hbWljU2NyaXB0KHNjcmlwdCkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkwoc2Ny
aXB0LnNvdXJjZVVSTCk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9
IGxpbmVOdW1iZXIKICAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCkBAIC02OSw5
ICs3Nyw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0g
ewogICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJj
ZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBzY3Jp
cHRJZCA9IHRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOwot
ICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9y
SWQoc2NyaXB0SWQpOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
Y3JlYXRlUmF3TG9jYXRpb24oc2NyaXB0LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAg
ICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VD
b2RlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc2NyaXB0cy5sZW5ndGgpOworICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRlUmF3TG9jYXRpb24oc2NyaXB0
c1swXSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC03
OSwyMCArODcsMzUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5
cGUgPSB7CiAgICAgICovCiAgICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2Ny
aXB0LnNjcmlwdElkXSk7Ci0KLSAgICAgICAgdmFyIGlzRHluYW1pY1NjcmlwdCA9IGZhbHNlOwot
ICAgICAgICBpZiAoIXNjcmlwdC5pc0Fub255bW91c1NjcmlwdCgpKSB7CisgICAgICAgIGlmICgh
c2NyaXB0LmlzQW5vbnltb3VzU2NyaXB0KCkpCiAgICAgICAgICAgICB0aGlzLl9zY3JpcHRzLnB1
c2goc2NyaXB0KTsKLSAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3Bh
Y2UudWlTb3VyY2VDb2RlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwotICAgICAgICAgICAgaXNE
eW5hbWljU2NyaXB0ID0gISF1aVNvdXJjZUNvZGUgJiYgdWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBl
KCkgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50ICYmICFzY3JpcHQuaXNJ
bmxpbmVTY3JpcHQoKTsKLSAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUgJiYgIWlzRHluYW1p
Y1NjcmlwdCAmJiAhdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2Rlcy5nZXQodWlTb3VyY2VDb2Rl
KSkKLSAgICAgICAgICAgICAgICB0aGlzLl9iaW5kVUlTb3VyY2VDb2RlVG9TY3JpcHRzKHVpU291
cmNlQ29kZSwgW3NjcmlwdF0pOworICAgICAgICBzY3JpcHQuc2V0U291cmNlTWFwcGluZyh0aGlz
KTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVVJU291cmNlQ29k
ZUZvclNjcmlwdChzY3JpcHQpOworICAgICAgICBpZiAodWlTb3VyY2VDb2RlKSB7CisgICAgICAg
ICAgICB0aGlzLl9iaW5kVUlTb3VyY2VDb2RlVG9TY3JpcHRzKHVpU291cmNlQ29kZSwgW3Njcmlw
dF0pOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmICghdGhpcy5f
dWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSkKLSAgICAgICAgICAgIHRo
aXMuX2FkZE9yUmVwbGFjZVRlbXBvcmFyeVVJU291cmNlQ29kZShzY3JpcHQsIGlzRHluYW1pY1Nj
cmlwdCk7CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdWlTb3VyY2VDb2RlRm9yU2Ny
aXB0SWRbc2NyaXB0LnNjcmlwdElkXSk7CisgICAgICAgIHZhciBzY3JpcHRzID0gc2NyaXB0Lmlz
SW5saW5lU2NyaXB0KCkgPyB0aGlzLl9zY3JpcHRzRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VV
UkwsIHRydWUpIDogW3NjcmlwdF07CisgICAgICAgIGlmICh0aGlzLl9kZWxldGVUZW1wb3JhcnlV
SVNvdXJjZUNvZGVGb3JTY3JpcHRzKHNjcmlwdHMpKQorICAgICAgICAgICAgdWlTb3VyY2VDb2Rl
ID0gdGhpcy5fZ2V0T3JDcmVhdGVUZW1wb3JhcnlVSVNvdXJjZUNvZGUoc2NyaXB0KTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlNjcmlwdD59
IHNjcmlwdHMKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIF9kZWxldGVU
ZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRzOiBmdW5jdGlvbihzY3JpcHRzKQorICAgIHsK
KyAgICAgICAgdmFyIHRlbXBvcmFyeVVJU291cmNlQ29kZTsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0g
c2NyaXB0c1tpXTsKKyAgICAgICAgICAgIHRlbXBvcmFyeVVJU291cmNlQ29kZSA9IHRlbXBvcmFy
eVVJU291cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtz
Y3JpcHQuc2NyaXB0SWRdOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3RlbXBvcmFyeVVJU291
cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF07CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHRlbXBvcmFyeVVJU291cmNlQ29kZSkKKyAgICAgICAgICAgIHRoaXMuX3dvcmtzcGFjZS5w
cm9qZWN0KCkucmVtb3ZlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlKHRlbXBvcmFyeVVJU291cmNlQ29k
ZSk7CisgICAgICAgIHJldHVybiAhIXRlbXBvcmFyeVVJU291cmNlQ29kZTsKICAgICB9LAogCiAg
ICAgLyoqCkBAIC0xMDIsMTQgKzEyNSwyMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICBfYmluZFVJU291cmNlQ29kZVRvU2NyaXB0czogZnVu
Y3Rpb24odWlTb3VyY2VDb2RlLCBzY3JpcHRzKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoc2NyaXB0cy5sZW5ndGgpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0
SWRbc2NyaXB0c1tpXS5zY3JpcHRJZF0gPSB1aVNvdXJjZUNvZGU7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHNjcmlwdHNbaV0u
c2V0U291cmNlTWFwcGluZyh0aGlzKTsKLSAgICAgICAgfQogICAgICAgICB1aVNvdXJjZUNvZGUu
aXNDb250ZW50U2NyaXB0ID0gc2NyaXB0c1swXS5pc0NvbnRlbnRTY3JpcHQ7CiAgICAgICAgIHVp
U291cmNlQ29kZS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwotICAgICAgICB0aGlzLl9zY3JpcHRJ
ZEZvclVJU291cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzY3JpcHRzWzBdLnNjcmlwdElkKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBz
Y3JpcHQKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIF9pc0R5bmFtaWNT
Y3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICB7CisgICAgICAgIGlmIChzY3JpcHQuaXNBbm9u
eW1vdXNTY3JpcHQoKSB8fCBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgdmFyIGlubGluZVNjcmlwdHNXaXRoVGhlU2FtZVVSTCA9IHRo
aXMuX3NjcmlwdHNGb3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCwgdHJ1ZSk7CisgICAgICAg
IHJldHVybiAhIWlubGluZVNjcmlwdHNXaXRoVGhlU2FtZVVSTC5sZW5ndGg7CiAgICAgfSwKIAog
ICAgIC8qKgpAQCAtMTI5LDU0ICsxNjAsNDQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0
TWFwcGluZy5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5TY3JpcHR9IHNjcmlwdAotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEeW5hbWljU2Ny
aXB0CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0KICAgICAgKi8K
LSAgICBfYWRkT3JSZXBsYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlOiBmdW5jdGlvbihzY3JpcHQs
IGlzRHluYW1pY1NjcmlwdCkKKyAgICBfZ2V0T3JDcmVhdGVUZW1wb3JhcnlVSVNvdXJjZUNvZGU6
IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHRzID0gc2NyaXB0Lmlz
SW5saW5lU2NyaXB0KCkgPyB0aGlzLl9zY3JpcHRzRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VV
UkwsIHRydWUpIDogW3NjcmlwdF07Ci0KLSAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZTsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBvbGRVSVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3Jp
cHRzW2ldLnNjcmlwdElkXTsKLSAgICAgICAgICAgIGlmIChvbGRVSVNvdXJjZUNvZGUpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoIW9s
ZFVJU291cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLmdldChvbGRVSVNv
dXJjZUNvZGUpKTsKKyAgICAgICAgdmFyIHRlbXBvcmFyeVVJU291cmNlQ29kZSA9IHRoaXMuX3Rl
bXBvcmFyeVVJU291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF07CisgICAgICAg
IGlmICh0ZW1wb3JhcnlVSVNvdXJjZUNvZGUpCisgICAgICAgICAgICByZXR1cm4gdGVtcG9yYXJ5
VUlTb3VyY2VDb2RlOwogCisgICAgICAgIHZhciBzY3JpcHRzID0gc2NyaXB0LmlzSW5saW5lU2Ny
aXB0KCkgPyB0aGlzLl9zY3JpcHRzRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwsIHRydWUp
IDogW3NjcmlwdF07CiAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBzY3JpcHQuaXNJbmxp
bmVTY3JpcHQoKSA/IG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRlbnRQ
cm92aWRlcihzY3JpcHRzKSA6IHNjcmlwdDsKLSAgICAgICAgdmFyIHVybCA9IHNjcmlwdC5zb3Vy
Y2VVUkw7Ci0gICAgICAgIGlmIChpc0R5bmFtaWNTY3JpcHQpIHsKLSAgICAgICAgICAgIHZhciBu
ZXh0SW5kZXggPSB0aGlzLl9uZXh0RHluYW1pY1NjcmlwdEluZGV4Rm9yVVJMW3NjcmlwdC5zb3Vy
Y2VVUkxdIHx8IDE7Ci0gICAgICAgICAgICB1cmwgKz0gIiAoIiArIG5leHRJbmRleCArICIpIjsK
LSAgICAgICAgICAgIHRoaXMuX25leHREeW5hbWljU2NyaXB0SW5kZXhGb3JVUkxbc2NyaXB0LnNv
dXJjZVVSTF0gPSBuZXh0SW5kZXggKyAxOwotICAgICAgICB9Ci0gICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2UodXJsLCBjb250ZW50UHJv
dmlkZXIsICFzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSk7Ci0gICAgICAgIHRoaXMuX3RlbXBvcmFy
eVVJU291cmNlQ29kZXMucHV0KHVpU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKLSAgICAgICAg
dGhpcy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyh1aVNvdXJjZUNvZGUsIHNjcmlwdHMpOwot
Ci0gICAgICAgIGlmICghc2NyaXB0LnNvdXJjZVVSTCkKLSAgICAgICAgICAgIHJldHVybiB1aVNv
dXJjZUNvZGU7Ci0KLSAgICAgICAgaWYgKG9sZFVJU291cmNlQ29kZSkKLSAgICAgICAgICAgIHRo
aXMuX3VpU291cmNlQ29kZVJlcGxhY2VkKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5hZGRV
SVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsK
KyAgICAgICAgdmFyIGlzRHluYW1pY1NjcmlwdCA9IHRoaXMuX2lzRHluYW1pY1NjcmlwdChzY3Jp
cHQpOworICAgICAgICB2YXIgdXJsID0gaXNEeW5hbWljU2NyaXB0ID8gIiIgOiBzY3JpcHQuc291
cmNlVVJMOworICAgICAgICB0ZW1wb3JhcnlVSVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9y
LkphdmFTY3JpcHRTb3VyY2UodXJsLCBjb250ZW50UHJvdmlkZXIsICFzY3JpcHQuaXNJbmxpbmVT
Y3JpcHQoKSk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZUZvclNjcmlwdElkW3Nj
cmlwdHNbaV0uc2NyaXB0SWRdID0gdGVtcG9yYXJ5VUlTb3VyY2VDb2RlOworICAgICAgICB0aGlz
Ll9iaW5kVUlTb3VyY2VDb2RlVG9TY3JpcHRzKHRlbXBvcmFyeVVJU291cmNlQ29kZSwgc2NyaXB0
cyk7CisgICAgICAgIHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0KCkuYWRkVGVtcG9yYXJ5VUlTb3Vy
Y2VDb2RlKHRlbXBvcmFyeVVJU291cmNlQ29kZSk7CisgICAgICAgIHJldHVybiB0ZW1wb3JhcnlV
SVNvdXJjZUNvZGU7CiAgICAgfSwKIAogICAgIF91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNl
OiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiog
QHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29kZS5nZXQodWlTb3Vy
Y2VDb2RlKSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLmdldCh1aVNvdXJjZUNvZGUp
KTsKLSAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUudXJsIHx8IHRoaXMuX3RlbXBvcmFyeVVJU291
cmNlQ29kZXMuZ2V0KHVpU291cmNlQ29kZSkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdWlT
b3VyY2VDb2RlLnVybCk7CisKKyAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzRm9y
VUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CisgICAgICAgIGlmICghc2NyaXB0cy5sZW5ndGgp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2FkZFVJU291cmNlQ29kZSh1aVNv
dXJjZUNvZGUpOworCisgICAgICAgIHRoaXMuX2RlbGV0ZVRlbXBvcmFyeVVJU291cmNlQ29kZUZv
clNjcmlwdHMoc2NyaXB0cyk7CisgICAgICAgIHRoaXMuX2JpbmRVSVNvdXJjZUNvZGVUb1Njcmlw
dHModWlTb3VyY2VDb2RlLCBzY3JpcHRzKTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcmV0
dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLlNjcmlwdD59CiAgICAgICovCi0gICAgX2FkZFVJU291
cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQorICAgIF9zY3JpcHRzRm9yVUlTb3VyY2VD
b2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICB2YXIgaXNJbmxpbmVT
Y3JpcHQ7CiAgICAgICAgIHN3aXRjaCAodWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkpIHsKQEAg
LTE4Nyw0MSArMjA4LDE1IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJv
dG90eXBlID0gewogICAgICAgICAgICAgaXNJbmxpbmVTY3JpcHQgPSBmYWxzZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgcmV0dXJuIFtdOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlz
Ll9zY3JpcHRzRm9yU291cmNlVVJMKHVpU291cmNlQ29kZS51cmwsIGlzSW5saW5lU2NyaXB0KTsK
LSAgICAgICAgaWYgKCFzY3JpcHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB2YXIgb2xkVUlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRb
c2NyaXB0c1swXS5zY3JpcHRJZF07Ci0gICAgICAgIHRoaXMuX2JpbmRVSVNvdXJjZUNvZGVUb1Nj
cmlwdHModWlTb3VyY2VDb2RlLCBzY3JpcHRzKTsKLQotICAgICAgICBpZiAob2xkVUlTb3VyY2VD
b2RlKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90ZW1wb3JhcnlVSVNvdXJj
ZUNvZGVzLmdldChvbGRVSVNvdXJjZUNvZGUpKTsKLSAgICAgICAgICAgIHRoaXMuX3VpU291cmNl
Q29kZVJlcGxhY2VkKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlLmdl
dCh1aVNvdXJjZUNvZGUpICYmICF0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLmdldCh1aVNv
dXJjZUNvZGUpKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlfSBvbGRVSVNvdXJjZUNvZGUKLSAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqLwotICAgIF91aVNvdXJjZUNv
ZGVSZXBsYWNlZDogZnVuY3Rpb24ob2xkVUlTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGUpCi0gICAg
ewotICAgICAgICB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVzLnJlbW92ZShvbGRVSVNvdXJj
ZUNvZGUpOwotICAgICAgICB0aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29kZS5yZW1vdmUob2xk
VUlTb3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy5fd29ya3NwYWNlLnByb2plY3QoKS5yZXBsYWNl
VUlTb3VyY2VDb2RlKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3NjcmlwdHNGb3JTb3VyY2VVUkwodWlTb3VyY2VDb2RlLnVybCwgaXNJbmxpbmVT
Y3JpcHQpOwogICAgIH0sCiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElkID0ge307Ci0gICAgICAgIHRoaXMuX3Njcmlw
dElkRm9yVUlTb3VyY2VDb2RlLmNsZWFyKCk7Ci0gICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291
cmNlQ29kZXMuY2xlYXIoKTsKLSAgICAgICAgdGhpcy5fbmV4dER5bmFtaWNTY3JpcHRJbmRleEZv
clVSTCA9IHt9OworICAgICAgICB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRJ
ZCA9IHt9OwogICAgICAgICB0aGlzLl9zY3JpcHRzID0gW107CiAgICAgfSwKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5Vmll
dy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmV2aXNpb25IaXN0b3J5
Vmlldy5qcwppbmRleCBmODBlNDk4YWEwODk3OTg0OTJmZDJiNTAwODA0YzAzYmFlMDllNWI1Li44
ZTkwNzg4ZjVjNzA1M2U4YTJiOTlmZjhjZjBmY2U5NDEyMTc3NDM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JldmlzaW9uSGlzdG9yeVZpZXcuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXZpc2lvbkhpc3RvcnlWaWV3
LmpzCkBAIC01NSw4ICs1NSw4IEBAIFdlYkluc3BlY3Rvci5SZXZpc2lvbkhpc3RvcnlWaWV3ID0g
ZnVuY3Rpb24oKQogCiAgICAgV2ViSW5zcGVjdG9yLndvcmtzcGFjZS51aVNvdXJjZUNvZGVzKCku
Zm9yRWFjaChwb3B1bGF0ZVJldmlzaW9ucy5iaW5kKHRoaXMpKTsKICAgICBXZWJJbnNwZWN0b3Iu
d29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMu
VUlTb3VyY2VDb2RlQ29udGVudENvbW1pdHRlZCwgdGhpcy5fcmV2aXNpb25BZGRlZCwgdGhpcyk7
Ci0gICAgV2ViSW5zcGVjdG9yLndvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsIHRoaXMu
X3VpU291cmNlQ29kZVJlcGxhY2VkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3Iud29ya3NwYWNl
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50
cy5VSVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzLl91aVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzKTsK
KyAgICBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVk
LCB0aGlzLl91aVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3Iud29y
a3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJv
amVjdFdpbGxSZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOwogCiAgICAgdGhpcy5fc3RhdHVzRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKQEAgLTE2MSwxNyArMTYxLDYg
QEAgV2ViSW5zcGVjdG9yLlJldmlzaW9uSGlzdG9yeVZpZXcucHJvdG90eXBlID0gewogICAgIH0s
CiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKLSAg
ICAgKi8KLSAgICBfdWlTb3VyY2VDb2RlUmVwbGFjZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsK
LSAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YS5vbGRVSVNvdXJjZUNvZGU7Ci0gICAgICAgIHZhciB1
aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2
ZW50LmRhdGEudWlTb3VyY2VDb2RlOwotICAgICAgICB0aGlzLl9yZW1vdmVVSVNvdXJjZUNvZGUo
b2xkVUlTb3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy5fcmV2ZWFsVUlTb3VyY2VDb2RlKHVpU291
cmNlQ29kZSk7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICovCiAgICAgX3JlbW92ZVVJU291cmNl
Q29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCmluZGV4IDJlZWVmNzNjN2Q1
YTllOTQ1ZTdlNjZiZjA1NDIyNzg4YmZhZmU2YjkuLmNlYjRkZWNiMmFmYmIwODhjNmE5NWRjNjY0
OWY5OWMyZmRjNjAyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMKQEAgLTEzMCwxNyArMTMwLDYgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioK
LSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IG9sZFVJU291cmNlQ29k
ZQotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2Rl
Ci0gICAgICovCi0gICAgcmVwbGFjZVVJU291cmNlQ29kZTogZnVuY3Rpb24ob2xkVUlTb3VyY2VD
b2RlLCB1aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB0aGlzLl9zY3JpcHRzVmlldy5yZXBs
YWNlVUlTb3VyY2VDb2RlKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKLSAgICAgICAg
dGhpcy5fY29udGVudFNjcmlwdHNWaWV3LnJlcGxhY2VVSVNvdXJjZUNvZGUob2xkVUlTb3VyY2VD
b2RlLCB1aVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9zbmlwcGV0c1ZpZXcucmVwbGFjZVVJ
U291cmNlQ29kZShvbGRVSVNvdXJjZUNvZGUsIHVpU291cmNlQ29kZSk7Ci0gICAgfSwKLQotICAg
IC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VD
b2RlCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbihib29sZWFuKT19IGNhbGxiYWNrCiAgICAgICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzCmluZGV4IDkyZWViOWEyNzFiNjJkN2U2ZTI1ZmQwMDk4NTU0ZTc3ZTUwZGYyNjAuLjg5Njlm
ZWQ0ZGRhNmNjZTI4MWY3MGE4M2FkYWQzODMyODk0NWNjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0xOTQsOCArMTk0
LDggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKHdvcmtzcGFjZUZvclRl
c3QpCiAgICAgV2ViSW5zcGVjdG9yLmVuZEJhdGNoVXBkYXRlKCk7CiAKICAgICB0aGlzLl93b3Jr
c3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIu
RXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCB0aGlzLl91aVNvdXJjZUNvZGVBZGRlZCwgdGhpcyk7
Ci0gICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBsYWNlZCwgdGhpcy5fdWlTb3Vy
Y2VDb2RlUmVwbGFjZWQsIHRoaXMpOwogICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2Rl
UmVtb3ZlZCwgdGhpcy5fdWlTb3VyY2VDb2RlUmVtb3ZlZCwgdGhpcyk7CisgICAgdGhpcy5fd29y
a3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVy
LkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzLl91aVNvdXJjZUNvZGVS
ZW1vdmVkLCB0aGlzKTsKICAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuV29ya3NwYWNlLkV2ZW50cy5Qcm9qZWN0V2lsbFJlc2V0LCB0aGlzLl9yZXNldC5i
aW5kKHRoaXMpLCB0aGlzKTsKIAogICAgIFdlYkluc3BlY3Rvci5hZHZhbmNlZFNlYXJjaENvbnRy
b2xsZXIucmVnaXN0ZXJTZWFyY2hTY29wZShuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNTZWFyY2hT
Y29wZSh0aGlzLl93b3Jrc3BhY2UpKTsKQEAgLTQ4MiwxOSArNDgyLDYgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHNvdXJjZUZyYW1lLmRldGFjaCgp
OwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0g
ZXZlbnQKLSAgICAgKi8KLSAgICBfdWlTb3VyY2VDb2RlUmVwbGFjZWQ6IGZ1bmN0aW9uKGV2ZW50
KQotICAgIHsKLSAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YS5vbGRVSVNvdXJjZUNvZGU7Ci0gICAg
ICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9ICovIGV2ZW50LmRhdGEudWlTb3VyY2VDb2RlOwotCi0gICAgICAgIHRoaXMuX25hdmlnYXRv
ci5yZXBsYWNlVUlTb3VyY2VDb2RlKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKTsKLSAg
ICAgICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLnJlcGxhY2VGaWxlKG9sZFVJU291cmNlQ29kZSwg
dWlTb3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy5fcmVtb3ZlU291cmNlRnJhbWUob2xkVUlTb3Vy
Y2VDb2RlKTsKLSAgICB9LAotCiAgICAgX2NsZWFyQ3VycmVudEV4ZWN1dGlvbkxpbmU6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9leGVjdXRpb25Tb3VyY2VGcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9y
Q29udGFpbmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRF
ZGl0b3JDb250YWluZXIuanMKaW5kZXggYWQwNTc2ODEzYjJiMDJlNWQxMGVhZTFjNWJiNGU4N2Fj
MTBiMWY3NS4uOTNmZTk5YjRkMDQ1YTU0NmUzMDMwMWFiMjdmNGQ2ZTk0MDQyODE4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250
YWluZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRF
ZGl0b3JDb250YWluZXIuanMKQEAgLTMxOSwzMCArMzE5LDYgQEAgV2ViSW5zcGVjdG9yLlRhYmJl
ZEVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gb2xkVUlTb3VyY2VDb2RlCi0gICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAg
Ki8KLSAgICByZXBsYWNlRmlsZTogZnVuY3Rpb24ob2xkVUlTb3VyY2VDb2RlLCB1aVNvdXJjZUNv
ZGUpCi0gICAgewotICAgICAgICB2YXIgdGFiSWQgPSB0aGlzLl90YWJJZHMuZ2V0KG9sZFVJU291
cmNlQ29kZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIXRhYklkKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKLSAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVzW3RoaXMuX3RhYklkcy5n
ZXQob2xkVUlTb3VyY2VDb2RlKV0KLSAgICAgICAgdGhpcy5fdGFiSWRzLnJlbW92ZShvbGRVSVNv
dXJjZUNvZGUpOwotICAgICAgICB0aGlzLl90YWJJZHMucHV0KHVpU291cmNlQ29kZSwgdGFiSWQp
OwotICAgICAgICB0aGlzLl9maWxlc1t0YWJJZF0gPSB1aVNvdXJjZUNvZGU7Ci0KLSAgICAgICAg
dGhpcy5fdGFiYmVkUGFuZS5jaGFuZ2VUYWJUaXRsZSh0YWJJZCwgdGhpcy5fdGl0bGVGb3JGaWxl
KHVpU291cmNlQ29kZSkpOwotICAgICAgICB0aGlzLl90YWJiZWRQYW5lLmNoYW5nZVRhYlZpZXco
dGFiSWQsIHRoaXMuX2RlbGVnYXRlLnZpZXdGb3JGaWxlKHVpU291cmNlQ29kZSkpOwotICAgICAg
ICB0aGlzLl90YWJiZWRQYW5lLmNoYW5nZVRhYlRvb2x0aXAodGFiSWQsIHRoaXMuX3Rvb2x0aXBG
b3JGaWxlKHVpU291cmNlQ29kZSkpOwotCi0gICAgICAgIHRoaXMuX3JlbW92ZVVJU291cmNlQ29k
ZUxpc3RlbmVycyhvbGRVSVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9hZGRVSVNvdXJjZUNv
ZGVMaXN0ZW5lcnModWlTb3VyY2VDb2RlKTsKLSAgICB9LAotCi0gICAgLyoqCiAgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKi8KICAg
ICBfYWRkVUlTb3VyY2VDb2RlTGlzdGVuZXJzOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29kZS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCmlu
ZGV4IDlhYmZlYjY4ZDMzMjlkZTEyODI1NWY5MDA1OThjYjdiYjIxMGQxODUuLjI4ZmIwZjVhZTI0
MmVkZjhmOTZmMzg0NzJkYzU5M2I2MzBkMmJkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCkBAIC01NTEsNyArNTUxLDggQEAg
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyID0gZnVuY3Rpb24oKQogCiBXZWJJbnNw
ZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzID0gewogICAgIFVJU291cmNlQ29kZUFk
ZGVkOiAiVUlTb3VyY2VDb2RlQWRkZWQiLAotICAgIFVJU291cmNlQ29kZVJlcGxhY2VkOiAiVUlT
b3VyY2VDb2RlUmVwbGFjZWQiLAorICAgIFRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkOiAiVGVt
cG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWQiLAorICAgIFRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92
ZWQ6ICJUZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkIiwKICAgICBVSVNvdXJjZUNvZGVSZW1v
dmVkOiAiVUlTb3VyY2VDb2RlUmVtb3ZlZCIKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qcwppbmRleCAwNTA4N2M4ZDU4YmQ4MmE5ZmM3MTAy
YmZiZjYzODQ1OTY4ZmM4NzI1Li4yZjI1ODI5OTI1ODg5ZDczNWRjMDQxYzRjNmExOTk2MDBmZThj
ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtz
cGFjZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFj
ZS5qcwpAQCAtNzcsMTYgKzc3LDExIEBAIFdlYkluc3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZSA9
IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSBvbGRVSVNvdXJjZUNvZGUKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGV9IHVpU291cmNlQ29kZQogICAgICAqLwotICAgIHJlcGxhY2VVSVNvdXJjZUNvZGU6
IGZ1bmN0aW9uKG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlKQorICAgIGFkZFRlbXBvcmFy
eVVJU291cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgdGhp
cy5fdWlTb3VyY2VDb2Rlcy5zcGxpY2UodGhpcy5fdWlTb3VyY2VDb2Rlcy5pbmRleE9mKG9sZFVJ
U291cmNlQ29kZSksIDEpOwotICAgICAgICBpZiAodGhpcy5fdWlTb3VyY2VDb2Rlcy5pbmRleE9m
KHVpU291cmNlQ29kZSkgPT09IC0xKQotICAgICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2Rlcy5w
dXNoKHVpU291cmNlQ29kZSk7Ci0gICAgICAgIHZhciBkYXRhID0geyBvbGRVSVNvdXJjZUNvZGU6
IG9sZFVJU291cmNlQ29kZSwgdWlTb3VyY2VDb2RlOiB1aVNvdXJjZUNvZGUgfTsKLSAgICAgICAg
dGhpcy5fd29ya3NwYWNlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCBkYXRhKTsKKyAg
ICAgICAgdGhpcy5fd29ya3NwYWNlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVk
LCB1aVNvdXJjZUNvZGUpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTk5LDYgKzk0LDE0IEBAIFdl
Ykluc3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAg
Ki8KKyAgICByZW1vdmVUZW1wb3JhcnlVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29k
ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3dvcmtzcGFjZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNv
dXJjZUNvZGVSZW1vdmVkLCB1aVNvdXJjZUNvZGUpOworICAgIH0sCisKKyAgICAvKioKICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gdXJsCiAgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGV9CiAgICAgICovCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjc3MWIyZGY3ZjJhZmQyY2IyMjM1ZDQ5ZDRjMDFj
NDA0M2VlM2RiYi4uYjE0YWYzMzVjYmU2NjQ4YmNlNTZmOTBjOWY3YjkwNzZhZmJkMDQyNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTI2ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgVUlTb3VyY2VDb2Rl
IGNyZWF0aW9uIG91dCBmcm9tIFJlc291cmNlU2NyaXB0TWFwcGluZy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NjgwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci93
b3Jrc3BhY2UtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfV29ya3NwYWNlVGVzdC5JbnNw
ZWN0b3JUZXN0LmNyZWF0ZVdvcmtzcGFjZSk6CisgICAgICAgIChpbml0aWFsaXplX1dvcmtzcGFj
ZVRlc3QuSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2Rl
QWRkZWRFdmVudC50ZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZCk6CisgICAgICAgIChpbml0aWFs
aXplX1dvcmtzcGFjZVRlc3QuSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5
VUlTb3VyY2VDb2RlQWRkZWRFdmVudCk6CisgICAgICAgIChpbml0aWFsaXplX1dvcmtzcGFjZVRl
c3QuSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlUmVt
b3ZlZEV2ZW50LnRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQpOgorICAgICAgICAoaW5pdGlh
bGl6ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVRlbXBvcmFy
eVVJU291cmNlQ29kZVJlbW92ZWRFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnQtbWFuYWdlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9keW5hbWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sOgorCiAyMDEyLTA5LTIwICBWc2V2b2xv
ZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFByb3ZpZGUgYSB3YXkgdG8gZGlzdGluZ3Vpc2ggc2NyaXB0cyBoYXZpbmcgc291cmNlVVJMIGZy
b20gc3RhbmRhbG9uZSBzY3JpcHRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcwppbmRleCA3YzI1N2Y2MDRjMzYxOWI4MWQyZDNkY2Ez
ZDNkNGQ2NWExYzlhNmM1Li5mNGRiYzA5OWRlNTE2YjgyNDMzYzJjNGYxNTg5ZDFjYmYwNTQ3NGVj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2Ut
dGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2Ut
dGVzdC5qcwpAQCAtNSwyMSArNSw5IEBAIEluc3BlY3RvclRlc3QuY3JlYXRlV29ya3NwYWNlID0g
ZnVuY3Rpb24oKQogewogICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuV29ya3NwYWNlKCk7CiAgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5V
SVNvdXJjZUNvZGVBZGRlZCwgSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJU291cmNlQ29kZVByb3Zp
ZGVyRXZlbnRIYW5kbGVyKTsKLSAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291
cmNlQ29kZVJlcGxhY2VkLCBJbnNwZWN0b3JUZXN0Ll9kZWZhdWx0VUlTb3VyY2VDb2RlUHJvdmlk
ZXJFdmVudEhhbmRsZXIpOwogICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3Vy
Y2VDb2RlUmVtb3ZlZCwgSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJU291cmNlQ29kZVByb3ZpZGVy
RXZlbnRIYW5kbGVyKTsKLX0KLQotSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3Vy
Y2VDb2RlUmVwbGFjZWRFdmVudCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQotewotICAgIEluc3BlY3Rv
clRlc3QudGVzdFdvcmtzcGFjZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsIEluc3BlY3RvclRl
c3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2ZW50SGFuZGxlcik7Ci0gICAgSW5zcGVj
dG9yVGVzdC50ZXN0V29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBsYWNlZCwgdWlTb3VyY2VDb2Rl
UmVwbGFjZWQpOwotCi0gICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlUmVwbGFjZWQoZXZlbnQpCi0g
ICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29k
ZVJlcGxhY2VkLCB1aVNvdXJjZUNvZGVSZXBsYWNlZCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qu
dGVzdFdvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQ
cm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1
bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2ZW50SGFuZGxlcik7Ci0gICAgICAgIGNhbGxiYWNrKGV2
ZW50LmRhdGEudWlTb3VyY2VDb2RlLCBldmVudC5kYXRhLm9sZFVJU291cmNlQ29kZSk7Ci0gICAg
fQorICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVGVtcG9yYXJ5VUlTb3VyY2VDb2Rl
QWRkZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2ZW50SGFu
ZGxlcik7CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJj
ZUNvZGVSZW1vdmVkLCBJbnNwZWN0b3JUZXN0Ll9kZWZhdWx0VUlTb3VyY2VDb2RlUHJvdmlkZXJF
dmVudEhhbmRsZXIpOwogfQogCiBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJj
ZUNvZGVBZGRlZEV2ZW50ID0gZnVuY3Rpb24oY2FsbGJhY2spCkBAIC0zNSw2ICsyMywzMiBAQCBJ
bnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50ID0gZnVu
Y3Rpb24oY2FsbGJhY2spCiAgICAgfQogfQogCitJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3Bh
Y2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZEV2ZW50ID0gZnVuY3Rpb24oY2FsbGJhY2spCit7
CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNv
ZGVBZGRlZCwgSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJU291cmNlQ29kZVByb3ZpZGVyRXZlbnRI
YW5kbGVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291
cmNlQ29kZUFkZGVkLCB0ZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZCk7CisKKyAgICBmdW5jdGlv
biB0ZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZChldmVudCkKKyAgICB7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QudGVzdFdvcmtzcGFjZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWQsIHRl
bXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29y
a3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVy
LkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZCwgSW5zcGVjdG9yVGVzdC5fZGVmYXVs
dFVJU291cmNlQ29kZVByb3ZpZGVyRXZlbnRIYW5kbGVyKTsKKyAgICAgICAgY2FsbGJhY2soZXZl
bnQuZGF0YSk7CisgICAgfQorfQorCitJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1w
b3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkRXZlbnQgPSBmdW5jdGlvbihjYWxsYmFjaykKK3sKKyAg
ICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNlQ29kZVJl
bW92ZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2ZW50SGFu
ZGxlcik7CisgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJj
ZUNvZGVSZW1vdmVkLCB0ZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkKTsKKworICAgIGZ1bmN0
aW9uIHRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQoZXZlbnQpCisgICAgeworICAgICAgICBJ
bnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92
ZWQsIHRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LnRlc3RXb3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
UHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNlQ29kZVJlbW92ZWQsIEluc3BlY3RvclRl
c3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2ZW50SGFuZGxlcik7CisgICAgICAgIGNh
bGxiYWNrKGV2ZW50LmRhdGEpOworICAgIH0KK30KKwogSW5zcGVjdG9yVGVzdC5hZGRNb2NrVUlT
b3VyY2VDb2RlVG9Xb3Jrc3BhY2UgPSBmdW5jdGlvbih1cmwsIHR5cGUsIGNvbnRlbnQpCiB7CiAg
ICAgdmFyIGlzRG9jdW1lbnQgPSB0eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5E
b2N1bWVudDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVh
a3BvaW50LW1hbmFnZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnQtbWFuYWdlci1leHBlY3RlZC50eHQKaW5kZXggYWVmMTY4YTdlNGIxMGY1
NzZiOTY3MmUyYjcyNDgyNmZmM2UxMWY1ZS4uMzM4ODY3MDEyODE3OTM5ZjY0MmYzMWE5ZWJmYWVl
YTRlZWQ0ZDNhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Jy
ZWFrcG9pbnQtbWFuYWdlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci1leHBlY3RlZC50eHQKQEAgLTEwMyw2ICsxMDMs
MzcgQEAgUnVubmluZzogdGVzdFJlc3RvcmVCcmVha3BvaW50c1R3aWNlCiAgICAgZGVidWdnZXJN
b2RlbC5yZW1vdmVCcmVha3BvaW50KGEuanM6MTApCiAgICAgYnJlYWtwb2ludFJlbW92ZWQoYS5q
cywgMjApCiAKK1J1bm5pbmc6IHRlc3RSZXN0b3JlQnJlYWtwb2ludHNBZnRlclRlbXBvcmFyeVVJ
U291cmNlQ29kZVJlbW92ZWQKKyAgQ3JlYXRlZCBicmVha3BvaW50cyBtYW5hZ2VyCisgIER1bXBp
bmcgU3RvcmFnZQorICAgIGEuanM6MTAgZW5hYmxlZDp0cnVlIGNvbmRpdGlvbjpmb28gPT0gYmFy
CisgICAgYS5qczoyMCBlbmFibGVkOmZhbHNlIGNvbmRpdGlvbjoKKyAgICBiLmpzOjMgZW5hYmxl
ZDp0cnVlIGNvbmRpdGlvbjoKKyAgQWRkaW5nIHRlbXBvcmFyeSBVSVNvdXJjZUNvZGU6IGEuanMp
CisgICAgZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50KGEuanM6MTA6Zm9vID09IGJhcikKKyAg
ICBicmVha3BvaW50QWRkZWQoYS5qcywgMTAsIGZvbyA9PSBiYXIsIHRydWUpCisgICAgTG9jYXRp
b24gY3JlYXRlZDogYS5qczoxMAorICAgIGJyZWFrcG9pbnRBZGRlZChhLmpzLCAyMCwgLCBmYWxz
ZSkKKyAgQWRkaW5nIFVJU291cmNlQ29kZTogYS5qcykKKyAgUmVtb3ZpbmcgdGVtcG9yYXJ5IFVJ
U291cmNlQ29kZTogYS5qcykKKyAgICBicmVha3BvaW50UmVtb3ZlZChhLmpzLCAxMCkKKyAgICBM
b2NhdGlvbiBkaXNwb3NlZDogYS5qczoxMAorICAgIGRlYnVnZ2VyTW9kZWwucmVtb3ZlQnJlYWtw
b2ludChhLmpzOjEwKQorICAgIGJyZWFrcG9pbnRSZW1vdmVkKGEuanMsIDIwKQorICAgIGRlYnVn
Z2VyTW9kZWwuc2V0QnJlYWtwb2ludChhLmpzOjEwOmZvbyA9PSBiYXIpCisgICAgYnJlYWtwb2lu
dEFkZGVkKGEuanMsIDEwLCBmb28gPT0gYmFyLCB0cnVlKQorICAgIExvY2F0aW9uIGNyZWF0ZWQ6
IGEuanM6MTAKKyAgICBicmVha3BvaW50QWRkZWQoYS5qcywgMjAsICwgZmFsc2UpCisgIER1bXBp
bmcgU3RvcmFnZQorICAgIGEuanM6MTAgZW5hYmxlZDp0cnVlIGNvbmRpdGlvbjpmb28gPT0gYmFy
CisgICAgYS5qczoyMCBlbmFibGVkOmZhbHNlIGNvbmRpdGlvbjoKKyAgICBiLmpzOjMgZW5hYmxl
ZDp0cnVlIGNvbmRpdGlvbjoKKyAgUmVzZXR0aW5nIGJyZWFrcG9pbnQgbWFuYWdlcgorICAgIGJy
ZWFrcG9pbnRSZW1vdmVkKGEuanMsIDEwKQorICAgIExvY2F0aW9uIGRpc3Bvc2VkOiBhLmpzOjEw
CisgICAgZGVidWdnZXJNb2RlbC5yZW1vdmVCcmVha3BvaW50KGEuanM6MTApCisgICAgYnJlYWtw
b2ludFJlbW92ZWQoYS5qcywgMjApCisKIFJ1bm5pbmc6IHRlc3RSZW1vdmVCcmVha3BvaW50cwog
ICBDcmVhdGVkIGJyZWFrcG9pbnRzIG1hbmFnZXIKICAgRHVtcGluZyBTdG9yYWdlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0
bWwKaW5kZXggNDExMDA0YzFkYmJiYzUzMTJjNzMxYzA0YjZkMmE3ODFjZWNhM2MzZC4uMTA2N2Y0
MjQwZDA2YmE0MzhlOGVkNGE5ZDI0YzRmMDZkNDk0NmUzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbApAQCAtMTA4
LDYgKzEwOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICB9CiAKKyAgICB2YXIgdGVt
cG9yYXJ5VUlTb3VyY2VDb2RlcyA9IHt9OwogICAgIFdvcmtzcGFjZU1vY2sucHJvdG90eXBlID0g
ewogICAgICAgICBfYWRkVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1cmwpCiAgICAgICAgIHsKQEAg
LTExOCw2ICsxMTksMjkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICByZXR1cm4gdWlT
b3VyY2VDb2RlOwogICAgICAgICB9LAogCisgICAgICAgIF9hZGRUZW1wb3JhcnlVSVNvdXJjZUNv
ZGU6IGZ1bmN0aW9uKHVybCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZSh1cmwsIG51bGwsIG51bGwsIGZh
bHNlKTsKKyAgICAgICAgICAgIHVpU291cmNlQ29kZS5xcSA9IDM0NTsKKyAgICAgICAgICAgIHVp
U291cmNlQ29kZS5zZXRTb3VyY2VNYXBwaW5nKGRlZmF1bHRNYXBwaW5nKTsKKyAgICAgICAgICAg
IHVpU291cmNlQ29kZXNbdXJsXSA9IHVpU291cmNlQ29kZTsKKyAgICAgICAgICAgIHRlbXBvcmFy
eVVJU291cmNlQ29kZXNbdXJsXSA9IHVpU291cmNlQ29kZTsKKyAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5F
dmVudHMuVGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWQsIHVpU291cmNlQ29kZSk7CisgICAgICAg
ICAgICByZXR1cm4gdWlTb3VyY2VDb2RlOworICAgICAgICB9LAorCisgICAgICAgIF9yZW1vdmVU
ZW1wb3JhcnlVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVybCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZVByb3ZpZGVyLkV2ZW50cy5UZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkLCB0ZW1wb3JhcnlV
SVNvdXJjZUNvZGVzW3VybF0pOworICAgICAgICAgICAgZGVsZXRlIHRlbXBvcmFyeVVJU291cmNl
Q29kZXNbdXJsXTsKKyAgICAgICAgICAgIGRlbGV0ZSB1aVNvdXJjZUNvZGVzW3VybF07CisgICAg
ICAgIH0sCisKKyAgICAgICAgdWlTb3VyY2VDb2RlczogZnVuY3Rpb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh1aVNvdXJjZUNvZGVzKTsKKyAgICAgICAg
fSwKKwogICAgICAgICByZXNldDogZnVuY3Rpb24oKQogICAgICAgICB7CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICBSZXNldHRpbmcgd29ya3NwYWNlLiIpOwpAQCAtMTYw
LDYgKzE4NCwxOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnRN
YW5hZ2VyLl93b3Jrc3BhY2UuX2FkZFVJU291cmNlQ29kZSh1cmwpOwogICAgIH0KIAorICAgIGZ1
bmN0aW9uIGFkZFRlbXBvcmFyeVVJU291cmNlQ29kZShicmVha3BvaW50TWFuYWdlciwgdXJsKQor
ICAgIHsKKyAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX2RlYnVnZ2VyTW9kZWwuX2FkZFNjcmlw
dCh1cmwsIHVybCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgIEFkZGluZyB0
ZW1wb3JhcnkgVUlTb3VyY2VDb2RlOiAiICsgdXJsICsgIikiKTsKKyAgICAgICAgcmV0dXJuIGJy
ZWFrcG9pbnRNYW5hZ2VyLl93b3Jrc3BhY2UuX2FkZFRlbXBvcmFyeVVJU291cmNlQ29kZSh1cmwp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHJlbW92ZVRlbXBvcmFyeVVJU291cmNlQ29kZShicmVh
a3BvaW50TWFuYWdlciwgdXJsKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIiAgUmVtb3ZpbmcgdGVtcG9yYXJ5IFVJU291cmNlQ29kZTogIiArIHVybCArICIpIik7Cisg
ICAgICAgIGJyZWFrcG9pbnRNYW5hZ2VyLl93b3Jrc3BhY2UuX3JlbW92ZVRlbXBvcmFyeVVJU291
cmNlQ29kZSh1cmwpOworICAgIH0KKwogICAgIGZ1bmN0aW9uIGNyZWF0ZUJyZWFrcG9pbnQodWlT
b3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB7IHNvdXJjZUZpbGVJZDogdWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXI6IGxp
bmVOdW1iZXIsIGNvbmRpdGlvbjogY29uZGl0aW9uLCBlbmFibGVkOiBlbmFibGVkIH07CkBAIC0y
NjQsNiArMzAxLDE1IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgcmVzZXRCcmVha3Bv
aW50TWFuYWdlcihicmVha3BvaW50TWFuYWdlciwgbmV4dCk7CiAgICAgICAgIH0sCiAKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdFJlc3RvcmVCcmVha3BvaW50c0FmdGVyVGVtcG9yYXJ5VUlTb3VyY2VD
b2RlUmVtb3ZlZChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludE1h
bmFnZXIgPSBjcmVhdGVCcmVha3BvaW50TWFuYWdlcihzZXJpYWxpemVkQnJlYWtwb2ludHMpOwor
ICAgICAgICAgICAgYWRkVGVtcG9yYXJ5VUlTb3VyY2VDb2RlKGJyZWFrcG9pbnRNYW5hZ2VyLCAi
YS5qcyIpOworICAgICAgICAgICAgYWRkVUlTb3VyY2VDb2RlKGJyZWFrcG9pbnRNYW5hZ2VyLCAi
YS5qcyIpOworICAgICAgICAgICAgcmVtb3ZlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlKGJyZWFrcG9p
bnRNYW5hZ2VyLCAiYS5qcyIpOworICAgICAgICAgICAgcmVzZXRCcmVha3BvaW50TWFuYWdlcihi
cmVha3BvaW50TWFuYWdlciwgbmV4dCk7CisgICAgICAgIH0sCisKICAgICAgICAgZnVuY3Rpb24g
dGVzdFJlbW92ZUJyZWFrcG9pbnRzKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBi
cmVha3BvaW50TWFuYWdlciA9IGNyZWF0ZUJyZWFrcG9pbnRNYW5hZ2VyKHNlcmlhbGl6ZWRCcmVh
a3BvaW50cyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHlu
YW1pYy1zY3JpcHQtdGFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9keW5hbWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0CmluZGV4IGY4OWViNDgwYmRlOGJh
NDRjZjJkZjkwODI5YzlmOGVmOTA1YWJmZmQuLjVkNTk5MWMyMjZjZDNiZGYwOWVjOWUxYzI5MjQ3
NmI2YTA0YzVjMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9k
eW5hbWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0CkBAIC05LDEyICs5LDEy
IEBAIHNjcmlwdDI6IExheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlw
dC10YWcuaHRtbAogSXMgYW5vbnltb3VzOmZhbHNlCiBJcyBpbmxpbmUgc2NyaXB0OmZhbHNlCiBE
dW1waW5nIHVpU291cmNlQ29kZXM6Ci1VSVNvdXJjZUNvZGU6IExheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWcuaHRtbCAoMSkKK1VJU291cmNlQ29kZTogCiBV
SVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUKIFVJU291cmNlQ29kZSBpcyBjb250ZW50IHNj
cmlwdDogZmFsc2UKIE1pbWUgdHlwZTogdGV4dC9qYXZhc2NyaXB0CiBVSVNvdXJjZUNvZGUgY29u
dGVudDogZnVuY3Rpb24gZm9vKCkgeyB9Ci1VSVNvdXJjZUNvZGU6IExheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWcuaHRtbCAoMikKK1VJU291cmNlQ29kZTog
CiBVSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUKIFVJU291cmNlQ29kZSBpcyBjb250ZW50
IHNjcmlwdDogZmFsc2UKIE1pbWUgdHlwZTogdGV4dC9qYXZhc2NyaXB0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2Utc2NyaXB0LW1hcHBpbmcuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGlu
Zy5odG1sCmluZGV4IDY5ZTdkNWE5Y2UzMDBmODFlY2YwNWEzZTZjYjNhYWRmMGFlOWMxNTMuLjAz
ZjRjMmRkMzUwOGExZGQ1MTQ5MzExMTg1ZDE4NzRkMGY4MzllOWUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGlu
Zy5odG1sCkBAIC0yNSwzMiArMjUsMzQgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAg
IGZ1bmN0aW9uIHN0ZXAxKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHVpU291cmNlQ29k
ZUFkZGVkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5n
IHNjcmlwdCBmb3IgcGVuZGluZyByZXF1ZXN0LiIpOwogICAgICAgICAgICAgICAgIHNjcmlwdCA9
IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jayh1cmwsIDAsIDAsIHRydWUsICI8Y29udGVu
dCBzY3JpcHQgc291cmNlPiIpOwogICAgICAgICAgICAgICAgIHJlc291cmNlU2NyaXB0TWFwcGlu
Zy5hZGRTY3JpcHQoc2NyaXB0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNv
dXJjZUNvZGVBZGRlZEV2ZW50KHRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAg
ICAgICAgICBzY3JpcHQucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSk7CiAKLSAgICAgICAg
ICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJj
ZUNvZGUsIDAsIDUsIHNjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7Ci0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMTAsIDAs
IHVpU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxMCwgMCkpOwotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIHN0ZXAy
KTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZCh1
aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdC5yYXdM
b2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDEwLCAwLCB1aVNvdXJjZUNvZGUudWlMb2Nh
dGlvblRvUmF3TG9jYXRpb24oMTAsIDApKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgc3RlcDIpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDIoKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZGRp
bmcgdWlTb3VyY2VDb2RlIGZvciBmaW5pc2hlZCByZXNvdXJjZS4iKTsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVSZXBsYWNlZEV2ZW50
KHVpU291cmNlQ29kZVJlcGxhY2VkV2l0aFJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KGZ1bmN0aW9u
KCkgeyB9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VU
ZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkRXZlbnQoZnVuY3Rpb24oKSB7IH0pOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFkZGVk
RXZlbnQodWlTb3VyY2VDb2RlQWRkZWQpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkTW9ja1VJU291cmNlQ29kZVRvV29ya3NwYWNlKHVybCwgV2ViSW5zcGVjdG9yLnJlc291cmNl
VHlwZXMuU2NyaXB0LCAiPGNvbnRlbnQgc2NyaXB0IHJlc291cmNlIGNvbnRlbnQ+Iik7Ci0gICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZVJlcGxhY2VkV2l0
aFJlc291cmNlKHVpU291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29k
ZSwgMCwgNSwgc2NyaXB0LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDUpKTsKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxMCwgMCwgdWlT
b3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgbmV4dCk7Cisg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VDb2RlKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVj
a1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAwLCA1LCBzY3JpcHQucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24oMCwgNSkpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3
TG9jYXRpb24oc2NyaXB0LCAxMCwgMCwgdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0
aW9uKDEwLCAwKSk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291
cmNlQ29kZSh1aVNvdXJjZUNvZGUsIG5leHQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfSwKIApAQCAtOTgsNDcgKzEwMCw1MCBAQCBmdW5jdGlvbiB0ZXN0KCkK
IAogICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFkZGVkRXZl
bnQodWlTb3VyY2VDb2RlQWRkZWQpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJBZGRpbmcgZmlyc3Qgc2NyaXB0IGZvciBwZW5kaW5nIHJlcXVlc3QuIik7CiAgICAg
ICAgICAgICAgICAgc2NyaXB0MSA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jayh1cmws
IDAsIDEwLCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDE+Iik7CiAgICAgICAgICAgICAgICAgcmVz
b3VyY2VTY3JpcHRNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQxKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jr
c3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHRlbXBvcmFyeVVJU291cmNlQ29k
ZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBzY3JpcHQxLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9u
KDAsIDUpOwogCi0gICAgICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJj
ZUNvZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVj
a1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAwLCA1LCBzY3JpcHQxLnJhd0xvY2F0aW9uVG9VSUxv
Y2F0aW9uKDAsIDUpKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9j
YXRpb24oc2NyaXB0MSwgMTAsIDAsIHVpU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlv
bigxMCwgMCkpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29k
ZSh1aVNvdXJjZUNvZGUsIHN0ZXAyKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZW1wb3Jh
cnlVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNv
ZGUsIDAsIDUsIHNjcmlwdDEucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOworICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgMTAs
IDAsIHVpU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxMCwgMCkpOworICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2Rl
LCBzdGVwMik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMigpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIkFkZGluZyBzZWNvbmQgc2NyaXB0IGZvciBwZW5kaW5nIHJlcXVl
c3QuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlT
b3VyY2VDb2RlUmVwbGFjZWRFdmVudCh1aVNvdXJjZUNvZGVSZXBsYWNlZCk7CiAgICAgICAgICAg
ICAgICAgc2NyaXB0MiA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jayh1cmwsIDAsIDQ1
LCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDI+Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlUmVtb3ZlZEV2ZW50KGZ1
bmN0aW9uKCkgeyB9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jr
c3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHRlbXBvcmFyeVVJU291cmNlQ29k
ZUFkZGVkKTsKICAgICAgICAgICAgICAgICByZXNvdXJjZVNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0
KHNjcmlwdDIpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiB1aVNvdXJj
ZUNvZGVSZXBsYWNlZCh1aVNvdXJjZUNvZGUsIG9sZFVJU291cmNlQ29kZSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih1aVNvdXJj
ZUNvZGUsIDAsIDUsIHNjcmlwdDIucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOwotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxMCwg
MCwgdWlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7Ci0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgc3Rl
cDMpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVk
KHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMCwgNSwgc2NyaXB0Mi5y
YXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7CisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxMCwgMCwgdWlTb3VyY2VDb2RlLnVp
TG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7CisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZHVtcFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIHN0ZXAzKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
QWRkaW5nIHVpU291cmNlQ29kZSBmb3IgZmluaXNoZWQgcmVzb3VyY2UuIik7Ci0gICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlUmVwbGFjZWRF
dmVudCh1aVNvdXJjZUNvZGVSZXBsYWNlZFdpdGhSZXNvdXJjZSk7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRFdmVudChmdW5j
dGlvbigpIHsgfSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3Nw
YWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlUmVtb3ZlZEV2ZW50KGZ1bmN0aW9uKCkgeyB9KTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVB
ZGRlZEV2ZW50KHVpU291cmNlQ29kZUFkZGVkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZE1vY2tVSVNvdXJjZUNvZGVUb1dvcmtzcGFjZSh1cmwsIFdlYkluc3BlY3Rvci5yZXNv
dXJjZVR5cGVzLkRvY3VtZW50LCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7Ci0gICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZVJlcGxhY2VkV2l0aFJlc291cmNl
KHVpU291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMCwgNSwg
c2NyaXB0MS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7Ci0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDEsIDEwLCAwLCB1aVNvdXJjZUNv
ZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTAsIDApKTsKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBuZXh0KTsKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbiB1aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrVUlMb2Nh
dGlvbih1aVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdDEucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24o
MCwgNSkpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRp
b24oc2NyaXB0MSwgMTAsIDAsIHVpU291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigx
MCwgMCkpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNv
ZGUodWlTb3VyY2VDb2RlLCBuZXh0KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0sCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dAppbmRleCBiYTIzZDFmNmJhZmEyNWM3NDYy
MTdlMjBlZjFhMDU0OWZhNDAxZGJjLi5jZGI2ODJlMzYxNTdhZmY5Mzk0YmI5Y2UyMjc4ZWUwZWQ1
Yzg0ODU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
cy1wYW5lbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdHMtcGFuZWwtZXhwZWN0ZWQudHh0CkBAIC0yMSw5ICsyMSw4IEBAIER1bXBpbmcgU2Ny
aXB0c05hdmlnYXRvciAnU2NyaXB0cycgdGFiOgogICBiYXIuanMKIER1bXBpbmcgU2NyaXB0c05h
dmlnYXRvciAnQ29udGVudCBzY3JpcHRzJyB0YWI6CiAKLVJ1bm5pbmc6IHRlc3RTb3VyY2VSZXBs
YWNlZAorUnVubmluZzogdGVzdFRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkQW5kUmVtb3ZlZAog
RHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdTY3JpcHRzJyB0YWI6Ci0gIGNvbXBpbGVkLmpzCiAg
IGZvby5qcwogRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdDb250ZW50IHNjcmlwdHMnIHRhYjoK
IER1bXBpbmcgU2NyaXB0c05hdmlnYXRvciAnU2NyaXB0cycgdGFiOgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKaW5kZXggNTIyMjFiZjQx
MjJjOWRhZDVhMGNmNzY0Y2JjMTVlNTIxMzkxOWQ5Yi4uZWQ2MjI4MDY0ZmE1YzJmYTk0MjQzNTI5
NGVkMzM5YmEzNDIxMmFmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdHMtcGFuZWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0cy1wYW5lbC5odG1sCkBAIC04Niw3ICs4Niw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RT
b3VyY2VSZXBsYWNlZChuZXh0KQorICAgICAgICBmdW5jdGlvbiB0ZXN0VGVtcG9yYXJ5VUlTb3Vy
Y2VDb2RlQWRkZWRBbmRSZW1vdmVkKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciB3
b3Jrc3BhY2UgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZSgpOwogICAgICAgICAgICAgdmFy
IHBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwod29ya3NwYWNlKTsKQEAgLTk1
LDEzICs5NSwxNCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNv
ZGVGb28gPSBjcmVhdGVVSVNvdWNlQ29kZSgiZm9vLmpzIik7CiAgICAgICAgICAgICB3b3Jrc3Bh
Y2UucHJvamVjdCgpLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVGb28pOwogICAgICAgICAg
ICAgdmFyIGNvbXBpbGVkU291cmNlQ29kZSA9IGNyZWF0ZVVJU291Y2VDb2RlKCJjb21waWxlZC5q
cyIpOwotICAgICAgICAgICAgd29ya3NwYWNlLnByb2plY3QoKS5hZGRVSVNvdXJjZUNvZGUoY29t
cGlsZWRTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgIHdvcmtzcGFjZS5wcm9qZWN0KCkuYWRkVGVt
cG9yYXJ5VUlTb3VyY2VDb2RlKGNvbXBpbGVkU291cmNlQ29kZSk7CiAKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcFNjcmlwdHNOYXZpZ2F0b3IocGFuZWwuX25hdmlnYXRvcik7CiAKICAg
ICAgICAgICAgIC8vIFBsdWcgY29tcGlsZXIgc291cmNlIG1hcHBpbmcuCiAgICAgICAgICAgICB2
YXIgc291cmNlU291cmNlQ29kZSA9IGNyZWF0ZVVJU291Y2VDb2RlKCJzb3VyY2UuanMiKTsKLSAg
ICAgICAgICAgIHdvcmtzcGFjZS5wcm9qZWN0KCkucmVwbGFjZVVJU291cmNlQ29kZShjb21waWxl
ZFNvdXJjZUNvZGUsIHNvdXJjZVNvdXJjZUNvZGUpOworICAgICAgICAgICAgd29ya3NwYWNlLnBy
b2plY3QoKS5hZGRVSVNvdXJjZUNvZGUoc291cmNlU291cmNlQ29kZSk7CisgICAgICAgICAgICB3
b3Jrc3BhY2UucHJvamVjdCgpLnJlbW92ZVRlbXBvcmFyeVVJU291cmNlQ29kZShjb21waWxlZFNv
dXJjZUNvZGUpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdh
dG9yKHBhbmVsLl9uYXZpZ2F0b3IpOwogICAgICAgICAgICAgbmV4dCgpOwo=
</data>
<flag name="review"
          id="177954"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="177968"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>