<?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>95985</bug_id>
          
          <creation_ts>2012-09-06 08:14:04 -0700</creation_ts>
          <short_desc>Web Inspector: Migrate FileSystem to async protocol commands.</short_desc>
          <delta_ts>2012-09-07 05:23:33 -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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>tzik</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713301</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 08:14:04 -0700</bug_when>
    <thetext>Migrate FileSystem to async protocol commands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713393</commentid>
    <comment_count>1</comment_count>
      <attachid>162530</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 10:00:01 -0700</bug_when>
    <thetext>Created attachment 162530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714407</commentid>
    <comment_count>2</comment_count>
      <attachid>162530</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-07 04:50:25 -0700</bug_when>
    <thetext>Comment on attachment 162530
Patch

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

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:169
&gt; +                callback(FileError.SECURITY_ERR);

optional callback used unconditionally?

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:255
&gt; +                callback(FileError.SECURITY_ERR);

ditto

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:332
&gt; +     * @param {function(number, string=, string=)=} callback

param declared as optional but used without any checks in the code

&gt; Source/WebCore/inspector/front-end/FileSystemModel.js:387
&gt; +                callback(FileError.SECURITY_ERR);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714410</commentid>
    <comment_count>3</comment_count>
      <attachid>162530</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-07 04:58:04 -0700</bug_when>
    <thetext>Comment on attachment 162530
Patch

r=me

Please fix the optional argument usages before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714426</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-07 05:23:33 -0700</bug_when>
    <thetext>Committed r127858: &lt;http://trac.webkit.org/changeset/127858&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162530</attachid>
            <date>2012-09-06 10:00:01 -0700</date>
            <delta_ts>2012-09-07 04:58:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95985-20120906205941.patch</filename>
            <type>text/plain</type>
            <size>68207</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI5MjAyYzRjOTkzMWY5
MzZjOTg4NDAxYmU0N2I5MmQ0ZjJjNDRhOC4uOTAyYzhmZWRhMGI3MDBmZGExZWM3MTU3ZGI5MzY5
MDU2Mjc2NzU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA5LTA2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE1pZ3JhdGUgRmlsZVN5c3RlbSB0byBhc3luYyBwcm90b2NvbCBjb21tYW5kcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTg1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWlncmF0ZWQgRmlsZVN5
c3RlbSBkb21haW4gdG8gYXN5bmMgcHJvdG9jb2wgY29tbWFuZHMgYW5kIHJlbW92ZWQgYm9pbGVy
cGxhdGUgY29kZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojp+SW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdERpcmVjdG9yeUNvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0TWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpyZXF1ZXN0RmlsZUNv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpkZWxl
dGVFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmNs
ZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50Ojphc3NlcnRFbmFibGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5fb3JpZ2luQWRkZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX3JlcXVlc3RGaWxlU3lzdGVt
Um9vdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5y
ZXF1ZXN0RGlyZWN0b3J5Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLnByb3RvdHlwZS5fcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX2RpcmVjdG9yeUNvbnRlbnRSZWNl
aXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZS5y
ZXF1ZXN0TWV0YWRhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5w
cm90b3R5cGUucmVxdWVzdEZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtTW9kZWwucHJvdG90eXBlLl9yZXF1ZXN0RmlsZUNvbnRlbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUuX2RlbGV0ZUVudHJ5KToKKwogMjAx
Mi0wOS0wNiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZWZhY3RvciBDYWxlbmRhclBpY2tlciB0byBub3QgdXNlIGdsb2JhbCB2YXJpYWJsZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggZTJkZTMzMDFhYzgxNjVkOTZh
NTA3ZTAyZTVjMjRhMmM0ZDY3MzJjMi4uMDhhYTdjMmU0NzVkNWVhYzA1MDE4ZTY1YmFhMmU4OGRi
YjYwNDdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTQ3
MCwxMSArMTQ3MCw2IEBACiAgICAgICAgICJoaWRkZW4iOiB0cnVlLAogICAgICAgICAidHlwZXMi
OiBbCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgImlkIjogIlJlcXVlc3RJZCIsCi0g
ICAgICAgICAgICAgICAgInR5cGUiOiAiaW50ZWdlciIsCi0gICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlJlcXVlc3QgSWRlbnRpZmllciB0byBnbHVlIGEgcmVxdWVzdCBhbmQgaXRzIGNv
bXBsZXRpb24gZXZlbnQuIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAiaWQiOiAiRW50cnkiLAogICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIs
CiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCkBAIC0xNTA4LDM3ICsxNTAzLDQ0IEBA
CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjog
InJlcXVlc3RGaWxlU3lzdGVtUm9vdCIsCisgICAgICAgICAgICAgICAgImFzeW5jIjogdHJ1ZSwK
ICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJvcmlnaW4iLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJp
dHkgb3JpZ2luIG9mIHJlcXVlc3RpbmcgRmlsZVN5c3RlbS4gT25lIG9mIGZyYW1lcyBpbiBjdXJy
ZW50IHBhZ2UgbmVlZHMgdG8gaGF2ZSB0aGlzIHNlY3VyaXR5IG9yaWdpbi4iIH0sCiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidHlwZSIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjog
WyJ0ZW1wb3JhcnkiLCAicGVyc2lzdGVudCJdLCAiZGVzY3JpcHRpb24iOiAiRmlsZVN5c3RlbSB0
eXBlIG9mIHJlcXVlc3RpbmcgRmlsZVN5c3RlbS4iIH0KICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0
IGlkZW50aWZpZXIuIENvcnJlc3BvbmRpbmcgZmlsZVN5c3RlbVJvb3RSZWNlaXZlZCBldmVudCBz
aG91bGQgaGF2ZSBzYW1lIHJlcXVlc3RJZCB3aXRoIHRoaXMuIiB9CisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlv
biI6ICIwLCBpZiBubyBlcnJvci4gT3RoZXJ3aXNlLCBlcnJvckNvZGUgaXMgc2V0IHRvIEZpbGVF
cnJvcjo6RXJyb3JDb2RlIHZhbHVlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyb290IiwgIiRyZWYiOiAiRW50cnkiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiQ29udGFpbnMgcm9vdCBvZiB0aGUgcmVxdWVzdGVkIEZpbGVTeXN0ZW0gaWYgdGhlIGNvbW1h
bmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4iIH0KICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBG
aWxlU3lzdGVtIGFzIGZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQgZXZlbnQsIGlmIGV4aXN0cy4iCisg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhlIEZpbGVTeXN0ZW0sIGlmIGV4aXN0cy4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3REaXJlY3RvcnlDb250ZW50IiwKKyAg
ICAgICAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmlu
ZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IHRoZSBmcm9udGVu
ZCBpcyByZXF1ZXN0aW5nIHRvIHJlYWQgZnJvbS4iIH0KICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0
IGlkZW50aWZpZXIuIENvcnJlc3BvbmRpbmcgZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkIGV2ZW50
IHNob3VsZCBoYXZlIHNhbWUgcmVxdWVzdElkIHdpdGggdGhpcy4iIH0KKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJlcnJvckNvZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0
aW9uIjogIjAsIGlmIG5vIGVycm9yLiBPdGhlcndpc2UsIGVycm9yQ29kZSBpcyBzZXQgdG8gRmls
ZUVycm9yOjpFcnJvckNvZGUgdmFsdWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImVudHJpZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiRW50cnki
IH0sICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJDb250YWlucyBhbGwgZW50cmll
cyBvbiBkaXJlY3RvcnkgaWYgdGhlIGNvbW1hbmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4iIH0K
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1
cm5zIGNvbnRlbnQgb2YgdGhlIGRpcmVjdG9yeSBhcyBkaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQg
ZXZlbnQuIgorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGNvbnRlbnQg
b2YgdGhlIGRpcmVjdG9yeS4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICJuYW1lIjogInJlcXVlc3RNZXRhZGF0YSIsCisgICAgICAgICAgICAgICAgImFz
eW5jIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24i
OiAiVVJMIG9mIHRoZSBlbnRyeSB0aGF0IHRoZSBmcm9udGVuZCBpcyByZXF1ZXN0aW5nIHRvIGdl
dCBtZXRhZGF0YSBmcm9tLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAg
InJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwg
IiRyZWYiOiAiUmVxdWVzdElkIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWRlbnRpZmllci4g
Q29ycmVzcG9uZGluZyBtZXRhZGF0YVJlY2VpdmVkIGV2ZW50IHNob3VsZCBoYXZlIHNhbWUgcmVx
dWVzdElkIHdpdGggdGhpcy4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlcnJv
ckNvZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIjAsIGlmIG5vIGVycm9y
LiBPdGhlcndpc2UsIGVycm9yQ29kZSBpcyBzZXQgdG8gRmlsZUVycm9yOjpFcnJvckNvZGUgdmFs
dWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1ldGFkYXRhIiwgIiRyZWYi
OiAiTWV0YWRhdGEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiQ29udGFpbnMg
bWV0YWRhdGEgb2YgdGhlIGVudHJ5IGlmIHRoZSBjb21tYW5kIGNvbXBsZXRlZCBzdWNjZXNzZnVs
bHkuIiB9CiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmV0dXJucyBtZXRhZGF0YSBvZiB0aGUgZW50cnkgYXMgbWV0YWRhdGFSZWNlaXZlZCBldmVu
dC4iCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgbWV0YWRhdGEgb2Yg
dGhlIGVudHJ5LiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgIm5hbWUiOiAicmVxdWVzdEZpbGVDb250ZW50IiwKKyAgICAgICAgICAgICAgICAiYXN5bmMi
OiB0cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJV
Ukwgb2YgdGhlIGZpbGUgdGhhdCB0aGUgZnJvbnRlbmQgaXMgcmVxdWVzdGluZyB0byByZWFkIGZy
b20uIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlYWRBc1RleHQiLCAidHlw
ZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUgaWYgdGhlIGNvbnRlbnQgc2hvdWxk
IGJlIHJlYWQgYXMgdGV4dCwgb3RoZXJ3aXNlIHRoZSByZXN1bHQgd2lsbCBiZSByZXR1cm5lZCBh
cyBiYXNlNjQgZW5jb2RlZCB0ZXh0LiIgfSwKQEAgLTE1NDcsNjYgKzE1NDksMjIgQEAKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjaGFyc2V0IiwgInR5cGUiOiAic3RyaW5nIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk92ZXJyaWRlcyBjaGFyc2V0IG9mIHRoZSBj
b250ZW50IHdoZW4gY29udGVudCBpcyBzZXJ2ZWQgYXMgdGV4dC4iIH0KICAgICAgICAgICAgICAg
ICBdLAogICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6
ICJSZXF1ZXN0IGlkZW50aWZpZXIuIENvcnJlc3BvbmRpbmcgZmlsZUNvbnRlbnRSZWNlaXZlZCBl
dmVudCBzaG91bGQgaGF2ZSBzYW1lIHJlcXVlc3RJZCB3aXRoIHRoaXMuIiB9CisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNj
cmlwdGlvbiI6ICIwLCBpZiBubyBlcnJvci4gT3RoZXJ3aXNlLCBlcnJvckNvZGUgaXMgc2V0IHRv
IEZpbGVFcnJvcjo6RXJyb3JDb2RlIHZhbHVlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJjb250ZW50IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIkNvbnRlbnQgb2YgdGhlIGZpbGUuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImNoYXJzZXQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiQ2hhcnNldCBvZiB0aGUgY29udGVudCBpZiBpdCBpcyBzZXJ2ZWQg
YXMgdGV4dC4iIH0KICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJSZXR1cm5zIGNvbnRlbnQgb2YgdGhlIGZpbGUgYXMgZmlsZUNvbnRlbnRSZWNlaXZl
ZCBldmVudC4gUmVzdWx0IHNob3VsZCBiZSBzbGljZWQgaW50byBbc3RhcnQsIGVuZCkuIgorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIGNvbnRlbnQgb2YgdGhlIGZpbGUu
IFJlc3VsdCBzaG91bGQgYmUgc2xpY2VkIGludG8gW3N0YXJ0LCBlbmQpLiIKICAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGVsZXRlRW50cnki
LAorICAgICAgICAgICAgICAgICJhc3luYyI6IHRydWUsCiAgICAgICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAi
c3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlVSTCBvZiB0aGUgZW50cnkgdG8gZGVsZXRlLiIgfQog
ICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgIiRyZWYiOiAiUmVxdWVzdElkIiwg
ImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWRlbnRpZmllci4gQ29ycmVzcG9uZGluZyBkZWxldGlv
bkNvbXBsZXRlZCBldmVudCBzaG91bGQgaGF2ZSBzYW1lIHJlcXVlc3RJZCB3aXRoIHRoaXMuIiB9
Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGVs
ZXRlcyBzcGVjaWZpZWQgZW50cnkuIElmIHRoZSBlbnRyeSBpcyBhIGRpcmVjdG9yeSwgdGhlIGFn
ZW50IGRlbGV0ZXMgY2hpbGRyZW4gcmVjdXJzaXZlbHkuIgotICAgICAgICAgICAgfQotICAgICAg
ICBdLAotICAgICAgICAiZXZlbnRzIjogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICJuYW1lIjogImZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQiLAotICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0
eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBJZGVudGlmaWVyIHRoYXQg
d2FzIHJldHVybmVkIGJ5IGNvcnJlc3BvbmRpbmcgcmVxdWVzdEZpbGVTeXN0ZW1Sb290IGNvbW1h
bmQuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVycm9yQ29kZSIsICJ0eXBl
IjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiMCwgaWYgbm8gZXJyb3IuIE90aGVyd2lzZSwg
ZXJyb3JDb2RlIGlzIHNldCB0byBGaWxlRXJyb3I6OkVycm9yQ29kZSB2YWx1ZS4iIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicm9vdCIsICIkcmVmIjogIkVudHJ5IiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkNvbnRhaW5zIHJvb3Qgb2YgdGhlIHJlcXVlc3Rl
ZCBGaWxlU3lzdGVtIGlmIHRoZSBjb21tYW5kIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIiB9Ci0g
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tcGxl
dGlvbiBldmVudCBvZiByZXF1ZXN0RmlsZVN5c3RlbVJvb3QgY29tbWFuZC4iCi0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogImRpcmVjdG9yeUNv
bnRlbnRSZWNlaXZlZCIsCi0gICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJk
ZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IElkZW50aWZpZXIgdGhhdCB3YXMgcmV0dXJuZWQgYnkgY29y
cmVzcG9uZGluZyByZXF1ZXN0RGlyZWN0b3J5Q29udGVudCBjb21tYW5kLiIgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJlcnJvckNvZGUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRl
c2NyaXB0aW9uIjogIjAsIGlmIG5vIGVycm9yLiBPdGhlcndpc2UsIGVycm9yQ29kZSBpcyBzZXQg
dG8gRmlsZUVycm9yOjpFcnJvckNvZGUgdmFsdWUuIiB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImVudHJpZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
RW50cnkiIH0sICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJDb250YWlucyBhbGwg
ZW50cmllcyBvbiBkaXJlY3RvcnkgaWYgdGhlIGNvbW1hbmQgY29tcGxldGVkIHN1Y2Nlc3NmdWxs
eS4iIH0KLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJDb21wbGV0aW9uIGV2ZW50IG9mIHJlcXVlc3REaXJlY3RvcnlDb250ZW50IGNvbW1hbmQuIgot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJt
ZXRhZGF0YVJlY2VpdmVkIiwKLSAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwg
ImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgSWRlbnRpZmllciB0aGF0IHdhcyByZXR1cm5lZCBpbiBy
ZXNwb25zZSB0byB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0TWV0YWRhdGEgY29tbWFuZC4iIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwgInR5cGUiOiAiaW50
ZWdlciIsICJkZXNjcmlwdGlvbiI6ICIwLCBpZiBubyBlcnJvci4gT3RoZXJ3aXNlLCBlcnJvckNv
ZGUgaXMgc2V0IHRvIEZpbGVFcnJvcjo6RXJyb3JDb2RlIHZhbHVlLiIgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJtZXRhZGF0YSIsICIkcmVmIjogIk1ldGFkYXRhIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkNvbnRhaW5zIG1ldGFkYXRhIG9mIHRoZSBlbnRy
eSBpZiB0aGUgY29tbWFuZCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiIgfQotICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBsZXRpb24gZXZlbnQg
b2YgcmVxdWVzdE1ldGFkYXRhIGNvbW1hbmQuIgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJmaWxlQ29udGVudFJlY2VpdmVkIiwKLSAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3Qg
SWRlbnRpZmllciB0aGF0IHdhcyByZXR1cm5lZCBpbiByZXNwb25zZSB0byB0aGUgY29ycmVzcG9u
ZGluZyByZXF1ZXN0RmlsZUNvbnRlbnQgY29tbWFuZC4iIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiZXJyb3JDb2RlIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICIwLCBpZiBubyBlcnJvci4gT3RoZXJ3aXNlLCBlcnJvckNvZGUgaXMgc2V0IHRvIEZpbGVFcnJv
cjo6RXJyb3JDb2RlIHZhbHVlLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJj
b250ZW50IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIkNvbnRlbnQgb2YgdGhlIGZpbGUuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImNoYXJzZXQiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiQ2hhcnNldCBvZiB0aGUgY29udGVudCBpZiBpdCBpcyBzZXJ2ZWQgYXMgdGV4dC4i
IH0KLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJD
b21wbGV0aW9uIGV2ZW50IG9mIHJlcXVlc3RGaWxlQ29udGVudCBjb21tYW5kLiIKLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAiZGVsZXRpb25D
b21wbGV0ZWQiLAotICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3Jp
cHRpb24iOiAiUmVxdWVzdCBJZGVudGlmaWVyIHRoYXQgd2FzIHJldHVybmVkIGluIHJlc3BvbnNl
IHRvIHRoZSBjb3JyZXNwb25kaW5nIGRlbGV0ZUVudHJ5IGNvbW1hbmQuIiB9LAogICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImVycm9yQ29kZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVz
Y3JpcHRpb24iOiAiMCwgaWYgbm8gZXJyb3IuIE90aGVyd2lzZSBlcnJvckNvZGUgaXMgc2V0IHRv
IEZpbGVFcnJvcjo6RXJyb3JDb2RlIHZhbHVlLiIgfQogICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBsZXRpb24gZXZlbnQgb2YgZGVsZXRlRW50
cnkgY29tbWFuZC4iCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRlbGV0ZXMgc3Bl
Y2lmaWVkIGVudHJ5LiBJZiB0aGUgZW50cnkgaXMgYSBkaXJlY3RvcnksIHRoZSBhZ2VudCBkZWxl
dGVzIGNoaWxkcmVuIHJlY3Vyc2l2ZWx5LiIKICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAg
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQuY3BwCmluZGV4IDljNjU1MjZiNGQxOWRiNmJhMWVmZGFlN2U0ZTQ1YTI1ZWU1MmEz
MzAuLmMyNzIyZmUzYTRkN2UzYjExOWI4NWRjZDJmMjAxYzg0MTA1ODgxY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3Bw
CkBAIC02OCw0NCArNjgsMTggQEAKIAogdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkFycmF5
OwogCit0eXBlZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpGaWxlU3lz
dGVtQ29tbWFuZEhhbmRsZXI6OlJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrIFJlcXVlc3RG
aWxlU3lzdGVtUm9vdENhbGxiYWNrOwordHlwZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6RmlsZVN5c3RlbUNvbW1hbmRIYW5kbGVyOjpSZXF1ZXN0RGlyZWN0b3J5Q29u
dGVudENhbGxiYWNrIFJlcXVlc3REaXJlY3RvcnlDb250ZW50Q2FsbGJhY2s7Cit0eXBlZGVmIFdl
YkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpGaWxlU3lzdGVtQ29tbWFuZEhhbmRs
ZXI6OlJlcXVlc3RNZXRhZGF0YUNhbGxiYWNrIFJlcXVlc3RNZXRhZGF0YUNhbGxiYWNrOwordHlw
ZWRlZiBXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RmlsZVN5c3RlbUNvbW1h
bmRIYW5kbGVyOjpSZXF1ZXN0RmlsZUNvbnRlbnRDYWxsYmFjayBSZXF1ZXN0RmlsZUNvbnRlbnRD
YWxsYmFjazsKK3R5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZp
bGVTeXN0ZW1Db21tYW5kSGFuZGxlcjo6RGVsZXRlRW50cnlDYWxsYmFjayBEZWxldGVFbnRyeUNh
bGxiYWNrOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBGaWxlU3lzdGVtQWdl
bnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciBmaWxlU3lzdGVtQWdlbnRFbmFibGVkW10gPSAi
ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCI7CiB9CiAKLWNsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6RnJvbnRlbmRQcm92aWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZyb250ZW5kUHJvdmlk
ZXI+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcm9udGVuZFByb3ZpZGVyKTsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBjcmVhdGUoSW5zcGVj
dG9yRmlsZVN5c3RlbUFnZW50KiBhZ2VudCwgSW5zcGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0ZW0q
IGZyb250ZW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGcm9udGVuZFBy
b3ZpZGVyKGFnZW50LCBmcm9udGVuZCkpOwotICAgIH0KLQotICAgIEluc3BlY3RvckZyb250ZW5k
OjpGaWxlU3lzdGVtKiBmcm9udGVuZCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9hZ2Vu
dCAmJiBtX2FnZW50LT5tX2VuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9mcm9udGVuZDsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAg
ICAgICBtX2FnZW50ID0gMDsKLSAgICAgICAgbV9mcm9udGVuZCA9IDA7Ci0gICAgfQotCi1wcml2
YXRlOgotICAgIEZyb250ZW5kUHJvdmlkZXIoSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KiBhZ2Vu
dCwgSW5zcGVjdG9yRnJvbnRlbmQ6OkZpbGVTeXN0ZW0qIGZyb250ZW5kKQotICAgICAgICA6IG1f
YWdlbnQoYWdlbnQpCi0gICAgICAgICwgbV9mcm9udGVuZChmcm9udGVuZCkgeyB9Ci0KLSAgICBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQqIG1fYWdlbnQ7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6
OkZpbGVTeXN0ZW0qIG1fZnJvbnRlbmQ7Ci19OwotCi10eXBlZGVmIEluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudDo6RnJvbnRlbmRQcm92aWRlciBGcm9udGVuZFByb3ZpZGVyOwotCiBuYW1lc3BhY2Ug
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlQ2FsbGJhY2ssIHR5cGVuYW1lIEhhbmRsZXIsIHR5
cGVuYW1lIEFyZ3VtZW50PgpAQCAtMTQyLDMzICsxMTYsMTIgQEAgcHVibGljOgogICAgIH0KIH07
CiAKLWNsYXNzIFJlcG9ydEVycm9yVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxSZXBvcnRFcnJvclRhc2s+
IGNyZWF0ZShQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJv
cjo6RXJyb3JDb2RlIGVycm9yQ29kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgUmVwb3J0RXJyb3JUYXNrKGVycm9yQ2FsbGJhY2ssIGVycm9yQ29kZSkpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZF
UlJJREUKLSAgICB7Ci0gICAgICAgIG1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVy
cm9yOjpjcmVhdGUobV9lcnJvckNvZGUpLmdldCgpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
UmVwb3J0RXJyb3JUYXNrKFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
RmlsZUVycm9yOjpFcnJvckNvZGUgZXJyb3JDb2RlKQotICAgICAgICA6IG1fZXJyb3JDYWxsYmFj
ayhlcnJvckNhbGxiYWNrKQotICAgICAgICAsIG1fZXJyb3JDb2RlKGVycm9yQ29kZSkgeyB9Ci0K
LSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gbV9lcnJvckNhbGxiYWNrOwotICAgIEZpbGVFcnJv
cjo6RXJyb3JDb2RlIG1fZXJyb3JDb2RlOwotfTsKLQogY2xhc3MgRmlsZVN5c3RlbVJvb3RSZXF1
ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN5c3RlbVJvb3RSZXF1ZXN0PiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRmlsZVN5c3RlbVJvb3RSZXF1ZXN0KTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGaWxlU3lzdGVtUm9vdFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRy
PEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluZyYgdHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlU3lzdGVtUm9vdFJlcXVl
c3Q+IGNyZWF0ZShQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENhbGxiYWNrPiByZXF1
ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRmlsZVN5c3RlbVJvb3RSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVl
c3RJZCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVTeXN0ZW1Sb290
UmVxdWVzdChyZXF1ZXN0Q2FsbGJhY2ssIHR5cGUpKTsKICAgICB9CiAKICAgICB2b2lkIHN0YXJ0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKQEAgLTE4NCwxOSArMTM3LDE0IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJyb3I6OkVycm9yQ29kZSBlcnJvckNvZGUs
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0ZW06OkVudHJ5PiBlbnRyeSA9IDApCiAg
ICAgewotICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlciB8fCAhbV9mcm9udGVuZFByb3Zp
ZGVyLT5mcm9udGVuZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2Zyb250ZW5k
UHJvdmlkZXItPmZyb250ZW5kKCktPmZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQobV9yZXF1ZXN0SWQs
IHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSwgZW50cnkpOwotICAgICAgICBtX2Zyb250ZW5k
UHJvdmlkZXIgPSAwOworICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3Moc3Rh
dGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBlbnRyeSk7CiAgICAgfQogCi0gICAgRmlsZVN5c3Rl
bVJvb3RSZXF1ZXN0KFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRl
ciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB0eXBlKQotICAgICAgICA6IG1fZnJvbnRl
bmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQotICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVl
c3RJZCkKKyAgICBGaWxlU3lzdGVtUm9vdFJlcXVlc3QoUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5
c3RlbVJvb3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBTdHJpbmcmIHR5cGUpCisg
ICAgICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQogICAgICAgICAsIG1f
dHlwZSh0eXBlKSB7IH0KIAotICAgIFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5k
UHJvdmlkZXI7Ci0gICAgaW50IG1fcmVxdWVzdElkOworICAgIFJlZlB0cjxSZXF1ZXN0RmlsZVN5
c3RlbVJvb3RDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7CiAgICAgU3RyaW5nIG1fdHlwZTsK
IH07CiAKQEAgLTIxMSw3ICsxNTksNyBAQCB2b2lkIEZpbGVTeXN0ZW1Sb290UmVxdWVzdDo6c3Rh
cnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIGVs
c2UgaWYgKG1fdHlwZSA9PSBET01GaWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFByZWZpeCkK
ICAgICAgICAgdHlwZSA9IEZpbGVTeXN0ZW1UeXBlVGVtcG9yYXJ5OwogICAgIGVsc2UgewotICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhSZXBvcnRFcnJvclRhc2s6OmNy
ZWF0ZShlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OlNZTlRBWF9FUlIpKTsKKyAgICAgICAgZXJy
b3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTWU5U
QVhfRVJSKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIzNCw5ICsxODIs
OSBAQCBib29sIEZpbGVTeXN0ZW1Sb290UmVxdWVzdDo6ZGlkR2V0RW50cnkoRW50cnkqIGVudHJ5
KQogY2xhc3MgRGlyZWN0b3J5Q29udGVudFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXJl
Y3RvcnlDb250ZW50UmVxdWVzdD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpcmVjdG9y
eUNvbnRlbnRSZXF1ZXN0KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3Rv
cnlDb250ZW50UmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJv
bnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5Q29udGVudFJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVmUHRy
PFJlcXVlc3REaXJlY3RvcnlDb250ZW50Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3Qg
U3RyaW5nJiB1cmwpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9y
eUNvbnRlbnRSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5Q29udGVudFJlcXVlc3QocmVxdWVzdENh
bGxiYWNrLCB1cmwpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5EaXJlY3RvcnlDb250ZW50UmVx
dWVzdCgpCkBAIC0yNTgsMjEgKzIwNiwxNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXBvcnRS
ZXN1bHQoRmlsZUVycm9yOjpFcnJvckNvZGUgZXJyb3JDb2RlLCBQYXNzUmVmUHRyPEFycmF5PFR5
cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gPiBlbnRyaWVzID0gMCkKICAgICB7Ci0gICAg
ICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250
ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+
ZnJvbnRlbmQoKS0+ZGlyZWN0b3J5Q29udGVudFJlY2VpdmVkKG1fcmVxdWVzdElkLCBzdGF0aWNf
Y2FzdDxpbnQ+KGVycm9yQ29kZSksIGVudHJpZXMpOwotICAgICAgICBtX2Zyb250ZW5kUHJvdmlk
ZXIgPSAwOworICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3Moc3RhdGljX2Nh
c3Q8aW50PihlcnJvckNvZGUpLCBlbnRyaWVzKTsKICAgICB9CiAKLSAgICBEaXJlY3RvcnlDb250
ZW50UmVxdWVzdChQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIs
IGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IG1fZnJvbnRlbmRQ
cm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQotICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJ
ZCkKKyAgICBEaXJlY3RvcnlDb250ZW50UmVxdWVzdChQYXNzUmVmUHRyPFJlcXVlc3REaXJlY3Rv
cnlDb250ZW50Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgU3RyaW5nJiB1cmwpCisg
ICAgICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQogICAgICAgICAsIG1f
dXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKSB7IH0KIAogICAgIHZvaWQgcmVhZERpcmVjdG9yeUVu
dHJpZXMoKTsKIAotICAgIFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlk
ZXI7Ci0gICAgaW50IG1fcmVxdWVzdElkOworICAgIFJlZlB0cjxSZXF1ZXN0RGlyZWN0b3J5Q29u
dGVudENhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKICAgICBLVVJMIG1fdXJsOwogICAgIFJl
ZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RmlsZVN5c3RlbTo6RW50cnk+ID4gbV9lbnRyaWVzOwog
ICAgIFJlZlB0cjxEaXJlY3RvcnlSZWFkZXI+IG1fZGlyZWN0b3J5UmVhZGVyOwpAQCAtMjg2LDcg
KzIyOSw3IEBAIHZvaWQgRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OnN0YXJ0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAgRmlsZVN5c3RlbVR5cGUgdHlw
ZTsKICAgICBTdHJpbmcgcGF0aDsKICAgICBpZiAoIURPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0Zp
bGVTeXN0ZW1VUkwobV91cmwsIHR5cGUsIHBhdGgpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFJlcG9ydEVycm9yVGFzazo6Y3JlYXRlKGVycm9yQ2FsbGJhY2ss
IEZpbGVFcnJvcjo6U1lOVEFYX0VSUikpOworICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVF
dmVudChGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNZTlRBWF9FUlIpLmdldCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzY2LDkgKzMwOSw5IEBAIGJvb2wgRGlyZWN0b3J5
Q29udGVudFJlcXVlc3Q6OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKEVudHJ5QXJyYXkqIGVudHJp
ZXMpCiBjbGFzcyBNZXRhZGF0YVJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxNZXRhZGF0YVJl
cXVlc3Q+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZXRhZGF0YVJlcXVlc3QpOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1ldGFkYXRhUmVxdWVzdD4gY3JlYXRlKFBhc3NS
ZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWV0YWRhdGFSZXF1ZXN0
PiBjcmVhdGUoUGFzc1JlZlB0cjxSZXF1ZXN0TWV0YWRhdGFDYWxsYmFjaz4gcmVxdWVzdENhbGxi
YWNrLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTWV0YWRhdGFSZXF1ZXN0KGZyb250ZW5kUHJvdmlkZXIsIHJlcXVlc3RJZCwgdXJsKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWV0YWRhdGFSZXF1ZXN0KHJlcXVlc3RDYWxsYmFj
aywgdXJsKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+TWV0YWRhdGFSZXF1ZXN0KCkKQEAgLTM5
MCwxOSArMzMzLDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlcG9ydFJlc3VsdChGaWxlRXJy
b3I6OkVycm9yQ29kZSBlcnJvckNvZGUsIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0
ZW06Ok1ldGFkYXRhPiBtZXRhZGF0YSA9IDApCiAgICAgewotICAgICAgICBpZiAoIW1fZnJvbnRl
bmRQcm92aWRlciB8fCAhbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCktPm1ldGFk
YXRhUmVjZWl2ZWQobV9yZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSwgbWV0
YWRhdGEpOwotICAgICAgICBtX2Zyb250ZW5kUHJvdmlkZXIgPSAwOworICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3Moc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUpLCBtZXRh
ZGF0YSk7CiAgICAgfQogCi0gICAgTWV0YWRhdGFSZXF1ZXN0KFBhc3NSZWZQdHI8RnJvbnRlbmRQ
cm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1
cmwpCi0gICAgICAgIDogbV9mcm9udGVuZFByb3ZpZGVyKGZyb250ZW5kUHJvdmlkZXIpCi0gICAg
ICAgICwgbV9yZXF1ZXN0SWQocmVxdWVzdElkKQorICAgIE1ldGFkYXRhUmVxdWVzdChQYXNzUmVm
UHRyPFJlcXVlc3RNZXRhZGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmlu
ZyYgdXJsKQorICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKICAg
ICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9CiAKLSAgICBSZWZQdHI8RnJv
bnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOwotICAgIGludCBtX3JlcXVlc3RJZDsK
KyAgICBSZWZQdHI8UmVxdWVzdE1ldGFkYXRhQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwog
ICAgIEtVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fcGF0aDsKICAgICBib29sIG1faXNEaXJlY3Rv
cnk7CkBAIC00MTYsNyArMzU0LDcgQEAgdm9pZCBNZXRhZGF0YVJlcXVlc3Q6OnN0YXJ0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAKICAgICBGaWxlU3lz
dGVtVHlwZSB0eXBlOwogICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3Rl
bVVSTChtX3VybCwgdHlwZSwgbV9wYXRoKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5wb3N0VGFzayhSZXBvcnRFcnJvclRhc2s6OmNyZWF0ZShlcnJvckNhbGxiYWNrLCBGaWxl
RXJyb3I6OlNZTlRBWF9FUlIpKTsKKyAgICAgICAgZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQo
RmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTWU5UQVhfRVJSKS5nZXQoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTQ1Miw5ICszOTAsOSBAQCBib29sIE1ldGFkYXRhUmVxdWVz
dDo6ZGlkR2V0TWV0YWRhdGEoTWV0YWRhdGEqIG1ldGFkYXRhKQogY2xhc3MgRmlsZUNvbnRlbnRS
ZXF1ZXN0IDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEZpbGVDb250ZW50UmVxdWVzdCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Rmls
ZUNvbnRlbnRSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBmcm9u
dGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCByZWFk
QXNUZXh0LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBlbmQsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlQ29udGVudFJlcXVlc3Q+IGNyZWF0ZShQ
YXNzUmVmUHRyPFJlcXVlc3RGaWxlQ29udGVudENhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNv
bnN0IFN0cmluZyYgdXJsLCBib29sIHJlYWRBc1RleHQsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGVuZCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBGaWxlQ29udGVudFJlcXVlc3QoZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElk
LCB1cmwsIHJlYWRBc1RleHQsIHN0YXJ0LCBlbmQsIGNoYXJzZXQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBGaWxlQ29udGVudFJlcXVlc3QocmVxdWVzdENhbGxiYWNrLCB1cmwsIHJl
YWRBc1RleHQsIHN0YXJ0LCBlbmQsIGNoYXJzZXQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5G
aWxlQ29udGVudFJlcXVlc3QoKQpAQCAtNDkwLDI0ICs0MjgsMTkgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVwb3J0UmVzdWx0KEZpbGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nKiByZXN1bHQgPSAwLCBjb25zdCBTdHJpbmcqIGNoYXJzZXQgPSAwKQogICAgIHsKLSAg
ICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXIgfHwgIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJv
bnRlbmQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVy
LT5mcm9udGVuZCgpLT5maWxlQ29udGVudFJlY2VpdmVkKG1fcmVxdWVzdElkLCBzdGF0aWNfY2Fz
dDxpbnQ+KGVycm9yQ29kZSksIHJlc3VsdCwgY2hhcnNldCk7Ci0gICAgICAgIG1fZnJvbnRlbmRQ
cm92aWRlciA9IDA7CisgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhzdGF0
aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSksIHJlc3VsdCwgY2hhcnNldCk7CiAgICAgfQogCi0gICAg
RmlsZUNvbnRlbnRSZXF1ZXN0KFBhc3NSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQ
cm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4
dCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQp
CisgICAgRmlsZUNvbnRlbnRSZXF1ZXN0KFBhc3NSZWZQdHI8UmVxdWVzdEZpbGVDb250ZW50Q2Fs
bGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgcmVhZEFzVGV4
dCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQp
CiAgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVy
VHlwZSkKLSAgICAgICAgLCBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikKLSAg
ICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisgICAgICAgICwgbV9yZXF1ZXN0Q2FsbGJh
Y2socmVxdWVzdENhbGxiYWNrKQogICAgICAgICAsIG1fdXJsKFBhcnNlZFVSTFN0cmluZywgdXJs
KQogICAgICAgICAsIG1fcmVhZEFzVGV4dChyZWFkQXNUZXh0KQogICAgICAgICAsIG1fc3RhcnQo
c3RhcnQpCiAgICAgICAgICwgbV9lbmQoZW5kKQogICAgICAgICAsIG1fY2hhcnNldChjaGFyc2V0
KSB7IH0KIAotICAgIFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7
Ci0gICAgaW50IG1fcmVxdWVzdElkOworICAgIFJlZlB0cjxSZXF1ZXN0RmlsZUNvbnRlbnRDYWxs
YmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7CiAgICAgS1VSTCBtX3VybDsKICAgICBib29sIG1fcmVh
ZEFzVGV4dDsKICAgICBpbnQgbV9zdGFydDsKQEAgLTUyNyw3ICs0NjAsNyBAQCB2b2lkIEZpbGVD
b250ZW50UmVxdWVzdDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkKICAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOwogICAgIFN0cmluZyBwYXRoOwog
ICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChtX3VybCwgdHlw
ZSwgcGF0aCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soUmVw
b3J0RXJyb3JUYXNrOjpjcmVhdGUoZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpTWU5UQVhfRVJS
KSk7CisgICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVFcnJvcjo6Y3JlYXRl
KEZpbGVFcnJvcjo6U1lOVEFYX0VSUikuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC01ODksOSArNTIyLDkgQEAgdm9pZCBGaWxlQ29udGVudFJlcXVlc3Q6OmRpZFJlYWQoKQog
CiBjbGFzcyBEZWxldGVFbnRyeVJlcXVlc3QgOiBwdWJsaWMgVm9pZENhbGxiYWNrIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxldGVFbnRyeVJlcXVlc3Q+IGNyZWF0ZShQYXNz
UmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQs
IGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxldGVFbnRyeVJlcXVl
c3Q+IGNyZWF0ZShQYXNzUmVmUHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFj
aywgY29uc3QgS1VSTCYgdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
ZWxldGVFbnRyeVJlcXVlc3QoZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCB1cmwpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVFbnRyeVJlcXVlc3QocmVxdWVzdENhbGxi
YWNrLCB1cmwpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5EZWxldGVFbnRyeVJlcXVlc3QoKQpA
QCAtNjE4LDE5ICs1NTEsMTQgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVwb3J0UmVzdWx0KEZp
bGVFcnJvcjo6RXJyb3JDb2RlIGVycm9yQ29kZSkKICAgICB7Ci0gICAgICAgIGlmICghbV9mcm9u
dGVuZFByb3ZpZGVyIHx8ICFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZGVs
ZXRpb25Db21wbGV0ZWQobV9yZXF1ZXN0SWQsIHN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSk7
Ci0gICAgICAgIG1fZnJvbnRlbmRQcm92aWRlciA9IDA7CisgICAgICAgIG1fcmVxdWVzdENhbGxi
YWNrLT5zZW5kU3VjY2VzcyhzdGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSkpOwogICAgIH0KIAot
ICAgIERlbGV0ZUVudHJ5UmVxdWVzdChQYXNzUmVmUHRyPEZyb250ZW5kUHJvdmlkZXI+IGZyb250
ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQsIGNvbnN0IEtVUkwmIHVybCkKLSAgICAgICAgOiBt
X2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikKLSAgICAgICAgLCBtX3JlcXVlc3RJ
ZChyZXF1ZXN0SWQpCisgICAgRGVsZXRlRW50cnlSZXF1ZXN0KFBhc3NSZWZQdHI8RGVsZXRlRW50
cnlDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBLVVJMJiB1cmwpCisgICAgICAgIDog
bV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQogICAgICAgICAsIG1fdXJsKHVybCkg
eyB9CiAKLSAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOwot
ICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBSZWZQdHI8RGVsZXRlRW50cnlDYWxsYmFjaz4gbV9y
ZXF1ZXN0Q2FsbGJhY2s7CiAgICAgS1VSTCBtX3VybDsKIH07CiAKQEAgLTY0Myw3ICs1NzEsNyBA
QCB2b2lkIERlbGV0ZUVudHJ5UmVxdWVzdDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICBGaWxlU3lzdGVtVHlwZSB0eXBlOwogICAgIFN0
cmluZyBwYXRoOwogICAgIGlmICghRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVS
TChtX3VybCwgdHlwZSwgcGF0aCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
cG9zdFRhc2soUmVwb3J0RXJyb3JUYXNrOjpjcmVhdGUoZXJyb3JDYWxsYmFjaywgRmlsZUVycm9y
OjpTWU5UQVhfRVJSKSk7CisgICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KEZpbGVF
cnJvcjo6Y3JlYXRlKEZpbGVFcnJvcjo6U1lOVEFYX0VSUikuZ2V0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC02ODQsOCArNjEyLDYgQEAgUGFzc093blB0cjxJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ+IEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6Y3JlYXRlKEluc3RydW1lbnQK
IAogSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50Ojp+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCkK
IHsKLSAgICBpZiAobV9mcm9udGVuZFByb3ZpZGVyKQotICAgICAgICBtX2Zyb250ZW5kUHJvdmlk
ZXItPmNsZWFyKCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQoMCk7CiB9CiAKQEAgLTcwNSw2NCArNjMxLDU5IEBAIHZvaWQgSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICBtX3N0YXRlLT5zZXRC
b29sZWFuKEZpbGVTeXN0ZW1BZ2VudFN0YXRlOjpmaWxlU3lzdGVtQWdlbnRFbmFibGVkLCBtX2Vu
YWJsZWQpOwogfQogCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6cmVxdWVzdEZpbGVT
eXN0ZW1Sb290KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgdHlwZSwgaW50KiByZXF1ZXN0SWQpCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6cmVxdWVzdEZpbGVTeXN0ZW1Sb290KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxSZXF1ZXN0RmlsZVN5
c3RlbVJvb3RDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogewotICAgIGlmICghYXNzZXJ0RnJv
bnRlbmQoZXJyb3IpKQorICAgIGlmICghYXNzZXJ0RW5hYmxlZChlcnJvcikpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLmdldCgpKTsKICAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgICpyZXF1ZXN0SWQgPSBt
X25leHRSZXF1ZXN0SWQrKzsKLSAgICBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmNyZWF0ZShtX2Zy
b250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHR5cGUpLT5zdGFydChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKKyAgICBGaWxlU3lzdGVtUm9vdFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJh
Y2ssIHR5cGUpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3REaXJlY3RvcnlDb250ZW50KEVycm9yU3RyaW5n
KiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwsIGludCogcmVxdWVzdElkKQordm9pZCBJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3REaXJlY3RvcnlDb250ZW50KEVycm9yU3RyaW5nKiBl
cnJvciwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8UmVxdWVzdERpcmVjdG9yeUNvbnRl
bnRDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogewotICAgIGlmICghYXNzZXJ0RnJvbnRlbmQo
ZXJyb3IpKQorICAgIGlmICghYXNzZXJ0RW5hYmxlZChlcnJvcikpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBh
c3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyh1cmwpLmdldCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgICpyZXF1ZXN0SWQgPSBtX25leHRSZXF1
ZXN0SWQrKzsKLSAgICBEaXJlY3RvcnlDb250ZW50UmVxdWVzdDo6Y3JlYXRlKG1fZnJvbnRlbmRQ
cm92aWRlciwgKnJlcXVlc3RJZCwgdXJsKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CisgICAgRGlyZWN0b3J5Q29udGVudFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2ssIHVy
bCktPnN0YXJ0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogfQogCi12b2lkIEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudDo6cmVxdWVzdE1ldGFkYXRhKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3Qg
U3RyaW5nJiB1cmwsIGludCogcmVxdWVzdElkKQordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQ6OnJlcXVlc3RNZXRhZGF0YShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJs
LCBQYXNzUmVmUHRyPFJlcXVlc3RNZXRhZGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiB7
Ci0gICAgaWYgKCFhc3NlcnRGcm9udGVuZChlcnJvcikpCisgICAgaWYgKCFhc3NlcnRFbmFibGVk
KGVycm9yKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGFzc2VydFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGb3JP
cmlnaW4oZXJyb3IsIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHVybCkuZ2V0KCkp
OwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgKnJlcXVlc3RJZCA9IG1fbmV4dFJlcXVlc3RJZCsrOwotICAgIE1ldGFkYXRhUmVxdWVzdDo6
Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgKnJlcXVlc3RJZCwgdXJsKS0+c3RhcnQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7CisgICAgTWV0YWRhdGFSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdENh
bGxiYWNrLCB1cmwpLT5zdGFydChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudChFcnJvclN0cmluZyog
ZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIHJlYWRBc1RleHQsIGNvbnN0IGludCogc3Rh
cnQsIGNvbnN0IGludCogZW5kLCBjb25zdCBTdHJpbmcqIGNoYXJzZXQsIGludCogcmVxdWVzdElk
KQordm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OnJlcXVlc3RGaWxlQ29udGVudChFcnJv
clN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIHJlYWRBc1RleHQsIGNvbnN0
IGludCogc3RhcnQsIGNvbnN0IGludCogZW5kLCBjb25zdCBTdHJpbmcqIGNoYXJzZXQsIFBhc3NS
ZWZQdHI8UmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKIHsKLSAg
ICBpZiAoIWFzc2VydEZyb250ZW5kKGVycm9yKSkKKyAgICBpZiAoIWFzc2VydEVuYWJsZWQoZXJy
b3IpKQogICAgICAgICByZXR1cm47CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0ID0gYXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdp
bihlcnJvciwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXJsKS5nZXQoKSk7CiAg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICAq
cmVxdWVzdElkID0gbV9uZXh0UmVxdWVzdElkKys7Ci0KICAgICBsb25nIGxvbmcgc3RhcnRQb3Np
dGlvbiA9IHN0YXJ0ID8gKnN0YXJ0IDogMDsKICAgICBsb25nIGxvbmcgZW5kUG9zaXRpb24gPSBl
bmQgPyAqZW5kIDogc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKTsKLSAgICBG
aWxlQ29udGVudFJlcXVlc3Q6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQs
IHVybCwgcmVhZEFzVGV4dCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIGNoYXJzZXQgPyAq
Y2hhcnNldCA6ICIiKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgRmlsZUNv
bnRlbnRSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdENhbGxiYWNrLCB1cmwsIHJlYWRBc1RleHQsIHN0
YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBjaGFyc2V0ID8gKmNoYXJzZXQgOiAiIiktPnN0YXJ0
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogfQogCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudDo6ZGVsZXRlRW50cnkoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgaW50KiByZXF1ZXN0SWQpCit2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGVs
ZXRlRW50cnkoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUGFz
c1JlZlB0cjxEZWxldGVFbnRyeUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCiB7Ci0gICAgaWYg
KCFhc3NlcnRGcm9udGVuZChlcnJvcikpCisgICAgaWYgKCFhc3NlcnRFbmFibGVkKGVycm9yKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgS1VSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJp
bmcpOwpAQCAtNzcxLDIyICs2OTIsMTEgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6
OmRlbGV0ZUVudHJ5KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwKICAgICBp
ZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgICpyZXF1
ZXN0SWQgPSBtX25leHRSZXF1ZXN0SWQrKzsKLSAgICBEZWxldGVFbnRyeVJlcXVlc3Q6OmNyZWF0
ZShtX2Zyb250ZW5kUHJvdmlkZXIsICpyZXF1ZXN0SWQsIHVybCktPnN0YXJ0KHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOwotfQotCi12b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6c2V0RnJv
bnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQotewotICAgIEFTU0VSVChmcm9udGVu
ZCk7Ci0gICAgbV9mcm9udGVuZFByb3ZpZGVyID0gRnJvbnRlbmRQcm92aWRlcjo6Y3JlYXRlKHRo
aXMsIGZyb250ZW5kLT5maWxlc3lzdGVtKCkpOworICAgIERlbGV0ZUVudHJ5UmVxdWVzdDo6Y3Jl
YXRlKHJlcXVlc3RDYWxsYmFjaywgdXJsKS0+c3RhcnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsK
LSAgICBpZiAobV9mcm9udGVuZFByb3ZpZGVyKSB7Ci0gICAgICAgIG1fZnJvbnRlbmRQcm92aWRl
ci0+Y2xlYXIoKTsKLSAgICAgICAgbV9mcm9udGVuZFByb3ZpZGVyID0gMDsKLSAgICB9CiAgICAg
bV9lbmFibGVkID0gZmFsc2U7CiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihGaWxlU3lzdGVtQWdl
bnRTdGF0ZTo6ZmlsZVN5c3RlbUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKIH0KQEAgLTgwMCw3
ICs3MTAsNiBAQCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6Okluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZQogICAgIDogSW5zcGVjdG9yQmFzZUFn
ZW50PEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4oIkZpbGVTeXN0ZW0iLCBpbnN0cnVtZW50aW5n
QWdlbnRzLCBzdGF0ZSkKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fZW5h
YmxlZChmYWxzZSkKLSAgICAsIG1fbmV4dFJlcXVlc3RJZCgxKQogewogICAgIEFTU0VSVChpbnN0
cnVtZW50aW5nQWdlbnRzKTsKICAgICBBU1NFUlQoc3RhdGUpOwpAQCAtODA4LDEzICs3MTcsMTIg
QEAgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OjpJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWUKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCh0aGlzKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQ6OmFzc2VydEZyb250ZW5kKEVycm9yU3RyaW5nKiBlcnJvcikKK2Jvb2wgSW5z
cGVjdG9yRmlsZVN5c3RlbUFnZW50Ojphc3NlcnRFbmFibGVkKEVycm9yU3RyaW5nKiBlcnJvcikK
IHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9mcm9udGVuZFByb3ZpZGVyKSB7CisgICAgaWYg
KCFtX2VuYWJsZWQpIHsKICAgICAgICAgKmVycm9yID0gIkZpbGVTeXN0ZW0gYWdlbnQgaXMgbm90
IGVuYWJsZWQuIjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBBU1NFUlQobV9m
cm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5o
CmluZGV4IGYwZmNhM2NhZWQ4N2U1N2ExZmVkYTFjZmYyMGM0YmM5NjM1NjE2NTQuLjQzM2JhYjhj
NWIzNjQ4NjVkZGJhZDcxY2ZkNDAyYTJiMWIxYTI5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKQEAgLTQ3LDMzICs0Nywy
OCBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+
LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFu
ZGxlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgRnJvbnRlbmRQcm92aWRlcjsKLQogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gY3JlYXRlKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JTdGF0ZSopOwogICAgIHZp
cnR1YWwgfkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGVu
YWJsZShFcnJvclN0cmluZyopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVTeXN0
ZW1Sb290KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
dHlwZVN0cmluZywgaW50KiByZXF1ZXN0SWQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0RGlyZWN0b3J5Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBp
bnQqIHJlcXVlc3RJZCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RNZXRhZGF0
YShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQqIHJlcXVlc3RJZCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlQ29udGVudChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgdXJsLCBib29sIHJlYWRBc1RleHQsIGNvbnN0IGludCogc3RhcnQsIGNvbnN0
IGludCogZW5kLCBjb25zdCBTdHJpbmcqIGNoYXJzZXQsIGludCogcmVxdWVzdElkKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRW50cnkoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHVybCwgaW50KiByZXF1ZXN0SWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0RmlsZVN5c3RlbVJvb3QoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiB0eXBlU3RyaW5nLCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxlU3lzdGVtUm9vdENh
bGxiYWNrPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REaXJlY3RvcnlDb250
ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8UmVxdWVzdERp
cmVjdG9yeUNvbnRlbnRDYWxsYmFjaz4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0TWV0YWRhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxS
ZXF1ZXN0TWV0YWRhdGFDYWxsYmFjaz4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0RmlsZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCByZWFk
QXNUZXh0LCBjb25zdCBpbnQqIHN0YXJ0LCBjb25zdCBpbnQqIGVuZCwgY29uc3QgU3RyaW5nKiBj
aGFyc2V0LCBQYXNzUmVmUHRyPFJlcXVlc3RGaWxlQ29udGVudENhbGxiYWNrPikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUVudHJ5KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiB1cmwsIFBhc3NSZWZQdHI8RGVsZXRlRW50cnlDYWxsYmFjaz4pIE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVzdG9yZSgpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIEluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVj
dG9yU3RhdGUqKTsKLSAgICBib29sIGFzc2VydEZyb250ZW5kKEVycm9yU3RyaW5nKik7CisgICAg
Ym9vbCBhc3NlcnRFbmFibGVkKEVycm9yU3RyaW5nKik7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogYXNzZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihFcnJvclN0cmluZyos
IFNlY3VyaXR5T3JpZ2luKik7CiAKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50
OwotICAgIFJlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAg
Ym9vbCBtX2VuYWJsZWQ7Ci0gICAgaW50IG1fbmV4dFJlcXVlc3RJZDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMKaW5kZXggYTA2ZWQ2OTA5NmFmNWZmOGMxYTE1YWYyMjc1
YWZiOTBkNjJiZTI1Ny4uZTU0ZmYyY2U2YjYzNjBiOGE4ZTBhZmM2ZTg5MGJhMTdhOTgxMjg1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVt
TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lz
dGVtTW9kZWwuanMKQEAgLTQ0LDcgKzQ0LDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2Rl
bCA9IGZ1bmN0aW9uKCkKICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5GcmFt
ZU5hdmlnYXRlZCwgdGhpcy5fZnJhbWVOYXZpZ2F0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lRGV0YWNoZWQsIHRoaXMuX2ZyYW1lRGV0YWNoZWQs
IHRoaXMpOwogCi0gICAgdGhpcy5fYWdlbnRXcmFwcGVyID0gbmV3IFdlYkluc3BlY3Rvci5GaWxl
U3lzdGVtUmVxdWVzdE1hbmFnZXIoKTsKKyAgICBGaWxlU3lzdGVtQWdlbnQuZW5hYmxlKCk7CiAK
ICAgICBpZiAoV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLm1haW5GcmFtZSkKICAgICAg
ICAgdGhpcy5fYXR0YWNoRnJhbWVSZWN1cnNpdmVseShXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVl
TW9kZWwubWFpbkZyYW1lKTsKQEAgLTE0OCw3ICsxNDgsMzIgQEAgV2ViSW5zcGVjdG9yLkZpbGVT
eXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHR5cGVzID0gWyJwZXJzaXN0
ZW50IiwgInRlbXBvcmFyeSJdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxl
bmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLnJlcXVlc3RGaWxlU3lz
dGVtUm9vdChvcmlnaW4sIHR5cGVzW2ldLCB0aGlzLl9maWxlU3lzdGVtUm9vdFJlY2VpdmVkLmJp
bmQodGhpcywgb3JpZ2luLCB0eXBlc1tpXSwgdGhpcy5fZmlsZVN5c3RlbXNGb3JPcmlnaW5bb3Jp
Z2luXSkpOworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KG9yaWdpbiwg
dHlwZXNbaV0sIHRoaXMuX2ZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQuYmluZCh0aGlzLCBvcmlnaW4s
IHR5cGVzW2ldLCB0aGlzLl9maWxlU3lzdGVtc0Zvck9yaWdpbltvcmlnaW5dKSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW4KKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gdHlwZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBGaWxlU3lzdGVt
QWdlbnQuRW50cnk9KT19IGNhbGxiYWNrCisgICAgICovCisgICAgX3JlcXVlc3RGaWxlU3lzdGVt
Um9vdDogZnVuY3Rpb24ob3JpZ2luLCB0eXBlLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIC8q
KgorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICog
QHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQorICAgICAgICAgKiBAcGFyYW0ge0ZpbGVTeXN0ZW1B
Z2VudC5FbnRyeT19IGJhY2tlbmRSb290RW50cnkKKyAgICAgICAgICovCisgICAgICAgIGZ1bmN0
aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUs
IGJhY2tlbmRSb290RW50cnkpOworICAgICAgICB9CisKKyAgICAgICAgRmlsZVN5c3RlbUFnZW50
LnJlcXVlc3RGaWxlU3lzdGVtUm9vdChvcmlnaW4sIHR5cGUsIGlubmVyQ2FsbGJhY2suYmluZCh0
aGlzKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMjEwLDcgKzIzNSwzNiBAQCBXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByZXF1ZXN0RGly
ZWN0b3J5Q29udGVudDogZnVuY3Rpb24oZGlyZWN0b3J5LCBjYWxsYmFjaykKICAgICB7Ci0gICAg
ICAgIHRoaXMuX2FnZW50V3JhcHBlci5yZXF1ZXN0RGlyZWN0b3J5Q29udGVudChkaXJlY3Rvcnku
dXJsLCB0aGlzLl9kaXJlY3RvcnlDb250ZW50UmVjZWl2ZWQuYmluZCh0aGlzLCBkaXJlY3Rvcnks
IGNhbGxiYWNrKSk7CisgICAgICAgIHRoaXMuX3JlcXVlc3REaXJlY3RvcnlDb250ZW50KGRpcmVj
dG9yeS51cmwsIHRoaXMuX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZC5iaW5kKHRoaXMsIGRpcmVj
dG9yeSwgY2FsbGJhY2spKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IHVybAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBBcnJheS48RmlsZVN5c3Rl
bUFnZW50LkVudHJ5Pj0pPX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICBfcmVxdWVzdERpcmVjdG9y
eUNvbnRlbnQ6IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCisgICAgeworICAgICAgICAvKioKKyAg
ICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisgICAgICAgICAqIEBwYXJh
bSB7bnVtYmVyfSBlcnJvckNvZGUKKyAgICAgICAgICogQHBhcmFtIHtBcnJheS48RmlsZVN5c3Rl
bUFnZW50LkVudHJ5Pj19IGJhY2tlbmRFbnRyaWVzCisgICAgICAgICAqLworICAgICAgICBmdW5j
dGlvbiBpbm5lckNhbGxiYWNrKGVycm9yLCBlcnJvckNvZGUsIGJhY2tlbmRFbnRyaWVzKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFj
ayhGaWxlRXJyb3IuU0VDVVJJVFlfRVJSKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChlcnJvckNvZGUgIT09IDAp
IHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUsIG51bGwpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGJhY2soZXJy
b3JDb2RlLCBiYWNrZW5kRW50cmllcyk7CisgICAgICAgIH0KKworICAgICAgICBGaWxlU3lzdGVt
QWdlbnQucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQodXJsLCBpbm5lckNhbGxiYWNrLmJpbmQodGhp
cykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTIyMSwxMSArMjc1LDYgQEAgV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2RpcmVjdG9yeUNv
bnRlbnRSZWNlaXZlZDogZnVuY3Rpb24ocGFyZW50RGlyZWN0b3J5LCBjYWxsYmFjaywgZXJyb3JD
b2RlLCBiYWNrZW5kRW50cmllcykKICAgICB7Ci0gICAgICAgIGlmIChlcnJvckNvZGUgIT09IDAp
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgbnVsbCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICB2YXIgZW50cmllcyA9IFtdOwogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGJhY2tlbmRFbnRyaWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICBpZiAoYmFja2VuZEVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCkBAIC0yNDMsNyArMjkyLDIy
IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwog
ICAgIHJlcXVlc3RNZXRhZGF0YTogZnVuY3Rpb24oZW50cnksIGNhbGxiYWNrKQogICAgIHsKLSAg
ICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLnJlcXVlc3RNZXRhZGF0YShlbnRyeS51cmwsIGNhbGxi
YWNrKTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBl
cnJvcgorICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCisgICAgICAgICAqIEBw
YXJhbSB7RmlsZVN5c3RlbUFnZW50Lk1ldGFkYXRhPX0gbWV0YWRhdGEKKyAgICAgICAgICovCisg
ICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIGVycm9yQ29kZSwgbWV0YWRhdGEp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGNh
bGxiYWNrKEZpbGVFcnJvci5TRUNVUklUWV9FUlIpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2FsbGJhY2soZXJyb3JD
b2RlLCBtZXRhZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVx
dWVzdE1ldGFkYXRhKGVudHJ5LnVybCwgaW5uZXJDYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9
LAogCiAgICAgLyoqCkBAIC0yNTYsMTAgKzMyMCwzOCBAQCBXZWJJbnNwZWN0b3IuRmlsZVN5c3Rl
bU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByZXF1ZXN0RmlsZUNvbnRlbnQ6IGZ1
bmN0aW9uKGZpbGUsIHJlYWRBc1RleHQsIHN0YXJ0LCBlbmQsIGNoYXJzZXQsIGNhbGxiYWNrKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLnJlcXVlc3RGaWxlQ29udGVudChmaWxl
LnVybCwgcmVhZEFzVGV4dCwgc3RhcnQsIGVuZCwgY2hhcnNldCwgY2FsbGJhY2spOworICAgICAg
ICB0aGlzLl9yZXF1ZXN0RmlsZUNvbnRlbnQoZmlsZS51cmwsIHJlYWRBc1RleHQsIHN0YXJ0LCBl
bmQsIGNoYXJzZXQsIGNhbGxiYWNrKTsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IHVybAorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVhZEFzVGV4dAorICAgICAq
IEBwYXJhbSB7bnVtYmVyPX0gc3RhcnQKKyAgICAgKiBAcGFyYW0ge251bWJlcj19IGVuZAorICAg
ICAqIEBwYXJhbSB7c3RyaW5nPX0gY2hhcnNldAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVt
YmVyLCBzdHJpbmc9LCBzdHJpbmc9KT19IGNhbGxiYWNrCisgICAgICovCisgICAgX3JlcXVlc3RG
aWxlQ29udGVudDogZnVuY3Rpb24odXJsLCByZWFkQXNUZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0
LCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gez9Qcm90
b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQor
ICAgICAgICAgKiBAcGFyYW0ge3N0cmluZz19IGNvbnRlbnQKKyAgICAgICAgICogQHBhcmFtIHtz
dHJpbmc9fSBjaGFyc2V0CisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxi
YWNrKGVycm9yLCBlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKEZpbGVFcnJvci5T
RUNVUklUWV9FUlIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgY2FsbGJhY2soZXJyb3JDb2RlLCBjb250ZW50LCBjaGFy
c2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZXF1ZXN0RmlsZUNv
bnRlbnQodXJsLCByZWFkQXNUZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0LCBpbm5lckNhbGxiYWNr
LmJpbmQodGhpcykpOworICAgIH0sCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsLkVudHJ5fSBlbnRyeQogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
bnVtYmVyKT19IGNhbGxiYWNrCiAgICAgICovCkBAIC0yNjcsOSArMzU5LDkgQEAgV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgZmls
ZVN5c3RlbU1vZGVsID0gdGhpczsKICAgICAgICAgaWYgKGVudHJ5ID09PSBlbnRyeS5maWxlU3lz
dGVtLnJvb3QpCi0gICAgICAgICAgICB0aGlzLl9hZ2VudFdyYXBwZXIuZGVsZXRlRW50cnkoZW50
cnkudXJsLCBob29rRmlsZVN5c3RlbURlbGV0aW9uKTsKKyAgICAgICAgICAgIHRoaXMuX2RlbGV0
ZUVudHJ5KGVudHJ5LnVybCwgaG9va0ZpbGVTeXN0ZW1EZWxldGlvbik7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5kZWxldGVFbnRyeShlbnRyeS51cmwsIGNh
bGxiYWNrKTsKKyAgICAgICAgICAgIHRoaXMuX2RlbGV0ZUVudHJ5KGVudHJ5LnVybCwgY2FsbGJh
Y2spOwogCiAgICAgICAgIGZ1bmN0aW9uIGhvb2tGaWxlU3lzdGVtRGVsZXRpb24oZXJyb3JDb2Rl
KQogICAgICAgICB7CkBAIC0yODAsNiArMzcyLDI5IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVt
TW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gdXJsCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIpPX0gY2FsbGJhY2sKKyAg
ICAgKi8KKyAgICBfZGVsZXRlRW50cnk6IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCisgICAgewor
ICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCisg
ICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKKyAgICAgICAgICovCisgICAgICAg
IGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIGVycm9yQ29kZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soRmlsZUVycm9y
LlNFQ1VSSVRZX0VSUik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgCisgICAgICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUpOworICAgICAgICB9
CisKKyAgICAgICAgRmlsZVN5c3RlbUFnZW50LmRlbGV0ZUVudHJ5KHVybCwgaW5uZXJDYWxsYmFj
ay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW19IGZpbGVTeXN0ZW0KICAgICAgKi8KICAg
ICBfcmVtb3ZlRmlsZVN5c3RlbTogZnVuY3Rpb24oZmlsZVN5c3RlbSkKQEAgLTQ5MywyNDIgKzYw
OCwzIEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUgPSB7CiB9
CiAKIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwuRmlsZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5FbnRyeS5wcm90b3R5cGU7Ci0KLS8qKgot
ICogQGNvbnN0cnVjdG9yCi0gKi8KLVdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFn
ZXIgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fcGVuZGluZ0ZpbGVTeXN0ZW1Sb290UmVxdWVz
dHMgPSB7fTsKLSAgICB0aGlzLl9wZW5kaW5nRGlyZWN0b3J5Q29udGVudFJlcXVlc3RzID0ge307
Ci0gICAgdGhpcy5fcGVuZGluZ01ldGFkYXRhUmVxdWVzdHMgPSB7fTsKLSAgICB0aGlzLl9wZW5k
aW5nRmlsZUNvbnRlbnRSZXF1ZXN0cyA9IHt9OwotICAgIHRoaXMuX3BlbmRpbmdEZWxldGVFbnRy
eVJlcXVlc3RzID0ge307Ci0KLSAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRmlsZVN5c3Rl
bURpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtRGlzcGF0Y2hlcih0aGlzKSk7
Ci0gICAgRmlsZVN5c3RlbUFnZW50LmVuYWJsZSgpOwotfQotCi1XZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbVJlcXVlc3RNYW5hZ2VyLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0g
e3N0cmluZ30gb3JpZ2luCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUKLSAgICAgKiBAcGFy
YW0ge2Z1bmN0aW9uKG51bWJlciwgRmlsZVN5c3RlbUFnZW50LkVudHJ5PSk9fSBjYWxsYmFjawot
ICAgICAqLwotICAgIHJlcXVlc3RGaWxlU3lzdGVtUm9vdDogZnVuY3Rpb24ob3JpZ2luLCB0eXBl
LCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBzdG9yZSA9IHRoaXMuX3BlbmRpbmdGaWxl
U3lzdGVtUm9vdFJlcXVlc3RzOwotICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVxdWVzdEZpbGVT
eXN0ZW1Sb290KG9yaWdpbiwgdHlwZSwgcmVxdWVzdEFjY2VwdGVkKTsKLQotICAgICAgICBmdW5j
dGlvbiByZXF1ZXN0QWNjZXB0ZWQoZXJyb3IsIHJlcXVlc3RJZCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKEZpbGVFcnJvci5TRUNV
UklUWV9FUlIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHN0b3JlW3JlcXVl
c3RJZF0gPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9OwotICAgICAgICB9Ci0gICAgfSwKLQot
ICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKLSAgICAgKiBAcGFyYW0g
e251bWJlcn0gZXJyb3JDb2RlCi0gICAgICogQHBhcmFtIHtGaWxlU3lzdGVtQWdlbnQuRW50cnk9
fSBiYWNrZW5kUm9vdEVudHJ5Ci0gICAgICovCi0gICAgX2ZpbGVTeXN0ZW1Sb290UmVjZWl2ZWQ6
IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBiYWNrZW5kUm9vdEVudHJ5KQotICAgIHsK
LSAgICAgICAgdmFyIGNhbGxiYWNrID0gdGhpcy5fcGVuZGluZ0ZpbGVTeXN0ZW1Sb290UmVxdWVz
dHNbcmVxdWVzdElkXTsKLSAgICAgICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdGaWxlU3lzdGVtUm9vdFJlcXVlc3RzW3Jl
cXVlc3RJZF07Ci0gICAgICAgIGNhbGxiYWNrKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7
Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKLSAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKG51bWJlciwgQXJyYXkuPEZpbGVTeXN0ZW1BZ2VudC5FbnRyeT49KT19
IGNhbGxiYWNrCi0gICAgICovCi0gICAgcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQ6IGZ1bmN0aW9u
KHVybCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICB2YXIgc3RvcmUgPSB0aGlzLl9wZW5kaW5n
RGlyZWN0b3J5Q29udGVudFJlcXVlc3RzOwotICAgICAgICBGaWxlU3lzdGVtQWdlbnQucmVxdWVz
dERpcmVjdG9yeUNvbnRlbnQodXJsLCByZXF1ZXN0QWNjZXB0ZWQpOwotCi0gICAgICAgIGZ1bmN0
aW9uIHJlcXVlc3RBY2NlcHRlZChlcnJvciwgcmVxdWVzdElkKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soRmlsZUVycm9yLlNFQ1VS
SVRZX0VSUik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RvcmVbcmVxdWVz
dElkXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307Ci0gICAgICAgIH0KLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAotICAgICAqIEBwYXJhbSB7
bnVtYmVyfSBlcnJvckNvZGUKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxGaWxlU3lzdGVtQWdlbnQu
RW50cnk+PX0gYmFja2VuZEVudHJpZXMKLSAgICAgKi8KLSAgICBfZGlyZWN0b3J5Q29udGVudFJl
Y2VpdmVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGVycm9yQ29kZSwgYmFja2VuZEVudHJpZXMpCi0g
ICAgewotICAgICAgICB2YXIgY2FsbGJhY2sgPSAvKiogQHR5cGUge2Z1bmN0aW9uKG51bWJlciwg
QXJyYXkuPEZpbGVTeXN0ZW1BZ2VudC5FbnRyeT49KX0gKi8gdGhpcy5fcGVuZGluZ0RpcmVjdG9y
eUNvbnRlbnRSZXF1ZXN0c1tyZXF1ZXN0SWRdOwotICAgICAgICBpZiAoIWNhbGxiYWNrKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ0RpcmVjdG9yeUNv
bnRlbnRSZXF1ZXN0c1tyZXF1ZXN0SWRdOwotICAgICAgICBjYWxsYmFjayhlcnJvckNvZGUsIGJh
Y2tlbmRFbnRyaWVzKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9
IHVybAotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obnVtYmVyLCBGaWxlU3lzdGVtQWdlbnQuTWV0
YWRhdGE9KT19IGNhbGxiYWNrCi0gICAgICovCi0gICAgcmVxdWVzdE1ldGFkYXRhOiBmdW5jdGlv
bih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdmFyIHN0b3JlID0gdGhpcy5fcGVuZGlu
Z01ldGFkYXRhUmVxdWVzdHM7Ci0gICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZXF1ZXN0TWV0YWRh
dGEodXJsLCByZXF1ZXN0QWNjZXB0ZWQpOwotCi0gICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RBY2Nl
cHRlZChlcnJvciwgcmVxdWVzdElkKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3Ip
Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3RvcmVbcmVxdWVzdElkXSA9IGNhbGxiYWNr
IHx8IGZ1bmN0aW9uKCkge307Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX21ldGFkYXRhUmVj
ZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBtZXRhZGF0YSkKLSAgICB7Ci0g
ICAgICAgIHZhciBjYWxsYmFjayA9IHRoaXMuX3BlbmRpbmdNZXRhZGF0YVJlcXVlc3RzW3JlcXVl
c3RJZF07Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nTWV0YWRhdGFSZXF1ZXN0c1tyZXF1ZXN0SWRdOwotICAg
ICAgICBjYWxsYmFjayhlcnJvckNvZGUsIG1ldGFkYXRhKTsKLSAgICB9LAotCi0gICAgLyoqCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVhZEFz
VGV4dAotICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gc3RhcnQKLSAgICAgKiBAcGFyYW0ge251bWJl
cj19IGVuZAotICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gY2hhcnNldAotICAgICAqIEBwYXJhbSB7
ZnVuY3Rpb24obnVtYmVyLCBzdHJpbmc9LCBzdHJpbmc9KT19IGNhbGxiYWNrCi0gICAgICovCi0g
ICAgcmVxdWVzdEZpbGVDb250ZW50OiBmdW5jdGlvbih1cmwsIHJlYWRBc1RleHQsIHN0YXJ0LCBl
bmQsIGNoYXJzZXQsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdmFyIHN0b3JlID0gdGhpcy5f
cGVuZGluZ0ZpbGVDb250ZW50UmVxdWVzdHM7Ci0gICAgICAgIEZpbGVTeXN0ZW1BZ2VudC5yZXF1
ZXN0RmlsZUNvbnRlbnQodXJsLCByZWFkQXNUZXh0LCBzdGFydCwgZW5kLCBjaGFyc2V0LCByZXF1
ZXN0QWNjZXB0ZWQpOwotCi0gICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RBY2NlcHRlZChlcnJvciwg
cmVxdWVzdElkKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAg
ICAgICAgY2FsbGJhY2soRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgc3RvcmVbcmVxdWVzdElkXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9u
KCkge307Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1i
ZXJ9IHJlcXVlc3RJZAotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKLSAgICAgKiBA
cGFyYW0ge3N0cmluZz19IGNvbnRlbnQKLSAgICAgKiBAcGFyYW0ge3N0cmluZz19IGNoYXJzZXQK
LSAgICAgKi8KLSAgICBfZmlsZUNvbnRlbnRSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBl
cnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQpCi0gICAgewotICAgICAgICB2YXIgY2FsbGJhY2sg
PSAvKiogQHR5cGUge2Z1bmN0aW9uKG51bWJlciwgc3RyaW5nPSwgc3RyaW5nPSl9ICovIHRoaXMu
X3BlbmRpbmdGaWxlQ29udGVudFJlcXVlc3RzW3JlcXVlc3RJZF07Ci0gICAgICAgIGlmICghY2Fs
bGJhY2spCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5n
RmlsZUNvbnRlbnRSZXF1ZXN0c1tyZXF1ZXN0SWRdOwotICAgICAgICBjYWxsYmFjayhlcnJvckNv
ZGUsIGNvbnRlbnQsIGNoYXJzZXQpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0g
e3N0cmluZ30gdXJsCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIpPX0gY2FsbGJhY2sK
LSAgICAgKi8KLSAgICBkZWxldGVFbnRyeTogZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKLSAgICB7
Ci0gICAgICAgIHZhciBzdG9yZSA9IHRoaXMuX3BlbmRpbmdEZWxldGVFbnRyeVJlcXVlc3RzOwot
ICAgICAgICBGaWxlU3lzdGVtQWdlbnQuZGVsZXRlRW50cnkodXJsLCByZXF1ZXN0QWNjZXB0ZWQp
OwotCi0gICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RBY2NlcHRlZChlcnJvciwgcmVxdWVzdElkKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgY2FsbGJh
Y2soRmlsZUVycm9yLlNFQ1VSSVRZX0VSUik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgc3RvcmVbcmVxdWVzdElkXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307Ci0gICAg
ICAgIH0KLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJ
ZAotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKLSAgICAgKi8KLSAgICBfZGVsZXRp
b25Db21wbGV0ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZXJyb3JDb2RlKQotICAgIHsKLSAgICAg
ICAgdmFyIGNhbGxiYWNrID0gLyoqIEB0eXBlIHtmdW5jdGlvbihudW1iZXIpfSAqLyB0aGlzLl9w
ZW5kaW5nRGVsZXRlRW50cnlSZXF1ZXN0c1tyZXF1ZXN0SWRdOwotICAgICAgICBpZiAoIWNhbGxi
YWNrKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ0Rl
bGV0ZUVudHJ5UmVxdWVzdHNbcmVxdWVzdElkXTsKLSAgICAgICAgY2FsbGJhY2soZXJyb3JDb2Rl
KTsKLSAgICB9Ci19Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAaW1wbGVtZW50cyB7Rmls
ZVN5c3RlbUFnZW50LkRpc3BhdGNoZXJ9Ci0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lz
dGVtUmVxdWVzdE1hbmFnZXJ9IGFnZW50V3JhcHBlcgotICovCi1XZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbURpc3BhdGNoZXIgPSBmdW5jdGlvbihhZ2VudFdyYXBwZXIpCi17Ci0gICAgdGhpcy5fYWdl
bnRXcmFwcGVyID0gYWdlbnRXcmFwcGVyOwotfQotCi1XZWJJbnNwZWN0b3IuRmlsZVN5c3RlbURp
c3BhdGNoZXIucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBy
ZXF1ZXN0SWQKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCi0gICAgICogQHBhcmFt
IHtGaWxlU3lzdGVtQWdlbnQuRW50cnk9fSBiYWNrZW5kUm9vdEVudHJ5Ci0gICAgICovCi0gICAg
ZmlsZVN5c3RlbVJvb3RSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIGJh
Y2tlbmRSb290RW50cnkpCi0gICAgewotICAgICAgICB0aGlzLl9hZ2VudFdyYXBwZXIuX2ZpbGVT
eXN0ZW1Sb290UmVjZWl2ZWQocmVxdWVzdElkLCBlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkp
OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElkCi0g
ICAgICogQHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQotICAgICAqIEBwYXJhbSB7QXJyYXkuPEZp
bGVTeXN0ZW1BZ2VudC5FbnRyeT49fSBiYWNrZW5kRW50cmllcwotICAgICAqLwotICAgIGRpcmVj
dG9yeUNvbnRlbnRSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIGJhY2tl
bmRFbnRyaWVzKQotICAgIHsKLSAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9kaXJlY3RvcnlD
b250ZW50UmVjZWl2ZWQocmVxdWVzdElkLCBlcnJvckNvZGUsIGJhY2tlbmRFbnRyaWVzKTsKLSAg
ICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAotICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBlcnJvckNvZGUKLSAgICAgKiBAcGFyYW0ge0ZpbGVTeXN0ZW1BZ2Vu
dC5NZXRhZGF0YT19IG1ldGFkYXRhCi0gICAgICovCi0gICAgbWV0YWRhdGFSZWNlaXZlZDogZnVu
Y3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUsIG1ldGFkYXRhKQotICAgIHsKLSAgICAgICAgdGhp
cy5fYWdlbnRXcmFwcGVyLl9tZXRhZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgZXJyb3JDb2RlLCBt
ZXRhZGF0YSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1
ZXN0SWQKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gZXJyb3JDb2RlCi0gICAgICogQHBhcmFtIHtz
dHJpbmc9fSBjb250ZW50Ci0gICAgICogQHBhcmFtIHtzdHJpbmc9fSBjaGFyc2V0Ci0gICAgICov
Ci0gICAgZmlsZUNvbnRlbnRSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBlcnJvckNvZGUs
IGNvbnRlbnQsIGNoYXJzZXQpCi0gICAgewotICAgICAgICB0aGlzLl9hZ2VudFdyYXBwZXIuX2Zp
bGVDb250ZW50UmVjZWl2ZWQocmVxdWVzdElkLCBlcnJvckNvZGUsIGNvbnRlbnQsIGNoYXJzZXQp
OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElkCi0g
ICAgICogQHBhcmFtIHtudW1iZXJ9IGVycm9yQ29kZQotICAgICAqLwotICAgIGRlbGV0aW9uQ29t
cGxldGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGVycm9yQ29kZSkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX2FnZW50V3JhcHBlci5fZGVsZXRpb25Db21wbGV0ZWQocmVxdWVzdElkLCBlcnJvckNvZGUp
OwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBjOWI0Njk0Zjc5MWM4NDQyNTdmMjQ3OTI2NjhiNDFiYWI5Nzgy
OTI3Li43YjEzNDBkZDk0MzllMDNkMzQzNTgwMDNjNDg4ZTA0ODMwYjg5YmQ1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTItMDktMDYgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWlncmF0ZSBGaWxlU3lzdGVtIHRvIGFz
eW5jIHByb3RvY29sIGNvbW1hbmRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU5ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVu
dHJ5Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJl
Y3RvcnktdHJlZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vZmlsZXN5c3RlbS10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9GaWxlU3lzdGVtVGVz
dC5JbnNwZWN0b3JUZXN0Lk1vY2tFbnRyeSk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWRpcmVjdG9yeS1jb250ZW50Lmh0bWw6CisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxl
c3lzdGVtLXJvb3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lz
dGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbDoKKwogMjAxMi0wOS0wNiAgQ3NhYmEgT3N6dHJvZ29u
w6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5p
bmcsIHNraXAgb25lIG1vcmUgZmFpbGluZyB0ZXN0LApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnkuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGVsZXRlLWVudHJ5Lmh0bWwK
aW5kZXggZjQzZTFiNGE0ZDE4YTllNTU0YmEyNjAyNTY2MmFjYWFmZGYwM2YwZi4uYWQ4YjQzNjA4
NWZjNTQyNjIxYjY4ODM1ZWUxZTI2NmZjNWIxOWMxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kZWxldGUtZW50cnkuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RlbGV0ZS1lbnRyeS5o
dG1sCkBAIC04LDcgKzgsNyBAQAogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVu
dExvYWRlZCIsIHJ1blRlc3QpOwogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgdmFyIGZpbGVTeXN0
ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5h
Z2VyKCk7CisgICAgdmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5
c3RlbU1vZGVsOwogCiAgICAgdmFyIHRlc3RTdGVwID0gWwogICAgICAgICBmdW5jdGlvbigpCkBA
IC0zMywzNyArMzMsMzcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24oKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIuZGVsZXRlRW50
cnkoIkludmFsaWRVUkwiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIGZpbGVTeXN0
ZW1Nb2RlbC5fZGVsZXRlRW50cnkoIkludmFsaWRVUkwiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAg
ICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJlcnJvckNvZGU6ICIgKyBlcnJvckNvZGUp
OwotICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLmRlbGV0ZUVudHJ5KCJmaWxl
c3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9JbnZhbGlkVHlwZS9mdWdhIiwgdGVzdFN0ZXAu
c2hpZnQoKSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX2RlbGV0ZUVudHJ5KCJmaWxl
c3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9JbnZhbGlkVHlwZS9mdWdhIiwgdGVzdFN0ZXAu
c2hpZnQoKSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJyb3JDb2RlOiAi
ICsgZXJyb3JDb2RlKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5kZWxl
dGVFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2Ui
LCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fZGVsZXRl
RW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIiwg
dGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JD
b2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZXJy
b3JDb2RlOiAiICsgZXJyb3JDb2RlKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFu
YWdlci5kZWxldGVFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9y
YXJ5L2Z1Z2EiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2Rl
bC5fZGVsZXRlRW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFy
eS9mdWdhIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rp
b24oZXJyb3JDb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiZXJyb3JDb2RlOiAiICsgZXJyb3JDb2RlKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1S
ZXF1ZXN0TWFuYWdlci5kZWxldGVFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgw
MDAvdGVtcG9yYXJ5LyIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5c3Rl
bU1vZGVsLl9kZWxldGVFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVt
cG9yYXJ5LyIsIHRlc3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0
aW9uKGVycm9yQ29kZSkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoImVycm9yQ29kZTogIiArIGVycm9yQ29kZSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVt
UmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgICAgICBmaWxlU3lz
dGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwg
InRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1
bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRyZWUuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZGlyZWN0b3J5LXRy
ZWUuaHRtbAppbmRleCAwMGMxMjRhZmIzODYxZGY0ZGZjZDY3YzU1OGMwM2JkYTEwOTJmOWJjLi4w
NDljNGMzYzE4ZmU0Mzc0NmY3ZjJhMWNhYTdhNjM0MDcwYWZlMWY5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL2RpcmVjdG9yeS10cmVlLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZmlsZXN5c3RlbS9kaXJl
Y3RvcnktdHJlZS5odG1sCkBAIC0yMCw2ICsyMCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHZh
ciBmaWxlU3lzdGVtVmlldyA9IG51bGw7CiAgICAgdmFyIGRpcmVjdG9yeVRyZWUgPSBudWxsOwog
CisgICAgdmFyIHJlcXVlc3RzTGVmdCA9IDA7CiAgICAgdmFyIHRlc3RTdGVwID0gWwogICAgICAg
ICBmdW5jdGlvbigpCiAgICAgICAgIHsKQEAgLTQ5LDIyICs1MCwzMCBAQCBmdW5jdGlvbiB0ZXN0
KCkKIAogICAgICAgICAgICAgZmlsZVN5c3RlbUl0ZW0gPSBmaWxlU3lzdGVtTGlzdFRyZWVFbGVt
ZW50Ll9maWxlU3lzdGVtVHJlZUVsZW1lbnRCeU5hbWUoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4w
LjAuMTo4MDAwL3RlbXBvcmFyeSIpOwogCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNu
aWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Nb2RlbC5wcm90b3R5cGUsICJfZGlyZWN0b3J5
Q29udGVudFJlY2VpdmVkIiwgdGVzdFN0ZXAuc2hpZnQoKSwgZmFsc2UpOwogICAgICAgICAgICAg
ZmlsZVN5c3RlbUl0ZW0uc2VsZWN0KCk7CiAgICAgICAgICAgICBmaWxlU3lzdGVtVmlldyA9IGZp
bGVTeXN0ZW1JdGVtLl9maWxlU3lzdGVtVmlldzsKICAgICAgICAgICAgIGRpcmVjdG9yeVRyZWUg
PSBmaWxlU3lzdGVtVmlldy5fZGlyZWN0b3J5VHJlZTsKLQotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jYWxsT25SZXF1ZXN0Q29tcGxldGVkKHRlc3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9
LAogCiAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgZHVtcERpcmVjdG9yeVRyZWUo
ZGlyZWN0b3J5VHJlZSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7
CiAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RTZW50KCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICArK3JlcXVlc3RzTGVmdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtTW9kZWwu
cHJvdG90eXBlLCAiX2RpcmVjdG9yeUNvbnRlbnRSZWNlaXZlZCIsIHRlc3RTdGVwLnNoaWZ0KCks
IHRydWUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rv
ci5GaWxlU3lzdGVtTW9kZWwucHJvdG90eXBlLCAicmVxdWVzdERpcmVjdG9yeUNvbnRlbnQiLCBy
ZXF1ZXN0U2VudCwgdHJ1ZSk7CisKICAgICAgICAgICAgIGRpcmVjdG9yeVRyZWUuY2hpbGRyZW5b
MF0uZXhwYW5kUmVjdXJzaXZlbHkoKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2FsbE9u
UmVxdWVzdENvbXBsZXRlZCh0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKIAogICAgICAg
ICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICgtLXJlcXVlc3RzTGVmdCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBkdW1wRGlyZWN0b3J5VHJlZShkaXJlY3RvcnlU
cmVlKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jbGVhckZpbGVTeXN0ZW0odGVzdFN0
ZXAuc2hpZnQoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9maWxlc3lzdGVtL2ZpbGVzeXN0ZW0tdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCmluZGV4IDRhMWE0YzA0ZjUy
N2FmMzMxMWVhOGE2ZmRiOWZiODRiZjNlNWNmNjMuLjQ1Nzk5MmI4YzA3ZmEzMDUzZDJmMDY3ZmY5
NzViYmM0ZmNmNmY2MDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vZmlsZXN5c3RlbS10ZXN0LmpzCkBAIC0zLDM3ICsz
LDExIEBAIHZhciBpbml0aWFsaXplX0ZpbGVTeXN0ZW1UZXN0ID0gZnVuY3Rpb24oKQogICAgIHZh
ciBuZXh0Q2FsbGJhY2tJZCA9IDA7CiAgICAgdmFyIGNhbGxiYWNrcyA9IHt9OwogCi0gICAgSW5z
cGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFn
ZXIucHJvdG90eXBlLCAicmVxdWVzdEZpbGVTeXN0ZW1Sb290IiwgaW5jcmVtZW50UmVxdWVzdENv
dW50LCB0cnVlKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUsICJyZXF1ZXN0RGlyZWN0b3J5Q29udGVu
dCIsIGluY3JlbWVudFJlcXVlc3RDb3VudCwgdHJ1ZSk7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRT
bmlmZmVyKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLCAi
cmVxdWVzdE1ldGFkYXRhIiwgaW5jcmVtZW50UmVxdWVzdENvdW50LCB0cnVlKTsKLQotICAgIElu
c3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5h
Z2VyLnByb3RvdHlwZSwgIl9maWxlU3lzdGVtUm9vdFJlY2VpdmVkIiwgZGVjcmVtZW50UmVxdWVz
dENvdW50LCB0cnVlKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUsICJfZGlyZWN0b3J5Q29udGVudFJl
Y2VpdmVkIiwgZGVjcmVtZW50UmVxdWVzdENvdW50LCB0cnVlKTsKLSAgICBJbnNwZWN0b3JUZXN0
LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5wcm90b3R5
cGUsICJfbWV0YWRhdGFSZWNlaXZlZCIsIGRlY3JlbWVudFJlcXVlc3RDb3VudCwgdHJ1ZSk7Ci0K
LSAgICB2YXIgaWRsZUNhbGxiYWNrcyA9IFtdOwotICAgIHZhciByZXF1ZXN0Q291bnQgPSAwOwot
ICAgIGZ1bmN0aW9uIGluY3JlbWVudFJlcXVlc3RDb3VudCgpCi0gICAgewotICAgICAgICArK3Jl
cXVlc3RDb3VudDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkZWNyZW1lbnRSZXF1ZXN0Q291bnQo
KQorICAgIEluc3BlY3RvclRlc3QuTW9ja0VudHJ5ID0gZnVuY3Rpb24odXJsKQogICAgIHsKLSAg
ICAgICAgaWYgKC0tcmVxdWVzdENvdW50ICE9PSAwKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHZhciBjYWxsYmFja3MgPSBpZGxlQ2FsbGJhY2tzOwotICAgICAgICBpZGxlQ2FsbGJh
Y2tzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsg
KytpKQotICAgICAgICAgICAgY2FsbGJhY2tzW2ldKCk7CisgICAgICAgIHRoaXMudXJsID0gdXJs
OwogICAgIH0KIAotICAgIEluc3BlY3RvclRlc3QuY2FsbE9uUmVxdWVzdENvbXBsZXRlZCA9IGZ1
bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgaWRsZUNhbGxiYWNrcy5wdXNoKGNhbGxi
YWNrKTsKLSAgICB9OwotCiAgICAgSW5zcGVjdG9yVGVzdC5yZWdpc3RlckNhbGxiYWNrID0gZnVu
Y3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgY2FsbGJhY2tJZCA9ICsrbmV4dENh
bGxiYWNrSWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9m
aWxlc3lzdGVtL3JlcXVlc3QtZGlyZWN0b3J5LWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC5o
dG1sCmluZGV4IDEwZmRhYTI1ZWYxYjA1YWZmNThkMzk4ZDQwZDhmYzNmM2U3NWY5ZGEuLjc5NGEw
NzFmZDU1YTJkMzE1YTIzMTI1NWY4OWZhYjc4Y2Y3OWVlNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29u
dGVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0
ZW0vcmVxdWVzdC1kaXJlY3RvcnktY29udGVudC5odG1sCkBAIC04LDcgKzgsNyBAQAogZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwogZnVuY3Rp
b24gdGVzdCgpCiB7Ci0gICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisgICAgdmFyIGZpbGVTeXN0ZW1N
b2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsOwogCiAgICAgdmFyIHRlc3RT
dGVwID0gWwogICAgICAgICBmdW5jdGlvbigpCkBAIC0yOCwzMSArMjgsMzEgQEAgZnVuY3Rpb24g
dGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24oKQogICAgICAgICB7Ci0gICAgICAgICAgICBmaWxl
U3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoIkludmFsaWRVUkwi
LCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVz
dERpcmVjdG9yeUNvbnRlbnQoIkludmFsaWRVUkwiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAg
ICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVz
dWx0KGVycm9yQ29kZSwgZW50cmllcyk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1h
bmFnZXIucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDAwL0ludmFsaWRUeXBlLyIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmls
ZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8v
MTI3LjAuMC4xOjgwMDAvSW52YWxpZFR5cGUvIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAg
IH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBlbnRyaWVzKQogICAgICAgICB7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBEaXJlY3RvcnlDb250ZW50UmVxdWVzdFJlc3Vs
dChlcnJvckNvZGUsIGVudHJpZXMpOwotICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5h
Z2VyLnJlcXVlc3REaXJlY3RvcnlDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC90ZW1wb3JhcnkvaG9nZSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmls
ZVN5c3RlbU1vZGVsLl9yZXF1ZXN0RGlyZWN0b3J5Q29udGVudCgiZmlsZXN5c3RlbTpodHRwOi8v
MTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAg
ICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVz
dWx0KGVycm9yQ29kZSwgZW50cmllcyk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1h
bmFnZXIucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3RlbXBvcmFyeS9mb28iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIGZp
bGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDov
LzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAg
ICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcERpcmVjdG9yeUNvbnRlbnRSZXF1ZXN0UmVz
dWx0KGVycm9yQ29kZSwgZW50cmllcyk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1h
bmFnZXIucmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovL2V4YW1wbGUu
Y29tL3RlbXBvcmFyeS8iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIGZpbGVTeXN0
ZW1Nb2RlbC5fcmVxdWVzdERpcmVjdG9yeUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovL2V4YW1w
bGUuY29tL3RlbXBvcmFyeS8iLCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKIAogICAg
ICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGVudHJpZXMpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlLWNvbnRlbnQu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVz
dC1maWxlLWNvbnRlbnQuaHRtbAppbmRleCBhMzEyYWQ1ZGQ4OGYwN2FjMDNhODlmZDQ2OTMyMTgx
YTk4ODE2ZGJmLi5mMTQ3ZWQ1OGEyNTZiMThlMjAwYmI5OTk1YzQxYzk5MWMwMDYzOWM0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVl
c3QtZmlsZS1jb250ZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGUtY29udGVudC5odG1sCkBAIC04LDcgKzgsNyBAQAog
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwog
ZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5l
dyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisgICAgdmFyIGZpbGVT
eXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsOwogCiAgICAgdmFy
IHRlc3RTdGVwID0gWwogICAgICAgICBmdW5jdGlvbigpCkBAIC0yMywzNyArMjMsMzcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24oKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVDb250ZW50KCJJbnZhbGlkVVJM
IiwgdHJ1ZSwgMiwgNiwgIlVURi04IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgICAgICBm
aWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlQ29udGVudCgiSW52YWxpZFVSTCIsIHRydWUsIDIs
IDYsICJVVEYtOCIsIHRlc3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1
bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKICAgICAgICAgewogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwg
Y29udGVudCwgY2hhcnNldCk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIu
cmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9JbnZh
bGlkVHlwZS9ob2dlL2Z1Z2EudHh0IiwgdHJ1ZSwgMiwgNiwgIlVURi04IiwgdGVzdFN0ZXAuc2hp
ZnQoKSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlQ29udGVudCgi
ZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvSW52YWxpZFR5cGUvaG9nZS9mdWdhLnR4
dCIsIHRydWUsIDIsIDYsICJVVEYtOCIsIHRlc3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9LAog
CiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKICAgICAgICAg
ewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0
KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtUmVx
dWVzdE1hbmFnZXIucmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC90ZW1wb3JhcnkvaG9nZS9mdWdhLnR4dCIsIHRydWUsIDIsIDYsICJVVEYtOCIsIHRl
c3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLl9yZXF1ZXN0Rmls
ZUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dl
L2Z1Z2EudHh0IiwgdHJ1ZSwgMiwgNiwgIlVURi04IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAg
ICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KQog
ICAgICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxlQ29udGVudFJlcXVl
c3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KTsKLSAgICAgICAgICAgIGZpbGVT
eXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RmlsZUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDov
LzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dlIiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmlu
ZWQsICIiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1Nb2RlbC5f
cmVxdWVzdEZpbGVDb250ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1w
b3JhcnkvaG9nZSIsIHRydWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAiIiwgdGVzdFN0ZXAuc2hp
ZnQoKSk7CiAgICAgICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBjb250ZW50
LCBjaGFyc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBGaWxl
Q29udGVudFJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBjb250ZW50LCBjaGFyc2V0KTsKLSAgICAg
ICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RmlsZUNvbnRlbnQoImZpbGVz
eXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iLCB0cnVlLCB1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgIiIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5
c3RlbU1vZGVsLl9yZXF1ZXN0RmlsZUNvbnRlbnQoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAu
MTo4MDAwL3RlbXBvcmFyeS9mb28iLCB0cnVlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgIiIsIHRl
c3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29k
ZSwgY29udGVudCwgY2hhcnNldCkKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wRmlsZUNvbnRlbnRSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNl
dCk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVDb250
ZW50KCJmaWxlc3lzdGVtOmh0dHA6Ly9leGFtcGxlLmNvbS90ZW1wb3JhcnkvZm9vLnR4dCIsIHRy
dWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAiIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAg
ICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlQ29udGVudCgiZmlsZXN5c3RlbTpodHRw
Oi8vZXhhbXBsZS5jb20vdGVtcG9yYXJ5L2Zvby50eHQiLCB0cnVlLCB1bmRlZmluZWQsIHVuZGVm
aW5lZCwgIiIsIHRlc3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0
aW9uKGVycm9yQ29kZSwgY29udGVudCwgY2hhcnNldCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1maWxlc3lzdGVtLXJvb3Qu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVz
dC1maWxlc3lzdGVtLXJvb3QuaHRtbAppbmRleCBmMzJhN2M4ODFjN2UwNjY2ZDQyMDhjMzYwYjUx
NjY4NjRhMmUyMmQ0Li44ZjVjZWZhOTFkZDgxNTFjNzczNzcwMDNmZDllNDc5YjQzNmViOTczIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3Jl
cXVlc3QtZmlsZXN5c3RlbS1yb290Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZmlsZXN5c3RlbS9yZXF1ZXN0LWZpbGVzeXN0ZW0tcm9vdC5odG1sCkBAIC04LDcg
KzgsNyBAQAogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHJ1
blRlc3QpOwogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgdmFyIGZpbGVTeXN0ZW1SZXF1ZXN0TWFu
YWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyKCk7CisgICAg
dmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1vZGVsOwog
CiAgICAgdmFyIHRlc3RTdGVwID0gWwogICAgICAgICBmdW5jdGlvbigpCkBAIC0yMCwxOSArMjAs
MTkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24oKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVTeXN0ZW1Sb290
KCJodHRwOi8vMTI3LjAuMC4xOjgwMDAiLCAidGVtcG9yYXJ5IiwgdGVzdFN0ZXAuc2hpZnQoKSk7
CisgICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwuX3JlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0
cDovLzEyNy4wLjAuMTo4MDAwIiwgInRlbXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOwogICAg
ICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSkK
ICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRmlsZVN5c3RlbVJvb3RS
ZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwgYmFja2VuZFJvb3RFbnRyeSk7Ci0gICAgICAgICAgICBm
aWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3
LjAuMC4xOjgwMDAiLCAiZml6emJ1enoiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKKyAgICAgICAgICAg
IGZpbGVTeXN0ZW1Nb2RlbC5fcmVxdWVzdEZpbGVTeXN0ZW1Sb290KCJodHRwOi8vMTI3LjAuMC4x
OjgwMDAiLCAiZml6emJ1enoiLCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKIAogICAg
ICAgICBmdW5jdGlvbihlcnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcEZpbGVTeXN0ZW1Sb290UmVxdWVzdFJlc3VsdChl
cnJvckNvZGUsIGJhY2tlbmRSb290RW50cnkpOwotICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVl
c3RNYW5hZ2VyLnJlcXVlc3RGaWxlU3lzdGVtUm9vdCgiaHR0cDovL2V4YW1wbGUuY29tIiwgInRl
bXBvcmFyeSIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVs
Ll9yZXF1ZXN0RmlsZVN5c3RlbVJvb3QoImh0dHA6Ly9leGFtcGxlLmNvbSIsICJ0ZW1wb3Jhcnki
LCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbihlcnJv
ckNvZGUsIGJhY2tlbmRSb290RW50cnkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9maWxlc3lzdGVtL3JlcXVlc3QtbWV0YWRhdGEuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1s
CmluZGV4IDc4ZTRlMTRkMGM3NGI2ZTFjNjMyZjIwOWNiZTkyYmY1MGE5NjZiNDcuLjY2OTlkOTE5
YmUwOTA4NjQyNTI0Yjg4YmNmMzc0NjNlYTBmN2E0NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1tZXRhZGF0YS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2ZpbGVzeXN0ZW0vcmVxdWVzdC1t
ZXRhZGF0YS5odG1sCkBAIC04LDcgKzgsNyBAQAogZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
RE9NQ29udGVudExvYWRlZCIsIHJ1blRlc3QpOwogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgdmFy
IGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVJl
cXVlc3RNYW5hZ2VyKCk7CisgICAgdmFyIGZpbGVTeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0
b3IuRmlsZVN5c3RlbU1vZGVsOwogCiAgICAgdmFyIHRlc3RTdGVwID0gWwogICAgICAgICBmdW5j
dGlvbigpCkBAIC0xOCwxOSArMTgsMTkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVu
Y3Rpb24oKQogICAgICAgICB7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIu
cmVxdWVzdE1ldGFkYXRhKCJJbnZhbGlkVVJMIiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAg
ICAgICBmaWxlU3lzdGVtTW9kZWwucmVxdWVzdE1ldGFkYXRhKG5ldyBJbnNwZWN0b3JUZXN0Lk1v
Y2tFbnRyeSgiSW52YWxpZFVSTCIpLCB0ZXN0U3RlcC5zaGlmdCgpKTsKICAgICAgICAgfSwKIAog
ICAgICAgICBmdW5jdGlvbihlcnJvckNvZGUsIG1ldGFkYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmR1bXBNZXRhZGF0YVJlcXVlc3RSZXN1bHQoZXJyb3JDb2RlLCBt
ZXRhZGF0YSk7Ci0gICAgICAgICAgICBmaWxlU3lzdGVtUmVxdWVzdE1hbmFnZXIucmVxdWVzdE1l
dGFkYXRhKCJmaWxlc3lzdGVtOmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9JbnZhbGlkVHlwZSIsIHRl
c3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RNZXRh
ZGF0YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4w
LjAuMTo4MDAwL0ludmFsaWRUeXBlIiksIHRlc3RTdGVwLnNoaWZ0KCkpOwogICAgICAgICB9LAog
CiAgICAgICAgIGZ1bmN0aW9uKGVycm9yQ29kZSwgbWV0YWRhdGEpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcE1ldGFkYXRhUmVxdWVzdFJlc3VsdChlcnJvckNvZGUs
IG1ldGFkYXRhKTsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0
TWV0YWRhdGEoImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9ob2dl
IiwgdGVzdFN0ZXAuc2hpZnQoKSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwucmVxdWVz
dE1ldGFkYXRhKG5ldyBJbnNwZWN0b3JUZXN0Lk1vY2tFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8v
MTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2hvZ2UiKSwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAg
ICAgIH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKQEAgLTQxLDE5
ICs0MSwxOSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlvbigpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGZpbGVTeXN0ZW1SZXF1ZXN0TWFuYWdlci5yZXF1ZXN0TWV0YWRhdGEo
ImZpbGVzeXN0ZW06aHR0cDovLzEyNy4wLjAuMTo4MDAwL3RlbXBvcmFyeS9waXlvIiwgdGVzdFN0
ZXAuc2hpZnQoKSk7CisgICAgICAgICAgICBmaWxlU3lzdGVtTW9kZWwucmVxdWVzdE1ldGFkYXRh
KG5ldyBJbnNwZWN0b3JUZXN0Lk1vY2tFbnRyeSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4x
OjgwMDAvdGVtcG9yYXJ5L3BpeW8iKSwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAgIH0sCiAK
ICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKICAgICAgICAgewogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9yQ29kZSwg
bWV0YWRhdGEpOwotICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJlcXVlc3RN
ZXRhZGF0YSgiZmlsZXN5c3RlbTpodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcG9yYXJ5L2ZvbyIs
IHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLnJlcXVlc3RN
ZXRhZGF0YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnkoImZpbGVzeXN0ZW06aHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3RlbXBvcmFyeS9mb28iKSwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAg
IH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlLCBtZXRhZGF0YSkKICAgICAgICAgewog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wTWV0YWRhdGFSZXF1ZXN0UmVzdWx0KGVycm9y
Q29kZSwgbWV0YWRhdGEpOwotICAgICAgICAgICAgZmlsZVN5c3RlbVJlcXVlc3RNYW5hZ2VyLnJl
cXVlc3RNZXRhZGF0YSgiZmlsZXN5c3RlbTpodHRwOi8vZXhhbXBsZS5jb20vdGVtcG9yYXJ5L2Jh
ciIsIHRlc3RTdGVwLnNoaWZ0KCkpOworICAgICAgICAgICAgZmlsZVN5c3RlbU1vZGVsLnJlcXVl
c3RNZXRhZGF0YShuZXcgSW5zcGVjdG9yVGVzdC5Nb2NrRW50cnkoImZpbGVzeXN0ZW06aHR0cDov
L2V4YW1wbGUuY29tL3RlbXBvcmFyeS9iYXIiKSwgdGVzdFN0ZXAuc2hpZnQoKSk7CiAgICAgICAg
IH0sCiAKICAgICAgICAgZnVuY3Rpb24oZXJyb3JDb2RlKQo=
</data>
<flag name="review"
          id="173672"
          type_id="1"
          status="+"
          setter="apavlov"
    />
          </attachment>
      

    </bug>

</bugzilla>