<?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>95978</bug_id>
          
          <creation_ts>2012-09-06 06:24:58 -0700</creation_ts>
          <short_desc>Web Inspector: Migrate IndexedDB to async protocol commands.</short_desc>
          <delta_ts>2012-09-07 04:56:49 -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="Vsevolod Vlasov">vsevik</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>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713236</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 06:24:58 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713245</commentid>
    <comment_count>1</comment_count>
      <attachid>162494</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 06:34:56 -0700</bug_when>
    <thetext>Created attachment 162494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714402</commentid>
    <comment_count>2</comment_count>
      <attachid>162494</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-07 04:45:00 -0700</bug_when>
    <thetext>Comment on attachment 162494
Patch

r=me

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

&gt; LayoutTests/http/tests/inspector/indexeddb/database-names.html:25
&gt; +        InspectorTest.addSniffer(WebInspector.IndexedDBModel.prototype, &quot;_updateOriginDatabaseNames&quot;, step2, false);

stray indentation change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714409</commentid>
    <comment_count>3</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-07 04:56:49 -0700</bug_when>
    <thetext>Committed r127854: &lt;http://trac.webkit.org/changeset/127854&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162494</attachid>
            <date>2012-09-06 06:34:56 -0700</date>
            <delta_ts>2012-09-07 04:45:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95978-20120906173435.patch</filename>
            <type>text/plain</type>
            <size>57510</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI5MjAyYzRjOTkzMWY5
MzZjOTg4NDAxYmU0N2I5MmQ0ZjJjNDRhOC4uZGM5OGRjMmZjZGQ3MTJkNWIzMjM3ZWQyZTExYzc5
ODg3MDU2ZjY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA5LTA2ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE1pZ3JhdGUgSW5kZXhlZERCIHRvIGFzeW5jIHByb3RvY29sIGNvbW1hbmRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREIgaXMgbm93
IGltcGxlbWVudGVkIHVzaW5nIGFzeW5jIHByb3RvY29sIGNvbW1hbmRzLgorICAgICAgICBSZW1v
dmVkIGJvaWxlcnBsYXRlIGNvZGUgdXNlZCB0byBlbXVsYXRlIGFzeW5jIGNvbW1hbmRzIGJlZm9y
ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6Y2xlYXJGcm9udGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFi
YXNlTmFtZXNGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJB
Z2VudDo6cmVxdWVzdERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4
ZWREQkFnZW50OjpyZXF1ZXN0RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JJbmRleGVkREJBZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbmRleGVkREJNb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwucHJvdG90eXBlLl9mcmFtZURldGFjaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX2RhdGFiYXNlUmVtb3ZlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9sb2FkRGF0YWJhc2VOYW1lc0Zv
ckZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUu
X2xvYWREYXRhYmFzZS5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwucHJvdG90eXBlLl9sb2FkRGF0YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5sb2FkT2JqZWN0U3RvcmVEYXRhKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUubG9hZEluZGV4RGF0YSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9yZXF1ZXN0RGF0YS5p
bm5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90
b3R5cGUuX3JlcXVlc3REYXRhKToKKwogMjAxMi0wOS0wNiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlz
aGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZWZhY3RvciBDYWxlbmRhclBpY2tlciB0byBub3Qg
dXNlIGdsb2JhbCB2YXJpYWJsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24KaW5kZXggZTJkZTMzMDFhYzgxNjVkOTZhNTA3ZTAyZTVjMjRhMmM0ZDY3MzJjMi4uMjBjZWVh
MzhkMmQ3NjFkMGNlYmJjNDdlYjBlMGE5ZWM3YTU0MjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMTIzMSwyNSArMTIzMSwzMSBAQAogICAgICAgICAgICAg
fSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0RGF0YWJh
c2VOYW1lc0ZvckZyYW1lIiwKKyAgICAgICAgICAgICAgICAiYXN5bmMiOiB0cnVlLAogICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBp
ZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZnJhbWVJZCIsICIkcmVmIjog
Ik5ldHdvcmsuRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSBpZC4iIH0KICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXMiLCAiJHJlZiI6
ICJTZWN1cml0eU9yaWdpbldpdGhEYXRhYmFzZU5hbWVzIiwgImRlc2NyaXB0aW9uIjogIkZyYW1l
IHdpdGggZGF0YWJhc2UgbmFtZXMuIiB9CisgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgZGF0YWJhc2UgbmFtZXMgZm9yIGdpdmVuIGZy
YW1lJ3Mgc2VjdXJpdHkgb3JpZ2luLiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgIm5hbWUiOiAicmVxdWVzdERhdGFiYXNlIiwKKyAgICAgICAgICAgICAg
ICAiYXN5bmMiOiB0cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAi
ZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBpZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZnJhbWVJZCIsICIkcmVmIjogIk5ldHdvcmsuRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6
ICJGcmFtZSBpZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VO
YW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWUuIiB9
CiAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMiLCAiJHJl
ZiI6ICJEYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMiLCAiZGVzY3JpcHRpb24iOiAiRGF0YWJhc2Ug
d2l0aCBhbiBhcnJheSBvZiBvYmplY3Qgc3RvcmVzLiIgfQorICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIGRhdGFiYXNlIHdpdGggZ2l2
ZW4gbmFtZSBpbiBnaXZlbiBmcmFtZS4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3REYXRhIiwKKyAgICAgICAgICAgICAgICAi
YXN5bmMiOiB0cnVlLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVz
Y3JpcHRpb24iOiAiUmVxdWVzdCBpZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZnJhbWVJZCIsICIkcmVmIjogIk5ldHdvcmsuRnJhbWVJZCIsICJkZXNjcmlwdGlvbiI6ICJG
cmFtZSBpZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VOYW1l
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWUuIiB9LAog
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9iamVjdFN0b3JlTmFtZSIsICJ0eXBlIjog
InN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJPYmplY3Qgc3RvcmUgbmFtZS4iIH0sCkBAIC0xMjU4
LDM5ICsxMjY0LDExIEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFnZVNpemUi
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIk51bWJlciBvZiByZWNvcmRzIHRv
IGZldGNoLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJrZXlSYW5nZSIsICIk
cmVmIjogIktleVJhbmdlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIktleSBy
YW5nZS4iIH0KICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJSZXF1ZXN0cyBkYXRhIGZyb20gb2JqZWN0IHN0b3JlIG9yIGluZGV4LiIKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgXSwKLSAgICAgICAgImV2ZW50cyI6IFsKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAibmFtZSI6ICJkYXRhYmFzZU5hbWVzTG9hZGVkIiwKLSAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1
ZXN0SWQiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBpZC4iIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJh
c2VOYW1lcyIsICIkcmVmIjogIlNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXMiLCAiZGVz
Y3JpcHRpb24iOiAiRnJhbWUgd2l0aCBkYXRhYmFzZSBuYW1lcy4iIH0KLSAgICAgICAgICAgICAg
ICBdCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJuYW1l
IjogImRhdGFiYXNlTG9hZGVkIiwKLSAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAidHlwZSI6ICJpbnRlZ2Vy
IiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgaWQuIiB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcyIsICIkcmVmIjogIkRhdGFiYXNlV2l0
aE9iamVjdFN0b3JlcyIsICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSB3aXRoIGFuIGFycmF5IG9m
IG9iamVjdCBzdG9yZXMuIiB9Ci0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJvYmplY3RTdG9yZURhdGFMb2Fk
ZWQiLAotICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24i
OiAiUmVxdWVzdCBpZC4iIH0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCiAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAib2JqZWN0U3RvcmVEYXRhRW50cmllcyIsICJ0eXBlIjog
ImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJEYXRhRW50cnkiIH0sICJkZXNjcmlwdGlvbiI6
ICJBcnJheSBvZiBvYmplY3Qgc3RvcmUgZGF0YSBlbnRyaWVzLiIgfSwKICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJoYXNNb3JlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlv
biI6ICJJZiB0cnVlLCB0aGVyZSBhcmUgbW9yZSBlbnRyaWVzIHRvIGZldGNoIGluIHRoZSBnaXZl
biByYW5nZS4iIH0KLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogImluZGV4RGF0YUxvYWRlZCIsCi0gICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlk
LiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbmRleERhdGFFbnRyaWVzIiwg
InR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkRhdGFFbnRyeSIgfSwgImRlc2Ny
aXB0aW9uIjogIkFycmF5IG9mIGluZGV4IGRhdGEgZW50cmllcy4iIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiaGFzTW9yZSIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiSWYgdHJ1ZSwgdGhlcmUgYXJlIG1vcmUgZW50cmllcyB0byBmZXRjaCBpbiB0aGUgZ2l2
ZW4gcmFuZ2UuIiB9Ci0gICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIGRhdGEgZnJvbSBvYmplY3Qgc3Rv
cmUgb3IgaW5kZXguIgogICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmlu
ZGV4IDg3OTYxZDgyYzA5MGJmMjJmNTc3YzNlNGJlZTdlMjUxZjc3ZWYxZDUuLjVkZmQ5OTUxOTU4
YmE2MGU4MjhlNGVjNTM1MDM2YzM1MTQxOWEyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNzgsMjggKzc4LDE2
IEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpJbmRleGVkREI6OktleVJhbmdlOwogdXNp
bmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU7CiB1c2luZyBX
ZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmplY3RTdG9yZUluZGV4OwogCit0eXBl
ZGVmIFdlYkNvcmU6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbmRleGVkREJDb21tYW5k
SGFuZGxlcjo6UmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrIFJlcXVlc3REYXRh
YmFzZU5hbWVzRm9yRnJhbWVDYWxsYmFjazsKK3R5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OkluZGV4ZWREQkNvbW1hbmRIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VD
YWxsYmFjayBSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjazsKK3R5cGVkZWYgV2ViQ29yZTo6SW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OkluZGV4ZWREQkNvbW1hbmRIYW5kbGVyOjpSZXF1ZXN0RGF0
YUNhbGxiYWNrIFJlcXVlc3REYXRhQ2FsbGJhY2s7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIEluZGV4ZWREQkFnZW50U3RhdGUgewogc3RhdGljIGNvbnN0IGNoYXIgaW5kZXhl
ZERCQWdlbnRFbmFibGVkW10gPSAiaW5kZXhlZERCQWdlbnRFbmFibGVkIjsKIH07CiAKLWNsYXNz
IEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGcm9udGVuZFByb3ZpZGVyPiBjcmVhdGUoSW5zcGVj
dG9yRnJvbnRlbmQqIGluc3BlY3RvckZyb250ZW5kKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBGcm9udGVuZFByb3ZpZGVyKGluc3BlY3RvckZyb250ZW5kKSk7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB+RnJvbnRlbmRQcm92aWRlcigpIHsgfQotCi0gICAgSW5zcGVjdG9yRnJv
bnRlbmQ6OkluZGV4ZWREQiogZnJvbnRlbmQoKSB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5k
OyB9Ci0gICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2luc3BlY3RvckZyb250ZW5kID0gMDsg
fQotcHJpdmF0ZToKLSAgICBGcm9udGVuZFByb3ZpZGVyKEluc3BlY3RvckZyb250ZW5kKiBpbnNw
ZWN0b3JGcm9udGVuZCkgOiBtX2luc3BlY3RvckZyb250ZW5kKGluc3BlY3RvckZyb250ZW5kLT5p
bmRleGVkZGIoKSkgeyB9Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkluZGV4ZWREQiogbV9pbnNw
ZWN0b3JGcm9udGVuZDsKLX07Ci0KIG5hbWVzcGFjZSB7CiAKIGNsYXNzIEluc3BlY3RvcklEQkNh
bGxiYWNrIDogcHVibGljIElEQkNhbGxiYWNrcyB7CkBAIC0xNTMsMTYgKzE0MSwxNiBAQCBwcml2
YXRlOgogCiBjbGFzcyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9y
SURCQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdldERhdGFiYXNl
TmFtZXNDYWxsYmFjaz4gY3JlYXRlKEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFBy
b3ZpZGVyKiBmcm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHNl
Y3VyaXR5T3JpZ2luKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdldERhdGFiYXNlTmFtZXNDYWxs
YmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxi
YWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayhm
cm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQsIHNlY3VyaXR5T3JpZ2luKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKHJlcXVlc3RDYWxsYmFj
aywgc2VjdXJpdHlPcmlnaW4pKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5HZXREYXRhYmFzZU5h
bWVzQ2FsbGJhY2soKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiBkYXRhYmFzZU5hbWVzTGlzdCkKICAgICB7Ci0gICAgICAgIGlmICgh
bV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQorICAgICAgICBpZiAoIW1fcmVxdWVzdENh
bGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IGRhdGFiYXNlTmFtZXMgPSBUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CkBAIC0xNzMsMTYgKzE2MSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4obV9zZWN1cml0eU9yaWdpbikKICAgICAg
ICAgICAgIC5zZXREYXRhYmFzZU5hbWVzKGRhdGFiYXNlTmFtZXMpOwogCi0gICAgICAgIG1fZnJv
bnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZGF0YWJhc2VOYW1lc0xvYWRlZChtX3JlcXVlc3RJ
ZCwgcmVzdWx0KTsKKyAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKHJlc3Vs
dCk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayhJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlciogZnJvbnRlbmRQcm92aWRlciwg
aW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbikKLSAgICAgICAgOiBt
X2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikKLSAgICAgICAgLCBtX3JlcXVlc3RJ
ZChyZXF1ZXN0SWQpCisgICAgR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKFBhc3NSZWZQdHI8UmVx
dWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCisgICAgICAgIDogbV9yZXF1ZXN0Q2FsbGJhY2socmVx
dWVzdENhbGxiYWNrKQogICAgICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4p
IHsgfQotICAgIFJlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRl
cj4gbV9mcm9udGVuZFByb3ZpZGVyOwotICAgIGludCBtX3JlcXVlc3RJZDsKKyAgICBSZWZQdHI8
UmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsK
ICAgICBTdHJpbmcgbV9zZWN1cml0eU9yaWdpbjsKIH07CiAKQEAgLTMwMCw5ICsyODYsOSBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3QgSURC
S2V5UGF0aCYgaWRiS2V5UGF0aCkKIAogY2xhc3MgRGF0YWJhc2VMb2FkZXJDYWxsYmFjayA6IHB1
YmxpYyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxEYXRhYmFzZUxvYWRlckNhbGxiYWNrPiBjcmVhdGUoSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ6OkZyb250ZW5kUHJvdmlkZXIqIGZyb250ZW5kUHJvdmlkZXIsIGludCByZXF1ZXN0SWQpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VMb2FkZXJDYWxsYmFjaz4gY3JlYXRlKFBhc3NS
ZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YWJhc2VMb2FkZXJDYWxsYmFjayhmcm9udGVu
ZFByb3ZpZGVyLCByZXF1ZXN0SWQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRh
YmFzZUxvYWRlckNhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgfkRhdGFiYXNlTG9hZGVyQ2FsbGJhY2soKSB7IH0KQEAgLTMxMSw3ICsyOTcsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBp
ZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOwogICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdChp
ZGJEYXRhYmFzZSk7Ci0gICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgp
KQorICAgICAgICBpZiAoIW1fcmVxdWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEgZGF0YWJhc2VN
ZXRhZGF0YSA9IGlkYkRhdGFiYXNlLT5tZXRhZGF0YSgpOwpAQCAtMzQ2LDE1ICszMzIsMTMgQEAg
cHVibGljOgogICAgICAgICAgICAgLnNldFZlcnNpb24oZGF0YWJhc2VNZXRhZGF0YS52ZXJzaW9u
KQogICAgICAgICAgICAgLnNldE9iamVjdFN0b3JlcyhvYmplY3RTdG9yZXMpOwogCi0gICAgICAg
IG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKS0+ZGF0YWJhc2VMb2FkZWQobV9yZXF1ZXN0
SWQsIHJlc3VsdCk7CisgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhyZXN1
bHQpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhYmFzZUxvYWRlckNhbGxiYWNrKEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyKiBmcm9udGVuZFByb3ZpZGVyLCBp
bnQgcmVxdWVzdElkKQotICAgICAgICA6IG1fZnJvbnRlbmRQcm92aWRlcihmcm9udGVuZFByb3Zp
ZGVyKQotICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkgeyB9Ci0gICAgUmVmUHRyPElu
c3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlk
ZXI7Ci0gICAgaW50IG1fcmVxdWVzdElkOworICAgIERhdGFiYXNlTG9hZGVyQ2FsbGJhY2soUGFz
c1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgICAg
ICA6IG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykgeyB9CisgICAgUmVmUHRyPFJl
cXVlc3REYXRhYmFzZUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKICAgICBEYXRhYmFzZUNv
bm5lY3Rpb24gbV9jb25uZWN0aW9uOwogfTsKIApAQCAtNDc1LDE0ICs0NTksOSBAQCBjbGFzcyBE
YXRhTG9hZGVyQ2FsbGJhY2s7CiAKIGNsYXNzIE9wZW5DdXJzb3JDYWxsYmFjayA6IHB1YmxpYyBJ
bnNwZWN0b3JJREJDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgZW51bSBDdXJzb3JUeXBlIHsKLSAg
ICAgICAgT2JqZWN0U3RvcmVEYXRhQ3Vyc29yLAotICAgICAgICBJbmRleERhdGFDdXJzb3IKLSAg
ICB9OwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3BlbkN1cnNvckNhbGxiYWNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJv
bnRlbmRQcm92aWRlciwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQsIFBhc3NSZWZQdHI8
RGF0YUxvYWRlckNhbGxiYWNrPiBkYXRhTG9hZGVyQ2FsbGJhY2ssIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBpZGJUcmFuc2FjdGlvbiwgQ3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBpbnQgcmVxdWVzdElkLCBpbnQgc2tpcENvdW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuQ3Vyc29yQ2FsbGJhY2s+IGNyZWF0ZShJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCwgUGFzc1JlZlB0cjxEYXRhTG9hZGVyQ2FsbGJhY2s+IGRh
dGFMb2FkZXJDYWxsYmFjaywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IGlkYlRyYW5zYWN0aW9uLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+IHJlcXVl
c3RDYWxsYmFjaywgaW50IHNraXBDb3VudCwgdW5zaWduZWQgcGFnZVNpemUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wZW5DdXJzb3JDYWxsYmFjayhmcm9udGVuZFByb3Zp
ZGVyLCBpbmplY3RlZFNjcmlwdCwgZGF0YUxvYWRlckNhbGxiYWNrLCBpZGJUcmFuc2FjdGlvbiwg
Y3Vyc29yVHlwZSwgcmVxdWVzdElkLCBza2lwQ291bnQsIHBhZ2VTaXplKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgT3BlbkN1cnNvckNhbGxiYWNrKGluamVjdGVkU2NyaXB0LCBkYXRh
TG9hZGVyQ2FsbGJhY2ssIGlkYlRyYW5zYWN0aW9uLCByZXF1ZXN0Q2FsbGJhY2ssIHNraXBDb3Vu
dCwgcGFnZVNpemUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5PcGVuQ3Vyc29yQ2FsbGJhY2so
KSB7IH0KQEAgLTUzMiw0MyArNTExLDMyIEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZChib29sIGhh
c01vcmUpCiAgICAgewogICAgICAgICBtX2RhdGFMb2FkZXJDYWxsYmFjay5jbGVhcigpOwotICAg
ICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKKyAgICAgICAgaWYgKCFt
X3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBpZiAobV9pZGJDdXJzb3IpCiAgICAgICAgICAgICBtX2lkYkN1cnNvci0+cG9zdFN1Y2Nl
c3NIYW5kbGVyQ2FsbGJhY2soKTsKICAgICAgICAgbV9pZGJUcmFuc2FjdGlvbi0+ZGlkQ29tcGxl
dGVUYXNrRXZlbnRzKCk7CiAKLSAgICAgICAgc3dpdGNoIChtX2N1cnNvclR5cGUpIHsKLSAgICAg
ICAgY2FzZSBPYmplY3RTdG9yZURhdGFDdXJzb3I6Ci0gICAgICAgICAgICBtX2Zyb250ZW5kUHJv
dmlkZXItPmZyb250ZW5kKCktPm9iamVjdFN0b3JlRGF0YUxvYWRlZChtX3JlcXVlc3RJZCwgbV9y
ZXN1bHQucmVsZWFzZSgpLCBoYXNNb3JlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEluZGV4RGF0YUN1cnNvcjoKLSAgICAgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJv
bnRlbmQoKS0+aW5kZXhEYXRhTG9hZGVkKG1fcmVxdWVzdElkLCBtX3Jlc3VsdC5yZWxlYXNlKCks
IGhhc01vcmUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgbV9yZXF1
ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKG1fcmVzdWx0LnJlbGVhc2UoKSwgaGFzTW9yZSk7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIE9wZW5DdXJzb3JDYWxsYmFjayhQYXNzUmVmUHRyPEluc3Bl
Y3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCwgUGFzc1JlZlB0cjxEYXRhTG9hZGVyQ2FsbGJh
Y2s+IGRhdGFMb2FkZXJDYWxsYmFjaywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IGlkYlRyYW5zYWN0aW9uLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIGludCByZXF1
ZXN0SWQsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQotICAgICAgICA6IG1fZnJv
bnRlbmRQcm92aWRlcihmcm9udGVuZFByb3ZpZGVyKQotICAgICAgICAsIG1faW5qZWN0ZWRTY3Jp
cHQoaW5qZWN0ZWRTY3JpcHQpCisgICAgT3BlbkN1cnNvckNhbGxiYWNrKEluamVjdGVkU2NyaXB0
IGluamVjdGVkU2NyaXB0LCBQYXNzUmVmUHRyPERhdGFMb2FkZXJDYWxsYmFjaz4gZGF0YUxvYWRl
ckNhbGxiYWNrLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gaWRi
VHJhbnNhY3Rpb24sIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4gcmVxdWVzdENhbGxi
YWNrLCBpbnQgc2tpcENvdW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkKKyAgICAgICAgOiBtX2luamVj
dGVkU2NyaXB0KGluamVjdGVkU2NyaXB0KQogICAgICAgICAsIG1fZGF0YUxvYWRlckNhbGxiYWNr
KGRhdGFMb2FkZXJDYWxsYmFjaykKICAgICAgICAgLCBtX2lkYlRyYW5zYWN0aW9uKGlkYlRyYW5z
YWN0aW9uKQotICAgICAgICAsIG1fY3Vyc29yVHlwZShjdXJzb3JUeXBlKQotICAgICAgICAsIG1f
cmVxdWVzdElkKHJlcXVlc3RJZCkKKyAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhyZXF1ZXN0
Q2FsbGJhY2spCiAgICAgICAgICwgbV9za2lwQ291bnQoc2tpcENvdW50KQogICAgICAgICAsIG1f
cGFnZVNpemUocGFnZVNpemUpCiAgICAgewogICAgICAgICBtX3Jlc3VsdCA9IEFycmF5PERhdGFF
bnRyeT46OmNyZWF0ZSgpOwogICAgICAgICBtX2lkYlRyYW5zYWN0aW9uLT5zZXRDYWxsYmFja3Mo
SW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjazo6Y3JlYXRlKCkuZ2V0KCkpOwogICAgIH0K
LSAgICBSZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IG1f
ZnJvbnRlbmRQcm92aWRlcjsKICAgICBJbmplY3RlZFNjcmlwdCBtX2luamVjdGVkU2NyaXB0Owog
ICAgIFJlZlB0cjxEYXRhTG9hZGVyQ2FsbGJhY2s+IG1fZGF0YUxvYWRlckNhbGxiYWNrOwogICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1faWRiVHJhbnNhY3Rpb247
Ci0gICAgQ3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7Ci0gICAgaW50IG1fcmVxdWVzdElkOworICAg
IFJlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKICAgICBpbnQg
bV9za2lwQ291bnQ7CiAgICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKICAgICBSZWZQdHI8QXJyYXk8
RGF0YUVudHJ5PiA+IG1fcmVzdWx0OwpAQCAtNTc3LDkgKzU0NSw5IEBAIHByaXZhdGU6CiAKIGNs
YXNzIERhdGFMb2FkZXJDYWxsYmFjayA6IHB1YmxpYyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhTG9hZGVyQ2FsbGJhY2s+IGNyZWF0
ZShQYXNzUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBm
cm9udGVuZFByb3ZpZGVyLCBpbnQgcmVxdWVzdElkLCBjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5q
ZWN0ZWRTY3JpcHQsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcm
IGluZGV4TmFtZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UsIGludCBza2lw
Q291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFMb2Fk
ZXJDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4gcmVxdWVz
dENhbGxiYWNrLCBjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQsIGNvbnN0IFN0
cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VT
aXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhTG9hZGVyQ2FsbGJh
Y2soZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3Rv
cmVOYW1lLCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YUxvYWRlckNhbGxiYWNrKHJlcXVlc3RDYWxs
YmFjaywgaW5qZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlS
YW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkRhdGFM
b2FkZXJDYWxsYmFjaygpIHsgfQpAQCAtNTg4LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlID0g
cHJwRGF0YWJhc2U7CiAgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0KGlkYkRhdGFiYXNlKTsK
LSAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCisgICAgICAgIGlm
ICghbV9yZXF1ZXN0Q2FsbGJhY2stPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gaWRiVHJhbnNh
Y3Rpb24gPSB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKGlkYkRhdGFiYXNlLmdldCgpLCBtX29iamVj
dFN0b3JlTmFtZSk7CkBAIC01OTgsMzUgKzU2NiwzMSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
aWRiT2JqZWN0U3RvcmUpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgUmVmUHRyPE9w
ZW5DdXJzb3JDYWxsYmFjaz4gb3BlbkN1cnNvckNhbGxiYWNrID0gT3BlbkN1cnNvckNhbGxiYWNr
OjpjcmVhdGUobV9pbmplY3RlZFNjcmlwdCwgdGhpcywgaWRiVHJhbnNhY3Rpb24uZ2V0KCksIG1f
cmVxdWVzdENhbGxiYWNrLCBtX3NraXBDb3VudCwgbV9wYWdlU2l6ZSk7CisKICAgICAgICAgaWYg
KCFtX2luZGV4TmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IGlkYkluZGV4ID0gaW5kZXhGb3JPYmplY3RTdG9yZShpZGJPYmplY3RT
dG9yZS5nZXQoKSwgbV9pbmRleE5hbWUpOwogICAgICAgICAgICAgaWYgKCFpZGJJbmRleCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIFJlZlB0cjxPcGVuQ3Vyc29yQ2Fs
bGJhY2s+IG9wZW5DdXJzb3JDYWxsYmFjayA9IE9wZW5DdXJzb3JDYWxsYmFjazo6Y3JlYXRlKG1f
ZnJvbnRlbmRQcm92aWRlciwgbV9pbmplY3RlZFNjcmlwdCwgdGhpcywgaWRiVHJhbnNhY3Rpb24u
Z2V0KCksIE9wZW5DdXJzb3JDYWxsYmFjazo6SW5kZXhEYXRhQ3Vyc29yLCBtX3JlcXVlc3RJZCwg
bV9za2lwQ291bnQsIG1fcGFnZVNpemUpOwotCiAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICAgICAgICAgIGlkYkluZGV4LT5vcGVuQ3Vyc29yKG1faWRiS2V5UmFuZ2UsIElE
QkN1cnNvcjo6TkVYVCwgb3BlbkN1cnNvckNhbGxiYWNrLCBpZGJUcmFuc2FjdGlvbi5nZXQoKSwg
ZWMpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPE9wZW5DdXJzb3JDYWxs
YmFjaz4gb3BlbkN1cnNvckNhbGxiYWNrID0gT3BlbkN1cnNvckNhbGxiYWNrOjpjcmVhdGUobV9m
cm9udGVuZFByb3ZpZGVyLCBtX2luamVjdGVkU2NyaXB0LCB0aGlzLCBpZGJUcmFuc2FjdGlvbi5n
ZXQoKSwgT3BlbkN1cnNvckNhbGxiYWNrOjpPYmplY3RTdG9yZURhdGFDdXJzb3IsIG1fcmVxdWVz
dElkLCBtX3NraXBDb3VudCwgbV9wYWdlU2l6ZSk7Ci0KICAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgICAgICAgICAgaWRiT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3IobV9pZGJL
ZXlSYW5nZSwgSURCQ3Vyc29yOjpORVhULCBvcGVuQ3Vyc29yQ2FsbGJhY2ssIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgaWRiVHJhbnNhY3Rpb24uZ2V0KCksIGVj
KTsKICAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEYXRhTG9hZGVyQ2FsbGJhY2so
UGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJv
bnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJZCwgY29uc3QgSW5qZWN0ZWRTY3JpcHQmIGluamVj
dGVkU2NyaXB0LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBp
bmRleE5hbWUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlLCBpbnQgc2tpcENv
dW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkKLSAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJv
bnRlbmRQcm92aWRlcikKLSAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCisgICAgRGF0
YUxvYWRlckNhbGxiYWNrKFBhc3NSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4gcmVxdWVzdENh
bGxiYWNrLCBjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXpl
KQorICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAg
LCBtX2luamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0KQogICAgICAgICAsIG1fb2JqZWN0U3Rv
cmVOYW1lKG9iamVjdFN0b3JlTmFtZSkKICAgICAgICAgLCBtX2luZGV4TmFtZShpbmRleE5hbWUp
CiAgICAgICAgICwgbV9pZGJLZXlSYW5nZShpZGJLZXlSYW5nZSkKICAgICAgICAgLCBtX3NraXBD
b3VudChza2lwQ291bnQpCiAgICAgICAgICwgbV9wYWdlU2l6ZShwYWdlU2l6ZSkgeyB9Ci0gICAg
UmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250
ZW5kUHJvdmlkZXI7Ci0gICAgaW50IG1fcmVxdWVzdElkOworICAgIFJlZlB0cjxSZXF1ZXN0RGF0
YUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKICAgICBJbmplY3RlZFNjcmlwdCBtX2luamVj
dGVkU2NyaXB0OwogICAgIFN0cmluZyBtX29iamVjdFN0b3JlTmFtZTsKICAgICBTdHJpbmcgbV9p
bmRleE5hbWU7CkBAIC02NDksMTUgKzYxMyw4IEBAIEluc3BlY3RvckluZGV4ZWREQkFnZW50Ojp+
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQoKQogewogfQogCi12b2lkIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCi17Ci0gICAg
bV9mcm9udGVuZFByb3ZpZGVyID0gRnJvbnRlbmRQcm92aWRlcjo6Y3JlYXRlKGZyb250ZW5kKTsK
LX0KLQogdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCiB7Ci0g
ICAgbV9mcm9udGVuZFByb3ZpZGVyLT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9mcm9udGVuZFBy
b3ZpZGVyLmNsZWFyKCk7CiAgICAgZGlzYWJsZSgwKTsKIH0KIApAQCAtNzIxLDcgKzY3OCw3IEBA
IHN0YXRpYyBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogYXNzZXJ0SURCRmFjdG9yeShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIERvCiAgICAgcmV0dXJuIGlkYkZhY3Rvcnk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWUo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQpCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1l
c0ZvckZyYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWVDYWxsYmFjaz4gcmVxdWVz
dENhbGxiYWNrKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVy
cm9yU3RyaW5nLCBmcmFtZUlkLCBtX3BhZ2VBZ2VudCk7CiAgICAgaWYgKCFkb2N1bWVudCkKQEAg
LTczMCwxMiArNjg3LDEyIEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3RE
YXRhYmFzZU5hbWVzRm9yRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyCiAgICAgaWYgKCFpZGJG
YWN0b3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8R2V0RGF0YWJhc2VOYW1lc0Nh
bGxiYWNrPiBjYWxsYmFjayA9IEdldERhdGFiYXNlTmFtZXNDYWxsYmFjazo6Y3JlYXRlKG1fZnJv
bnRlbmRQcm92aWRlci5nZXQoKSwgcmVxdWVzdElkLCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KS0+dG9TdHJpbmcoKSk7CisgICAgUmVmUHRyPEdldERhdGFiYXNlTmFtZXNDYWxsYmFjaz4gY2Fs
bGJhY2sgPSBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2ss
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKICAgICBHcm91cFNldHRp
bmdzKiBncm91cFNldHRpbmdzID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5ncm91cFNldHRp
bmdzKCk7CiAgICAgaWRiRmFjdG9yeS0+Z2V0RGF0YWJhc2VOYW1lcyhjYWxsYmFjay5nZXQoKSwg
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRvY3VtZW50LCBncm91cFNldHRpbmdzLT5pbmRl
eGVkREJEYXRhYmFzZVBhdGgoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6
OnJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCit2b2lk
IEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VO
YW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2sp
CiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcs
IGZyYW1lSWQsIG1fcGFnZUFnZW50KTsKICAgICBpZiAoIWRvY3VtZW50KQpAQCAtNzQ0LDExICs3
MDEsMTEgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IHJlcXUKICAgICBpZiAoIWlkYkZhY3RvcnkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxEYXRhYmFzZUxvYWRlckNhbGxiYWNrPiBkYXRh
YmFzZUxvYWRlckNhbGxiYWNrID0gRGF0YWJhc2VMb2FkZXJDYWxsYmFjazo6Y3JlYXRlKG1fZnJv
bnRlbmRQcm92aWRlci5nZXQoKSwgcmVxdWVzdElkKTsKKyAgICBSZWZQdHI8RGF0YWJhc2VMb2Fk
ZXJDYWxsYmFjaz4gZGF0YWJhc2VMb2FkZXJDYWxsYmFjayA9IERhdGFiYXNlTG9hZGVyQ2FsbGJh
Y2s6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2spOwogICAgIGRhdGFiYXNlTG9hZGVyQ2FsbGJhY2st
PnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkb2N1bWVudCwg
ZGF0YWJhc2VOYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVz
dERhdGEoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9i
amVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGlu
dCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlKQordm9p
ZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUs
IGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIGtleVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+IHJlcXVlc3RDYWxs
YmFjaykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBhc3NlcnRGcmFtZShlcnJvclN0cmluZywgZnJh
bWVJZCwgbV9wYWdlQWdlbnQpOwogICAgIGlmICghZnJhbWUpCkBAIC03NjgsNyArNzI1LDcgQEAg
dm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgcmVxdWVzdEkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJl
ZlB0cjxEYXRhTG9hZGVyQ2FsbGJhY2s+IGRhdGFMb2FkZXJDYWxsYmFjayA9IERhdGFMb2FkZXJD
YWxsYmFjazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElkLCBpbmplY3RlZFNj
cmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQs
IHBhZ2VTaXplKTsKKyAgICBSZWZQdHI8RGF0YUxvYWRlckNhbGxiYWNrPiBkYXRhTG9hZGVyQ2Fs
bGJhY2sgPSBEYXRhTG9hZGVyQ2FsbGJhY2s6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2ssIGluamVj
dGVkU2NyaXB0LCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBD
b3VudCwgcGFnZVNpemUpOwogICAgIGRhdGFMb2FkZXJDYWxsYmFjay0+c3RhcnQoaWRiRmFjdG9y
eSwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRvY3VtZW50LCBkYXRhYmFzZU5hbWUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5oCmluZGV4IDg2OWM3YWQ5NjM4Y2U2OWQ3ZGMxNDA4NDU0NGFkMDU1YzJkZWI0MmEuLjlh
ZTg1MjU5MGU1MGYxZDdjYzBmYjJkOTBkYTY4Njg1NDUyNmNlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC00NiwzMCAr
NDYsMjcgQEAgdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JJbmRleGVk
REJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29t
bWFuZEhhbmRsZXIgewogcHVibGljOgotICAgIGNsYXNzIEZyb250ZW5kUHJvdmlkZXI7Ci0KICAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4gY3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0
ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLCBwYWdlQWdlbnQpKTsKICAgICB9CiAgICAgfkluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9y
RnJvbnRlbmQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwogICAgIHZpcnR1
YWwgdm9pZCByZXN0b3JlKCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgog
ICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VO
YW1lc0ZvckZyYW1lKEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBm
cmFtZUlkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nKiwg
aW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5nKiwgaW50
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhO
YW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBrZXlSYW5nZSk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZU5hbWVz
Rm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFBhc3NSZWZQdHI8
UmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrPik7CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJh
Y2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcm
IG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQs
IGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGtleVJhbmdlLCBQ
YXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKKwogcHJpdmF0ZToKICAgICBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKIAogICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgSW5zcGVjdG9y
UGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKLSAgICBSZWZQdHI8RnJvbnRlbmRQcm92aWRlcj4gbV9m
cm9udGVuZFByb3ZpZGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKaW5k
ZXggNjBlMmVlYTM5ZWE3OWI2Zjc2MzgxMzczMWRiNDlmZmQwMTgwMzk4Ni4uNmY5ZmE0MjAwZjVi
NGRmOTJmOTIyMTFkMmJlMDQ1MDg2MDRhNjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCkBAIC0zNCw3ICszNCw3IEBA
CiAgKi8KIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0
aGlzLl9pbmRleGVkREJSZXF1ZXN0TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERC
UmVxdWVzdE1hbmFnZXIoKTsKKyAgICBJbmRleGVkREJBZ2VudC5lbmFibGUoKTsKIAogICAgIFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLkZyYW1lQWRkZWQsIHRoaXMuX2ZyYW1lTmF2
aWdhdGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5GcmFt
ZU5hdmlnYXRlZCwgdGhpcy5fZnJhbWVOYXZpZ2F0ZWQsIHRoaXMpOwpAQCAtMjA5LDE1ICsyMDks
MTIgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIHZhciByZXNvdXJjZVRyZWVGcmFtZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZUZyYW1lfSAqLyBldmVudC5kYXRhOwogICAgICAgICB0aGlzLl9vcmlnaW5SZW1v
dmVkRnJvbUZyYW1lKHJlc291cmNlVHJlZUZyYW1lLmlkKTsKLSAgICAgICAgdGhpcy5faW5kZXhl
ZERCUmVxdWVzdE1hbmFnZXIuX2ZyYW1lRGV0YWNoZWQocmVzb3VyY2VUcmVlRnJhbWUuaWQpOwog
ICAgIH0sCiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGZvciAodmFy
IGZyYW1lSWQgaW4gdGhpcy5fZnJhbWVzKQogICAgICAgICAgICAgdGhpcy5fb3JpZ2luUmVtb3Zl
ZEZyb21GcmFtZShmcmFtZUlkKTsKLQotICAgICAgICB0aGlzLl9pbmRleGVkREJSZXF1ZXN0TWFu
YWdlci5fcmVzZXQoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zMjcsOCArMzI0LDYgQEAgV2Vi
SW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfZGF0
YWJhc2VSZW1vdmVkOiBmdW5jdGlvbihzZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VOYW1lKQogICAg
IHsKLSAgICAgICAgdGhpcy5faW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuX2RhdGFiYXNlUmVtb3Zl
ZCh0aGlzLl9mcmFtZUlkc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dLCBkYXRhYmFz
ZU5hbWUpOwotCiAgICAgICAgIHZhciBkYXRhYmFzZUlkID0gbmV3IFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5EYXRhYmFzZUlkKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUpOwogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwuRXZlbnRUeXBlcy5EYXRhYmFzZVJlbW92ZWQsIGRhdGFiYXNlSWQpOwogICAgIH0sCkBA
IC0zMzksMTAgKzMzNCwxNiBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBl
ID0gewogICAgIF9sb2FkRGF0YWJhc2VOYW1lc0ZvckZyYW1lOiBmdW5jdGlvbihmcmFtZUlkKQog
ICAgIHsKICAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBl
cnJvcgogICAgICAgICAgKiBAcGFyYW0ge0luZGV4ZWREQkFnZW50LlNlY3VyaXR5T3JpZ2luV2l0
aERhdGFiYXNlTmFtZXN9IHNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXMKICAgICAgICAg
ICovCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNl
TmFtZXMpCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBzZWN1cml0eU9yaWdpbldp
dGhEYXRhYmFzZU5hbWVzKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJJbmRleGVkREJBZ2VudCBlcnJvcjogIiArIGVy
cm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIHZhciBkYXRhYmFzZU5hbWVzID0gc2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lcy5k
YXRhYmFzZU5hbWVzOwogICAgICAgICAgICAgdmFyIG9sZFNlY3VyaXR5T3JpZ2luID0gdGhpcy5f
ZnJhbWVzW2ZyYW1lSWRdID8gdGhpcy5fZnJhbWVzW2ZyYW1lSWRdLnNlY3VyaXR5T3JpZ2luIDog
bnVsbDsKICAgICAgICAgICAgIGlmICghb2xkU2VjdXJpdHlPcmlnaW4gfHwgb2xkU2VjdXJpdHlP
cmlnaW4gIT09IHNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXMuc2VjdXJpdHlPcmlnaW4p
IHsKQEAgLTM1Miw3ICszNTMsNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdXBkYXRlT3JpZ2luRGF0YWJhc2VOYW1lcyhzZWN1
cml0eU9yaWdpbldpdGhEYXRhYmFzZU5hbWVzLnNlY3VyaXR5T3JpZ2luLCBzZWN1cml0eU9yaWdp
bldpdGhEYXRhYmFzZU5hbWVzLmRhdGFiYXNlTmFtZXMpOwogICAgICAgICB9CiAKLSAgICAgICAg
dGhpcy5faW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFt
ZShmcmFtZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQu
cmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZShmcmFtZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMp
KTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zNzgsMTAgKzM3OSwxNiBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKICAgICAg
ICAgICogQHBhcmFtIHtJbmRleGVkREJBZ2VudC5EYXRhYmFzZVdpdGhPYmplY3RTdG9yZXN9IGRh
dGFiYXNlV2l0aE9iamVjdFN0b3JlcwogICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2Fs
bGJhY2soZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzKQorICAgICAgICBmdW5jdGlvbiBjYWxsYmFj
ayhlcnJvciwgZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzKQogICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJJbmRleGVkREJB
Z2VudCBlcnJvcjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIGlmICghdGhpcy5fZnJhbWVzW2ZyYW1lSWRdKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtNDAzLDcgKzQxMCw3IEBAIFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRXZlbnRUeXBlcy5EYXRhYmFz
ZUxvYWRlZCwgZGF0YWJhc2VNb2RlbCk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9pbmRl
eGVkREJSZXF1ZXN0TWFuYWdlci5yZXF1ZXN0RGF0YWJhc2UoZnJhbWVJZCwgZGF0YWJhc2VJZC5u
YW1lLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVz
dERhdGFiYXNlKGZyYW1lSWQsIGRhdGFiYXNlSWQubmFtZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNDE2LDI3ICs0MjMsNyBAQCBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGxvYWRPYmplY3RTdG9yZURh
dGE6IGZ1bmN0aW9uKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlTmFtZSwgaWRiS2V5UmFuZ2UsIHNr
aXBDb3VudCwgcGFnZVNpemUsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdmFyIGZyYW1lSWQg
PSB0aGlzLl9hc3NlcnRGcmFtZUlkKGRhdGFiYXNlSWQpOwotICAgICAgICBpZiAoIWZyYW1lSWQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBwYXJhbSB7
QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT59IGRhdGFFbnRyaWVzCi0gICAgICAgICAq
IEBwYXJhbSB7Ym9vbGVhbn0gaGFzTW9yZQotICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24g
aW5uZXJDYWxsYmFjayhkYXRhRW50cmllcywgaGFzTW9yZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgdmFyIGVudHJpZXMgPSBbXTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0
YUVudHJpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIga2V5ID0gV2ViSW5z
cGVjdG9yLkluZGV4ZWREQk1vZGVsLmlkYktleUZyb21LZXkoZGF0YUVudHJpZXNbaV0ua2V5KTsK
LSAgICAgICAgICAgICAgICB2YXIgcHJpbWFyeUtleSA9IFdlYkluc3BlY3Rvci5JbmRleGVkREJN
b2RlbC5pZGJLZXlGcm9tS2V5KGRhdGFFbnRyaWVzW2ldLnByaW1hcnlLZXkpOwotICAgICAgICAg
ICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQo
ZGF0YUVudHJpZXNbaV0udmFsdWUpOwotICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChuZXcg
V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkVudHJ5KGtleSwgcHJpbWFyeUtleSwgdmFsdWUp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhbGxiYWNrKGVudHJpZXMsIGhhc01vcmUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5faW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucmVx
dWVzdE9iamVjdFN0b3JlRGF0YShmcmFtZUlkLCBkYXRhYmFzZUlkLm5hbWUsIG9iamVjdFN0b3Jl
TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGlubmVyQ2FsbGJhY2spOwor
ICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YShkYXRhYmFzZUlkLCBkYXRhYmFzZUlkLm5hbWUsIG9i
amVjdFN0b3JlTmFtZSwgIiIsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBjYWxs
YmFjayk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNDUwLDE2ICs0MzcsNDAgQEAgV2ViSW5zcGVj
dG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBsb2FkSW5kZXhE
YXRhOiBmdW5jdGlvbihkYXRhYmFzZUlkLCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgaWRi
S2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGNhbGxiYWNrKQogICAgIHsKKyAgICAgICAg
dGhpcy5fcmVxdWVzdERhdGEoZGF0YWJhc2VJZCwgZGF0YWJhc2VJZC5uYW1lLCBvYmplY3RTdG9y
ZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFnZVNpemUsIGNhbGxi
YWNrKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwuRGF0YWJhc2VJZH0gZGF0YWJhc2VJZAorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBkYXRhYmFzZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2JqZWN0U3RvcmVOYW1lCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZQorICAgICAqIEBwYXJhbSB7d2Via2l0SURC
S2V5UmFuZ2V9IGlkYktleVJhbmdlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNraXBDb3VudAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
QXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBjYWxsYmFjaworICAg
ICAqLworICAgIF9yZXF1ZXN0RGF0YTogZnVuY3Rpb24oZGF0YWJhc2VJZCwgZGF0YWJhc2VOYW1l
LCBvYmplY3RTdG9yZU5hbWUsIGluZGV4TmFtZSwgaWRiS2V5UmFuZ2UsIHNraXBDb3VudCwgcGFn
ZVNpemUsIGNhbGxiYWNrKQorICAgIHsKICAgICAgICAgdmFyIGZyYW1lSWQgPSB0aGlzLl9hc3Nl
cnRGcmFtZUlkKGRhdGFiYXNlSWQpOwogICAgICAgICBpZiAoIWZyYW1lSWQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVy
cm9yfSBlcnJvcgogICAgICAgICAgKiBAcGFyYW0ge0FycmF5LjxJbmRleGVkREJBZ2VudC5EYXRh
RW50cnk+fSBkYXRhRW50cmllcwogICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhhc01vcmUK
ICAgICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZGF0YUVudHJpZXMs
IGhhc01vcmUpCisgICAgICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2soZXJyb3IsIGRhdGFFbnRy
aWVzLCBoYXNNb3JlKQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlLmVycm9yKCJJbmRleGVkREJBZ2VudCBlcnJvcjogIiArIGVycm9y
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmICghdGhpcy5fZnJhbWVzW2ZyYW1lSWRdKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKwogICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBbXTsKICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZGF0YUVudHJpZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
ICAgICB2YXIga2V5ID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmlkYktleUZyb21LZXko
ZGF0YUVudHJpZXNbaV0ua2V5KTsKQEAgLTQ3MCw3ICs0ODEsOCBAQCBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FsbGJhY2soZW50cmllcywg
aGFzTW9yZSk7CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9pbmRleGVkREJSZXF1ZXN0TWFu
YWdlci5yZXF1ZXN0SW5kZXhEYXRhKGZyYW1lSWQsIGRhdGFiYXNlSWQubmFtZSwgb2JqZWN0U3Rv
cmVOYW1lLCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplLCBpbm5l
ckNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICB2YXIga2V5UmFuZ2UgPSBXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwua2V5UmFuZ2VGcm9tSURCS2V5UmFuZ2UoaWRiS2V5UmFuZ2UpOwor
ICAgICAgICBJbmRleGVkREJBZ2VudC5yZXF1ZXN0RGF0YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUs
IG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBza2lwQ291bnQsIHBhZ2VTaXplLCBrZXlSYW5n
ZSA/IGtleVJhbmdlIDogdW5kZWZpbmVkLCBpbm5lckNhbGxiYWNrLmJpbmQodGhpcykpOwogICAg
IH0KIH0KIApAQCAtNTc4LDMxNyArNTkwLDMgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
LkluZGV4LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbC5rZXlQYXRoU3RyaW5nRnJvbUlEQktleVBhdGgodGhpcy5rZXlQYXRoKTsKICAgICB9
CiB9Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKi8KLVdlYkluc3BlY3Rvci5JbmRleGVkREJS
ZXF1ZXN0TWFuYWdlciA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLl9sYXN0UmVxdWVzdElkID0g
MDsKLSAgICB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lQ2FsbGJhY2tzID0ge307
Ci0gICAgdGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzID0ge307Ci0gICAgdGhpcy5fcmVx
dWVzdERhdGFDYWxsYmFja3MgPSB7fTsKLQotICAgIEluZGV4ZWREQkFnZW50LmVuYWJsZSgpOwot
ICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbmRleGVkREJEaXNwYXRjaGVyKG5ldyBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlcih0aGlzKSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5J
bmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtzdHJpbmd9IGZyYW1lSWQKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEluZGV4ZWREQkFn
ZW50LlNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXMpfSBjYWxsYmFjawotICAgICAqLwot
ICAgIHJlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lSWQsIGNhbGxi
YWNrKQotICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3RJZCgpOwot
ICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1h
bmFnZXIuRGF0YWJhc2VzRm9yRnJhbWVSZXF1ZXN0KGZyYW1lSWQsIGNhbGxiYWNrKTsKLSAgICAg
ICAgdGhpcy5fcmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrc1tyZXF1ZXN0SWRd
ID0gcmVxdWVzdDsKLQotICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVycm9yKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xl
LmVycm9yKCJJbmRleGVkREJBZ2VudCBlcnJvcjogIiArIGVycm9yKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBJbmRleGVkREJB
Z2VudC5yZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lKHJlcXVlc3RJZCwgZnJhbWVJZCwgaW5u
ZXJDYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBy
ZXF1ZXN0SWQKLSAgICAgKiBAcGFyYW0ge0luZGV4ZWREQkFnZW50LlNlY3VyaXR5T3JpZ2luV2l0
aERhdGFiYXNlTmFtZXN9IHNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXMKLSAgICAgKi8K
LSAgICBfZGF0YWJhc2VOYW1lc0xvYWRlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBzZWN1cml0eU9y
aWdpbldpdGhEYXRhYmFzZU5hbWVzKQotICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3QgPSB0aGlz
Ll9yZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lQ2FsbGJhY2tzW3JlcXVlc3RJZF07Ci0gICAg
ICAgIGlmICghcmVxdWVzdCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXF1ZXN0
LmNhbGxiYWNrKHNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXMpOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAotICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBkYXRhYmFzZU5hbWUKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEluZGV4ZWREQkFnZW50
LkRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcyl9IGNhbGxiYWNrCi0gICAgICovCi0gICAgcmVxdWVz
dERhdGFiYXNlOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIGNhbGxiYWNrKQotICAg
IHsKLSAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3RJZCgpOwotICAgICAgICB2
YXIgcmVxdWVzdCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0
YWJhc2VSZXF1ZXN0KGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgY2FsbGJhY2spOwotICAgICAgICB0
aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3NbcmVxdWVzdElkXSA9IHJlcXVlc3Q7Ci0KLSAg
ICAgICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhlcnJvcikKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiSW5kZXhlZERC
QWdlbnQgZXJyb3I6ICIgKyBlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgSW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFi
YXNlKHJlcXVlc3RJZCwgZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBpbm5lckNhbGxiYWNrKTsKLSAg
ICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IHJlcXVlc3RJZAotICAgICAq
IEBwYXJhbSB7SW5kZXhlZERCQWdlbnQuRGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzfSBkYXRhYmFz
ZVdpdGhPYmplY3RTdG9yZXMKLSAgICAgKi8KLSAgICBfZGF0YWJhc2VMb2FkZWQ6IGZ1bmN0aW9u
KHJlcXVlc3RJZCwgZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzKQotICAgIHsKLSAgICAgICAgdmFy
IHJlcXVlc3QgPSB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxsYmFja3NbcmVxdWVzdElkXTsKLSAg
ICAgICAgaWYgKCFyZXF1ZXN0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlcXVl
c3QuY2FsbGJhY2soZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzKTsKLSAgICB9LAotCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30g
ZGF0YWJhc2VOYW1lCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQotICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUKLSAgICAgKiBAcGFyYW0ge3dlYmtpdElEQktl
eVJhbmdlfSBpZGJLZXlSYW5nZQotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwQ291bnQKLSAg
ICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNpemUKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFy
cmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+LCBib29sZWFuKX0gY2FsbGJhY2sKLSAgICAg
Ki8KLSAgICBfcmVxdWVzdERhdGE6IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2Jq
ZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXpl
LCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciByZXF1ZXN0SWQgPSB0aGlzLl9yZXF1ZXN0
SWQoKTsKLSAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJl
cXVlc3RNYW5hZ2VyLkRhdGFSZXF1ZXN0KGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3Rv
cmVOYW1lLCBpbmRleE5hbWUsIGNhbGxiYWNrKTsKLSAgICAgICAgdGhpcy5fcmVxdWVzdERhdGFD
YWxsYmFja3NbcmVxdWVzdElkXSA9IHJlcXVlc3Q7Ci0KLSAgICAgICAgZnVuY3Rpb24gaW5uZXJD
YWxsYmFjayhlcnJvcikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAg
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiSW5kZXhlZERCQWdlbnQgZXJyb3I6ICIgKyBlcnJv
cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIGtleVJhbmdlID0gV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLmtleVJh
bmdlRnJvbUlEQktleVJhbmdlKGlkYktleVJhbmdlKTsKLSAgICAgICAgSW5kZXhlZERCQWdlbnQu
cmVxdWVzdERhdGEocmVxdWVzdElkLCBmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3Jl
TmFtZSwgaW5kZXhOYW1lLCBza2lwQ291bnQsIHBhZ2VTaXplLCBrZXlSYW5nZSA/IGtleVJhbmdl
IDogdW5kZWZpbmVkLCBpbm5lckNhbGxiYWNrKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VO
YW1lCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQotICAgICAqIEBwYXJh
bSB7d2Via2l0SURCS2V5UmFuZ2V9IGlkYktleVJhbmdlCi0gICAgICogQHBhcmFtIHtudW1iZXJ9
IHNraXBDb3VudAotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZQotICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBj
YWxsYmFjawotICAgICAqLwotICAgIHJlcXVlc3RPYmplY3RTdG9yZURhdGE6IGZ1bmN0aW9uKGZy
YW1lSWQsIGRhdGFiYXNlTmFtZSwgb2JqZWN0U3RvcmVOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENv
dW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0
YShmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgIiIsIGlkYktleVJhbmdl
LCBza2lwQ291bnQsIHBhZ2VTaXplLCBjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIC8qKgotICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxJbmRl
eGVkREJBZ2VudC5EYXRhRW50cnk+fSBkYXRhRW50cmllcwotICAgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gaGFzTW9yZQotICAgICAqLwotICAgIF9vYmplY3RTdG9yZURhdGFMb2FkZWQ6IGZ1bmN0aW9u
KHJlcXVlc3RJZCwgZGF0YUVudHJpZXMsIGhhc01vcmUpCi0gICAgewotICAgICAgICB2YXIgcmVx
dWVzdCA9IHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVlc3RJZF07Ci0gICAgICAgIGlm
ICghcmVxdWVzdC5jYWxsYmFjaykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXF1
ZXN0LmNhbGxiYWNrKGRhdGFFbnRyaWVzLCBoYXNNb3JlKTsKLSAgICB9LAotCi0gICAgLyoqCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0
YWJhc2VOYW1lCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdFN0b3JlTmFtZQotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUKLSAgICAgKiBAcGFyYW0ge3dlYmtpdElEQktleVJh
bmdlfSBpZGJLZXlSYW5nZQotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBza2lwQ291bnQKLSAgICAg
KiBAcGFyYW0ge251bWJlcn0gcGFnZVNpemUKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5
LjxJbmRleGVkREJBZ2VudC5EYXRhRW50cnk+LCBib29sZWFuKX0gY2FsbGJhY2sKLSAgICAgKi8K
LSAgICByZXF1ZXN0SW5kZXhEYXRhOiBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9i
amVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6
ZSwgY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YShmcmFtZUlkLCBk
YXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tp
cENvdW50LCBwYWdlU2l6ZSwgY2FsbGJhY2spOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge251bWJlcn0gcmVxdWVzdElkCi0gICAgICogQHBhcmFtIHtBcnJheS48SW5kZXhlZERC
QWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJpZXMKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhh
c01vcmUKLSAgICAgKi8KLSAgICBfaW5kZXhEYXRhTG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQs
IGRhdGFFbnRyaWVzLCBoYXNNb3JlKQotICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3QgPSB0aGlz
Ll9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOwotICAgICAgICBpZiAoIXJlcXVlc3Qu
Y2FsbGJhY2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVxdWVzdC5jYWxsYmFj
ayhkYXRhRW50cmllcywgaGFzTW9yZSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEByZXR1
cm4ge251bWJlcn0KLSAgICAgKi8KLSAgICBfcmVxdWVzdElkOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gKyt0aGlzLl9sYXN0UmVxdWVzdElkOwotICAgIH0sCi0KLSAgICAvKioK
LSAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAotICAgICAqLwotICAgIF9mcmFtZURldGFj
aGVkOiBmdW5jdGlvbihmcmFtZUlkKQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgcmVxdWVzdElk
IGluIHRoaXMuX3JlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWVDYWxsYmFja3MpIHsKLSAgICAg
ICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lQ2FsbGJhY2tzW3Jl
cXVlc3RJZF0uZnJhbWVJZCA9PT0gZnJhbWVJZCkKLSAgICAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fcmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrc1tyZXF1ZXN0SWRdOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZm9yICh2YXIgcmVxdWVzdElkIGluIHRoaXMuX3JlcXVlc3REYXRh
YmFzZUNhbGxiYWNrcykgewotICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3REYXRhYmFzZUNh
bGxiYWNrc1tyZXF1ZXN0SWRdLmZyYW1lSWQgPT09IGZyYW1lSWQpCi0gICAgICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX3JlcXVlc3REYXRhYmFzZUNhbGxiYWNrc1tyZXF1ZXN0SWRdOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZm9yICh2YXIgcmVxdWVzdElkIGluIHRoaXMuX3JlcXVlc3REYXRhQ2Fs
bGJhY2tzKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdERhdGFDYWxsYmFja3NbcmVx
dWVzdElkXS5mcmFtZUlkID09PSBmcmFtZUlkKQotICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9yZXF1ZXN0RGF0YUNhbGxiYWNrc1tyZXF1ZXN0SWRdOwotICAgICAgICB9Ci0gICAgfSwKLQot
ICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCi0gICAgICovCi0gICAgX2Rh
dGFiYXNlUmVtb3ZlZDogZnVuY3Rpb24oZnJhbWVJZCwgZGF0YWJhc2VOYW1lKQotICAgIHsKLSAg
ICAgICAgZm9yICh2YXIgcmVxdWVzdElkIGluIHRoaXMuX3JlcXVlc3REYXRhYmFzZUNhbGxiYWNr
cykgewotICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3REYXRhYmFzZUNhbGxiYWNrc1tyZXF1
ZXN0SWRdLmZyYW1lSWQgPT09IGZyYW1lSWQgJiYgdGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJh
Y2tzW3JlcXVlc3RJZF0uZGF0YWJhc2VOYW1lID09PSBkYXRhYmFzZU5hbWUpCi0gICAgICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX3JlcXVlc3REYXRhYmFzZUNhbGxiYWNrc1tyZXF1ZXN0SWRdOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh2YXIgcmVxdWVzdElkIGluIHRoaXMuX3JlcXVlc3RE
YXRhQ2FsbGJhY2tzKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdERhdGFDYWxsYmFj
a3NbcmVxdWVzdElkXS5mcmFtZUlkID09PSBmcmFtZUlkICYmIHRoaXMuX3JlcXVlc3REYXRhQ2Fs
bGJhY2tzW3JlcXVlc3RJZF0uZGF0YWJhc2VOYW1lID09PSBkYXRhYmFzZU5hbWUpCi0gICAgICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX3JlcXVlc3REYXRhQ2FsbGJhY2tzW3JlcXVlc3RJZF07Ci0g
ICAgICAgIH0KLSAgICB9LAotCi0gICAgX3Jlc2V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lQ2FsbGJhY2tzID0ge307Ci0gICAg
ICAgIHRoaXMuX3JlcXVlc3REYXRhYmFzZUNhbGxiYWNrcyA9IHt9OwotICAgICAgICB0aGlzLl9y
ZXF1ZXN0RGF0YUNhbGxiYWNrcyA9IHt9OwotICAgIH0KLX0KLQotLyoqCi0gKiBAY29uc3RydWN0
b3IKLSAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKEluZGV4
ZWREQkFnZW50LlNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXMpfSBjYWxsYmFjawotKi8K
LVdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5EYXRhYmFzZXNGb3JGcmFtZVJl
cXVlc3QgPSBmdW5jdGlvbihmcmFtZUlkLCBjYWxsYmFjaykKLXsKLSAgICB0aGlzLmZyYW1lSWQg
PSBmcmFtZUlkOwotICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjazsKLX0KLQotLyoqCi0gKiBA
Y29uc3RydWN0b3IKLSAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCi0gKiBAcGFyYW0ge3N0cmlu
Z30gZGF0YWJhc2VOYW1lCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKEluZGV4ZWREQkFnZW50LkRhdGFi
YXNlV2l0aE9iamVjdFN0b3Jlcyl9IGNhbGxiYWNrCi0gKi8KLVdlYkluc3BlY3Rvci5JbmRleGVk
REJSZXF1ZXN0TWFuYWdlci5EYXRhYmFzZVJlcXVlc3QgPSBmdW5jdGlvbihmcmFtZUlkLCBkYXRh
YmFzZU5hbWUsIGNhbGxiYWNrKQotewotICAgIHRoaXMuZnJhbWVJZCA9IGZyYW1lSWQ7Ci0gICAg
dGhpcy5kYXRhYmFzZU5hbWUgPSBkYXRhYmFzZU5hbWU7Ci0gICAgdGhpcy5jYWxsYmFjayA9IGNh
bGxiYWNrOwotfQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtzdHJpbmd9IGZy
YW1lSWQKLSAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhYmFzZU5hbWUKLSAqIEBwYXJhbSB7c3RyaW5n
fSBvYmplY3RTdG9yZU5hbWUKLSAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUKLSAqIEBwYXJh
bSB7ZnVuY3Rpb24oQXJyYXkuPEluZGV4ZWREQkFnZW50LkRhdGFFbnRyeT4sIGJvb2xlYW4pfSBj
YWxsYmFjawotICovCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0YVJl
cXVlc3QgPSBmdW5jdGlvbihmcmFtZUlkLCBkYXRhYmFzZU5hbWUsIG9iamVjdFN0b3JlTmFtZSwg
aW5kZXhOYW1lLCBjYWxsYmFjaykKLXsKLSAgICB0aGlzLmZyYW1lSWQgPSBmcmFtZUlkOwotICAg
IHRoaXMuZGF0YWJhc2VOYW1lID0gZGF0YWJhc2VOYW1lOwotICAgIHRoaXMub2JqZWN0U3RvcmVO
YW1lID0gb2JqZWN0U3RvcmVOYW1lOwotICAgIHRoaXMuaW5kZXhOYW1lID0gaW5kZXhOYW1lOwot
ICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjazsKLX0KLQotLyoqCi0gKiBAY29uc3RydWN0b3IK
LSAqIEBpbXBsZW1lbnRzIHtJbmRleGVkREJBZ2VudC5EaXNwYXRjaGVyfQotICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXJ9IGluZGV4ZWREQlJlcXVlc3RNYW5h
Z2VyCi0gKi8KLVdlYkluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyID0gZnVuY3Rpb24oaW5k
ZXhlZERCUmVxdWVzdE1hbmFnZXIpCi17Ci0gICAgdGhpcy5fYWdlbnRXcmFwcGVyID0gaW5kZXhl
ZERCUmVxdWVzdE1hbmFnZXI7Ci19Ci0KLVdlYkluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVy
LnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElk
Ci0gICAgICogQHBhcmFtIHtJbmRleGVkREJBZ2VudC5TZWN1cml0eU9yaWdpbldpdGhEYXRhYmFz
ZU5hbWVzfSBzZWN1cml0eU9yaWdpbldpdGhEYXRhYmFzZU5hbWVzCi0gICAgICovCi0gICAgZGF0
YWJhc2VOYW1lc0xvYWRlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBzZWN1cml0eU9yaWdpbldpdGhE
YXRhYmFzZU5hbWVzKQotICAgIHsKLSAgICAgICAgdGhpcy5fYWdlbnRXcmFwcGVyLl9kYXRhYmFz
ZU5hbWVzTG9hZGVkKHJlcXVlc3RJZCwgc2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lcyk7
Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZXF1ZXN0SWQKLSAg
ICAgKiBAcGFyYW0ge0luZGV4ZWREQkFnZW50LkRhdGFiYXNlV2l0aE9iamVjdFN0b3Jlc30gZGF0
YWJhc2VXaXRoT2JqZWN0U3RvcmVzCi0gICAgICovCi0gICAgZGF0YWJhc2VMb2FkZWQ6IGZ1bmN0
aW9uKHJlcXVlc3RJZCwgZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzKQotICAgIHsKLSAgICAgICAg
dGhpcy5fYWdlbnRXcmFwcGVyLl9kYXRhYmFzZUxvYWRlZChyZXF1ZXN0SWQsIGRhdGFiYXNlV2l0
aE9iamVjdFN0b3Jlcyk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVy
fSByZXF1ZXN0SWQKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxJbmRleGVkREJBZ2VudC5EYXRhRW50
cnk+fSBkYXRhRW50cmllcwotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzTW9yZQotICAgICAq
LwotICAgIG9iamVjdFN0b3JlRGF0YUxvYWRlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBkYXRhRW50
cmllcywgaGFzTW9yZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5fb2JqZWN0
U3RvcmVEYXRhTG9hZGVkKHJlcXVlc3RJZCwgZGF0YUVudHJpZXMsIGhhc01vcmUpOwotICAgIH0s
Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVxdWVzdElkCi0gICAgICogQHBh
cmFtIHtBcnJheS48SW5kZXhlZERCQWdlbnQuRGF0YUVudHJ5Pn0gZGF0YUVudHJpZXMKLSAgICAg
KiBAcGFyYW0ge2Jvb2xlYW59IGhhc01vcmUKLSAgICAgKi8KLSAgICBpbmRleERhdGFMb2FkZWQ6
IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZGF0YUVudHJpZXMsIGhhc01vcmUpCi0gICAgewotICAgICAg
ICB0aGlzLl9hZ2VudFdyYXBwZXIuX2luZGV4RGF0YUxvYWRlZChyZXF1ZXN0SWQsIGRhdGFFbnRy
aWVzLCBoYXNNb3JlKTsKLSAgICB9Ci19Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjOWI0Njk0Zjc5MWM4NDQyNTdmMjQ3
OTI2NjhiNDFiYWI5NzgyOTI3Li40MDBiMDk0NTIxNzBjNjNjOTFjNWZmM2Y0ZGQ1OTJjY2QzM2Rl
YTJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDYgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWlncmF0ZSBJ
bmRleGVkREIgdG8gYXN5bmMgcHJvdG9jb2wgY29tbWFuZHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk3OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhl
ZGRiL2RhdGFiYXNlLWRhdGEuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9p
bmRleGVkZGIvZGF0YWJhc2UtbmFtZXMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLmh0bWw6CisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL3Jlc291cmNlcy1wYW5lbC5odG1sOgorCiAyMDEyLTA5
LTA2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0
XSBVbnJldmlld2VkIGdhcmRlbmluZywgc2tpcCBvbmUgbW9yZSBmYWlsaW5nIHRlc3QsCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJh
c2UtZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRi
L2RhdGFiYXNlLWRhdGEuaHRtbAppbmRleCBlM2I5NjU1MTk2NzAwOGNmMmM4MWQ1MTlmMTBhYzlh
ZjllYjM5YzMwLi5mOGVkNGE3OTNiNGFmZmY1ZTUwY2ZlNDQ0MWY0Y2Q0NjEwMjZjY2ZkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJh
c2UtZGF0YS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4
ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwKQEAgLTczLDcgKzczLDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5z
cGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLCAiZGF0YWJhc2VOYW1lc0xvYWRl
ZCIsIGZpbGxEYXRhYmFzZSwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLCAiX3VwZGF0ZU9yaWdpbkRhdGFi
YXNlTmFtZXMiLCBmaWxsRGF0YWJhc2UsIGZhbHNlKTsKIAogICAgIGZ1bmN0aW9uIGZpbGxEYXRh
YmFzZSgpCiAgICAgewpAQCAtOTcsMTggKzk3LDE5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAg
ZnVuY3Rpb24gcmVmcmVzaERhdGFiYXNlTmFtZXMoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlw
ZSwgImRhdGFiYXNlTmFtZXNMb2FkZWQiLCByZWZyZXNoRGF0YWJhc2UsIGZhbHNlKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5w
cm90b3R5cGUsICJfdXBkYXRlT3JpZ2luRGF0YWJhc2VOYW1lcyIsIHJlZnJlc2hEYXRhYmFzZSwg
ZmFsc2UpOwogICAgICAgICBpbmRleGVkREJNb2RlbC5yZWZyZXNoRGF0YWJhc2VOYW1lcygpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHJlZnJlc2hEYXRhYmFzZSgpCiAgICAgewotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIu
cHJvdG90eXBlLCAiZGF0YWJhc2VMb2FkZWQiLCBydW5PYmplY3RTdG9yZVRlc3RzLCBmYWxzZSk7
CisgICAgICAgIGluZGV4ZWREQk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIHJ1bk9iamVjdFN0b3JlVGVz
dHMpOwogICAgICAgICBpbmRleGVkREJNb2RlbC5yZWZyZXNoRGF0YWJhc2UoZGF0YWJhc2VJZCk7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcnVuT2JqZWN0U3RvcmVUZXN0cygpCiAgICAgeworICAg
ICAgICBpbmRleGVkREJNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5FdmVudFR5cGVzLkRhdGFiYXNlTG9hZGVkLCBydW5PYmplY3RTdG9yZVRlc3Rz
KTsKICAgICAgICAgbG9hZFZhbHVlc0FuZER1bXAoZmFsc2UsIG51bGwsIDAsIDMsIHN0ZXAyKQog
CiAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1uYW1lcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLmh0bWwKaW5k
ZXggMWI2ZDJhZjY0NDFkMzBhNzZlOTBiMTQxZmE1MTdhZjg3MGUzYTMyMS4uZDJmZWFmYWIzMDE4
MjdiNTIxZjZkZTVkMWU5M2Y4YmRlM2Y4OTA3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLW5hbWVzLmh0
bWwKQEAgLTIyLDcgKzIyLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCIiKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLCAiZGF0YWJhc2VOYW1l
c0xvYWRlZCIsIHN0ZXAyLCBmYWxzZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLCAiX3VwZGF0ZU9yaWdpbkRh
dGFiYXNlTmFtZXMiLCBzdGVwMiwgZmFsc2UpOwogCiAgICAgZnVuY3Rpb24gc3RlcDIoKQogICAg
IHsKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVw
MygpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
LkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLCAiZGF0YWJhc2VOYW1lc0xvYWRlZCIsIHN0
ZXA0LCBmYWxzZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0
b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLCAiX3VwZGF0ZU9yaWdpbkRhdGFiYXNlTmFtZXMi
LCBzdGVwNCwgZmFsc2UpOwogICAgICAgICBpbmRleGVkREJNb2RlbC5yZWZyZXNoRGF0YWJhc2VO
YW1lcygpOwogICAgIH0KIApAQCAtNDQsNyArNDQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAg
IGZ1bmN0aW9uIHN0ZXA1KCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUsICJkYXRhYmFzZU5h
bWVzTG9hZGVkIiwgc3RlcDYsIGZhbHNlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlm
ZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUsICJfdXBkYXRlT3JpZ2lu
RGF0YWJhc2VOYW1lcyIsIHN0ZXA2LCBmYWxzZSk7CiAgICAgICAgIGluZGV4ZWREQk1vZGVsLnJl
ZnJlc2hEYXRhYmFzZU5hbWVzKCk7CiAgICAgfQogCkBAIC01Niw3ICs1Niw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogCiAgICAgZnVuY3Rpb24gc3RlcDcoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlw
ZSwgImRhdGFiYXNlTmFtZXNMb2FkZWQiLCBzdGVwOCwgZmFsc2UpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSwg
Il91cGRhdGVPcmlnaW5EYXRhYmFzZU5hbWVzIiwgc3RlcDgsIGZhbHNlKTsKICAgICAgICAgaW5k
ZXhlZERCTW9kZWwucmVmcmVzaERhdGFiYXNlTmFtZXMoKTsKICAgICB9CiAKQEAgLTY4LDcgKzY4
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVwOSgpCiAgICAgewotICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3Bh
dGNoZXIucHJvdG90eXBlLCAiZGF0YWJhc2VOYW1lc0xvYWRlZCIsIHN0ZXAxMCwgZmFsc2UpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1v
ZGVsLnByb3RvdHlwZSwgIl91cGRhdGVPcmlnaW5EYXRhYmFzZU5hbWVzIiwgc3RlcDEwLCBmYWxz
ZSk7CiAgICAgICAgIGluZGV4ZWREQk1vZGVsLnJlZnJlc2hEYXRhYmFzZU5hbWVzKCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVk
ZGIvZGF0YWJhc2Utc3RydWN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbmRleGVkZGIvZGF0YWJhc2Utc3RydWN0dXJlLmh0bWwKaW5kZXggNmY5ZTkxMjM5MTQ4
MjZjMzkzNWVhMWY0ZWRiMTkyNWRkN2JjNGEwNy4uMWQzM2RlMzE5MTQ0OGIzZGUxOTYxNmY1OGZh
MmI1MzQ5YjEzZmIwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5kZXhlZGRiL2RhdGFiYXNlLXN0cnVjdHVyZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFzZS1zdHJ1Y3R1cmUuaHRtbApAQCAt
NDUsNyArNDUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIiIpOwogICAgIH0KIAotICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUsICJkYXRhYmFzZU5hbWVzTG9hZGVk
Iiwgc3RlcDIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVj
dG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSwgIl91cGRhdGVPcmlnaW5EYXRhYmFzZU5hbWVz
Iiwgc3RlcDIsIGZhbHNlKTsKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CkBAIC01NCw3
ICs1NCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24gc3RlcDMoKQogICAgIHsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJE
aXNwYXRjaGVyLnByb3RvdHlwZSwgImRhdGFiYXNlTmFtZXNMb2FkZWQiLCBzdGVwNCwgZmFsc2Up
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLnByb3RvdHlwZSwgIl91cGRhdGVPcmlnaW5EYXRhYmFzZU5hbWVzIiwgc3RlcDQsIGZh
bHNlKTsKICAgICAgICAgaW5kZXhlZERCTW9kZWwucmVmcmVzaERhdGFiYXNlTmFtZXMoKTsKICAg
ICB9CiAKQEAgLTYyLDEyICs2MiwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB7CiAgICAgICAg
IGR1bXBEYXRhYmFzZSgpOwogCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJ
bnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUsICJkYXRhYmFzZUxvYWRlZCIs
IHN0ZXA1LCBmYWxzZSk7CisgICAgICAgIGluZGV4ZWREQk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIHN0
ZXA1KTsKICAgICAgICAgaW5kZXhlZERCTW9kZWwucmVmcmVzaERhdGFiYXNlKGRhdGFiYXNlSWQp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA1KCkKICAgICB7CisgICAgICAgIGluZGV4ZWRE
Qk1vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkV2
ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIHN0ZXA1KTsKICAgICAgICAgZHVtcERhdGFiYXNlKCk7
CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVPYmplY3RTdG9yZShtYWluRnJhbWVJZCwg
ZGF0YWJhc2VOYW1lLCAidGVzdE9iamVjdFN0b3JlMSIsICJ0ZXN0LmtleS5wYXRoIiwgdHJ1ZSwg
c3RlcDYpOwpAQCAtNzUsMTIgKzc2LDEzIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rp
b24gc3RlcDYoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYklu
c3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlwZSwgImRhdGFiYXNlTG9hZGVkIiwg
c3RlcDcsIGZhbHNlKTsKKyAgICAgICAgaW5kZXhlZERCTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRXZlbnRUeXBlcy5EYXRhYmFzZUxvYWRlZCwgc3Rl
cDcpOwogICAgICAgICBpbmRleGVkREJNb2RlbC5yZWZyZXNoRGF0YWJhc2UoZGF0YWJhc2VJZCk7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDcoKQogICAgIHsKKyAgICAgICAgaW5kZXhlZERC
TW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRXZl
bnRUeXBlcy5EYXRhYmFzZUxvYWRlZCwgc3RlcDcpOwogICAgICAgICBkdW1wRGF0YWJhc2UoKTsK
IAogICAgICAgICBJbnNwZWN0b3JUZXN0LmNyZWF0ZU9iamVjdFN0b3JlKG1haW5GcmFtZUlkLCBk
YXRhYmFzZU5hbWUsICJ0ZXN0T2JqZWN0U3RvcmUyIiwgbnVsbCwgZmFsc2UsIHN0ZXA4KTsKQEAg
LTg4LDEyICs5MCwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXA4KCkK
ICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUsICJkYXRhYmFzZUxvYWRlZCIsIHN0ZXA5LCBmYWxz
ZSk7CisgICAgICAgIGluZGV4ZWREQk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkluZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIHN0ZXA5KTsKICAgICAg
ICAgaW5kZXhlZERCTW9kZWwucmVmcmVzaERhdGFiYXNlKGRhdGFiYXNlSWQpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHN0ZXA5KCkKICAgICB7CisgICAgICAgIGluZGV4ZWREQk1vZGVsLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMuRGF0
YWJhc2VMb2FkZWQsIHN0ZXA5KTsKICAgICAgICAgZHVtcERhdGFiYXNlKCk7CiAKICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jcmVhdGVPYmplY3RTdG9yZUluZGV4KG1haW5GcmFtZUlkLCBkYXRhYmFz
ZU5hbWUsICJ0ZXN0T2JqZWN0U3RvcmUyIiwgInRlc3RJbmRleE5hbWUxIiwgIiIsIGZhbHNlLCB0
cnVlLCBzdGVwMTApOwpAQCAtMTAxLDEyICsxMDQsMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICBmdW5jdGlvbiBzdGVwMTAoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlm
ZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlwZSwgImRhdGFiYXNl
TG9hZGVkIiwgc3RlcDExLCBmYWxzZSk7CisgICAgICAgIGluZGV4ZWREQk1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMuRGF0YWJhc2VM
b2FkZWQsIHN0ZXAxMSk7CiAgICAgICAgIGluZGV4ZWREQk1vZGVsLnJlZnJlc2hEYXRhYmFzZShk
YXRhYmFzZUlkKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMTEoKQogICAgIHsKKyAgICAg
ICAgaW5kZXhlZERCTW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwuRXZlbnRUeXBlcy5EYXRhYmFzZUxvYWRlZCwgc3RlcDExKTsKICAgICAgICAgZHVt
cERhdGFiYXNlKCk7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVPYmplY3RTdG9yZUlu
ZGV4KG1haW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUsICJ0ZXN0T2JqZWN0U3RvcmUyIiwgInRlc3RJ
bmRleE5hbWUyIiwgWyJrZXkucGF0aDEiLCAia2V5LnBhdGgyIl0sIHRydWUsIGZhbHNlLCBzdGVw
MTIpOwpAQCAtMTE0LDEyICsxMTgsMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlv
biBzdGVwMTIoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYklu
c3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlwZSwgImRhdGFiYXNlTG9hZGVkIiwg
c3RlcDEzLCBmYWxzZSk7CisgICAgICAgIGluZGV4ZWREQk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIHN0
ZXAxMyk7CiAgICAgICAgIGluZGV4ZWREQk1vZGVsLnJlZnJlc2hEYXRhYmFzZShkYXRhYmFzZUlk
KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMTMoKQogICAgIHsKKyAgICAgICAgaW5kZXhl
ZERCTW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
RXZlbnRUeXBlcy5EYXRhYmFzZUxvYWRlZCwgc3RlcDEzKTsKICAgICAgICAgZHVtcERhdGFiYXNl
KCk7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5kZWxldGVPYmplY3RTdG9yZUluZGV4KG1haW5G
cmFtZUlkLCBkYXRhYmFzZU5hbWUsICJ0ZXN0T2JqZWN0U3RvcmUyIiwgInRlc3RJbmRleE5hbWUy
Iiwgc3RlcDE0KTsKQEAgLTEyNywxMiArMTMyLDEzIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAg
ZnVuY3Rpb24gc3RlcDE0KCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUsICJkYXRhYmFzZUxv
YWRlZCIsIHN0ZXAxNSwgZmFsc2UpOworICAgICAgICBpbmRleGVkREJNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FdmVudFR5cGVzLkRhdGFiYXNlTG9h
ZGVkLCBzdGVwMTUpOwogICAgICAgICBpbmRleGVkREJNb2RlbC5yZWZyZXNoRGF0YWJhc2UoZGF0
YWJhc2VJZCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDE1KCkKICAgICB7CisgICAgICAg
IGluZGV4ZWREQk1vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWRE
Qk1vZGVsLkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIHN0ZXAxNSk7CiAgICAgICAgIGR1bXBE
YXRhYmFzZSgpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QuZGVsZXRlT2JqZWN0U3RvcmVJbmRl
eChtYWluRnJhbWVJZCwgZGF0YWJhc2VOYW1lLCAidGVzdE9iamVjdFN0b3JlMiIsICJ0ZXN0SW5k
ZXhOYW1lMSIsIHN0ZXAxNik7CkBAIC0xNDAsMTIgKzE0NiwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkK
IAogICAgIGZ1bmN0aW9uIHN0ZXAxNigpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBlLCAiZGF0
YWJhc2VMb2FkZWQiLCBzdGVwMTcsIGZhbHNlKTsKKyAgICAgICAgaW5kZXhlZERCTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRXZlbnRUeXBlcy5EYXRh
YmFzZUxvYWRlZCwgc3RlcDE3KTsKICAgICAgICAgaW5kZXhlZERCTW9kZWwucmVmcmVzaERhdGFi
YXNlKGRhdGFiYXNlSWQpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAxNygpCiAgICAgewor
ICAgICAgICBpbmRleGVkREJNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5FdmVudFR5cGVzLkRhdGFiYXNlTG9hZGVkLCBzdGVwMTcpOwogICAgICAg
ICBkdW1wRGF0YWJhc2UoKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmRlbGV0ZU9iamVjdFN0
b3JlKG1haW5GcmFtZUlkLCBkYXRhYmFzZU5hbWUsICJ0ZXN0T2JqZWN0U3RvcmUyIiwgc3RlcDE4
KTsKQEAgLTE1MywxMiArMTYwLDEzIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24g
c3RlcDE4KCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUsICJkYXRhYmFzZUxvYWRlZCIsIHN0
ZXAxOSwgZmFsc2UpOworICAgICAgICBpbmRleGVkREJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5FdmVudFR5cGVzLkRhdGFiYXNlTG9hZGVkLCBzdGVw
MTkpOwogICAgICAgICBpbmRleGVkREJNb2RlbC5yZWZyZXNoRGF0YWJhc2UoZGF0YWJhc2VJZCk7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDE5KCkKICAgICB7CisgICAgICAgIGluZGV4ZWRE
Qk1vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkV2
ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIHN0ZXAxOSk7CiAgICAgICAgIGR1bXBEYXRhYmFzZSgp
OwogCiAgICAgICAgIEluc3BlY3RvclRlc3QuZGVsZXRlT2JqZWN0U3RvcmUobWFpbkZyYW1lSWQs
IGRhdGFiYXNlTmFtZSwgInRlc3RPYmplY3RTdG9yZTEiLCBzdGVwMjApOwpAQCAtMTY2LDEyICsx
NzQsMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVwMjAoKQogICAgIHsK
LSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJE
aXNwYXRjaGVyLnByb3RvdHlwZSwgImRhdGFiYXNlTG9hZGVkIiwgc3RlcDIxLCBmYWxzZSk7Cisg
ICAgICAgIGluZGV4ZWREQk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIHN0ZXAyMSk7CiAgICAgICAgIGlu
ZGV4ZWREQk1vZGVsLnJlZnJlc2hEYXRhYmFzZShkYXRhYmFzZUlkKTsKICAgICB9CiAKICAgICBm
dW5jdGlvbiBzdGVwMjEoKQogICAgIHsKKyAgICAgICAgaW5kZXhlZERCTW9kZWwucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRXZlbnRUeXBlcy5EYXRhYmFz
ZUxvYWRlZCwgc3RlcDIxKTsKICAgICAgICAgZHVtcERhdGFiYXNlKCk7CiAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZGVsZXRlRGF0YWJhc2UobWFpbkZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgc3RlcDIy
KTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9p
bmRleGVkZGIvcmVzb3VyY2VzLXBhbmVsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbmRleGVkZGIvcmVzb3VyY2VzLXBhbmVsLmh0bWwKaW5kZXggNWM0OTQ4NGI5ZWVj
MTc0ZGFiZTY1YjlhMWQ4NmFjMDlmZWEyY2I1NS4uYTU2NzE1MWViN2NlMWJiYzNjYjdlODU5Yjc2
YTdjMGUwYmQyM2FmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5kZXhlZGRiL3Jlc291cmNlcy1wYW5lbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9yZXNvdXJjZXMtcGFuZWwuaHRtbApAQCAtNjYsMTAg
KzY2LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkV4
cGFuZGVkIEluZGV4ZWREQiB0cmVlIGVsZW1lbnQuIik7CiAgICAgV2ViSW5zcGVjdG9yLnBhbmVs
cy5yZXNvdXJjZXMuaW5kZXhlZERCTGlzdFRyZWVFbGVtZW50LmV4cGFuZCgpOwogCi0gICAgSW5z
cGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnBy
b3RvdHlwZSwgImRhdGFiYXNlTmFtZXNMb2FkZWQiLCBpbmRleGVkREJUcmVlRWxlbWVudEV4cGFu
ZGVkLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5J
bmRleGVkREJNb2RlbC5wcm90b3R5cGUsICJfdXBkYXRlT3JpZ2luRGF0YWJhc2VOYW1lcyIsIGlu
ZGV4ZWREQlRyZWVFbGVtZW50RXhwYW5kZWQsIGZhbHNlKTsKICAgICBmdW5jdGlvbiBpbmRleGVk
REJUcmVlRWxlbWVudEV4cGFuZGVkKCkKICAgICB7Ci0gICAgICAgIGluZGV4ZWREQk1vZGVsID0g
V2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuX2luZGV4ZWREQk1vZGVsOwogICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXBJbmRleGVkREJUcmVlKCk7CiAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJDcmVhdGVkIGRhdGFiYXNlLiIpOwogICAgICAgICBjcmVhdGVEYXRhYmFzZShk
YXRhYmFzZUNyZWF0ZWQpOwpAQCAtNzcsMTIgKzc2LDE0IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAg
ICAgZnVuY3Rpb24gZGF0YWJhc2VDcmVhdGVkKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRl
c3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuSW5kZXhlZERCRGlzcGF0Y2hlci5wcm90b3R5cGUs
ICJkYXRhYmFzZUxvYWRlZCIsIGRhdGFiYXNlTG9hZGVkLCBmYWxzZSk7CisgICAgICAgIGluZGV4
ZWREQk1vZGVsID0gV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMuaW5kZXhlZERCTGlzdFRy
ZWVFbGVtZW50Ll9pbmRleGVkREJNb2RlbDsKKyAgICAgICAgaW5kZXhlZERCTW9kZWwuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRXZlbnRUeXBlcy5EYXRhYmFz
ZUxvYWRlZCwgZGF0YWJhc2VMb2FkZWQpOwogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcy5pbmRleGVkREJMaXN0VHJlZUVsZW1lbnQucmVmcmVzaEluZGV4ZWREQigpOwogICAg
IH0KIAogICAgIGZ1bmN0aW9uIGRhdGFiYXNlTG9hZGVkKCkKICAgICB7CisgICAgICAgIGluZGV4
ZWREQk1vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
LkV2ZW50VHlwZXMuRGF0YWJhc2VMb2FkZWQsIGRhdGFiYXNlTG9hZGVkKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wSW5kZXhlZERCVHJlZSgpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiTmF2aWdhdGVkIHRvIGFub3RoZXIgc2VjdXJpdHkgb3JpZ2luLiIpOwogICAgICAg
ICBJbnNwZWN0b3JUZXN0Lm5hdmlnYXRlKHdpdGhvdXRJbmRleGVkREJVUkwsIG5hdmlnYXRlZEF3
YXkpOwpAQCAtMTA1LDcgKzEwNiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGZ1bmN0aW9uIGRh
dGFiYXNlRGVsZXRlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnJlc291
cmNlcy5pbmRleGVkREJMaXN0VHJlZUVsZW1lbnQucmVmcmVzaEluZGV4ZWREQigpOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3BhdGNo
ZXIucHJvdG90eXBlLCAiZGF0YWJhc2VOYW1lc0xvYWRlZCIsIGRhdGFiYXNlTmFtZXNMb2FkZWRB
ZnRlckRlbGV0aW5nLCBmYWxzZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLCAiX3VwZGF0ZU9yaWdpbkRhdGFi
YXNlTmFtZXMiLCBkYXRhYmFzZU5hbWVzTG9hZGVkQWZ0ZXJEZWxldGluZywgZmFsc2UpOwogICAg
IH0KIAogICAgIGZ1bmN0aW9uIGRhdGFiYXNlTmFtZXNMb2FkZWRBZnRlckRlbGV0aW5nKCkK
</data>
<flag name="review"
          id="173620"
          type_id="1"
          status="+"
          setter="apavlov"
    />
          </attachment>
      

    </bug>

</bugzilla>