<?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>85630</bug_id>
          
          <creation_ts>2012-05-04 09:00:17 -0700</creation_ts>
          <short_desc>Web Inspector: annotate ProfilerAgent.</short_desc>
          <delta_ts>2012-05-04 23:51:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</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>616274</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-04 09:00:17 -0700</bug_when>
    <thetext>%subj%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616286</commentid>
    <comment_count>1</comment_count>
      <attachid>140249</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-04 09:20:23 -0700</bug_when>
    <thetext>Created attachment 140249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616299</commentid>
    <comment_count>2</comment_count>
      <attachid>140249</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-05-04 09:26:50 -0700</bug_when>
    <thetext>Comment on attachment 140249
Patch

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

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:367
&gt; +        this._profilesIdMap[this._makeKey(&apos;&apos; + profile.uid, typeId)] = profile;

You should probably fix the _makeKey() signature instead?

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:547
&gt; +        var profile = this._profilesIdMap[this._makeKey(&apos;&apos; + uid, WebInspector.HeapSnapshotProfileType.TypeId)];

Ditto

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:558
&gt; +        var profile = this._profilesIdMap[this._makeKey(&apos;&apos; + uid, WebInspector.HeapSnapshotProfileType.TypeId)];

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616309</commentid>
    <comment_count>3</comment_count>
      <attachid>140255</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-04 09:35:17 -0700</bug_when>
    <thetext>Created attachment 140255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616321</commentid>
    <comment_count>4</comment_count>
      <attachid>140257</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-04 09:46:31 -0700</bug_when>
    <thetext>Created attachment 140257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616907</commentid>
    <comment_count>5</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-04 23:51:53 -0700</bug_when>
    <thetext>Committed r116210: &lt;http://trac.webkit.org/changeset/116210&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140249</attachid>
            <date>2012-05-04 09:20:23 -0700</date>
            <delta_ts>2012-05-04 09:35:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85630-20120504202021.patch</filename>
            <type>text/plain</type>
            <size>17732</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzMjBhNTFiN2IzOTEw
YWM5Njk5ZmI0ZmYwMzRmODc0Mjk1NDUyOC4uN2I1ZDdjMmYxNTZhYjRjNjc1NTZlNjMwZDUxMmEy
YjU0YmRhMmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTA0ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhbm5vdGF0ZSBQcm9maWxlckFnZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFk
ZXJzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qczoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUucHJvdG90eXBlLmNyZWF0ZVByb2Zp
bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLmFkZFByb2ZpbGVIZWFkZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9hZGRIZWFwU25hcHNo
b3RDaHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3Rv
dHlwZS5yZXNldFByb2ZpbGVzKToKKwogMjAxMi0wNS0wNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRv
ci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBDbGVhbiB1cCBhbmQgc3Bs
aXQgZmVhdHVyZXMucHJmIGludG8gYSBzdGF0aWMgbGlzdCBvZiBkZWZhdWx0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGY2MzkwNWYyN2MxNDk0YTc3YTAyNDQ3
OTk1MzhmM2YzYjJjODFiYjkuLjM1OWNhMjQ4OTEzMWYxZjgzMjEyYjI0OWZkNTNjNjJkYzczMjhk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTI1MzMsMTQg
KzI1MzMsMjQgQEAKICAgICAgICAgImhpZGRlbiI6IHRydWUsCiAgICAgICAgICJ0eXBlcyI6IFsK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAiaWQiOiAiUHJvZmlsZSIsCisgICAgICAg
ICAgICAgICAgImlkIjogIlByb2ZpbGVIZWFkZXIiLAogICAgICAgICAgICAgICAgICJ0eXBlIjog
Im9iamVjdCIsCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUuIgorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm9maWxlIGhlYWRlci4iLAorICAgICAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInR5
cGVJZCIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJDUFUiLCAiQ1NTIiwgIkhFQVAiXSwg
ImRlc2NyaXB0aW9uIjogIlByb2ZpbGUgdHlwZSBuYW1lLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ0aXRsZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJQ
cm9maWxlIHRpdGxlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1aWQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRo
ZSBwcm9maWxlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXhKU09iamVj
dElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJMYXN0IHNlZW4gSlMgb2JqZWN0IElkLiIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgImlkIjogIlByb2ZpbGVIZWFk
ZXIiLAorICAgICAgICAgICAgICAgICJpZCI6ICJQcm9maWxlIiwKICAgICAgICAgICAgICAgICAi
dHlwZSI6ICJvYmplY3QiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm9maWxl
IGhlYWRlci4iCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUuIiwKKyAg
ICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJoZWFkIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdHRvbVVwSGVhZCIsICJ0eXBlIjogIm9iamVjdCIs
ICJvcHRpb25hbCI6IHRydWUgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAg
ICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDNmNzcyODlkMjAzOWI3
YzM1ODZiMzM4ZDdmODQ5OWE5NTMwY2E1N2YuLmMxYmM4YTRhY2MwZTc1MDZjMGJhYmE2YzliMWEx
NzY5YzcwNmRjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTE2NywyNiArMTY3LDI1IEBAIHZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6Y29sbGVjdEdhcmJhZ2UoV2ViQ29yZTo6RXJyb3JTdHJpbmcqKQogICAg
IFNjcmlwdFByb2ZpbGVyOjpjb2xsZWN0R2FyYmFnZSgpOwogfQogCi1QYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihj
b25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OlByb2ZpbGVIZWFkZXI+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVByb2Zp
bGVIZWFkZXIoY29uc3QgU2NyaXB0UHJvZmlsZSYgcHJvZmlsZSkKIHsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBoZWFkZXIgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGhl
YWRlci0+c2V0U3RyaW5nKCJ0aXRsZSIsIHByb2ZpbGUudGl0bGUoKSk7Ci0gICAgaGVhZGVyLT5z
ZXROdW1iZXIoInVpZCIsIHByb2ZpbGUudWlkKCkpOwotICAgIGhlYWRlci0+c2V0U3RyaW5nKCJ0
eXBlSWQiLCBTdHJpbmcoQ1BVUHJvZmlsZVR5cGUpKTsKLSAgICByZXR1cm4gaGVhZGVyOworICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCisg
ICAgICAgIC5zZXRUeXBlSWQoVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpU
eXBlSWQ6OkNQVSkKKyAgICAgICAgLnNldFVpZChwcm9maWxlLnVpZCgpKQorICAgICAgICAuc2V0
VGl0bGUocHJvZmlsZS50aXRsZSgpKQorICAgICAgICAucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNo
b3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkKK1Bhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBTY3JpcHRIZWFwU25hcHNob3QmIHNuYXBz
aG90KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlciA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7Ci0gICAgaGVhZGVyLT5zZXRTdHJpbmcoInRpdGxlIiwgc25hcHNob3Qu
dGl0bGUoKSk7Ci0gICAgaGVhZGVyLT5zZXROdW1iZXIoInVpZCIsIHNuYXBzaG90LnVpZCgpKTsK
LSAgICBoZWFkZXItPnNldFN0cmluZygidHlwZUlkIiwgU3RyaW5nKEhlYXBQcm9maWxlVHlwZSkp
OwotICAgIGhlYWRlci0+c2V0TnVtYmVyKCJtYXhKU09iamVjdElkIiwgc25hcHNob3QubWF4U25h
cHNob3RKU09iamVjdElkKCkpOwotICAgIHJldHVybiBoZWFkZXI7CisgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gaGVhZGVyID0gVHlwZUJ1aWxkZXI6OlBy
b2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpjcmVhdGUoKQorICAgICAgICAuc2V0VHlwZUlkKFR5cGVC
dWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6VHlwZUlkOjpIRUFQKQorICAgICAgICAu
c2V0VWlkKHNuYXBzaG90LnVpZCgpKQorICAgICAgICAuc2V0VGl0bGUoc25hcHNob3QudGl0bGUo
KSk7CisgICAgaGVhZGVyLT5zZXRNYXhKU09iamVjdElkKHNuYXBzaG90Lm1heFNuYXBzaG90SlNP
YmplY3RJZCgpKTsKKyAgICByZXR1cm4gaGVhZGVyLnJlbGVhc2UoKTsKIH0KIAotCiB2b2lkIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNhdXNlc1JlY29tcGlsYXRpb24oRXJyb3JTdHJpbmcqLCBi
b29sKiByZXN1bHQpCiB7CiAgICAgKnJlc3VsdCA9IFNjcmlwdFByb2ZpbGVyOjpjYXVzZXNSZWNv
bXBpbGF0aW9uKCk7CkBAIC0yNDEsOSArMjQwLDkgQEAgU3RyaW5nIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnQK
ICAgICByZXR1cm4gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcuJywgU3Ry
aW5nOjpudW1iZXIobV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yT2JqZWN0PiA+JiBoZWFkZXJz
KQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0
cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQ
cm9maWxlSGVhZGVyPiA+JiBoZWFkZXJzKQogewotICAgIGhlYWRlcnMgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yT2JqZWN0Pjo6Y3JlYXRlKCk7CisgICAgaGVhZGVycyA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+OjpjcmVhdGUo
KTsKIAogICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBwcm9maWxlc0VuZCA9IG1fcHJvZmlsZXMu
ZW5kKCk7CiAgICAgZm9yIChQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Byb2ZpbGVzLmJl
Z2luKCk7IGl0ICE9IHByb2ZpbGVzRW5kOyArK2l0KQpAQCAtMjY4LDIyICsyNjcsMjIgQEAgcHJp
dmF0ZToKIAogfSAvLyBuYW1lc3BhY2UKIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpn
ZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgcmF3VWlkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwg
aW50IHJhd1VpZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZT4mIHByb2Zp
bGVPYmplY3QpCiB7CiAgICAgdW5zaWduZWQgdWlkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJh
d1VpZCk7CiAgICAgaWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKICAgICAgICAgUHJvZmls
ZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CiAgICAgICAgIGlmIChp
dCAhPSBtX3Byb2ZpbGVzLmVuZCgpKSB7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0ID0gY3Jl
YXRlUHJvZmlsZUhlYWRlcigqaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0
LT5zZXRPYmplY3QoImhlYWQiLCBpdC0+c2Vjb25kLT5idWlsZEluc3BlY3Rvck9iamVjdEZvckhl
YWQoKSk7CisgICAgICAgICAgICBwcm9maWxlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpQcm9maWxlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHByb2ZpbGVPYmplY3QtPnNldEhlYWQo
aXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkpOwogICAgICAgICAgICAg
aWYgKGl0LT5zZWNvbmQtPmJvdHRvbVVwSGVhZCgpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVP
YmplY3QtPnNldE9iamVjdCgiYm90dG9tVXBIZWFkIiwgaXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0
b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZU9iamVj
dC0+c2V0Qm90dG9tVXBIZWFkKGl0LT5zZWNvbmQtPmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90
dG9tVXBIZWFkKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICh0eXBlID09IEhlYXBQcm9m
aWxlVHlwZSkgewogICAgICAgICBIZWFwU25hcHNob3RzTWFwOjppdGVyYXRvciBpdCA9IG1fc25h
cHNob3RzLmZpbmQodWlkKTsKICAgICAgICAgaWYgKGl0ICE9IG1fc25hcHNob3RzLmVuZCgpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiBzbmFwc2hvdCA9IGl0LT5z
ZWNvbmQ7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0ID0gY3JlYXRlU25hcHNob3RIZWFkZXIo
KnNuYXBzaG90KTsKKyAgICAgICAgICAgIHByb2ZpbGVPYmplY3QgPSBUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OlByb2ZpbGU6OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKG1fZnJvbnRlbmQpIHsK
ICAgICAgICAgICAgICAgICBPdXRwdXRTdHJlYW0gc3RyZWFtKG1fZnJvbnRlbmQsIHVpZCk7CiAg
ICAgICAgICAgICAgICAgc25hcHNob3QtPndyaXRlSlNPTigmc3RyZWFtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IGJkN2Yz
NDdjOTM4Y2Y0MjQyY2NjZGQ3MmZlNjkyYzg5YTcwYmNlNzguLmIxNTgzOTg4MGNiNDVlOGQ0MzNj
Njc0Y2MwOTI2NjhkODgwZjgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtODUsOCArODUsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbmFibGUoYm9vbCBza2lwUmVjb21waWxlKTsKICAgICBib29sIGVuYWJsZWQoKSB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KICAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9m
aWxlTmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSk7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3JPYmplY3Q+ID4mIGhlYWRlcnMpOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlkLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGdl
dFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+ID4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZT4mKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVp
ZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsK
QEAgLTExMCw4ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRGcm9udGVuZFByb2Zp
bGVzKCk7CiAgICAgdm9pZCByZXN0b3JlRW5hYmxlbWVudCgpOwogCi0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgU2NyaXB0UHJvZmlsZSYg
cHJvZmlsZSk7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVNuYXBzaG90
SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYgc25hcHNob3QpOworICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBjcmVhdGVQcm9maWxlSGVh
ZGVyKGNvbnN0IFNjcmlwdFByb2ZpbGUmKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0
SGVhcFNuYXBzaG90Jik7CiAKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIG1fY29uc29sZUFn
ZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVj
dG9yUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKaW5kZXggMGQzYzM2NjgxZTNlZTE1OTEyMmQ5YTgxMmZm
NDA3ZTNkMGIzZjQzNC4uMjdhZDg4NzlkMTkzMGQ5MmU0NjAwM2ExNWY5MTQ5Y2VhMTFlZmM5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcwpAQCAtMzU2LDYgKzM1NiwxMSBAQCBXZWJJbnNwZWN0
b3IuQ1NTU2VsZWN0b3JQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXIoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZGluZ1x1MjAyNiIp
KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICogQHBhcmFtIHtQ
cm9maWxlckFnZW50LlByb2ZpbGVIZWFkZXJ9IHByb2ZpbGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJ
bnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KKyAgICAgKi8KICAgICBjcmVhdGVQcm9maWxlOiBmdW5j
dGlvbihwcm9maWxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJv
ZmlsZUhlYWRlcihwcm9maWxlLnR5cGVJZCwgcHJvZmlsZS50aXRsZSwgcHJvZmlsZS51aWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNo
b3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNo
b3RWaWV3LmpzCmluZGV4IDhjMDA2NTY2MWZmNjUzZWE1YmZkZDQ2ZWQ0ZjUwZTEyYWI1ZTJkOTYu
LjhiMGI3YjNjMDg4MjlhMWU0NGE4MjRhOTQxODY4ZDk3YTU1ZGY2OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMK
QEAgLTc0OSwxNCArNzQ5LDIzIEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlw
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFZpZXcoV2ViSW5zcGVjdG9yLnBhbmVscy5wcm9maWxlcywgcHJvZmlsZSk7CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rv
ci5Qcm9maWxlSGVhZGVyfQorICAgICAqLwogICAgIGNyZWF0ZVRlbXBvcmFyeVByb2ZpbGU6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVI
ZWFkZXIoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdHRpbmdcdTIwMjYiKSk7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7UHJvZmlsZXJBZ2VudC5Qcm9maWxl
SGVhZGVyfSBwcm9maWxlCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFk
ZXJ9CisgICAgICovCiAgICAgY3JlYXRlUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyKHByb2Zp
bGUudHlwZUlkLCBwcm9maWxlLnRpdGxlLCBwcm9maWxlLnVpZCwgcHJvZmlsZS5tYXhKU09iamVj
dElkKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIo
cHJvZmlsZS50eXBlSWQsIHByb2ZpbGUudGl0bGUsIHByb2ZpbGUudWlkLCBwcm9maWxlLm1heEpT
T2JqZWN0SWQgfHwgMCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwppbmRleCA4MDljY2FhNDA0M2I1NjEyZTRlN2Nm
M2ExN2VhYTMyZTJmOTBmYmFjLi5hOWUxMjA4Njg1M2ZhODQ4MDhlZGZjYjMyODVmNDdhOTI2YjBm
YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2Zp
bGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZVZpZXcuanMKQEAgLTYxOCwxMSArNjE4LDIwIEBAIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlw
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNQVVByb2Zp
bGVWaWV3KHByb2ZpbGUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KKyAgICAgKi8KICAgICBj
cmVhdGVUZW1wb3JhcnlQcm9maWxlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlw
ZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkaW5nXHUyMDI2IikpOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0ge1Byb2ZpbGVy
QWdlbnQuUHJvZmlsZUhlYWRlcn0gcHJvZmlsZQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rv
ci5Qcm9maWxlSGVhZGVyfQorICAgICAqLwogICAgIGNyZWF0ZVByb2ZpbGU6IGZ1bmN0aW9uKHBy
b2ZpbGUpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlSGVh
ZGVyKHByb2ZpbGUudHlwZUlkLCBwcm9maWxlLnRpdGxlLCBwcm9maWxlLnVpZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5k
ZXggZjQzYmY5ODBmNGQ0OTFiMTRmOGVlN2U0YTVlYzE2NjlkNTE1ODY4Ni4uMTEwN2EzNDFmMTVj
OTA2MDFjYzk5MDE4YTE3YTYyZmYzYmQ1NzcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtOTAsMTIgKzkwLDE5IEBA
IFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8v
IE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KKyAgICAgKi8KICAgICBjcmVhdGVUZW1w
b3JhcnlQcm9maWxlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Ik5lZWRzIGltcGxlbWVudGVkLiIpOwogICAgIH0sCiAKICAgICAvLyBNdXN0IGJlIGltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgLyoqCisgICAgICogQHBhcmFtIHtQcm9maWxlckFnZW50
LlByb2ZpbGVIZWFkZXJ9IHByb2ZpbGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJv
ZmlsZUhlYWRlcn0KKyAgICAgKi8KICAgICBjcmVhdGVQcm9maWxlOiBmdW5jdGlvbihwcm9maWxl
KQogICAgIHsKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOZWVkcyBpbXBsZW1lbnRlZC4iKTsK
QEAgLTMxOSw2ICszMjYsOSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3Jlc2V0KCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlfSBwcm9maWxlVHlwZQorICAgICAqLwogICAg
IF9yZWdpc3RlclByb2ZpbGVUeXBlOiBmdW5jdGlvbihwcm9maWxlVHlwZSkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXBbcHJvZmlsZVR5cGUuaWRdID0gcHJvZmlsZVR5
cGU7CkBAIC0zMjgsNiArMzM4LDExIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyVHJlZS5hcHBlbmRDaGlsZChwcm9maWxlVHlw
ZS50cmVlRWxlbWVudCk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSB0ZXh0CisgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb2ZpbGVUeXBlSWQKKyAgICAgKiBAcmV0
dXJuIHtzdHJpbmd9CisgICAgICovCiAgICAgX21ha2VLZXk6IGZ1bmN0aW9uKHRleHQsIHByb2Zp
bGVUeXBlSWQpCiAgICAgewogICAgICAgICByZXR1cm4gZXNjYXBlKHRleHQpICsgJy8nICsgZXNj
YXBlKHByb2ZpbGVUeXBlSWQpOwpAQCAtMzQ5LDcgKzM2NCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9m
aWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBwcm9maWxlLl9fcHJvZmlsZXNQYW5l
bFByb2ZpbGVUeXBlID0gcHJvZmlsZVR5cGU7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVzLnB1c2go
cHJvZmlsZSk7Ci0gICAgICAgIHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleShwcm9m
aWxlLnVpZCwgdHlwZUlkKV0gPSBwcm9maWxlOworICAgICAgICB0aGlzLl9wcm9maWxlc0lkTWFw
W3RoaXMuX21ha2VLZXkoJycgKyBwcm9maWxlLnVpZCwgdHlwZUlkKV0gPSBwcm9maWxlOwogCiAg
ICAgICAgIGlmICghcHJvZmlsZS50aXRsZS5zdGFydHNXaXRoKFVzZXJJbml0aWF0ZWRQcm9maWxl
TmFtZSkpIHsKICAgICAgICAgICAgIHZhciBwcm9maWxlVGl0bGVLZXkgPSB0aGlzLl9tYWtlS2V5
KHByb2ZpbGUudGl0bGUsIHR5cGVJZCk7CkBAIC01MjMsMTcgKzUzOCwyNCBAQCBXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHVpZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBj
aHVuaworICAgICAqLwogICAgIF9hZGRIZWFwU25hcHNob3RDaHVuazogZnVuY3Rpb24odWlkLCBj
aHVuaykKICAgICB7Ci0gICAgICAgIHZhciBwcm9maWxlID0gdGhpcy5fcHJvZmlsZXNJZE1hcFt0
aGlzLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5
cGVJZCldOworICAgICAgICB2YXIgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5f
bWFrZUtleSgnJyArIHVpZCwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5
cGVJZCldOwogICAgICAgICBpZiAoIXByb2ZpbGUgfHwgIXByb2ZpbGUucHJveHkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIHByb2ZpbGUucHJveHkucHVzaEpTT05DaHVuayhjaHVuayk7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1aWQKKyAgICAgKi8K
ICAgICBfZmluaXNoSGVhcFNuYXBzaG90OiBmdW5jdGlvbih1aWQpCiAgICAgewotICAgICAgICB2
YXIgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleSh1aWQsIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpXTsKKyAgICAgICAgdmFyIHBy
b2ZpbGUgPSB0aGlzLl9wcm9maWxlc0lkTWFwW3RoaXMuX21ha2VLZXkoJycgKyB1aWQsIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpXTsKICAgICAgICAgaWYgKCFw
cm9maWxlIHx8ICFwcm9maWxlLnByb3h5KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB2
YXIgcHJveHkgPSBwcm9maWxlLnByb3h5OwpAQCAtNTU0LDYgKzU3Niw5IEBAIFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaG93UHJvZmlsZSh2
aWV3LnByb2ZpbGUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
dHlwZUlkCisgICAgICovCiAgICAgZ2V0UHJvZmlsZVR5cGU6IGZ1bmN0aW9uKHR5cGVJZCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFwW3R5cGVJZF07CkBA
IC04NzIsNiArODk3LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5wcm9maWxlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLnN0eWxl
LmxlZnQgPSBNYXRoLm1heCg1ICogMzEsIHdpZHRoKSArICJweCI7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9maWxlVHlwZQorICAgICAqIEBwYXJhbSB7Ym9v
bGVhbn0gaXNQcm9maWxpbmcKKyAgICAgKi8KICAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5j
dGlvbihwcm9maWxlVHlwZSwgaXNQcm9maWxpbmcpCiAgICAgewogICAgICAgICB2YXIgcHJvZmls
ZVR5cGVPYmplY3QgPSB0aGlzLmdldFByb2ZpbGVUeXBlKHByb2ZpbGVUeXBlKTsKQEAgLTg5OCw2
ICs5MjcsMTAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuUHJvZmlsZXNIZWFwUHJvZmlsZVRha2VuLnJl
Y29yZCgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZG9uZQor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b3RhbAorICAgICAqLwogICAgIF9yZXBvcnRIZWFwU25h
cHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCiAgICAgewogICAgICAgICB2YXIg
dGVtcG9yYXJ5UHJvZmlsZSA9IHRoaXMuZmluZFRlbXBvcmFyeVByb2ZpbGUoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCk7CkBAIC05MjIsMTEgKzk1NSw2IEBAIFdl
Ykluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIgPSBmdW5jdGlvbihwcm9maWxlcikKIH0KIAog
V2ViSW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7Ci0gICAgcmVzZXRQ
cm9maWxlczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZmlsZXIuX3Jlc2V0
KCk7Ci0gICAgfSwKLQogICAgIC8qKgogICAgICAqIEBwYXJhbSB7UHJvZmlsZXJBZ2VudC5Qcm9m
aWxlSGVhZGVyfSBwcm9maWxlCiAgICAgICovCkBAIC05MzYsMjEgKzk2NCw0NyBAQCBXZWJJbnNw
ZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcHJv
ZmlsZXIuYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlVHlwZS5jcmVhdGVQcm9maWxlKHByb2ZpbGUp
KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IHVpZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaHVuaworICAgICAqLwogICAgIGFk
ZEhlYXBTbmFwc2hvdENodW5rOiBmdW5jdGlvbih1aWQsIGNodW5rKQogICAgIHsKICAgICAgICAg
dGhpcy5fcHJvZmlsZXIuX2FkZEhlYXBTbmFwc2hvdENodW5rKHVpZCwgY2h1bmspOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdWlk
CisgICAgICovCiAgICAgZmluaXNoSGVhcFNuYXBzaG90OiBmdW5jdGlvbih1aWQpCiAgICAgewog
ICAgICAgICB0aGlzLl9wcm9maWxlci5fZmluaXNoSGVhcFNuYXBzaG90KHVpZCk7CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNQ
cm9maWxpbmcKKyAgICAgKi8KICAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1By
b2ZpbGluZykKICAgICB7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVyLnNldFJlY29yZGluZ1Byb2Zp
bGUoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVUeXBlLlR5cGVJZCwgaXNQcm9maWxpbmcpOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKi8KKyAgICByZXNldFByb2Zp
bGVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9wcm9maWxlci5fcmVzZXQoKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICogQHBhcmFtIHtudW1i
ZXJ9IGRvbmUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdG90YWwKKyAgICAgKi8KICAgICByZXBv
cnRIZWFwU25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCiAgICAgewogICAg
ICAgICB0aGlzLl9wcm9maWxlci5fcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3MoZG9uZSwgdG90
YWwpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140255</attachid>
            <date>2012-05-04 09:35:17 -0700</date>
            <delta_ts>2012-05-04 09:46:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85630-20120504203515.patch</filename>
            <type>text/plain</type>
            <size>21142</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzMjBhNTFiN2IzOTEw
YWM5Njk5ZmI0ZmYwMzRmODc0Mjk1NDUyOC4uN2I1ZDdjMmYxNTZhYjRjNjc1NTZlNjMwZDUxMmEy
YjU0YmRhMmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTA0ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhbm5vdGF0ZSBQcm9maWxlckFnZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFk
ZXJzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qczoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUucHJvdG90eXBlLmNyZWF0ZVByb2Zp
bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLmFkZFByb2ZpbGVIZWFkZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9hZGRIZWFwU25hcHNo
b3RDaHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3Rv
dHlwZS5yZXNldFByb2ZpbGVzKToKKwogMjAxMi0wNS0wNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRv
ci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBDbGVhbiB1cCBhbmQgc3Bs
aXQgZmVhdHVyZXMucHJmIGludG8gYSBzdGF0aWMgbGlzdCBvZiBkZWZhdWx0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGY2MzkwNWYyN2MxNDk0YTc3YTAyNDQ3
OTk1MzhmM2YzYjJjODFiYjkuLjM1OWNhMjQ4OTEzMWYxZjgzMjEyYjI0OWZkNTNjNjJkYzczMjhk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTI1MzMsMTQg
KzI1MzMsMjQgQEAKICAgICAgICAgImhpZGRlbiI6IHRydWUsCiAgICAgICAgICJ0eXBlcyI6IFsK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAiaWQiOiAiUHJvZmlsZSIsCisgICAgICAg
ICAgICAgICAgImlkIjogIlByb2ZpbGVIZWFkZXIiLAogICAgICAgICAgICAgICAgICJ0eXBlIjog
Im9iamVjdCIsCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUuIgorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm9maWxlIGhlYWRlci4iLAorICAgICAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInR5
cGVJZCIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJDUFUiLCAiQ1NTIiwgIkhFQVAiXSwg
ImRlc2NyaXB0aW9uIjogIlByb2ZpbGUgdHlwZSBuYW1lLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ0aXRsZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJQ
cm9maWxlIHRpdGxlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1aWQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRo
ZSBwcm9maWxlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXhKU09iamVj
dElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJMYXN0IHNlZW4gSlMgb2JqZWN0IElkLiIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgImlkIjogIlByb2ZpbGVIZWFk
ZXIiLAorICAgICAgICAgICAgICAgICJpZCI6ICJQcm9maWxlIiwKICAgICAgICAgICAgICAgICAi
dHlwZSI6ICJvYmplY3QiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm9maWxl
IGhlYWRlci4iCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUuIiwKKyAg
ICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJoZWFkIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdHRvbVVwSGVhZCIsICJ0eXBlIjogIm9iamVjdCIs
ICJvcHRpb25hbCI6IHRydWUgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAg
ICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDNmNzcyODlkMjAzOWI3
YzM1ODZiMzM4ZDdmODQ5OWE5NTMwY2E1N2YuLmMxYmM4YTRhY2MwZTc1MDZjMGJhYmE2YzliMWEx
NzY5YzcwNmRjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTE2NywyNiArMTY3LDI1IEBAIHZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6Y29sbGVjdEdhcmJhZ2UoV2ViQ29yZTo6RXJyb3JTdHJpbmcqKQogICAg
IFNjcmlwdFByb2ZpbGVyOjpjb2xsZWN0R2FyYmFnZSgpOwogfQogCi1QYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihj
b25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OlByb2ZpbGVIZWFkZXI+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVByb2Zp
bGVIZWFkZXIoY29uc3QgU2NyaXB0UHJvZmlsZSYgcHJvZmlsZSkKIHsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBoZWFkZXIgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGhl
YWRlci0+c2V0U3RyaW5nKCJ0aXRsZSIsIHByb2ZpbGUudGl0bGUoKSk7Ci0gICAgaGVhZGVyLT5z
ZXROdW1iZXIoInVpZCIsIHByb2ZpbGUudWlkKCkpOwotICAgIGhlYWRlci0+c2V0U3RyaW5nKCJ0
eXBlSWQiLCBTdHJpbmcoQ1BVUHJvZmlsZVR5cGUpKTsKLSAgICByZXR1cm4gaGVhZGVyOworICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCisg
ICAgICAgIC5zZXRUeXBlSWQoVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpU
eXBlSWQ6OkNQVSkKKyAgICAgICAgLnNldFVpZChwcm9maWxlLnVpZCgpKQorICAgICAgICAuc2V0
VGl0bGUocHJvZmlsZS50aXRsZSgpKQorICAgICAgICAucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNo
b3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkKK1Bhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBTY3JpcHRIZWFwU25hcHNob3QmIHNuYXBz
aG90KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlciA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7Ci0gICAgaGVhZGVyLT5zZXRTdHJpbmcoInRpdGxlIiwgc25hcHNob3Qu
dGl0bGUoKSk7Ci0gICAgaGVhZGVyLT5zZXROdW1iZXIoInVpZCIsIHNuYXBzaG90LnVpZCgpKTsK
LSAgICBoZWFkZXItPnNldFN0cmluZygidHlwZUlkIiwgU3RyaW5nKEhlYXBQcm9maWxlVHlwZSkp
OwotICAgIGhlYWRlci0+c2V0TnVtYmVyKCJtYXhKU09iamVjdElkIiwgc25hcHNob3QubWF4U25h
cHNob3RKU09iamVjdElkKCkpOwotICAgIHJldHVybiBoZWFkZXI7CisgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gaGVhZGVyID0gVHlwZUJ1aWxkZXI6OlBy
b2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpjcmVhdGUoKQorICAgICAgICAuc2V0VHlwZUlkKFR5cGVC
dWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6VHlwZUlkOjpIRUFQKQorICAgICAgICAu
c2V0VWlkKHNuYXBzaG90LnVpZCgpKQorICAgICAgICAuc2V0VGl0bGUoc25hcHNob3QudGl0bGUo
KSk7CisgICAgaGVhZGVyLT5zZXRNYXhKU09iamVjdElkKHNuYXBzaG90Lm1heFNuYXBzaG90SlNP
YmplY3RJZCgpKTsKKyAgICByZXR1cm4gaGVhZGVyLnJlbGVhc2UoKTsKIH0KIAotCiB2b2lkIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNhdXNlc1JlY29tcGlsYXRpb24oRXJyb3JTdHJpbmcqLCBi
b29sKiByZXN1bHQpCiB7CiAgICAgKnJlc3VsdCA9IFNjcmlwdFByb2ZpbGVyOjpjYXVzZXNSZWNv
bXBpbGF0aW9uKCk7CkBAIC0yNDEsOSArMjQwLDkgQEAgU3RyaW5nIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnQK
ICAgICByZXR1cm4gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcuJywgU3Ry
aW5nOjpudW1iZXIobV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yT2JqZWN0PiA+JiBoZWFkZXJz
KQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0
cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQ
cm9maWxlSGVhZGVyPiA+JiBoZWFkZXJzKQogewotICAgIGhlYWRlcnMgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yT2JqZWN0Pjo6Y3JlYXRlKCk7CisgICAgaGVhZGVycyA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+OjpjcmVhdGUo
KTsKIAogICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBwcm9maWxlc0VuZCA9IG1fcHJvZmlsZXMu
ZW5kKCk7CiAgICAgZm9yIChQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Byb2ZpbGVzLmJl
Z2luKCk7IGl0ICE9IHByb2ZpbGVzRW5kOyArK2l0KQpAQCAtMjY4LDIyICsyNjcsMjIgQEAgcHJp
dmF0ZToKIAogfSAvLyBuYW1lc3BhY2UKIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpn
ZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgcmF3VWlkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwg
aW50IHJhd1VpZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZT4mIHByb2Zp
bGVPYmplY3QpCiB7CiAgICAgdW5zaWduZWQgdWlkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJh
d1VpZCk7CiAgICAgaWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKICAgICAgICAgUHJvZmls
ZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CiAgICAgICAgIGlmIChp
dCAhPSBtX3Byb2ZpbGVzLmVuZCgpKSB7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0ID0gY3Jl
YXRlUHJvZmlsZUhlYWRlcigqaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0
LT5zZXRPYmplY3QoImhlYWQiLCBpdC0+c2Vjb25kLT5idWlsZEluc3BlY3Rvck9iamVjdEZvckhl
YWQoKSk7CisgICAgICAgICAgICBwcm9maWxlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpQcm9maWxlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHByb2ZpbGVPYmplY3QtPnNldEhlYWQo
aXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkpOwogICAgICAgICAgICAg
aWYgKGl0LT5zZWNvbmQtPmJvdHRvbVVwSGVhZCgpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVP
YmplY3QtPnNldE9iamVjdCgiYm90dG9tVXBIZWFkIiwgaXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0
b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZU9iamVj
dC0+c2V0Qm90dG9tVXBIZWFkKGl0LT5zZWNvbmQtPmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90
dG9tVXBIZWFkKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICh0eXBlID09IEhlYXBQcm9m
aWxlVHlwZSkgewogICAgICAgICBIZWFwU25hcHNob3RzTWFwOjppdGVyYXRvciBpdCA9IG1fc25h
cHNob3RzLmZpbmQodWlkKTsKICAgICAgICAgaWYgKGl0ICE9IG1fc25hcHNob3RzLmVuZCgpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiBzbmFwc2hvdCA9IGl0LT5z
ZWNvbmQ7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0ID0gY3JlYXRlU25hcHNob3RIZWFkZXIo
KnNuYXBzaG90KTsKKyAgICAgICAgICAgIHByb2ZpbGVPYmplY3QgPSBUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OlByb2ZpbGU6OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKG1fZnJvbnRlbmQpIHsK
ICAgICAgICAgICAgICAgICBPdXRwdXRTdHJlYW0gc3RyZWFtKG1fZnJvbnRlbmQsIHVpZCk7CiAg
ICAgICAgICAgICAgICAgc25hcHNob3QtPndyaXRlSlNPTigmc3RyZWFtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IGJkN2Yz
NDdjOTM4Y2Y0MjQyY2NjZGQ3MmZlNjkyYzg5YTcwYmNlNzguLmIxNTgzOTg4MGNiNDVlOGQ0MzNj
Njc0Y2MwOTI2NjhkODgwZjgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtODUsOCArODUsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbmFibGUoYm9vbCBza2lwUmVjb21waWxlKTsKICAgICBib29sIGVuYWJsZWQoKSB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KICAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9m
aWxlTmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSk7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3JPYmplY3Q+ID4mIGhlYWRlcnMpOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlkLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGdl
dFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+ID4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZT4mKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVp
ZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsK
QEAgLTExMCw4ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRGcm9udGVuZFByb2Zp
bGVzKCk7CiAgICAgdm9pZCByZXN0b3JlRW5hYmxlbWVudCgpOwogCi0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgU2NyaXB0UHJvZmlsZSYg
cHJvZmlsZSk7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVNuYXBzaG90
SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYgc25hcHNob3QpOworICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBjcmVhdGVQcm9maWxlSGVh
ZGVyKGNvbnN0IFNjcmlwdFByb2ZpbGUmKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0
SGVhcFNuYXBzaG90Jik7CiAKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIG1fY29uc29sZUFn
ZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVj
dG9yUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKaW5kZXggMGQzYzM2NjgxZTNlZTE1OTEyMmQ5YTgxMmZm
NDA3ZTNkMGIzZjQzNC4uYTY5M2NkNWU2YTRmYjllZGQwNDE5N2Q1YzA3Nzc2YmQzOGJjMWMzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcwpAQCAtMzUxLDExICszNTEsMjAgQEAgV2ViSW5zcGVj
dG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3KHByb2ZpbGUpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0
b3IuUHJvZmlsZUhlYWRlcn0KKyAgICAgKi8KICAgICBjcmVhdGVUZW1wb3JhcnlQcm9maWxlOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxl
SGVhZGVyKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmdcdTIwMjYiKSk7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7UHJvZmlsZXJBZ2VudC5Qcm9maWxlSGVh
ZGVyfSBwcm9maWxlCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXJ9
CisgICAgICovCiAgICAgY3JlYXRlUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXIocHJvZmlsZS50eXBl
SWQsIHByb2ZpbGUudGl0bGUsIHByb2ZpbGUudWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwppbmRleCA4YzAwNjU2
NjFmZjY1M2VhNWJmZGQ0NmVkNGY1MGUxMmFiNWUyZDk2Li44YjBiN2IzYzA4ODI5YTFlNDRhODI0
YTk0MTg2OGQ5N2E1NWRmNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC03NDksMTQgKzc0OSwyMyBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3KFdlYkluc3BlY3Rvci5w
YW5lbHMucHJvZmlsZXMsIHByb2ZpbGUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3Zl
cnJpZGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KKyAgICAg
Ki8KICAgICBjcmVhdGVUZW1wb3JhcnlQcm9maWxlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU25hcHNo
b3R0aW5nXHUyMDI2IikpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAg
ICAgKiBAcGFyYW0ge1Byb2ZpbGVyQWdlbnQuUHJvZmlsZUhlYWRlcn0gcHJvZmlsZQorICAgICAq
IEByZXR1cm4ge1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfQorICAgICAqLwogICAgIGNyZWF0
ZVByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcihwcm9maWxlLnR5cGVJZCwgcHJvZmlsZS50aXRs
ZSwgcHJvZmlsZS51aWQsIHByb2ZpbGUubWF4SlNPYmplY3RJZCk7CisgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyKHByb2ZpbGUudHlwZUlkLCBwcm9maWxl
LnRpdGxlLCBwcm9maWxlLnVpZCwgcHJvZmlsZS5tYXhKU09iamVjdElkIHx8IDApOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZp
ZXcuanMKaW5kZXggODA5Y2NhYTQwNDNiNTYxMmU0ZTdjZjNhMTdlYWEzMmUyZjkwZmJhYy4uYTll
MTIwODY4NTNmYTg0ODA4ZWRmY2IzMjg1ZjQ3YTkyNmIwZmM2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCkBAIC02MTgsMTEgKzYx
OCwyMCBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldyhwcm9maWxlKTsKICAgICB9
LAogCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLlByb2ZpbGVIZWFkZXJ9CisgICAgICovCiAgICAgY3JlYXRlVGVtcG9yYXJ5UHJvZmlsZTog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvZmls
ZUhlYWRlcihXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJlY29yZGluZ1x1MjAyNiIpKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICog
QG92ZXJyaWRlCisgICAgICogQHBhcmFtIHtQcm9maWxlckFnZW50LlByb2ZpbGVIZWFkZXJ9IHBy
b2ZpbGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KKyAgICAg
Ki8KICAgICBjcmVhdGVQcm9maWxlOiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcihwcm9maWxlLnR5cGVJZCwgcHJv
ZmlsZS50aXRsZSwgcHJvZmlsZS51aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IGY0M2JmOTgwZjRkNDkxYjE0Zjhl
ZTdlNGE1ZWMxNjY5ZDUxNTg2ODYuLjIzYzc4MTRiZGRjOTBhYzhhOGRjZTE0NzNlYjc5Nzc1ZGUx
ZTFlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVzUGFuZWwuanMKQEAgLTkwLDEyICs5MCwxOSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5
cGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvLyBNdXN0IGJlIGltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlByb2Zp
bGVIZWFkZXJ9CisgICAgICovCiAgICAgY3JlYXRlVGVtcG9yYXJ5UHJvZmlsZTogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOZWVkcyBpbXBsZW1lbnRlZC4iKTsK
ICAgICB9LAogCiAgICAgLy8gTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7UHJvZmlsZXJBZ2VudC5Qcm9maWxlSGVhZGVyfSBwcm9maWxl
CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXJ9CisgICAgICovCiAg
ICAgY3JlYXRlUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKICAgICB7CiAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiTmVlZHMgaW1wbGVtZW50ZWQuIik7CkBAIC0zMTksNiArMzI2LDkgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXNl
dCgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZX0gcHJvZmlsZVR5cGUKKyAgICAgKi8KICAgICBfcmVnaXN0ZXJQcm9maWxlVHlwZTog
ZnVuY3Rpb24ocHJvZmlsZVR5cGUpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9maWxlVHlwZXNC
eUlkTWFwW3Byb2ZpbGVUeXBlLmlkXSA9IHByb2ZpbGVUeXBlOwpAQCAtMzI4LDYgKzMzOCwxMSBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
c2lkZWJhclRyZWUuYXBwZW5kQ2hpbGQocHJvZmlsZVR5cGUudHJlZUVsZW1lbnQpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dAorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBwcm9maWxlVHlwZUlkCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLwog
ICAgIF9tYWtlS2V5OiBmdW5jdGlvbih0ZXh0LCBwcm9maWxlVHlwZUlkKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGVzY2FwZSh0ZXh0KSArICcvJyArIGVzY2FwZShwcm9maWxlVHlwZUlkKTsKQEAg
LTM0OSw3ICszNjQsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgcHJvZmlsZS5fX3Byb2ZpbGVzUGFuZWxQcm9maWxlVHlwZSA9IHByb2ZpbGVU
eXBlOwogICAgICAgICB0aGlzLl9wcm9maWxlcy5wdXNoKHByb2ZpbGUpOwotICAgICAgICB0aGlz
Ll9wcm9maWxlc0lkTWFwW3RoaXMuX21ha2VLZXkocHJvZmlsZS51aWQsIHR5cGVJZCldID0gcHJv
ZmlsZTsKKyAgICAgICAgdGhpcy5fcHJvZmlsZXNJZE1hcFt0aGlzLl9tYWtlS2V5KCcnICsgcHJv
ZmlsZS51aWQsIHR5cGVJZCldID0gcHJvZmlsZTsKIAogICAgICAgICBpZiAoIXByb2ZpbGUudGl0
bGUuc3RhcnRzV2l0aChVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUpKSB7CiAgICAgICAgICAgICB2
YXIgcHJvZmlsZVRpdGxlS2V5ID0gdGhpcy5fbWFrZUtleShwcm9maWxlLnRpdGxlLCB0eXBlSWQp
OwpAQCAtNDA5LDYgKzQyNCw5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5yZWNvcmRCdXR0b24udGl0bGUgPSB0aGlzLl9zZWxlY3RlZFBy
b2ZpbGVUeXBlLmJ1dHRvblRvb2x0aXA7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXJ9IHByb2ZpbGUKKyAgICAgKi8KICAgICBfcmVt
b3ZlUHJvZmlsZUhlYWRlcjogZnVuY3Rpb24ocHJvZmlsZSkKICAgICB7CiAgICAgICAgIHZhciB0
eXBlSWQgPSBwcm9maWxlLnR5cGVJZDsKQEAgLTQzOCw2ICs0NTYsOSBAQCBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNsb3NlVmlzaWJs
ZVZpZXcoKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
UHJvZmlsZUhlYWRlcn0gcHJvZmlsZQorICAgICAqLwogICAgIHNob3dQcm9maWxlOiBmdW5jdGlv
bihwcm9maWxlKQogICAgIHsKICAgICAgICAgaWYgKCFwcm9maWxlIHx8IHByb2ZpbGUuaXNUZW1w
b3JhcnkpCkBAIC00NjMsNiArNDg0LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVWaWV3U3RhdHVzQmFySXRl
bXNDb250YWluZXIuYXBwZW5kQ2hpbGQoc3RhdHVzQmFySXRlbXNbaV0pOwogICAgIH0sCiAKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZUlkCisgICAgICogQHJldHVybiB7QXJy
YXkuPFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyPn0KKyAgICAgKi8KICAgICBnZXRQcm9maWxl
czogZnVuY3Rpb24odHlwZUlkKQogICAgIHsKICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwpAQCAt
NDc1LDYgKzUwMCwxMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSB0eXBlSWQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhl
YWRlcn0KKyAgICAgKi8KICAgICBmaW5kVGVtcG9yYXJ5UHJvZmlsZTogZnVuY3Rpb24odHlwZUlk
KQogICAgIHsKICAgICAgICAgdmFyIHByb2ZpbGVzQ291bnQgPSB0aGlzLl9wcm9maWxlcy5sZW5n
dGg7CkBAIC00ODQsNiArNTEzLDkgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9LAogCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IHR5cGVJZAorICAgICAqLwogICAgIF9yZW1vdmVUZW1wb3JhcnlQcm9m
aWxlOiBmdW5jdGlvbih0eXBlSWQpCiAgICAgewogICAgICAgICB2YXIgdGVtcG9yYXJ5UHJvZmls
ZSA9IHRoaXMuZmluZFRlbXBvcmFyeVByb2ZpbGUodHlwZUlkKTsKQEAgLTQ5MSwxOSArNTIzLDMw
IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGVtcG9yYXJ5UHJvZmlsZSk7CiAgICAgfSwKIAor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXJ9IHByb2Zp
bGUKKyAgICAgKi8KICAgICBoYXNQcm9maWxlOiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuICEhdGhpcy5fcHJvZmlsZXNJZE1hcFt0aGlzLl9tYWtlS2V5KHByb2ZpbGUu
dWlkLCBwcm9maWxlLnR5cGVJZCldOworICAgICAgICByZXR1cm4gISF0aGlzLl9wcm9maWxlc0lk
TWFwW3RoaXMuX21ha2VLZXkoJycgKyBwcm9maWxlLnVpZCwgcHJvZmlsZS50eXBlSWQpXTsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVJZAorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB1aWQKKyAgICAgKi8KICAgICBnZXRQcm9maWxlOiBmdW5jdGlvbih0eXBl
SWQsIHVpZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlc0lkTWFwW3RoaXMu
X21ha2VLZXkodWlkLCB0eXBlSWQpXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGVzSWRN
YXBbdGhpcy5fbWFrZUtleSgnJyArIHVpZCwgdHlwZUlkKV07CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1aWQKKyAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxs
YmFjaworICAgICAqLwogICAgIGxvYWRIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKHVpZCwgY2FsbGJh
Y2spCiAgICAgewotICAgICAgICB2YXIgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhp
cy5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBl
SWQpXTsKKyAgICAgICAgdmFyIHByb2ZpbGUgPSB0aGlzLl9wcm9maWxlc0lkTWFwW3RoaXMuX21h
a2VLZXkoJycgKyB1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBl
SWQpXTsKICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01
MjMsMTcgKzU2NiwyNCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHVp
ZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaHVuaworICAgICAqLwogICAgIF9hZGRIZWFwU25h
cHNob3RDaHVuazogZnVuY3Rpb24odWlkLCBjaHVuaykKICAgICB7Ci0gICAgICAgIHZhciBwcm9m
aWxlID0gdGhpcy5fcHJvZmlsZXNJZE1hcFt0aGlzLl9tYWtlS2V5KHVpZCwgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCldOworICAgICAgICB2YXIgcHJvZmlsZSA9
IHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleSgnJyArIHVpZCwgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCldOwogICAgICAgICBpZiAoIXByb2ZpbGUg
fHwgIXByb2ZpbGUucHJveHkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHByb2ZpbGUu
cHJveHkucHVzaEpTT05DaHVuayhjaHVuayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7bnVtYmVyfSB1aWQKKyAgICAgKi8KICAgICBfZmluaXNoSGVhcFNuYXBzaG90OiBmdW5j
dGlvbih1aWQpCiAgICAgewotICAgICAgICB2YXIgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVzSWRN
YXBbdGhpcy5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlw
ZS5UeXBlSWQpXTsKKyAgICAgICAgdmFyIHByb2ZpbGUgPSB0aGlzLl9wcm9maWxlc0lkTWFwW3Ro
aXMuX21ha2VLZXkoJycgKyB1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlw
ZS5UeXBlSWQpXTsKICAgICAgICAgaWYgKCFwcm9maWxlIHx8ICFwcm9maWxlLnByb3h5KQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB2YXIgcHJveHkgPSBwcm9maWxlLnByb3h5OwpAQCAt
NTQ5LDE2ICs1OTksMjUgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgcHJvZmlsZS5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUGFyc2luZ1x1MjAyNiIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5WaWV3fSB2aWV3CisgICAgICovCiAgICAgc2hvd1ZpZXc6
IGZ1bmN0aW9uKHZpZXcpCiAgICAgewogICAgICAgICB0aGlzLnNob3dQcm9maWxlKHZpZXcucHJv
ZmlsZSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlSWQK
KyAgICAgKi8KICAgICBnZXRQcm9maWxlVHlwZTogZnVuY3Rpb24odHlwZUlkKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Byb2ZpbGVUeXBlc0J5SWRNYXBbdHlwZUlkXTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAorICAgICAqLwogICAgIHNob3dQ
cm9maWxlRm9yVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewogICAgICAgICB2YXIgbWF0Y2ggPSB1
cmwubWF0Y2goV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLlVSTFJlZ0V4cCk7CkBAIC01NzQsNiAr
NjMzLDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgZGVsZXRlIHRoaXMudmlzaWJsZVZpZXc7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSB0aXRsZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlSWQKKyAgICAg
Ki8KICAgICBkaXNwbGF5VGl0bGVGb3JQcm9maWxlTGluazogZnVuY3Rpb24odGl0bGUsIHR5cGVJ
ZCkKICAgICB7CiAgICAgICAgIHRpdGxlID0gdW5lc2NhcGUodGl0bGUpOwpAQCAtODcyLDYgKzkz
NSwxMCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMucHJvZmlsZVZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lci5zdHlsZS5sZWZ0ID0gTWF0
aC5tYXgoNSAqIDMxLCB3aWR0aCkgKyAicHgiOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gcHJvZmlsZVR5cGUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzUHJv
ZmlsaW5nCisgICAgICovCiAgICAgc2V0UmVjb3JkaW5nUHJvZmlsZTogZnVuY3Rpb24ocHJvZmls
ZVR5cGUsIGlzUHJvZmlsaW5nKQogICAgIHsKICAgICAgICAgdmFyIHByb2ZpbGVUeXBlT2JqZWN0
ID0gdGhpcy5nZXRQcm9maWxlVHlwZShwcm9maWxlVHlwZSk7CkBAIC04OTgsNiArOTY1LDEwIEBA
IFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLnVzZXJNZXRyaWNzLlByb2ZpbGVzSGVhcFByb2ZpbGVUYWtlbi5yZWNvcmQoKTsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGRvbmUKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gdG90YWwKKyAgICAgKi8KICAgICBfcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jl
c3M6IGZ1bmN0aW9uKGRvbmUsIHRvdGFsKQogICAgIHsKICAgICAgICAgdmFyIHRlbXBvcmFyeVBy
b2ZpbGUgPSB0aGlzLmZpbmRUZW1wb3JhcnlQcm9maWxlKFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RQcm9maWxlVHlwZS5UeXBlSWQpOwpAQCAtOTIyLDExICs5OTMsNiBAQCBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXJEaXNwYXRjaGVyID0gZnVuY3Rpb24ocHJvZmlsZXIpCiB9CiAKIFdlYkluc3BlY3Rv
ci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewotICAgIHJlc2V0UHJvZmlsZXM6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9yZXNldCgpOwotICAgIH0s
Ci0KICAgICAvKioKICAgICAgKiBAcGFyYW0ge1Byb2ZpbGVyQWdlbnQuUHJvZmlsZUhlYWRlcn0g
cHJvZmlsZQogICAgICAqLwpAQCAtOTM2LDIxICsxMDAyLDQ3IEBAIFdlYkluc3BlY3Rvci5Qcm9m
aWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wcm9maWxlci5hZGRQ
cm9maWxlSGVhZGVyKHByb2ZpbGVUeXBlLmNyZWF0ZVByb2ZpbGUocHJvZmlsZSkpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gdWlk
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNodW5rCisgICAgICovCiAgICAgYWRkSGVhcFNuYXBz
aG90Q2h1bms6IGZ1bmN0aW9uKHVpZCwgY2h1bmspCiAgICAgewogICAgICAgICB0aGlzLl9wcm9m
aWxlci5fYWRkSGVhcFNuYXBzaG90Q2h1bmsodWlkLCBjaHVuayk7CiAgICAgfSwKIAorICAgIC8q
KgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1aWQKKyAgICAgKi8K
ICAgICBmaW5pc2hIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKHVpZCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3Byb2ZpbGVyLl9maW5pc2hIZWFwU25hcHNob3QodWlkKTsKICAgICB9LAogCisgICAgLyoq
CisgICAgICogQG92ZXJyaWRlCisgICAgICogQHBhcmFtIHtib29sZWFufSBpc1Byb2ZpbGluZwor
ICAgICAqLwogICAgIHNldFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQog
ICAgIHsKICAgICAgICAgdGhpcy5fcHJvZmlsZXIuc2V0UmVjb3JkaW5nUHJvZmlsZShXZWJJbnNw
ZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLCBpc1Byb2ZpbGluZyk7CiAgICAgfSwKIAorICAg
IC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqLworICAgIHJlc2V0UHJvZmlsZXM6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9yZXNldCgpOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZG9uZQor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b3RhbAorICAgICAqLwogICAgIHJlcG9ydEhlYXBTbmFw
c2hvdFByb2dyZXNzOiBmdW5jdGlvbihkb25lLCB0b3RhbCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3Byb2ZpbGVyLl9yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzcyhkb25lLCB0b3RhbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140257</attachid>
            <date>2012-05-04 09:46:31 -0700</date>
            <delta_ts>2012-05-04 22:57:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85630-20120504204629.patch</filename>
            <type>text/plain</type>
            <size>22012</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGMzMjBhNTFiN2IzOTEw
YWM5Njk5ZmI0ZmYwMzRmODc0Mjk1NDUyOC4uN2I1ZDdjMmYxNTZhYjRjNjc1NTZlNjMwZDUxMmEy
YjU0YmRhMmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTA0ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhbm5vdGF0ZSBQcm9maWxlckFnZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpjcmVhdGVQcm9maWxlSGVhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVNuYXBzaG90SGVhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFk
ZXJzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvclByb2ZpbGVyQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qczoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUucHJvdG90eXBlLmNyZWF0ZVByb2Zp
bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLmFkZFByb2ZpbGVIZWFkZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9hZGRIZWFwU25hcHNo
b3RDaHVuayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3Rv
dHlwZS5yZXNldFByb2ZpbGVzKToKKwogMjAxMi0wNS0wNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRv
ci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBDbGVhbiB1cCBhbmQgc3Bs
aXQgZmVhdHVyZXMucHJmIGludG8gYSBzdGF0aWMgbGlzdCBvZiBkZWZhdWx0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGY2MzkwNWYyN2MxNDk0YTc3YTAyNDQ3
OTk1MzhmM2YzYjJjODFiYjkuLjM1OWNhMjQ4OTEzMWYxZjgzMjEyYjI0OWZkNTNjNjJkYzczMjhk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTI1MzMsMTQg
KzI1MzMsMjQgQEAKICAgICAgICAgImhpZGRlbiI6IHRydWUsCiAgICAgICAgICJ0eXBlcyI6IFsK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAiaWQiOiAiUHJvZmlsZSIsCisgICAgICAg
ICAgICAgICAgImlkIjogIlByb2ZpbGVIZWFkZXIiLAogICAgICAgICAgICAgICAgICJ0eXBlIjog
Im9iamVjdCIsCi0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUuIgorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm9maWxlIGhlYWRlci4iLAorICAgICAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInR5
cGVJZCIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJDUFUiLCAiQ1NTIiwgIkhFQVAiXSwg
ImRlc2NyaXB0aW9uIjogIlByb2ZpbGUgdHlwZSBuYW1lLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ0aXRsZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJQ
cm9maWxlIHRpdGxlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1aWQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRo
ZSBwcm9maWxlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXhKU09iamVj
dElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJMYXN0IHNlZW4gSlMgb2JqZWN0IElkLiIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgImlkIjogIlByb2ZpbGVIZWFk
ZXIiLAorICAgICAgICAgICAgICAgICJpZCI6ICJQcm9maWxlIiwKICAgICAgICAgICAgICAgICAi
dHlwZSI6ICJvYmplY3QiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQcm9maWxl
IGhlYWRlci4iCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb2ZpbGUuIiwKKyAg
ICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJoZWFkIiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdHRvbVVwSGVhZCIsICJ0eXBlIjogIm9iamVjdCIs
ICJvcHRpb25hbCI6IHRydWUgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAg
ICAgICAgXSwKICAgICAgICAgImNvbW1hbmRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDNmNzcyODlkMjAzOWI3
YzM1ODZiMzM4ZDdmODQ5OWE5NTMwY2E1N2YuLmMxYmM4YTRhY2MwZTc1MDZjMGJhYmE2YzliMWEx
NzY5YzcwNmRjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTE2NywyNiArMTY3LDI1IEBAIHZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6Y29sbGVjdEdhcmJhZ2UoV2ViQ29yZTo6RXJyb3JTdHJpbmcqKQogICAg
IFNjcmlwdFByb2ZpbGVyOjpjb2xsZWN0R2FyYmFnZSgpOwogfQogCi1QYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlUHJvZmlsZUhlYWRlcihj
b25zdCBTY3JpcHRQcm9maWxlJiBwcm9maWxlKQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OlByb2ZpbGVIZWFkZXI+IEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNyZWF0ZVByb2Zp
bGVIZWFkZXIoY29uc3QgU2NyaXB0UHJvZmlsZSYgcHJvZmlsZSkKIHsKLSAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBoZWFkZXIgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGhl
YWRlci0+c2V0U3RyaW5nKCJ0aXRsZSIsIHByb2ZpbGUudGl0bGUoKSk7Ci0gICAgaGVhZGVyLT5z
ZXROdW1iZXIoInVpZCIsIHByb2ZpbGUudWlkKCkpOwotICAgIGhlYWRlci0+c2V0U3RyaW5nKCJ0
eXBlSWQiLCBTdHJpbmcoQ1BVUHJvZmlsZVR5cGUpKTsKLSAgICByZXR1cm4gaGVhZGVyOworICAg
IHJldHVybiBUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI6OmNyZWF0ZSgpCisg
ICAgICAgIC5zZXRUeXBlSWQoVHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpU
eXBlSWQ6OkNQVSkKKyAgICAgICAgLnNldFVpZChwcm9maWxlLnVpZCgpKQorICAgICAgICAuc2V0
VGl0bGUocHJvZmlsZS50aXRsZSgpKQorICAgICAgICAucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlU25hcHNo
b3RIZWFkZXIoY29uc3QgU2NyaXB0SGVhcFNuYXBzaG90JiBzbmFwc2hvdCkKK1Bhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpjcmVhdGVTbmFwc2hvdEhlYWRlcihjb25zdCBTY3JpcHRIZWFwU25hcHNob3QmIHNuYXBz
aG90KQogewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlciA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7Ci0gICAgaGVhZGVyLT5zZXRTdHJpbmcoInRpdGxlIiwgc25hcHNob3Qu
dGl0bGUoKSk7Ci0gICAgaGVhZGVyLT5zZXROdW1iZXIoInVpZCIsIHNuYXBzaG90LnVpZCgpKTsK
LSAgICBoZWFkZXItPnNldFN0cmluZygidHlwZUlkIiwgU3RyaW5nKEhlYXBQcm9maWxlVHlwZSkp
OwotICAgIGhlYWRlci0+c2V0TnVtYmVyKCJtYXhKU09iamVjdElkIiwgc25hcHNob3QubWF4U25h
cHNob3RKU09iamVjdElkKCkpOwotICAgIHJldHVybiBoZWFkZXI7CisgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gaGVhZGVyID0gVHlwZUJ1aWxkZXI6OlBy
b2ZpbGVyOjpQcm9maWxlSGVhZGVyOjpjcmVhdGUoKQorICAgICAgICAuc2V0VHlwZUlkKFR5cGVC
dWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcjo6VHlwZUlkOjpIRUFQKQorICAgICAgICAu
c2V0VWlkKHNuYXBzaG90LnVpZCgpKQorICAgICAgICAuc2V0VGl0bGUoc25hcHNob3QudGl0bGUo
KSk7CisgICAgaGVhZGVyLT5zZXRNYXhKU09iamVjdElkKHNuYXBzaG90Lm1heFNuYXBzaG90SlNP
YmplY3RJZCgpKTsKKyAgICByZXR1cm4gaGVhZGVyLnJlbGVhc2UoKTsKIH0KIAotCiB2b2lkIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmNhdXNlc1JlY29tcGlsYXRpb24oRXJyb3JTdHJpbmcqLCBi
b29sKiByZXN1bHQpCiB7CiAgICAgKnJlc3VsdCA9IFNjcmlwdFByb2ZpbGVyOjpjYXVzZXNSZWNv
bXBpbGF0aW9uKCk7CkBAIC0yNDEsOSArMjQwLDkgQEAgU3RyaW5nIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnQK
ICAgICByZXR1cm4gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUsICcuJywgU3Ry
aW5nOjpudW1iZXIobV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yT2JqZWN0PiA+JiBoZWFkZXJz
KQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0
cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQ
cm9maWxlSGVhZGVyPiA+JiBoZWFkZXJzKQogewotICAgIGhlYWRlcnMgPSBUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yT2JqZWN0Pjo6Y3JlYXRlKCk7CisgICAgaGVhZGVycyA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+OjpjcmVhdGUo
KTsKIAogICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBwcm9maWxlc0VuZCA9IG1fcHJvZmlsZXMu
ZW5kKCk7CiAgICAgZm9yIChQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Byb2ZpbGVzLmJl
Z2luKCk7IGl0ICE9IHByb2ZpbGVzRW5kOyArK2l0KQpAQCAtMjY4LDIyICsyNjcsMjIgQEAgcHJp
dmF0ZToKIAogfSAvLyBuYW1lc3BhY2UKIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojpn
ZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgcmF3VWlkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwg
aW50IHJhd1VpZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZT4mIHByb2Zp
bGVPYmplY3QpCiB7CiAgICAgdW5zaWduZWQgdWlkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJh
d1VpZCk7CiAgICAgaWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKICAgICAgICAgUHJvZmls
ZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CiAgICAgICAgIGlmIChp
dCAhPSBtX3Byb2ZpbGVzLmVuZCgpKSB7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0ID0gY3Jl
YXRlUHJvZmlsZUhlYWRlcigqaXQtPnNlY29uZCk7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0
LT5zZXRPYmplY3QoImhlYWQiLCBpdC0+c2Vjb25kLT5idWlsZEluc3BlY3Rvck9iamVjdEZvckhl
YWQoKSk7CisgICAgICAgICAgICBwcm9maWxlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpQcm9maWxlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHByb2ZpbGVPYmplY3QtPnNldEhlYWQo
aXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JIZWFkKCkpOwogICAgICAgICAgICAg
aWYgKGl0LT5zZWNvbmQtPmJvdHRvbVVwSGVhZCgpKQotICAgICAgICAgICAgICAgIHByb2ZpbGVP
YmplY3QtPnNldE9iamVjdCgiYm90dG9tVXBIZWFkIiwgaXQtPnNlY29uZC0+YnVpbGRJbnNwZWN0
b3JPYmplY3RGb3JCb3R0b21VcEhlYWQoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZU9iamVj
dC0+c2V0Qm90dG9tVXBIZWFkKGl0LT5zZWNvbmQtPmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yQm90
dG9tVXBIZWFkKCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICh0eXBlID09IEhlYXBQcm9m
aWxlVHlwZSkgewogICAgICAgICBIZWFwU25hcHNob3RzTWFwOjppdGVyYXRvciBpdCA9IG1fc25h
cHNob3RzLmZpbmQodWlkKTsKICAgICAgICAgaWYgKGl0ICE9IG1fc25hcHNob3RzLmVuZCgpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiBzbmFwc2hvdCA9IGl0LT5z
ZWNvbmQ7Ci0gICAgICAgICAgICBwcm9maWxlT2JqZWN0ID0gY3JlYXRlU25hcHNob3RIZWFkZXIo
KnNuYXBzaG90KTsKKyAgICAgICAgICAgIHByb2ZpbGVPYmplY3QgPSBUeXBlQnVpbGRlcjo6UHJv
ZmlsZXI6OlByb2ZpbGU6OmNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKG1fZnJvbnRlbmQpIHsK
ICAgICAgICAgICAgICAgICBPdXRwdXRTdHJlYW0gc3RyZWFtKG1fZnJvbnRlbmQsIHVpZCk7CiAg
ICAgICAgICAgICAgICAgc25hcHNob3QtPndyaXRlSlNPTigmc3RyZWFtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IGJkN2Yz
NDdjOTM4Y2Y0MjQyY2NjZGQ3MmZlNjkyYzg5YTcwYmNlNzguLmIxNTgzOTg4MGNiNDVlOGQ0MzNj
Njc0Y2MwOTI2NjhkODgwZjgyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtODUsOCArODUsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbmFibGUoYm9vbCBza2lwUmVjb21waWxlKTsKICAgICBib29sIGVuYWJsZWQoKSB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KICAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9m
aWxlTmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSk7Ci0gICAgdmlydHVh
bCB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxJbnNwZWN0b3JPYmplY3Q+ID4mIGhlYWRlcnMpOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlkLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCk7CisgICAgdmlydHVhbCB2b2lkIGdl
dFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+ID4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZT4mKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVp
ZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsK
QEAgLTExMCw4ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRGcm9udGVuZFByb2Zp
bGVzKCk7CiAgICAgdm9pZCByZXN0b3JlRW5hYmxlbWVudCgpOwogCi0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVByb2ZpbGVIZWFkZXIoY29uc3QgU2NyaXB0UHJvZmlsZSYg
cHJvZmlsZSk7Ci0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVNuYXBzaG90
SGVhZGVyKGNvbnN0IFNjcmlwdEhlYXBTbmFwc2hvdCYgc25hcHNob3QpOworICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiBjcmVhdGVQcm9maWxlSGVh
ZGVyKGNvbnN0IFNjcmlwdFByb2ZpbGUmKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpQ
cm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gY3JlYXRlU25hcHNob3RIZWFkZXIoY29uc3QgU2NyaXB0
SGVhcFNuYXBzaG90Jik7CiAKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQqIG1fY29uc29sZUFn
ZW50OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVj
dG9yUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKaW5kZXggMGQzYzM2NjgxZTNlZTE1OTEyMmQ5YTgxMmZm
NDA3ZTNkMGIzZjQzNC4uYTY5M2NkNWU2YTRmYjllZGQwNDE5N2Q1YzA3Nzc2YmQzOGJjMWMzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcwpAQCAtMzUxLDExICszNTEsMjAgQEAgV2ViSW5zcGVj
dG9yLkNTU1NlbGVjdG9yUHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3KHByb2ZpbGUpOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0
b3IuUHJvZmlsZUhlYWRlcn0KKyAgICAgKi8KICAgICBjcmVhdGVUZW1wb3JhcnlQcm9maWxlOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxl
SGVhZGVyKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmdcdTIwMjYiKSk7CiAgICAgfSwKIAorICAgIC8qKgor
ICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7UHJvZmlsZXJBZ2VudC5Qcm9maWxlSGVh
ZGVyfSBwcm9maWxlCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXJ9
CisgICAgICovCiAgICAgY3JlYXRlUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXIocHJvZmlsZS50eXBl
SWQsIHByb2ZpbGUudGl0bGUsIHByb2ZpbGUudWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwppbmRleCA4YzAwNjU2
NjFmZjY1M2VhNWJmZGQ0NmVkNGY1MGUxMmFiNWUyZDk2Li44YjBiN2IzYzA4ODI5YTFlNDRhODI0
YTk0MTg2OGQ5N2E1NWRmNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC03NDksMTQgKzc0OSwyMyBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3KFdlYkluc3BlY3Rvci5w
YW5lbHMucHJvZmlsZXMsIHByb2ZpbGUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3Zl
cnJpZGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KKyAgICAg
Ki8KICAgICBjcmVhdGVUZW1wb3JhcnlQcm9maWxlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU25hcHNo
b3R0aW5nXHUyMDI2IikpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAg
ICAgKiBAcGFyYW0ge1Byb2ZpbGVyQWdlbnQuUHJvZmlsZUhlYWRlcn0gcHJvZmlsZQorICAgICAq
IEByZXR1cm4ge1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfQorICAgICAqLwogICAgIGNyZWF0
ZVByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlcihwcm9maWxlLnR5cGVJZCwgcHJvZmlsZS50aXRs
ZSwgcHJvZmlsZS51aWQsIHByb2ZpbGUubWF4SlNPYmplY3RJZCk7CisgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyKHByb2ZpbGUudHlwZUlkLCBwcm9maWxl
LnRpdGxlLCBwcm9maWxlLnVpZCwgcHJvZmlsZS5tYXhKU09iamVjdElkIHx8IDApOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZp
ZXcuanMKaW5kZXggODA5Y2NhYTQwNDNiNTYxMmU0ZTdjZjNhMTdlYWEzMmUyZjkwZmJhYy4uYTll
MTIwODY4NTNmYTg0ODA4ZWRmY2IzMjg1ZjQ3YTkyNmIwZmM2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCkBAIC02MTgsMTEgKzYx
OCwyMCBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldyhwcm9maWxlKTsKICAgICB9
LAogCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLlByb2ZpbGVIZWFkZXJ9CisgICAgICovCiAgICAgY3JlYXRlVGVtcG9yYXJ5UHJvZmlsZTog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvZmls
ZUhlYWRlcihXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlJlY29yZGluZ1x1MjAyNiIpKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICog
QG92ZXJyaWRlCisgICAgICogQHBhcmFtIHtQcm9maWxlckFnZW50LlByb2ZpbGVIZWFkZXJ9IHBy
b2ZpbGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KKyAgICAg
Ki8KICAgICBjcmVhdGVQcm9maWxlOiBmdW5jdGlvbihwcm9maWxlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcihwcm9maWxlLnR5cGVJZCwgcHJv
ZmlsZS50aXRsZSwgcHJvZmlsZS51aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IGY0M2JmOTgwZjRkNDkxYjE0Zjhl
ZTdlNGE1ZWMxNjY5ZDUxNTg2ODYuLmQyMTgyZWMyMmJhY2NiYzlmYTFmZjFiODg1OWZiNDg4MjQw
MGVmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVzUGFuZWwuanMKQEAgLTkwLDEyICs5MCwxOSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5
cGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvLyBNdXN0IGJlIGltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlByb2Zp
bGVIZWFkZXJ9CisgICAgICovCiAgICAgY3JlYXRlVGVtcG9yYXJ5UHJvZmlsZTogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOZWVkcyBpbXBsZW1lbnRlZC4iKTsK
ICAgICB9LAogCiAgICAgLy8gTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7UHJvZmlsZXJBZ2VudC5Qcm9maWxlSGVhZGVyfSBwcm9maWxl
CisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXJ9CisgICAgICovCiAg
ICAgY3JlYXRlUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKICAgICB7CiAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiTmVlZHMgaW1wbGVtZW50ZWQuIik7CkBAIC0zMTksNiArMzI2LDkgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXNl
dCgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZX0gcHJvZmlsZVR5cGUKKyAgICAgKi8KICAgICBfcmVnaXN0ZXJQcm9maWxlVHlwZTog
ZnVuY3Rpb24ocHJvZmlsZVR5cGUpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9maWxlVHlwZXNC
eUlkTWFwW3Byb2ZpbGVUeXBlLmlkXSA9IHByb2ZpbGVUeXBlOwpAQCAtMzI4LDEyICszMzgsMjcg
QEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
LnNpZGViYXJUcmVlLmFwcGVuZENoaWxkKHByb2ZpbGVUeXBlLnRyZWVFbGVtZW50KTsKICAgICB9
LAogCi0gICAgX21ha2VLZXk6IGZ1bmN0aW9uKHRleHQsIHByb2ZpbGVUeXBlSWQpCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJv
ZmlsZVR5cGVJZAorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBfbWFrZVRp
dGxlS2V5OiBmdW5jdGlvbih0ZXh0LCBwcm9maWxlVHlwZUlkKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGVzY2FwZSh0ZXh0KSArICcvJyArIGVzY2FwZShwcm9maWxlVHlwZUlkKTsKICAgICB9LAog
CiAgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGlkCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IHByb2ZpbGVUeXBlSWQKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAg
X21ha2VLZXk6IGZ1bmN0aW9uKGlkLCBwcm9maWxlVHlwZUlkKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGlkICsgJy8nICsgZXNjYXBlKHByb2ZpbGVUeXBlSWQpOworICAgIH0sCisKKyAgICAvKioK
ICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfSBwcm9maWxlCiAgICAg
ICovCiAgICAgYWRkUHJvZmlsZUhlYWRlcjogZnVuY3Rpb24ocHJvZmlsZSkKQEAgLTM1Miw3ICsz
NzcsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleShwcm9maWxlLnVpZCwgdHlwZUlkKV0g
PSBwcm9maWxlOwogCiAgICAgICAgIGlmICghcHJvZmlsZS50aXRsZS5zdGFydHNXaXRoKFVzZXJJ
bml0aWF0ZWRQcm9maWxlTmFtZSkpIHsKLSAgICAgICAgICAgIHZhciBwcm9maWxlVGl0bGVLZXkg
PSB0aGlzLl9tYWtlS2V5KHByb2ZpbGUudGl0bGUsIHR5cGVJZCk7CisgICAgICAgICAgICB2YXIg
cHJvZmlsZVRpdGxlS2V5ID0gdGhpcy5fbWFrZVRpdGxlS2V5KHByb2ZpbGUudGl0bGUsIHR5cGVJ
ZCk7CiAgICAgICAgICAgICBpZiAoIShwcm9maWxlVGl0bGVLZXkgaW4gdGhpcy5fcHJvZmlsZUdy
b3VwcykpCiAgICAgICAgICAgICAgICAgdGhpcy5fcHJvZmlsZUdyb3Vwc1twcm9maWxlVGl0bGVL
ZXldID0gW107CiAKQEAgLTQwOSw2ICs0MzQsOSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMucmVjb3JkQnV0dG9uLnRpdGxlID0gdGhpcy5f
c2VsZWN0ZWRQcm9maWxlVHlwZS5idXR0b25Ub29sdGlwOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfSBwcm9maWxlCisgICAgICov
CiAgICAgX3JlbW92ZVByb2ZpbGVIZWFkZXI6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewogICAg
ICAgICB2YXIgdHlwZUlkID0gcHJvZmlsZS50eXBlSWQ7CkBAIC00MjQsNyArNDUyLDcgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9wcm9maWxlc0lkTWFwW3RoaXMuX21ha2VLZXkocHJvZmlsZS51aWQsIHR5
cGVJZCldOwogCi0gICAgICAgIHZhciBwcm9maWxlVGl0bGVLZXkgPSB0aGlzLl9tYWtlS2V5KHBy
b2ZpbGUudGl0bGUsIHR5cGVJZCk7CisgICAgICAgIHZhciBwcm9maWxlVGl0bGVLZXkgPSB0aGlz
Ll9tYWtlVGl0bGVLZXkocHJvZmlsZS50aXRsZSwgdHlwZUlkKTsKICAgICAgICAgZGVsZXRlIHRo
aXMuX3Byb2ZpbGVHcm91cHNbcHJvZmlsZVRpdGxlS2V5XTsKIAogICAgICAgICBzaWRlYmFyUGFy
ZW50LnJlbW92ZUNoaWxkKHByb2ZpbGUuX3Byb2ZpbGVzVHJlZUVsZW1lbnQpOwpAQCAtNDM4LDYg
KzQ2Niw5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuY2xvc2VWaXNpYmxlVmlldygpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfSBwcm9maWxlCisgICAgICovCiAg
ICAgc2hvd1Byb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewogICAgICAgICBpZiAoIXBy
b2ZpbGUgfHwgcHJvZmlsZS5pc1RlbXBvcmFyeSkKQEAgLTQ2Myw2ICs0OTQsMTAgQEAgV2ViSW5z
cGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMu
cHJvZmlsZVZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lci5hcHBlbmRDaGlsZChzdGF0dXNCYXJJ
dGVtc1tpXSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBl
SWQKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXI+fQor
ICAgICAqLwogICAgIGdldFByb2ZpbGVzOiBmdW5jdGlvbih0eXBlSWQpCiAgICAgewogICAgICAg
ICB2YXIgcmVzdWx0ID0gW107CkBAIC00NzUsNiArNTEwLDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9m
aWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGVJZAorICAgICAqIEByZXR1cm4g
e1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfQorICAgICAqLwogICAgIGZpbmRUZW1wb3JhcnlQ
cm9maWxlOiBmdW5jdGlvbih0eXBlSWQpCiAgICAgewogICAgICAgICB2YXIgcHJvZmlsZXNDb3Vu
dCA9IHRoaXMuX3Byb2ZpbGVzLmxlbmd0aDsKQEAgLTQ4NCw2ICs1MjMsOSBAQCBXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBudWxsOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZUlkCisgICAgICovCiAg
ICAgX3JlbW92ZVRlbXBvcmFyeVByb2ZpbGU6IGZ1bmN0aW9uKHR5cGVJZCkKICAgICB7CiAgICAg
ICAgIHZhciB0ZW1wb3JhcnlQcm9maWxlID0gdGhpcy5maW5kVGVtcG9yYXJ5UHJvZmlsZSh0eXBl
SWQpOwpAQCAtNDkxLDE2ICs1MzMsMjcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvZmlsZUhlYWRlcih0ZW1wb3Jh
cnlQcm9maWxlKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuUHJvZmlsZUhlYWRlcn0gcHJvZmlsZQorICAgICAqLwogICAgIGhhc1Byb2ZpbGU6IGZ1bmN0
aW9uKHByb2ZpbGUpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9wcm9maWxlc0lkTWFw
W3RoaXMuX21ha2VLZXkocHJvZmlsZS51aWQsIHByb2ZpbGUudHlwZUlkKV07CiAgICAgfSwKIAor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlSWQKKyAgICAgKiBAcGFyYW0ge251
bWJlcn0gdWlkCisgICAgICovCiAgICAgZ2V0UHJvZmlsZTogZnVuY3Rpb24odHlwZUlkLCB1aWQp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvZmlsZXNJZE1hcFt0aGlzLl9tYWtlS2V5
KHVpZCwgdHlwZUlkKV07CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSB1aWQKKyAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjaworICAgICAqLwogICAgIGxv
YWRIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKHVpZCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB2
YXIgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleSh1aWQsIFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpXTsKQEAgLTUyMyw2ICs1NzYs
MTAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB1aWQKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gY2h1bmsKKyAgICAgKi8KICAgICBfYWRkSGVhcFNuYXBzaG90Q2h1bms6
IGZ1bmN0aW9uKHVpZCwgY2h1bmspCiAgICAgewogICAgICAgICB2YXIgcHJvZmlsZSA9IHRoaXMu
X3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleSh1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNo
b3RQcm9maWxlVHlwZS5UeXBlSWQpXTsKQEAgLTUzMSw2ICs1ODgsOSBAQCBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHByb2ZpbGUucHJveHkucHVzaEpT
T05DaHVuayhjaHVuayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSB1aWQKKyAgICAgKi8KICAgICBfZmluaXNoSGVhcFNuYXBzaG90OiBmdW5jdGlvbih1aWQpCiAg
ICAgewogICAgICAgICB2YXIgcHJvZmlsZSA9IHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFr
ZUtleSh1aWQsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQpXTsK
QEAgLTU0OSwyMiArNjA5LDMxIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHByb2ZpbGUuc2lkZWJhckVsZW1lbnQuc3VidGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlBhcnNpbmdcdTIwMjYiKTsKICAgICB9LAogCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVmlld30gdmlldworICAgICAqLwogICAgIHNob3dW
aWV3OiBmdW5jdGlvbih2aWV3KQogICAgIHsKICAgICAgICAgdGhpcy5zaG93UHJvZmlsZSh2aWV3
LnByb2ZpbGUpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlw
ZUlkCisgICAgICovCiAgICAgZ2V0UHJvZmlsZVR5cGU6IGZ1bmN0aW9uKHR5cGVJZCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlVHlwZXNCeUlkTWFwW3R5cGVJZF07CiAgICAg
fSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKi8KICAgICBz
aG93UHJvZmlsZUZvclVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKICAgICAgICAgdmFyIG1hdGNo
ID0gdXJsLm1hdGNoKFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5VUkxSZWdFeHApOwogICAgICAg
ICBpZiAoIW1hdGNoKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLnNob3dQcm9m
aWxlKHRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleShtYXRjaFszXSwgbWF0Y2hbMV0p
XSk7CisgICAgICAgIHRoaXMuc2hvd1Byb2ZpbGUodGhpcy5fcHJvZmlsZXNJZE1hcFt0aGlzLl9t
YWtlS2V5KE51bWJlcihtYXRjaFszXSksIG1hdGNoWzFdKV0pOwogICAgIH0sCiAKICAgICBjbG9z
ZVZpc2libGVWaWV3OiBmdW5jdGlvbigpCkBAIC01NzQsMTMgKzY0MywxNyBAQCBXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLnZpc2li
bGVWaWV3OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZUlkCisgICAgICovCiAgICAgZGlzcGxheVRpdGxl
Rm9yUHJvZmlsZUxpbms6IGZ1bmN0aW9uKHRpdGxlLCB0eXBlSWQpCiAgICAgewogICAgICAgICB0
aXRsZSA9IHVuZXNjYXBlKHRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlLnN0YXJ0c1dpdGgoVXNl
ckluaXRpYXRlZFByb2ZpbGVOYW1lKSkgewogICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlByb2ZpbGUgJWQiLCB0aXRsZS5zdWJzdHJpbmcoVXNlckluaXRpYXRlZFBy
b2ZpbGVOYW1lLmxlbmd0aCArIDEpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZh
ciB0aXRsZUtleSA9IHRoaXMuX21ha2VLZXkodGl0bGUsIHR5cGVJZCk7CisgICAgICAgICAgICB2
YXIgdGl0bGVLZXkgPSB0aGlzLl9tYWtlVGl0bGVLZXkodGl0bGUsIHR5cGVJZCk7CiAgICAgICAg
ICAgICBpZiAoISh0aXRsZUtleSBpbiB0aGlzLl9wcm9maWxlR3JvdXBzRm9yTGlua3MpKQogICAg
ICAgICAgICAgICAgIHRoaXMuX3Byb2ZpbGVHcm91cHNGb3JMaW5rc1t0aXRsZUtleV0gPSAwOwog
CkBAIC04NzIsNiArOTQ1LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5wcm9maWxlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLnN0
eWxlLmxlZnQgPSBNYXRoLm1heCg1ICogMzEsIHdpZHRoKSArICJweCI7CiAgICAgfSwKIAorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9maWxlVHlwZQorICAgICAqIEBwYXJhbSB7
Ym9vbGVhbn0gaXNQcm9maWxpbmcKKyAgICAgKi8KICAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBm
dW5jdGlvbihwcm9maWxlVHlwZSwgaXNQcm9maWxpbmcpCiAgICAgewogICAgICAgICB2YXIgcHJv
ZmlsZVR5cGVPYmplY3QgPSB0aGlzLmdldFByb2ZpbGVUeXBlKHByb2ZpbGVUeXBlKTsKQEAgLTg5
OCw2ICs5NzUsMTAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuUHJvZmlsZXNIZWFwUHJvZmlsZVRha2Vu
LnJlY29yZCgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZG9u
ZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b3RhbAorICAgICAqLwogICAgIF9yZXBvcnRIZWFw
U25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCiAgICAgewogICAgICAgICB2
YXIgdGVtcG9yYXJ5UHJvZmlsZSA9IHRoaXMuZmluZFRlbXBvcmFyeVByb2ZpbGUoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCk7CkBAIC05MjIsMTEgKzEwMDMsNiBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyID0gZnVuY3Rpb24ocHJvZmlsZXIpCiB9
CiAKIFdlYkluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewotICAgIHJl
c2V0UHJvZmlsZXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9y
ZXNldCgpOwotICAgIH0sCi0KICAgICAvKioKICAgICAgKiBAcGFyYW0ge1Byb2ZpbGVyQWdlbnQu
UHJvZmlsZUhlYWRlcn0gcHJvZmlsZQogICAgICAqLwpAQCAtOTM2LDIxICsxMDEyLDQ3IEBAIFdl
Ykluc3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9wcm9maWxlci5hZGRQcm9maWxlSGVhZGVyKHByb2ZpbGVUeXBlLmNyZWF0ZVByb2ZpbGUocHJv
ZmlsZSkpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gdWlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNodW5rCisgICAgICovCiAg
ICAgYWRkSGVhcFNuYXBzaG90Q2h1bms6IGZ1bmN0aW9uKHVpZCwgY2h1bmspCiAgICAgewogICAg
ICAgICB0aGlzLl9wcm9maWxlci5fYWRkSGVhcFNuYXBzaG90Q2h1bmsodWlkLCBjaHVuayk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7bnVtYmVy
fSB1aWQKKyAgICAgKi8KICAgICBmaW5pc2hIZWFwU25hcHNob3Q6IGZ1bmN0aW9uKHVpZCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9maW5pc2hIZWFwU25hcHNob3QodWlkKTsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICogQHBhcmFtIHtib29sZWFu
fSBpc1Byb2ZpbGluZworICAgICAqLwogICAgIHNldFJlY29yZGluZ1Byb2ZpbGU6IGZ1bmN0aW9u
KGlzUHJvZmlsaW5nKQogICAgIHsKICAgICAgICAgdGhpcy5fcHJvZmlsZXIuc2V0UmVjb3JkaW5n
UHJvZmlsZShXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLCBpc1Byb2ZpbGluZyk7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqLworICAgIHJlc2V0
UHJvZmlsZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9yZXNl
dCgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0g
e251bWJlcn0gZG9uZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b3RhbAorICAgICAqLwogICAg
IHJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzOiBmdW5jdGlvbihkb25lLCB0b3RhbCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzcyhkb25l
LCB0b3RhbCk7Cg==
</data>
<flag name="review"
          id="146064"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>