<?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>97471</bug_id>
          
          <creation_ts>2012-09-24 11:39:32 -0700</creation_ts>
          <short_desc>Web Inspector: Cookie info in Network Resources Cookies tab shows &quot;Invalid Date&quot;</short_desc>
          <delta_ts>2012-11-02 01:53:25 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>otcheung</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>726882</commentid>
    <comment_count>0</comment_count>
    <who name="">otcheung</who>
    <bug_when>2012-09-24 11:39:32 -0700</bug_when>
    <thetext>Cookietable.js is trying to create a new date object using another date object returned from CookieParser&apos;s cookie.expires method. This causes an &quot;Invalid Date&quot; error to show up when we view the cookie table under network resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726885</commentid>
    <comment_count>1</comment_count>
      <attachid>165417</attachid>
    <who name="">otcheung</who>
    <bug_when>2012-09-24 11:45:21 -0700</bug_when>
    <thetext>Created attachment 165417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727605</commentid>
    <comment_count>2</comment_count>
      <attachid>165417</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 07:06:50 -0700</bug_when>
    <thetext>Comment on attachment 165417
Patch

Clearing flags on attachment: 165417

Committed r129502: &lt;http://trac.webkit.org/changeset/129502&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727606</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 07:06:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728472</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-26 06:16:56 -0700</bug_when>
    <thetext>Committed r129628: &lt;http://trac.webkit.org/changeset/129628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728476</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-26 06:19:17 -0700</bug_when>
    <thetext>Reopening since the changed was rolled out in http://trac.webkit.org/changeset/129628 as it caused an exception in WebInspector.CookiesTable._createGridNode:

Uncaught TypeError: Property &apos;expires&apos; of object #&lt;Object&gt; is not a function CookiesTable.js:205
WebInspector.CookiesTable._createGridNode CookiesTable.js:205
WebInspector.CookiesTable._populateNode CookiesTable.js:138
WebInspector.CookiesTable._rebuildTable CookiesTable.js:121
WebInspector.CookiesTable.setCookies CookiesTable.js:92
WebInspector.CookieItemsView._updateWithCookies CookieItemsView.js:93
mycallback CookieItemsView.js:216
InspectorBackendClass.dispatch InspectorBackend.js:186


cookie object in the failing method comes from protocol and doesn&apos;t have &apos;expires&apos; method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728591</commentid>
    <comment_count>6</comment_count>
    <who name="">otcheung</who>
    <bug_when>2012-09-26 08:29:01 -0700</bug_when>
    <thetext>Yury, what site did you visit to reproduce this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756180</commentid>
    <comment_count>7</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-01 06:55:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Yury, what site did you visit to reproduce this issue?

This was actually not the particular site issue but the problem with the presentation of cookies in the resources panel. The reason was that the cookies that are loaded via protocol form back-end are stored in different format and this ambiguity causes weird behavior.

I am gonna reuse this bug to upload a complex patch (partly based on yours) that fixes overall problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756196</commentid>
    <comment_count>8</comment_count>
      <attachid>171838</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-01 07:11:51 -0700</bug_when>
    <thetext>Created attachment 171838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756331</commentid>
    <comment_count>9</comment_count>
      <attachid>171870</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-01 09:17:40 -0700</bug_when>
    <thetext>Created attachment 171870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756345</commentid>
    <comment_count>10</comment_count>
      <attachid>171870</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-01 09:36:19 -0700</bug_when>
    <thetext>Comment on attachment 171870
Patch

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

&gt; Source/WebCore/inspector/front-end/CookieParser.js:259
&gt; +    get expires()

Please always use functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756980</commentid>
    <comment_count>11</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-02 01:53:25 -0700</bug_when>
    <thetext>Committed r133273: &lt;http://trac.webkit.org/changeset/133273&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165417</attachid>
            <date>2012-09-24 11:45:21 -0700</date>
            <delta_ts>2012-11-01 07:11:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97471-20120924144442.patch</filename>
            <type>text/plain</type>
            <size>3359</size>
            <attacher>otcheung</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUwMzZhZmNmZjA2MDVl
NWQ1ZDZkOWNkY2JjYjI0ZGNlYjY2MGIwZC4uMTZlMGIxOTVmOTJjMmIzYTA1NjQ5Nzg5NmE2Y2I3
YjcyOTBiYjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTI0ICBPdHRv
IERlcmVrIENoZXVuZyAgPG90Y2hldW5nQHJpbS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ29va2llIGluZm8gaW4gTmV0d29yayBSZXNvdXJjZXMgQ29va2llcyB0YWIgc2hvd3MgIklu
dmFsaWQgRGF0ZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3NDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIGlzIHRyeWluZyB0byBjcmVhdGUgYSBuZXcg
RGF0ZSBvYmplY3QKKyAgICAgICAgdXNpbmcgYW5vdGhlciBEYXRlIG9iamVjdCwgd2hpY2ggaXMg
aW52YWxpZC4gQWxzbywgRGF0ZS50b0dNVFN0cmluZyBpcworICAgICAgICBkZXByZWNhdGVkLgor
CisgICAgICAgIFRoZSBmaXggcmVwbGFjZXMgdG9HTVRTdHJpbmcgd2l0aCB0b1VUQ1N0cmluZyBh
bmQgZml4ZXMgY29va2llLmV4cGlyZQorICAgICAgICBzbyBpdCB3b24ndCBjcmFzaCB3aGVuIGFu
IGVtcHR5IHJlcXVlc3REYXRlIGlzIHBhc3NlZCBpbi4KKworICAgICAgICBGb2xsb3dpbmcgUkZD
IDYyNjUsIE1heC1hZ2UgYXR0cmlidXRlcyBub3cgdGFrZSBwcmVjZWRlbmNlIG92ZXIgZXhwaXJl
c2kKKyAgICAgICAgYXR0cmlidXRlIGluIENvb2tpZVBhcnNlci4KKworICAgICAgICBNYW51YWwg
dGVzdGluZyBvbiBpbnNwZWN0b3IgdG8gbWFrZSBzdXJlIHRoZSBDb29raWVzVGFibGUgaXMgcHJv
cGVybHkgZ2VuZXJhdGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVQ
YXJzZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llLnByb3RvdHlwZS5leHBpcmVz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZXNUYWJsZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlLl9jcmVhdGVHcmlkTm9kZSk6
CisKIDIwMTItMDktMTggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAogICAgICAgICBbRUZMXSBtaW4tZGV2aWNlLXdpZHRoIGZhaWx1cmVzIGluIG1lZGlh
IHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
b2tpZVBhcnNlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2ll
UGFyc2VyLmpzCmluZGV4IDNjM2YzNzlhMTFjOTI2YThmYTgzMGVkODQ5YmM4MTc3ZDZiODFhODMu
LjllZDE5MWI2ZDc2M2Q3ZWIzMDBiNWZlYzIxNzk5MGY2MTlhZjQzOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llUGFyc2VyLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llUGFyc2VyLmpzCkBAIC0yNTUs
OCArMjU1LDE2IEBAIFdlYkluc3BlY3Rvci5Db29raWUucHJvdG90eXBlID0gewogICAgICAqLyAK
ICAgICBleHBpcmVzOiBmdW5jdGlvbihyZXF1ZXN0RGF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9hdHRyaWJ1dGVzWyJleHBpcmVzIl0gPyBuZXcgRGF0ZSh0aGlzLl9hdHRyaWJ1dGVz
WyJleHBpcmVzIl0pIDoKLSAgICAgICAgICAgICh0aGlzLl9hdHRyaWJ1dGVzWyJtYXgtYWdlIl0g
PyBuZXcgRGF0ZShyZXF1ZXN0RGF0ZS5nZXRUaW1lKCkgKyAxMDAwICogdGhpcy5fYXR0cmlidXRl
c1sibWF4LWFnZSJdKSA6IG51bGwpOworICAgICAgICAvLyBSRkMgNjI2NSBpbmRpY2F0ZXMgdGhh
dCB0aGUgbWF4LWFnZSBhdHRyaWJ1dGUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBleHBpcmVz
IGF0dHJpYnV0ZQorICAgICAgICBpZiAodGhpcy5fYXR0cmlidXRlc1sibWF4LWFnZSJdKSB7Cisg
ICAgICAgICAgICB2YXIgdGFyZ2V0RGF0ZSA9IHJlcXVlc3REYXRlID09PSBudWxsID8gbmV3IERh
dGUoKSA6IHJlcXVlc3REYXRlOworICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRhcmdldERh
dGUuZ2V0VGltZSgpICsgMTAwMCAqIHRoaXMuX2F0dHJpYnV0ZXNbIm1heC1hZ2UiXSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAodGhpcy5fYXR0cmlidXRlc1siZXhwaXJlcyJdKQorICAgICAg
ICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuX2F0dHJpYnV0ZXNbImV4cGlyZXMiXSk7CisKKyAg
ICAgICAgcmV0dXJuIG51bGw7CiAgICAgfSwKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVzVGFibGUuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZXNUYWJsZS5qcwppbmRleCBkZmNmYTBlNWJh
YTkwY2U5ODJmYjYwZGVhYWNhZTA5MmE3ZTgzNTc5Li44ODFlOWU2Njg1ODdmNGRmMzA4NTg3Njcy
NzFiMmY3NjdmNTAzMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0Nvb2tpZXNUYWJsZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0Nvb2tpZXNUYWJsZS5qcwpAQCAtMjAyLDcgKzIwMiw3IEBAIFdlYkluc3BlY3Rvci5D
b29raWVzVGFibGUucHJvdG90eXBlID0gewogICAgICAgICBkYXRhWzJdID0gY29va2llLmRvbWFp
biB8fCAiIjsKICAgICAgICAgZGF0YVszXSA9IGNvb2tpZS5wYXRoIHx8ICIiOwogICAgICAgICBk
YXRhWzRdID0gY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db29raWUuVHlwZS5SZXF1ZXN0
ID8gIiIgOgotICAgICAgICAgICAgKGNvb2tpZS5zZXNzaW9uID8gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTZXNzaW9uIikgOiBuZXcgRGF0ZShjb29raWUuZXhwaXJlcykudG9HTVRTdHJpbmcoKSk7
CisgICAgICAgICAgICAoY29va2llLnNlc3Npb24gPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNl
c3Npb24iKSA6IGNvb2tpZS5leHBpcmVzKCkudG9VVENTdHJpbmcoKSk7CiAgICAgICAgIGRhdGFb
NV0gPSBjb29raWUuc2l6ZTsKICAgICAgICAgY29uc3QgY2hlY2ttYXJrID0gIlx1MjcxMyI7CiAg
ICAgICAgIGRhdGFbNl0gPSAoY29va2llLmh0dHBPbmx5ID8gY2hlY2ttYXJrIDogIiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171838</attachid>
            <date>2012-11-01 07:11:51 -0700</date>
            <delta_ts>2012-11-01 09:17:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97471-20121101181012.patch</filename>
            <type>text/plain</type>
            <size>20091</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThjMDVlOGM0NmE3ZTQ0
YjE0YjQzNjkyMWEyYTljMDRiNGFiOGMyYS4uYzExYmE3MzA2M2JhNzkyYTczMmZjYTIzZTYyZTQ0
ZDBkNmUzNzExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDEyLTExLTAxICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENvb2tpZSBpbmZvIGluIE5ldHdvcmsgUmVzb3VyY2VzIENvb2tpZXMgdGFiIHNob3dzICJJ
bnZhbGlkIERhdGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgcGFydGx5IGJhc2VkIG9uIHBhdGNoIGJ5IE90dG8gRGVyZWsgQ2hl
dW5nIDxvdGNoZXVuZ0ByaW0uY29tPi4KKyAgICAgICAgUmVmYWN0b3JlZCBDb29raWVQYXJzZXIg
c28gdGhhdCBhbGwgY29va2llcyBpbiBmcm9udC1lbmQgd2VyZSBXZWJJbnNwZWN0b3IuQ29va2ll
IG9iamVjdC4KKyAgICAgICAgQ29va2llIHRhYmxlIGNhbiBub3cgc2hvdyBNYXgtQWdlIGFzIHdl
bGwgYXMgRXhwaXJlcyBhdHRyaWJ1dGUgb2YgYSBjb29raWUuCisgICAgICAgIEZpeGVkIGV4cGly
ZXNEYXRlIGNhbGN1bGF0aW9uLgorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNpemVSdWxlLnByb3RvdHlw
ZS5fYXZlcmFnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Db29raWVTaXpl
UnVsZS5wcm90b3R5cGUuX21heCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5T
dGF0aWNDb29raWVsZXNzUnVsZS5wcm90b3R5cGUuX2NvbGxlY3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9maWx0ZXJDb29raWVzRm9yRG9t
YWluKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZVBhcnNlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVQYXJzZXIucHJvdG90eXBlLl9mbHVzaENvb2tpZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llUGFyc2VyLnByb3RvdHlwZS5fYWRkQ29va2ll
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWUucHJvdG90eXBlLmdldCBzZXNzaW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWUucHJvdG90eXBlLmdldCBleHBpcmVzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db29raWUucHJvdG90eXBlLmdldCBtYXhBZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvb2tpZS5wcm90b3R5cGUuc2l6ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29va2llLnByb3RvdHlwZS5zZXRTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b29raWUucHJvdG90eXBlLmV4cGlyZXNEYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29r
aWVzLmdldENvb2tpZXNBc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llcy5idWls
ZENvb2tpZXNGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVzLmJ1aWxk
Q29va2llUHJvdG9jb2xPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXMuY29v
a2llRG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0Nvb2tpZXNUYWJsZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVzVGFi
bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuX3RvdGFs
U2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5fc29y
dENvb2tpZXMuZXhwaXJlc0NvbXBhcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNU
YWJsZS5wcm90b3R5cGUuX3NvcnRDb29raWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29r
aWVzVGFibGUucHJvdG90eXBlLl9jcmVhdGVHcmlkTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9IQVJFbnRyeS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IQVJFbnRyeS5w
cm90b3R5cGUuX2J1aWxkQ29va2llKToKKworMjAxMi0xMS0wMSAgVnNldm9sb2QgVmxhc292ICA8
dnNldmlrQGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgb2Jz
b2xldGUgY29kZSBmcm9tIEphdmFTY3JpcHRTb3VyY2VGcmFtZQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTk0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJD
b3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA1MTA1NWYxOTEyZTQ5
ZDE5Nzc0NDJlYmQ3MTY5NzA4Mzk3NWRiMDYxLi4zZTE0MzI4OThiMTMxNGVkZmNjNjY5YTFlNGU4
MmYyMTljMWNhZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzCkBAIC0xODQsNyArMTg0LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siRXZl
bnQiXSA9ICJFdmVudCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFeGNsdWRlIHNlbGVjdGVkIGZ1bmN0
aW9uLiJdID0gIkV4Y2x1ZGUgc2VsZWN0ZWQgZnVuY3Rpb24uIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkV4ZWN1dGUgY29tbWFuZCJdID0gIkV4ZWN1dGUgY29tbWFuZCI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJFeHBhbmQvY29sbGFwc2UiXSA9ICJFeHBhbmQvY29sbGFwc2UiOwotbG9jYWxpemVkU3RyaW5n
c1siRXhwaXJlcyJdID0gIkV4cGlyZXMiOworbG9jYWxpemVkU3RyaW5nc1siRXhwaXJlcyAvIE1h
eC1BZ2UiXSA9ICJFeHBpcmVzIC8gTWF4LUFnZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGaWxlIHNp
emUiXSA9ICJGaWxlIHNpemUiOwogbG9jYWxpemVkU3RyaW5nc1siRml0IGluIHdpbmRvdyJdID0g
IkZpdCBpbiB3aW5kb3ciOwogbG9jYWxpemVkU3RyaW5nc1siRm9yY2UgRWxlbWVudCBTdGF0ZSJd
ID0gIkZvcmNlIEVsZW1lbnQgU3RhdGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCmluZGV4IGZiY2Y3YmRlMmEzZDcwMzk4YjNjNDY0NWY3
NjA3ODgxNTU5M2UzZTMuLmZkZTc1NzE1MTk3N2NiM2UyMjY2OTkxYTNhNGZkMTI4ZTA1NjZiODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxl
cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMu
anMKQEAgLTEyNjksNyArMTI2OSw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNp
emVSdWxlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciB0b3RhbCA9IDA7CiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29va2llQXJyYXkubGVuZ3RoOyArK2kpCi0gICAgICAg
ICAgICB0b3RhbCArPSBjb29raWVBcnJheVtpXS5zaXplOworICAgICAgICAgICAgdG90YWwgKz0g
Y29va2llQXJyYXlbaV0uc2l6ZSgpOwogICAgICAgICByZXR1cm4gY29va2llQXJyYXkubGVuZ3Ro
ID8gTWF0aC5yb3VuZCh0b3RhbCAvIGNvb2tpZUFycmF5Lmxlbmd0aCkgOiAwOwogICAgIH0sCiAK
QEAgLTEyNzcsNyArMTI3Nyw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNpemVS
dWxlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciByZXN1bHQgPSAwOwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNvb2tpZUFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgcmVzdWx0ID0gTWF0aC5tYXgoY29va2llQXJyYXlbaV0uc2l6ZSwgcmVzdWx0KTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IE1hdGgubWF4KGNvb2tpZUFycmF5W2ldLnNpemUoKSwgcmVzdWx0KTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LAogCkBAIC0xNDAzLDcgKzE0MDMsNyBAQCBX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5TdGF0aWNDb29raWVsZXNzUnVsZS5wcm90b3R5cGUgPSB7
CiAKICAgICBfY29sbGVjdG9yQ2FsbGJhY2s6IGZ1bmN0aW9uKG1hdGNoaW5nUmVzb3VyY2VEYXRh
LCByZXF1ZXN0LCBjb29raWUpCiAgICAgewotICAgICAgICBtYXRjaGluZ1Jlc291cmNlRGF0YVty
ZXF1ZXN0LnVybF0gPSAobWF0Y2hpbmdSZXNvdXJjZURhdGFbcmVxdWVzdC51cmxdIHx8IDApICsg
Y29va2llLnNpemU7CisgICAgICAgIG1hdGNoaW5nUmVzb3VyY2VEYXRhW3JlcXVlc3QudXJsXSA9
IChtYXRjaGluZ1Jlc291cmNlRGF0YVtyZXF1ZXN0LnVybF0gfHwgMCkgKyBjb29raWUuc2l6ZSgp
OwogICAgIH0sCiAKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tp
ZVJ1bGVCYXNlLnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcwppbmRleCAwOTQxODI3YjY0YThjOThiMmFiYmMx
MmEzMzhhMTRjZTY4Y2UyNTY1Li4zMWRiNmY1MDRmODcyZWZjYjcxNzcwNDk5ZWUzYTkxNzNjNGQx
YjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tp
ZUl0ZW1zVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
b2tpZUl0ZW1zVmlldy5qcwpAQCAtNzQsNiArNzQsMTAgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0
ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db29raWVzLmdldENv
b2tpZXNBc3luYyh0aGlzLl91cGRhdGVXaXRoQ29va2llcy5iaW5kKHRoaXMpKTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLkNvb2tpZT59IGFs
bENvb2tpZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWR2YW5jZWQKKyAgICAgKi8KICAg
ICBfdXBkYXRlV2l0aENvb2tpZXM6IGZ1bmN0aW9uKGFsbENvb2tpZXMsIGlzQWR2YW5jZWQpCiAg
ICAgewogICAgICAgICB0aGlzLl9jb29raWVzID0gaXNBZHZhbmNlZCA/IHRoaXMuX2ZpbHRlckNv
b2tpZXNGb3JEb21haW4oYWxsQ29va2llcykgOiBhbGxDb29raWVzOwpAQCAtMTAwLDYgKzEwNCw5
IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5D
b29raWU+fSBhbGxDb29raWVzCisgICAgICovCiAgICAgX2ZpbHRlckNvb2tpZXNGb3JEb21haW46
IGZ1bmN0aW9uKGFsbENvb2tpZXMpCiAgICAgewogICAgICAgICB2YXIgY29va2llcyA9IFtdOwpA
QCAtMTE2LDcgKzEyMyw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsQ29va2llcy5sZW5ndGg7ICsr
aSkgewogICAgICAgICAgICAgdmFyIHB1c2hlZCA9IGZhbHNlOwotICAgICAgICAgICAgdmFyIHNp
emUgPSBhbGxDb29raWVzW2ldLnNpemU7CisgICAgICAgICAgICB2YXIgc2l6ZSA9IGFsbENvb2tp
ZXNbaV0uc2l6ZSgpOwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXNvdXJjZVVS
THNGb3JEb2N1bWVudFVSTC5sZW5ndGg7ICsraikgewogICAgICAgICAgICAgICAgIHZhciByZXNv
dXJjZVVSTCA9IHJlc291cmNlVVJMc0ZvckRvY3VtZW50VVJMW2pdOwogICAgICAgICAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IuQ29va2llcy5jb29raWVNYXRjaGVzUmVzb3VyY2VVUkwoYWxsQ29v
a2llc1tpXSwgcmVzb3VyY2VVUkwpKSB7CkBAIC0xMzEsNiArMTM4LDkgQEAgV2ViSW5zcGVjdG9y
LkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjb29raWVzOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db29raWV9IGNv
b2tpZQorICAgICAqLwogICAgIF9kZWxldGVDb29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKICAgICB7
CiAgICAgICAgIFBhZ2VBZ2VudC5kZWxldGVDb29raWUoY29va2llLm5hbWUsIHRoaXMuX2Nvb2tp
ZURvbWFpbik7CkBAIC0xODAsNiArMTkwLDkgQEAgV2ViSW5zcGVjdG9yLlNpbXBsZUNvb2tpZXNU
YWJsZSA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLlNpbXBsZUNvb2tpZXNUYWJsZS5w
cm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9y
LkNvb2tpZT59IGNvb2tpZXMKKyAgICAgKi8KICAgICBzZXRDb29raWVzOiBmdW5jdGlvbihjb29r
aWVzKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQucm9vdE5vZGUoKS5yZW1vdmVDaGls
ZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b29raWVQYXJzZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tp
ZVBhcnNlci5qcwppbmRleCBhMzY5YWM4ZDlkYjg1MDA0ZTlkYTVkZTVmYjc3ZWVlYWViNDE2M2My
Li4yZWJmMDQ5MmU3OGZkYzA2NzQ1MGZmMGQ0NWFkY2Q4OWFmMDU0ZTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZVBhcnNlci5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZVBhcnNlci5qcwpAQCAtMTIy
LDcgKzEyMiw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVQYXJzZXIucHJvdG90eXBlID0gewogICAg
IF9mbHVzaENvb2tpZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2xhc3RD
b29raWUpCi0gICAgICAgICAgICB0aGlzLl9sYXN0Q29va2llLnNpemUgPSB0aGlzLl9vcmlnaW5h
bElucHV0TGVuZ3RoIC0gdGhpcy5faW5wdXQubGVuZ3RoIC0gdGhpcy5fbGFzdENvb2tpZVBvc2l0
aW9uOworICAgICAgICAgICAgdGhpcy5fbGFzdENvb2tpZS5zZXRTaXplKHRoaXMuX29yaWdpbmFs
SW5wdXRMZW5ndGggLSB0aGlzLl9pbnB1dC5sZW5ndGggLSB0aGlzLl9sYXN0Q29va2llUG9zaXRp
b24pOwogICAgICAgICB0aGlzLl9sYXN0Q29va2llID0gbnVsbDsKICAgICB9LAogCkBAIC0xNjgs
NyArMTY4LDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVBhcnNlci5wcm90b3R5cGUgPSB7CiAgICAg
X2FkZENvb2tpZTogZnVuY3Rpb24oa2V5VmFsdWUsIHR5cGUpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fbGFzdENvb2tpZSkKLSAgICAgICAgICAgIHRoaXMuX2xhc3RDb29raWUuc2l6ZSA9IGtl
eVZhbHVlLnBvc2l0aW9uIC0gdGhpcy5fbGFzdENvb2tpZVBvc2l0aW9uOworICAgICAgICAgICAg
dGhpcy5fbGFzdENvb2tpZS5zZXRTaXplKGtleVZhbHVlLnBvc2l0aW9uIC0gdGhpcy5fbGFzdENv
b2tpZVBvc2l0aW9uKTsKICAgICAgICAgLy8gTW96aWxsYSBidWcgMTY5MDkxOiBNb3ppbGxhLCBJ
RSBhbmQgQ2hyb21lIHRyZWF0IHNpbmdsZSB0b2tlbiAody9vICI9IikgYXMKICAgICAgICAgLy8g
c3BlY2lmeWluZyBhIHZhbHVlIGZvciBhIGNvb2tpZSB3aXRoIGVtcHR5IG5hbWUuCiAgICAgICAg
IHRoaXMuX2xhc3RDb29raWUgPSBrZXlWYWx1ZS52YWx1ZSA/IG5ldyBXZWJJbnNwZWN0b3IuQ29v
a2llKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUsIHR5cGUpIDoKQEAgLTE5OCw2ICsxOTgs
OSBAQCBXZWJJbnNwZWN0b3IuQ29va2llUGFyc2VyLnBhcnNlU2V0Q29va2llID0gZnVuY3Rpb24o
aGVhZGVyKQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZQorICogQHBhcmFtIHtudW1iZXI9fSB0eXBlCiAgKi8K
IFdlYkluc3BlY3Rvci5Db29raWUgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgdHlwZSkKIHsKQEAg
LTIzMCw4ICsyMzMsOCBAQCBXZWJJbnNwZWN0b3IuQ29va2llLnByb3RvdHlwZSA9IHsKICAgICBn
ZXQgc2Vzc2lvbigpCiAgICAgewogICAgICAgICAvLyBSRkMgMjk2NSBzdWdnZXN0cyB1c2luZyBE
aXNjYXJkIGF0dHJpYnV0ZSB0byBtYXJrIHNlc3Npb24gY29va2llcywgYnV0IHRoaXMgZG9lcyBu
b3Qgc2VlbSB0byBiZSB3aWRlbHkgdXNlZC4KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGFic2VuY2Ug
b2YgZXhwbGljaXR5IG1heC1hZ2Ugb3IgZXhwaXJ5IGRhdGUgaW5zdGVhZC4KLSAgICAgICAgcmV0
dXJuICAhKCJleHBpcmVzIiBpbiB0aGlzLl9hdHRyaWJ1dGVzIHx8ICJtYXgtYWdlIiBpbiB0aGlz
Ll9hdHRyaWJ1dGVzKTsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGFic2VuY2Ugb2YgZXhwbGljaXRs
eSBtYXgtYWdlIG9yIGV4cGlyeSBkYXRlIGluc3RlYWQuCisgICAgICAgIHJldHVybiAhKCJleHBp
cmVzIiBpbiB0aGlzLl9hdHRyaWJ1dGVzIHx8ICJtYXgtYWdlIiBpbiB0aGlzLl9hdHRyaWJ1dGVz
KTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yNTEsMTIgKzI1NCw1MiBAQCBXZWJJbnNwZWN0b3Iu
Q29va2llLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7
c3RyaW5nfQorICAgICAqLyAKKyAgICBnZXQgZXhwaXJlcygpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fYXR0cmlidXRlc1siZXhwaXJlcyJdOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovIAorICAgIGdldCBtYXhBZ2UoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXNbIm1heC1hZ2UiXTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLyAKKyAgICBzaXplOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAgKi8gCisgICAgc2V0U2l6ZTogZnVu
Y3Rpb24oc2l6ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NpemUgPSBzaXplOworICAgIH0sCisK
KyAgICAvKioKICAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICAqLyAKLSAgICBleHBpcmVzOiBm
dW5jdGlvbihyZXF1ZXN0RGF0ZSkKKyAgICBleHBpcmVzRGF0ZTogZnVuY3Rpb24ocmVxdWVzdERh
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlc1siZXhwaXJlcyJdID8g
bmV3IERhdGUodGhpcy5fYXR0cmlidXRlc1siZXhwaXJlcyJdKSA6Ci0gICAgICAgICAgICAodGhp
cy5fYXR0cmlidXRlc1sibWF4LWFnZSJdID8gbmV3IERhdGUocmVxdWVzdERhdGUuZ2V0VGltZSgp
ICsgMTAwMCAqIHRoaXMuX2F0dHJpYnV0ZXNbIm1heC1hZ2UiXSkgOiBudWxsKTsKKyAgICAgICAg
Ly8gUkZDIDYyNjUgaW5kaWNhdGVzIHRoYXQgdGhlIG1heC1hZ2UgYXR0cmlidXRlIHRha2VzIHBy
ZWNlZGVuY2Ugb3ZlciB0aGUgZXhwaXJlcyBhdHRyaWJ1dGUKKyAgICAgICAgaWYgKHRoaXMubWF4
QWdlKSB7CisgICAgICAgICAgICB2YXIgdGFyZ2V0RGF0ZSA9IHJlcXVlc3REYXRlID09PSBudWxs
ID8gbmV3IERhdGUoKSA6IHJlcXVlc3REYXRlOworICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRl
KHRhcmdldERhdGUuZ2V0VGltZSgpICsgMTAwMCAqIHRoaXMubWF4QWdlKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0aGlzLmV4cGlyZXMpCisgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUo
dGhpcy5leHBpcmVzKTsKKworICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9LAogCiAgICAgLyoq
CkBAIC0yNjksNyArMzEyLDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZS5wcm90b3R5cGUgPSB7CiAK
ICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IAotICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSB2YWx1ZSAKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IHZhbHVlIAogICAgICAqLyAKICAg
ICBhZGRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGtleSwgdmFsdWUpCiAgICAgewpAQCAtMjg2LDYgKzMy
OSwxMSBAQCBXZWJJbnNwZWN0b3IuQ29va2llcyA9IHt9CiAKIFdlYkluc3BlY3Rvci5Db29raWVz
LmdldENvb2tpZXNBc3luYyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogeworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvciAKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxX
ZWJJbnNwZWN0b3IuQ29va2llPn0gY29va2llcyAKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29v
a2llc1N0cmluZyAKKyAgICAgKi8gCiAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgY29v
a2llcywgY29va2llc1N0cmluZykKICAgICB7CiAgICAgICAgIGlmIChlcnJvcikKQEAgLTI5Mywx
MiArMzQxLDE2IEBAIFdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3luYyA9IGZ1bmN0
aW9uKGNhbGxiYWNrKQogICAgICAgICBpZiAoY29va2llc1N0cmluZykKICAgICAgICAgICAgIGNh
bGxiYWNrKFdlYkluc3BlY3Rvci5Db29raWVzLmJ1aWxkQ29va2llc0Zyb21TdHJpbmcoY29va2ll
c1N0cmluZyksIGZhbHNlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbGJhY2soY29v
a2llcywgdHJ1ZSk7CisgICAgICAgICAgICBjYWxsYmFjayhjb29raWVzLm1hcChXZWJJbnNwZWN0
b3IuQ29va2llcy5idWlsZENvb2tpZVByb3RvY29sT2JqZWN0KSwgdHJ1ZSk7CiAgICAgfQogCiAg
ICAgUGFnZUFnZW50LmdldENvb2tpZXMobXljYWxsYmFjayk7CiB9CiAKKy8qKgorICogQHBhcmFt
IHtzdHJpbmd9IHJhd0Nvb2tpZVN0cmluZyAKKyAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0
b3IuQ29va2llPn0gCisgKi8gCiBXZWJJbnNwZWN0b3IuQ29va2llcy5idWlsZENvb2tpZXNGcm9t
U3RyaW5nID0gZnVuY3Rpb24ocmF3Q29va2llU3RyaW5nKQogewogICAgIHZhciByYXdDb29raWVz
ID0gcmF3Q29va2llU3RyaW5nLnNwbGl0KC87XHMqLyk7CkBAIC0zMDYsMTggKzM1OCw0MyBAQCBX
ZWJJbnNwZWN0b3IuQ29va2llcy5idWlsZENvb2tpZXNGcm9tU3RyaW5nID0gZnVuY3Rpb24ocmF3
Q29va2llU3RyaW5nKQogCiAgICAgaWYgKCEoL15ccyokLy50ZXN0KHJhd0Nvb2tpZVN0cmluZykp
KSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Q29va2llcy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgdmFyIGNvb2tpZSA9IHJhd0Nvb2tpZXNbaV07Ci0gICAgICAgICAgICB2
YXIgZGVsaW1JbmRleCA9IGNvb2tpZS5pbmRleE9mKCI9Iik7Ci0gICAgICAgICAgICB2YXIgbmFt
ZSA9IGNvb2tpZS5zdWJzdHJpbmcoMCwgZGVsaW1JbmRleCk7Ci0gICAgICAgICAgICB2YXIgdmFs
dWUgPSBjb29raWUuc3Vic3RyaW5nKGRlbGltSW5kZXggKyAxKTsKKyAgICAgICAgICAgIHZhciBy
YXdDb29raWUgPSByYXdDb29raWVzW2ldOworICAgICAgICAgICAgdmFyIGRlbGltSW5kZXggPSBy
YXdDb29raWUuaW5kZXhPZigiPSIpOworICAgICAgICAgICAgdmFyIG5hbWUgPSByYXdDb29raWUu
c3Vic3RyaW5nKDAsIGRlbGltSW5kZXgpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gcmF3Q29v
a2llLnN1YnN0cmluZyhkZWxpbUluZGV4ICsgMSk7CiAgICAgICAgICAgICB2YXIgc2l6ZSA9IG5h
bWUubGVuZ3RoICsgdmFsdWUubGVuZ3RoOwotICAgICAgICAgICAgY29va2llcy5wdXNoKHsgbmFt
ZTogbmFtZSwgdmFsdWU6IHZhbHVlLCBzaXplOiBzaXplIH0pOworICAgICAgICAgICAgdmFyIGNv
b2tpZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29va2llKG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvb2tpZS5zZXRTaXplKHNpemUpOworICAgICAgICAgICAgY29va2llcy5wdXNoKGNvb2tpZSk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gY29va2llczsKIH0KIAorLyoqCisgKiBA
cGFyYW0ge09iamVjdH0gcHJvdG9jb2xDb29raWUgCisgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
Q29va2llfSAKKyAqLyAKK1dlYkluc3BlY3Rvci5Db29raWVzLmJ1aWxkQ29va2llUHJvdG9jb2xP
YmplY3QgPSBmdW5jdGlvbihwcm90b2NvbENvb2tpZSkKK3sKKyAgICB2YXIgY29va2llID0gbmV3
IFdlYkluc3BlY3Rvci5Db29raWUocHJvdG9jb2xDb29raWUubmFtZSwgcHJvdG9jb2xDb29raWUu
dmFsdWUpOworICAgIGNvb2tpZS5hZGRBdHRyaWJ1dGUoImRvbWFpbiIsIHByb3RvY29sQ29va2ll
WyJkb21haW4iXSk7CisgICAgY29va2llLmFkZEF0dHJpYnV0ZSgicGF0aCIsIHByb3RvY29sQ29v
a2llWyJwYXRoIl0pOworICAgIGlmIChwcm90b2NvbENvb2tpZVsiZXhwaXJlcyJdKQorICAgICAg
ICBjb29raWUuYWRkQXR0cmlidXRlKCJleHBpcmVzIiwgcHJvdG9jb2xDb29raWVbImV4cGlyZXMi
XSk7CisgICAgaWYgKHByb3RvY29sQ29va2llWyJodHRwT25seSJdKQorICAgICAgICBjb29raWUu
YWRkQXR0cmlidXRlKCJodHRwT25seSIpOworICAgIGlmIChwcm90b2NvbENvb2tpZVsic2VjdXJl
Il0pCisgICAgICAgIGNvb2tpZS5hZGRBdHRyaWJ1dGUoInNlY3VyZSIpOworICAgIGNvb2tpZS5z
ZXRTaXplKHByb3RvY29sQ29va2llWyJzaXplIl0pOworICAgIHJldHVybiBjb29raWU7Cit9CisK
Ky8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29va2llfSBjb29raWUgCisgKiBAcGFyYW0g
e3N0cmluZ30gcmVzb3VyY2VVUkwKKyAqLyAKIFdlYkluc3BlY3Rvci5Db29raWVzLmNvb2tpZU1h
dGNoZXNSZXNvdXJjZVVSTCA9IGZ1bmN0aW9uKGNvb2tpZSwgcmVzb3VyY2VVUkwpCiB7CiAgICAg
dmFyIHVybCA9IHJlc291cmNlVVJMLmFzUGFyc2VkVVJMKCk7CkBAIC0zMjgsOSArNDA1LDEzIEBA
IFdlYkluc3BlY3Rvci5Db29raWVzLmNvb2tpZU1hdGNoZXNSZXNvdXJjZVVSTCA9IGZ1bmN0aW9u
KGNvb2tpZSwgcmVzb3VyY2VVUkwpCiAgICAgICAgICYmICghY29va2llLnNlY3VyZSB8fCB1cmwu
c2NoZW1lID09PSAiaHR0cHMiKSk7CiB9CiAKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IGNvb2tp
ZURvbWFpbiAKKyAqIEBwYXJhbSB7c3RyaW5nfSByZXNvdXJjZURvbWFpbgorICovIAogV2ViSW5z
cGVjdG9yLkNvb2tpZXMuY29va2llRG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluID0gZnVuY3Rp
b24oY29va2llRG9tYWluLCByZXNvdXJjZURvbWFpbikKIHsKICAgICBpZiAoY29va2llRG9tYWlu
LmNoYXJBdCgwKSAhPT0gJy4nKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEb21haW4gPT09IGNv
b2tpZURvbWFpbjsKLSAgICByZXR1cm4gISFyZXNvdXJjZURvbWFpbi5tYXRjaChuZXcgUmVnRXhw
KCJeKFteXFwuXStcXC4pPyIgKyBjb29raWVEb21haW4uc3Vic3RyaW5nKDEpLmVzY2FwZUZvclJl
Z0V4cCgpICsgIiQiKSwgImkiKTsKKyAgICByZXR1cm4gISFyZXNvdXJjZURvbWFpbi5tYXRjaChu
ZXcgUmVnRXhwKCJeKFteXFwuXStcXC4pPyIgKyBjb29raWVEb21haW4uc3Vic3RyaW5nKDEpLmVz
Y2FwZUZvclJlZ0V4cCgpICsgIiQiLCAiaSIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1RhYmxlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVzVGFibGUuanMKaW5kZXggNzA2Yjc4YjhlMjg4ZTI4
ZDlkMWRiNTY4MDc4ZTFkZTA5MzdmMjdjNS4uMjc1MDQyYzZmNDUxMDU0NDg2NTlmMDc3ODQwODhl
NWE5NmI4YThlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db29raWVzVGFibGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db29raWVzVGFibGUuanMKQEAgLTMxLDcgKzMxLDcgQEAKIC8qKgogICogQGNvbnN0cnVjdG9y
CiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9Ci0gKiBAcGFyYW0ge2Z1bmN0aW9uKFBh
Z2VBZ2VudC5Db29raWUpPX0gZGVsZXRlQ2FsbGJhY2sKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLkNvb2tpZSk9fSBkZWxldGVDYWxsYmFjawogICogQHBhcmFtIHtmdW5jdGlvbigp
PX0gcmVmcmVzaENhbGxiYWNrCiAgKi8KIFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUgPSBmdW5j
dGlvbihjb29raWVEb21haW4sIGV4cGFuZGFibGUsIGRlbGV0ZUNhbGxiYWNrLCByZWZyZXNoQ2Fs
bGJhY2spCkBAIC01NSw3ICs1NSw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUgPSBmdW5j
dGlvbihjb29raWVEb21haW4sIGV4cGFuZGFibGUsIGRlbGV0ZUNhbGxiYWNrLCByCiAgICAgY29s
dW1uc1szXS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGF0aCIpOwogICAgIGNvbHVt
bnNbM10uc29ydGFibGUgPSB0cnVlOwogICAgIGNvbHVtbnNbM10ud2lkdGggPSAiNyUiOwotICAg
IGNvbHVtbnNbNF0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4cGlyZXMiKTsKKyAg
ICBjb2x1bW5zWzRdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHBpcmVzIC8gTWF4
LUFnZSIpOwogICAgIGNvbHVtbnNbNF0uc29ydGFibGUgPSB0cnVlOwogICAgIGNvbHVtbnNbNF0u
d2lkdGggPSAiNyUiOwogICAgIGNvbHVtbnNbNV0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNpemUiKTsKQEAgLTkyLDYgKzkyLDEwIEBAIFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZWJ1aWxkVGFibGUoKTsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlck5hbWUKKyAgICAgKiBAcGFyYW0g
e0FycmF5LjxXZWJJbnNwZWN0b3IuQ29va2llPn0gY29va2llcworICAgICAqLwogICAgIGFkZENv
b2tpZXNGb2xkZXI6IGZ1bmN0aW9uKGZvbGRlck5hbWUsIGNvb2tpZXMpCiAgICAgewogICAgICAg
ICB0aGlzLl9kYXRhLnB1c2goe2Nvb2tpZXM6IGNvb2tpZXMsIGZvbGRlck5hbWU6IGZvbGRlck5h
bWV9KTsKQEAgLTEyNCw3ICsxMjgsNyBAQCBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3Rv
dHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZX0gcGFyZW50Tm9kZQotICAgICAqIEBwYXJhbSB7QXJyYXkuPFBhZ2VBZ2VudC5Db29raWU+
fSBjb29raWVzCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLkNvb2tpZT59IGNv
b2tpZXMKICAgICAgKi8KICAgICBfcG9wdWxhdGVOb2RlOiBmdW5jdGlvbihwYXJlbnROb2RlLCBj
b29raWVzKQogICAgIHsKQEAgLTE0Niw3ICsxNTAsNyBAQCBXZWJJbnNwZWN0b3IuQ29va2llc1Rh
YmxlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciB0b3RhbFNpemUgPSAwOwogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgY29va2llcyAmJiBpIDwgY29va2llcy5sZW5ndGg7ICsraSkK
LSAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBjb29raWVzW2ldLnNpemU7CisgICAgICAgICAgICB0
b3RhbFNpemUgKz0gY29va2llc1tpXS5zaXplKCk7CiAgICAgICAgIHJldHVybiB0b3RhbFNpemU7
CiAgICAgfSwKIApAQCAtMTcyLDcgKzE3NiwxMSBAQCBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChjb29raWUxLnNlc3Npb24pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgICAgIHJldHVybiBzb3J0RGlyZWN0aW9uICog
KGNvb2tpZTEuZXhwaXJlcyAtIGNvb2tpZTIuZXhwaXJlcyk7CisgICAgICAgICAgICBpZiAoY29v
a2llMS5tYXhBZ2UgJiYgY29va2llMi5tYXhBZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNv
cnREaXJlY3Rpb24gKiAoY29va2llMS5tYXhBZ2UgLSBjb29raWUyLm1heEFnZSk7CisgICAgICAg
ICAgICBpZiAoY29va2llMS5leHBpcmVzICYmIGNvb2tpZTIuZXhwaXJlcykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxLmV4cGlyZXMgLSBjb29raWUyLmV4
cGlyZXMpOworICAgICAgICAgICAgcmV0dXJuIHNvcnREaXJlY3Rpb24gKiAoY29va2llMS5leHBp
cmVzID8gMSA6IC0xKTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBjb21wYXJhdG9yOwpAQCAt
MTkyLDcgKzIwMCw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlID0gewog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1BhZ2VBZ2VudC5Db29raWV9IGNvb2tp
ZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvb2tpZX0gY29va2llCiAgICAgICovCiAg
ICAgX2NyZWF0ZUdyaWROb2RlOiBmdW5jdGlvbihjb29raWUpCiAgICAgewpAQCAtMjAxLDkgKzIw
OSwxNSBAQCBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZGF0YVsxXSA9IGNvb2tpZS52YWx1ZTsKICAgICAgICAgZGF0YVsyXSA9IGNvb2tpZS5kb21haW4g
fHwgIiI7CiAgICAgICAgIGRhdGFbM10gPSBjb29raWUucGF0aCB8fCAiIjsKLSAgICAgICAgZGF0
YVs0XSA9IGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29va2llLlR5cGUuUmVxdWVzdCA/
ICIiIDoKLSAgICAgICAgICAgIChjb29raWUuc2Vzc2lvbiA/IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2Vzc2lvbiIpIDogbmV3IERhdGUoY29va2llLmV4cGlyZXMpLnRvR01UU3RyaW5nKCkpOwot
ICAgICAgICBkYXRhWzVdID0gY29va2llLnNpemU7CisgICAgICAgIGlmIChjb29raWUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvb2tpZS5UeXBlLlJlcXVlc3QpCisgICAgICAgICAgICBkYXRhWzRd
ID0gIiI7CisgICAgICAgIGVsc2UgaWYgKGNvb2tpZS5tYXhBZ2UpCisgICAgICAgICAgICBkYXRh
WzRdID0gTnVtYmVyLnNlY29uZHNUb1N0cmluZyhjb29raWUubWF4QWdlKTsKKyAgICAgICAgZWxz
ZSBpZiAoY29va2llLmV4cGlyZXMpCisgICAgICAgICAgICBkYXRhWzRdID0gbmV3IERhdGUoY29v
a2llLmV4cGlyZXMpLnRvR01UU3RyaW5nKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRh
dGFbNF0gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlc3Npb24iKTsKKyAgICAgICAgZGF0YVs1
XSA9IGNvb2tpZS5zaXplKCk7CiAgICAgICAgIGNvbnN0IGNoZWNrbWFyayA9ICJcdTI3MTMiOwog
ICAgICAgICBkYXRhWzZdID0gKGNvb2tpZS5odHRwT25seSA/IGNoZWNrbWFyayA6ICIiKTsKICAg
ICAgICAgZGF0YVs3XSA9IChjb29raWUuc2VjdXJlID8gY2hlY2ttYXJrIDogIiIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKaW5kZXggMjJlMDdm
ODhlZDZhNjVmYjAzZDQwNDEwOWVlZjMxOTVkZmZiNTU4Zi4uMjU1ZmMxNjM5NGU1OTdkMzhjN2Ex
Zjk2YzJiNjZmZmI0NWJlNzM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9IQVJFbnRyeS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0hBUkVudHJ5LmpzCkBAIC0yMDYsNyArMjA2LDcgQEAgV2ViSW5zcGVjdG9yLkhBUkVu
dHJ5LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhbHVlOiBjb29raWUudmFsdWUsCiAgICAg
ICAgICAgICBwYXRoOiBjb29raWUucGF0aCwKICAgICAgICAgICAgIGRvbWFpbjogY29va2llLmRv
bWFpbiwKLSAgICAgICAgICAgIGV4cGlyZXM6IGNvb2tpZS5leHBpcmVzKG5ldyBEYXRlKHRoaXMu
X3JlcXVlc3Quc3RhcnRUaW1lICogMTAwMCkpLAorICAgICAgICAgICAgZXhwaXJlczogY29va2ll
LmV4cGlyZXNEYXRlKG5ldyBEYXRlKHRoaXMuX3JlcXVlc3Quc3RhcnRUaW1lICogMTAwMCkpLAog
ICAgICAgICAgICAgaHR0cE9ubHk6IGNvb2tpZS5odHRwT25seSwKICAgICAgICAgICAgIHNlY3Vy
ZTogY29va2llLnNlY3VyZQogICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUzMmZhMTg0YTRhNDI3YmU4NzE2
MzczNDg3ZjM4NmRiZWI5YTA5ZGUuLmViYThjNGUyYTlhMTBhOTlkZDM5NDU0NDcxOTRmZmRhY2Yy
YzE2NDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0xMS0wMSAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb29raWUg
aW5mbyBpbiBOZXR3b3JrIFJlc291cmNlcyBDb29raWVzIHRhYiBzaG93cyAiSW52YWxpZCBEYXRl
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc0NzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9jb29raWUtcGFyc2VyLmh0bWw6CisKIDIwMTItMTEtMDEgIE1paG5lYSBPdmlkZW5pZSAg
PG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdRm9ybWVyIGF1dG8taGVp
Z2h0IHJlZ2lvbnMgc2hvdWxkIG5vdCBpZ25vcmUgdGhlaXIgZGVmaW5lZCBoZWlnaHQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcGFyc2VyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY29va2llLXBhcnNlci5odG1sCmluZGV4IDgwMDVlMjVlZmFhMzM5YTkw
M2I5NjdjNWVmNTE4OWQ4YzMyNDYzM2QuLjc3MGUwODIxMThkNjA4Y2I0MDRhYmY5Y2Q2NDg4ODk3
OGM4NTE4MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcGFyc2Vy
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nvb2tpZS1wYXJzZXIuaHRtbApAQCAt
OSwxMyArOSwxMyBAQCBmdW5jdGlvbiBpbml0aWFsaXplX0Nvb2tpZVRlc3RzKCkKIEluc3BlY3Rv
clRlc3QuZHVtcENvb2tpZSA9IGZ1bmN0aW9uKGNvb2tpZSkKIHsKICAgICB2YXIgcmVxdWVzdERh
dGUgPSBuZXcgRGF0ZSgiTW9uIE9jdCAxOCAyMDEwIDE3OjAwOjAwIEdNVCswMDAwIik7Ci0gICAg
dmFyIGV4cGlyZXMgPSBjb29raWUuZXhwaXJlcyhyZXF1ZXN0RGF0ZSk7CisgICAgdmFyIGV4cGly
ZXMgPSBjb29raWUuZXhwaXJlc0RhdGUocmVxdWVzdERhdGUpOwogCiAgICAgdmFyIG91dHB1dCA9
ICJuYW1lOiAiICsgY29va2llLm5hbWUgKyAiLCB2YWx1ZTogIiArIGNvb2tpZS52YWx1ZSArICIs
IGh0dHBPbmx5OiAiICsgY29va2llLmh0dHBPbmx5ICsKICAgICAgICAgIiwgc2VjdXJlOiAiICsg
Y29va2llLnNlY3VyZSArICIsIHNlc3Npb246ICIgKyBjb29raWUuc2Vzc2lvbiArICIsIHBhdGg6
ICIgKyBjb29raWUucGF0aCArCiAgICAgICAgICIsIGRvbWFpbjogIiArIGNvb2tpZS5kb21haW4g
KyAiLCBwb3J0OiAiICsgY29va2llLnBvcnQgKwogICAgICAgICAiLCBleHBpcmVzOiAiICsgKGV4
cGlyZXMgPyBleHBpcmVzLmdldFRpbWUoKSA6ICJuL2EiKSArCi0gICAgICAgICIsIHNpemU6ICIg
KyBjb29raWUuc2l6ZTsKKyAgICAgICAgIiwgc2l6ZTogIiArIGNvb2tpZS5zaXplKCk7CiAKICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChvdXRwdXQpOwogICAgIEluc3BlY3RvclRlc3QuYWRk
T2JqZWN0KGNvb2tpZS5hdHRyaWJ1dGVzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171870</attachid>
            <date>2012-11-01 09:17:40 -0700</date>
            <delta_ts>2012-11-01 09:36:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97471-20121101201600.patch</filename>
            <type>text/plain</type>
            <size>20111</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThjMDVlOGM0NmE3ZTQ0
YjE0YjQzNjkyMWEyYTljMDRiNGFiOGMyYS4uYzExYmE3MzA2M2JhNzkyYTczMmZjYTIzZTYyZTQ0
ZDBkNmUzNzExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDEyLTExLTAxICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENvb2tpZSBpbmZvIGluIE5ldHdvcmsgUmVzb3VyY2VzIENvb2tpZXMgdGFiIHNob3dzICJJ
bnZhbGlkIERhdGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgcGFydGx5IGJhc2VkIG9uIHBhdGNoIGJ5IE90dG8gRGVyZWsgQ2hl
dW5nIDxvdGNoZXVuZ0ByaW0uY29tPi4KKyAgICAgICAgUmVmYWN0b3JlZCBDb29raWVQYXJzZXIg
c28gdGhhdCBhbGwgY29va2llcyBpbiBmcm9udC1lbmQgd2VyZSBXZWJJbnNwZWN0b3IuQ29va2ll
IG9iamVjdC4KKyAgICAgICAgQ29va2llIHRhYmxlIGNhbiBub3cgc2hvdyBNYXgtQWdlIGFzIHdl
bGwgYXMgRXhwaXJlcyBhdHRyaWJ1dGUgb2YgYSBjb29raWUuCisgICAgICAgIEZpeGVkIGV4cGly
ZXNEYXRlIGNhbGN1bGF0aW9uLgorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNpemVSdWxlLnByb3RvdHlw
ZS5fYXZlcmFnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5Db29raWVTaXpl
UnVsZS5wcm90b3R5cGUuX21heCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5T
dGF0aWNDb29raWVsZXNzUnVsZS5wcm90b3R5cGUuX2NvbGxlY3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlLl9maWx0ZXJDb29raWVzRm9yRG9t
YWluKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZVBhcnNlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVQYXJzZXIucHJvdG90eXBlLl9mbHVzaENvb2tpZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llUGFyc2VyLnByb3RvdHlwZS5fYWRkQ29va2ll
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWUucHJvdG90eXBlLmdldCBzZXNzaW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWUucHJvdG90eXBlLmdldCBleHBpcmVzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db29raWUucHJvdG90eXBlLmdldCBtYXhBZ2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvb2tpZS5wcm90b3R5cGUuc2l6ZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29va2llLnByb3RvdHlwZS5zZXRTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b29raWUucHJvdG90eXBlLmV4cGlyZXNEYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29r
aWVzLmdldENvb2tpZXNBc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llcy5idWls
ZENvb2tpZXNGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVzLmJ1aWxk
Q29va2llUHJvdG9jb2xPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXMuY29v
a2llRG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0Nvb2tpZXNUYWJsZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29raWVzVGFi
bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZS5wcm90b3R5cGUuX3RvdGFs
U2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5fc29y
dENvb2tpZXMuZXhwaXJlc0NvbXBhcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNU
YWJsZS5wcm90b3R5cGUuX3NvcnRDb29raWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29r
aWVzVGFibGUucHJvdG90eXBlLl9jcmVhdGVHcmlkTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9IQVJFbnRyeS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IQVJFbnRyeS5w
cm90b3R5cGUuX2J1aWxkQ29va2llKToKKworMjAxMi0xMS0wMSAgVnNldm9sb2QgVmxhc292ICA8
dnNldmlrQGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdmUgb2Jz
b2xldGUgY29kZSBmcm9tIEphdmFTY3JpcHRTb3VyY2VGcmFtZQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTk0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJD
b3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA1MTA1NWYxOTEyZTQ5
ZDE5Nzc0NDJlYmQ3MTY5NzA4Mzk3NWRiMDYxLi4zZTE0MzI4OThiMTMxNGVkZmNjNjY5YTFlNGU4
MmYyMTljMWNhZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2Nh
bGl6ZWRTdHJpbmdzLmpzCkBAIC0xODQsNyArMTg0LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siRXZl
bnQiXSA9ICJFdmVudCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFeGNsdWRlIHNlbGVjdGVkIGZ1bmN0
aW9uLiJdID0gIkV4Y2x1ZGUgc2VsZWN0ZWQgZnVuY3Rpb24uIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkV4ZWN1dGUgY29tbWFuZCJdID0gIkV4ZWN1dGUgY29tbWFuZCI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJFeHBhbmQvY29sbGFwc2UiXSA9ICJFeHBhbmQvY29sbGFwc2UiOwotbG9jYWxpemVkU3RyaW5n
c1siRXhwaXJlcyJdID0gIkV4cGlyZXMiOworbG9jYWxpemVkU3RyaW5nc1siRXhwaXJlcyAvIE1h
eC1BZ2UiXSA9ICJFeHBpcmVzIC8gTWF4LUFnZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJGaWxlIHNp
emUiXSA9ICJGaWxlIHNpemUiOwogbG9jYWxpemVkU3RyaW5nc1siRml0IGluIHdpbmRvdyJdID0g
IkZpdCBpbiB3aW5kb3ciOwogbG9jYWxpemVkU3RyaW5nc1siRm9yY2UgRWxlbWVudCBTdGF0ZSJd
ID0gIkZvcmNlIEVsZW1lbnQgU3RhdGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCmluZGV4IGZiY2Y3YmRlMmEzZDcwMzk4YjNjNDY0NWY3
NjA3ODgxNTU5M2UzZTMuLmZkZTc1NzE1MTk3N2NiM2UyMjY2OTkxYTNhNGZkMTI4ZTA1NjZiODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxl
cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMu
anMKQEAgLTEyNjksNyArMTI2OSw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNp
emVSdWxlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciB0b3RhbCA9IDA7CiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29va2llQXJyYXkubGVuZ3RoOyArK2kpCi0gICAgICAg
ICAgICB0b3RhbCArPSBjb29raWVBcnJheVtpXS5zaXplOworICAgICAgICAgICAgdG90YWwgKz0g
Y29va2llQXJyYXlbaV0uc2l6ZSgpOwogICAgICAgICByZXR1cm4gY29va2llQXJyYXkubGVuZ3Ro
ID8gTWF0aC5yb3VuZCh0b3RhbCAvIGNvb2tpZUFycmF5Lmxlbmd0aCkgOiAwOwogICAgIH0sCiAK
QEAgLTEyNzcsNyArMTI3Nyw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tpZVNpemVS
dWxlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciByZXN1bHQgPSAwOwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNvb2tpZUFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgcmVzdWx0ID0gTWF0aC5tYXgoY29va2llQXJyYXlbaV0uc2l6ZSwgcmVzdWx0KTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IE1hdGgubWF4KGNvb2tpZUFycmF5W2ldLnNpemUoKSwgcmVzdWx0KTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9LAogCkBAIC0xNDAzLDcgKzE0MDMsNyBAQCBX
ZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5TdGF0aWNDb29raWVsZXNzUnVsZS5wcm90b3R5cGUgPSB7
CiAKICAgICBfY29sbGVjdG9yQ2FsbGJhY2s6IGZ1bmN0aW9uKG1hdGNoaW5nUmVzb3VyY2VEYXRh
LCByZXF1ZXN0LCBjb29raWUpCiAgICAgewotICAgICAgICBtYXRjaGluZ1Jlc291cmNlRGF0YVty
ZXF1ZXN0LnVybF0gPSAobWF0Y2hpbmdSZXNvdXJjZURhdGFbcmVxdWVzdC51cmxdIHx8IDApICsg
Y29va2llLnNpemU7CisgICAgICAgIG1hdGNoaW5nUmVzb3VyY2VEYXRhW3JlcXVlc3QudXJsXSA9
IChtYXRjaGluZ1Jlc291cmNlRGF0YVtyZXF1ZXN0LnVybF0gfHwgMCkgKyBjb29raWUuc2l6ZSgp
OwogICAgIH0sCiAKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNvb2tp
ZVJ1bGVCYXNlLnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db29raWVJdGVtc1ZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0Nvb2tpZUl0ZW1zVmlldy5qcwppbmRleCAwOTQxODI3YjY0YThjOThiMmFiYmMx
MmEzMzhhMTRjZTY4Y2UyNTY1Li4zMWRiNmY1MDRmODcyZWZjYjcxNzcwNDk5ZWUzYTkxNzNjNGQx
YjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tp
ZUl0ZW1zVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
b2tpZUl0ZW1zVmlldy5qcwpAQCAtNzQsNiArNzQsMTAgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZUl0
ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db29raWVzLmdldENv
b2tpZXNBc3luYyh0aGlzLl91cGRhdGVXaXRoQ29va2llcy5iaW5kKHRoaXMpKTsKICAgICB9LAog
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLkNvb2tpZT59IGFs
bENvb2tpZXMKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWR2YW5jZWQKKyAgICAgKi8KICAg
ICBfdXBkYXRlV2l0aENvb2tpZXM6IGZ1bmN0aW9uKGFsbENvb2tpZXMsIGlzQWR2YW5jZWQpCiAg
ICAgewogICAgICAgICB0aGlzLl9jb29raWVzID0gaXNBZHZhbmNlZCA/IHRoaXMuX2ZpbHRlckNv
b2tpZXNGb3JEb21haW4oYWxsQ29va2llcykgOiBhbGxDb29raWVzOwpAQCAtMTAwLDYgKzEwNCw5
IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5D
b29raWU+fSBhbGxDb29raWVzCisgICAgICovCiAgICAgX2ZpbHRlckNvb2tpZXNGb3JEb21haW46
IGZ1bmN0aW9uKGFsbENvb2tpZXMpCiAgICAgewogICAgICAgICB2YXIgY29va2llcyA9IFtdOwpA
QCAtMTE2LDcgKzEyMyw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVJdGVtc1ZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsQ29va2llcy5sZW5ndGg7ICsr
aSkgewogICAgICAgICAgICAgdmFyIHB1c2hlZCA9IGZhbHNlOwotICAgICAgICAgICAgdmFyIHNp
emUgPSBhbGxDb29raWVzW2ldLnNpemU7CisgICAgICAgICAgICB2YXIgc2l6ZSA9IGFsbENvb2tp
ZXNbaV0uc2l6ZSgpOwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXNvdXJjZVVS
THNGb3JEb2N1bWVudFVSTC5sZW5ndGg7ICsraikgewogICAgICAgICAgICAgICAgIHZhciByZXNv
dXJjZVVSTCA9IHJlc291cmNlVVJMc0ZvckRvY3VtZW50VVJMW2pdOwogICAgICAgICAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IuQ29va2llcy5jb29raWVNYXRjaGVzUmVzb3VyY2VVUkwoYWxsQ29v
a2llc1tpXSwgcmVzb3VyY2VVUkwpKSB7CkBAIC0xMzEsNiArMTM4LDkgQEAgV2ViSW5zcGVjdG9y
LkNvb2tpZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjb29raWVzOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db29raWV9IGNv
b2tpZQorICAgICAqLwogICAgIF9kZWxldGVDb29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKICAgICB7
CiAgICAgICAgIFBhZ2VBZ2VudC5kZWxldGVDb29raWUoY29va2llLm5hbWUsIHRoaXMuX2Nvb2tp
ZURvbWFpbik7CkBAIC0xODAsNiArMTkwLDkgQEAgV2ViSW5zcGVjdG9yLlNpbXBsZUNvb2tpZXNU
YWJsZSA9IGZ1bmN0aW9uKCkKIH0KIAogV2ViSW5zcGVjdG9yLlNpbXBsZUNvb2tpZXNUYWJsZS5w
cm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9y
LkNvb2tpZT59IGNvb2tpZXMKKyAgICAgKi8KICAgICBzZXRDb29raWVzOiBmdW5jdGlvbihjb29r
aWVzKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQucm9vdE5vZGUoKS5yZW1vdmVDaGls
ZHJlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b29raWVQYXJzZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tp
ZVBhcnNlci5qcwppbmRleCBhMzY5YWM4ZDlkYjg1MDA0ZTlkYTVkZTVmYjc3ZWVlYWViNDE2M2My
Li4yZWJmMDQ5MmU3OGZkYzA2NzQ1MGZmMGQ0NWFkY2Q4OWFmMDU0ZTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZVBhcnNlci5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tpZVBhcnNlci5qcwpAQCAtMTIy
LDcgKzEyMiw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVQYXJzZXIucHJvdG90eXBlID0gewogICAg
IF9mbHVzaENvb2tpZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2xhc3RD
b29raWUpCi0gICAgICAgICAgICB0aGlzLl9sYXN0Q29va2llLnNpemUgPSB0aGlzLl9vcmlnaW5h
bElucHV0TGVuZ3RoIC0gdGhpcy5faW5wdXQubGVuZ3RoIC0gdGhpcy5fbGFzdENvb2tpZVBvc2l0
aW9uOworICAgICAgICAgICAgdGhpcy5fbGFzdENvb2tpZS5zZXRTaXplKHRoaXMuX29yaWdpbmFs
SW5wdXRMZW5ndGggLSB0aGlzLl9pbnB1dC5sZW5ndGggLSB0aGlzLl9sYXN0Q29va2llUG9zaXRp
b24pOwogICAgICAgICB0aGlzLl9sYXN0Q29va2llID0gbnVsbDsKICAgICB9LAogCkBAIC0xNjgs
NyArMTY4LDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVBhcnNlci5wcm90b3R5cGUgPSB7CiAgICAg
X2FkZENvb2tpZTogZnVuY3Rpb24oa2V5VmFsdWUsIHR5cGUpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fbGFzdENvb2tpZSkKLSAgICAgICAgICAgIHRoaXMuX2xhc3RDb29raWUuc2l6ZSA9IGtl
eVZhbHVlLnBvc2l0aW9uIC0gdGhpcy5fbGFzdENvb2tpZVBvc2l0aW9uOworICAgICAgICAgICAg
dGhpcy5fbGFzdENvb2tpZS5zZXRTaXplKGtleVZhbHVlLnBvc2l0aW9uIC0gdGhpcy5fbGFzdENv
b2tpZVBvc2l0aW9uKTsKICAgICAgICAgLy8gTW96aWxsYSBidWcgMTY5MDkxOiBNb3ppbGxhLCBJ
RSBhbmQgQ2hyb21lIHRyZWF0IHNpbmdsZSB0b2tlbiAody9vICI9IikgYXMKICAgICAgICAgLy8g
c3BlY2lmeWluZyBhIHZhbHVlIGZvciBhIGNvb2tpZSB3aXRoIGVtcHR5IG5hbWUuCiAgICAgICAg
IHRoaXMuX2xhc3RDb29raWUgPSBrZXlWYWx1ZS52YWx1ZSA/IG5ldyBXZWJJbnNwZWN0b3IuQ29v
a2llKGtleVZhbHVlLmtleSwga2V5VmFsdWUudmFsdWUsIHR5cGUpIDoKQEAgLTE5OCw2ICsxOTgs
OSBAQCBXZWJJbnNwZWN0b3IuQ29va2llUGFyc2VyLnBhcnNlU2V0Q29va2llID0gZnVuY3Rpb24o
aGVhZGVyKQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZQorICogQHBhcmFtIHtudW1iZXI9fSB0eXBlCiAgKi8K
IFdlYkluc3BlY3Rvci5Db29raWUgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgdHlwZSkKIHsKQEAg
LTIzMCw4ICsyMzMsOCBAQCBXZWJJbnNwZWN0b3IuQ29va2llLnByb3RvdHlwZSA9IHsKICAgICBn
ZXQgc2Vzc2lvbigpCiAgICAgewogICAgICAgICAvLyBSRkMgMjk2NSBzdWdnZXN0cyB1c2luZyBE
aXNjYXJkIGF0dHJpYnV0ZSB0byBtYXJrIHNlc3Npb24gY29va2llcywgYnV0IHRoaXMgZG9lcyBu
b3Qgc2VlbSB0byBiZSB3aWRlbHkgdXNlZC4KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGFic2VuY2Ug
b2YgZXhwbGljaXR5IG1heC1hZ2Ugb3IgZXhwaXJ5IGRhdGUgaW5zdGVhZC4KLSAgICAgICAgcmV0
dXJuICAhKCJleHBpcmVzIiBpbiB0aGlzLl9hdHRyaWJ1dGVzIHx8ICJtYXgtYWdlIiBpbiB0aGlz
Ll9hdHRyaWJ1dGVzKTsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIGFic2VuY2Ugb2YgZXhwbGljaXRs
eSBtYXgtYWdlIG9yIGV4cGlyeSBkYXRlIGluc3RlYWQuCisgICAgICAgIHJldHVybiAhKCJleHBp
cmVzIiBpbiB0aGlzLl9hdHRyaWJ1dGVzIHx8ICJtYXgtYWdlIiBpbiB0aGlzLl9hdHRyaWJ1dGVz
KTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yNTEsMTIgKzI1NCw1MiBAQCBXZWJJbnNwZWN0b3Iu
Q29va2llLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7
c3RyaW5nfQorICAgICAqLyAKKyAgICBnZXQgZXhwaXJlcygpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fYXR0cmlidXRlc1siZXhwaXJlcyJdOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovIAorICAgIGdldCBtYXhBZ2UoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXNbIm1heC1hZ2UiXTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAqLyAKKyAgICBzaXplOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUKKyAgICAgKi8gCisgICAgc2V0U2l6ZTogZnVu
Y3Rpb24oc2l6ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3NpemUgPSBzaXplOworICAgIH0sCisK
KyAgICAvKioKICAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICAqLyAKLSAgICBleHBpcmVzOiBm
dW5jdGlvbihyZXF1ZXN0RGF0ZSkKKyAgICBleHBpcmVzRGF0ZTogZnVuY3Rpb24ocmVxdWVzdERh
dGUpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlc1siZXhwaXJlcyJdID8g
bmV3IERhdGUodGhpcy5fYXR0cmlidXRlc1siZXhwaXJlcyJdKSA6Ci0gICAgICAgICAgICAodGhp
cy5fYXR0cmlidXRlc1sibWF4LWFnZSJdID8gbmV3IERhdGUocmVxdWVzdERhdGUuZ2V0VGltZSgp
ICsgMTAwMCAqIHRoaXMuX2F0dHJpYnV0ZXNbIm1heC1hZ2UiXSkgOiBudWxsKTsKKyAgICAgICAg
Ly8gUkZDIDYyNjUgaW5kaWNhdGVzIHRoYXQgdGhlIG1heC1hZ2UgYXR0cmlidXRlIHRha2VzIHBy
ZWNlZGVuY2Ugb3ZlciB0aGUgZXhwaXJlcyBhdHRyaWJ1dGUKKyAgICAgICAgaWYgKHRoaXMubWF4
QWdlKSB7CisgICAgICAgICAgICB2YXIgdGFyZ2V0RGF0ZSA9IHJlcXVlc3REYXRlID09PSBudWxs
ID8gbmV3IERhdGUoKSA6IHJlcXVlc3REYXRlOworICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRl
KHRhcmdldERhdGUuZ2V0VGltZSgpICsgMTAwMCAqIHRoaXMubWF4QWdlKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0aGlzLmV4cGlyZXMpCisgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUo
dGhpcy5leHBpcmVzKTsKKworICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9LAogCiAgICAgLyoq
CkBAIC0yNjksNyArMzEyLDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZS5wcm90b3R5cGUgPSB7CiAK
ICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IAotICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSB2YWx1ZSAKKyAgICAgKiBAcGFyYW0ge3N0cmluZz19IHZhbHVlIAogICAgICAqLyAKICAg
ICBhZGRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGtleSwgdmFsdWUpCiAgICAgewpAQCAtMjg2LDYgKzMy
OSwxMSBAQCBXZWJJbnNwZWN0b3IuQ29va2llcyA9IHt9CiAKIFdlYkluc3BlY3Rvci5Db29raWVz
LmdldENvb2tpZXNBc3luYyA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogeworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvciAKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxX
ZWJJbnNwZWN0b3IuQ29va2llPn0gY29va2llcyAKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29v
a2llc1N0cmluZyAKKyAgICAgKi8gCiAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgY29v
a2llcywgY29va2llc1N0cmluZykKICAgICB7CiAgICAgICAgIGlmIChlcnJvcikKQEAgLTI5Mywx
MiArMzQxLDE2IEBAIFdlYkluc3BlY3Rvci5Db29raWVzLmdldENvb2tpZXNBc3luYyA9IGZ1bmN0
aW9uKGNhbGxiYWNrKQogICAgICAgICBpZiAoY29va2llc1N0cmluZykKICAgICAgICAgICAgIGNh
bGxiYWNrKFdlYkluc3BlY3Rvci5Db29raWVzLmJ1aWxkQ29va2llc0Zyb21TdHJpbmcoY29va2ll
c1N0cmluZyksIGZhbHNlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbGJhY2soY29v
a2llcywgdHJ1ZSk7CisgICAgICAgICAgICBjYWxsYmFjayhjb29raWVzLm1hcChXZWJJbnNwZWN0
b3IuQ29va2llcy5idWlsZENvb2tpZVByb3RvY29sT2JqZWN0KSwgdHJ1ZSk7CiAgICAgfQogCiAg
ICAgUGFnZUFnZW50LmdldENvb2tpZXMobXljYWxsYmFjayk7CiB9CiAKKy8qKgorICogQHBhcmFt
IHtzdHJpbmd9IHJhd0Nvb2tpZVN0cmluZyAKKyAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0
b3IuQ29va2llPn0gCisgKi8gCiBXZWJJbnNwZWN0b3IuQ29va2llcy5idWlsZENvb2tpZXNGcm9t
U3RyaW5nID0gZnVuY3Rpb24ocmF3Q29va2llU3RyaW5nKQogewogICAgIHZhciByYXdDb29raWVz
ID0gcmF3Q29va2llU3RyaW5nLnNwbGl0KC87XHMqLyk7CkBAIC0zMDYsMTggKzM1OCw0MyBAQCBX
ZWJJbnNwZWN0b3IuQ29va2llcy5idWlsZENvb2tpZXNGcm9tU3RyaW5nID0gZnVuY3Rpb24ocmF3
Q29va2llU3RyaW5nKQogCiAgICAgaWYgKCEoL15ccyokLy50ZXN0KHJhd0Nvb2tpZVN0cmluZykp
KSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Q29va2llcy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgdmFyIGNvb2tpZSA9IHJhd0Nvb2tpZXNbaV07Ci0gICAgICAgICAgICB2
YXIgZGVsaW1JbmRleCA9IGNvb2tpZS5pbmRleE9mKCI9Iik7Ci0gICAgICAgICAgICB2YXIgbmFt
ZSA9IGNvb2tpZS5zdWJzdHJpbmcoMCwgZGVsaW1JbmRleCk7Ci0gICAgICAgICAgICB2YXIgdmFs
dWUgPSBjb29raWUuc3Vic3RyaW5nKGRlbGltSW5kZXggKyAxKTsKKyAgICAgICAgICAgIHZhciBy
YXdDb29raWUgPSByYXdDb29raWVzW2ldOworICAgICAgICAgICAgdmFyIGRlbGltSW5kZXggPSBy
YXdDb29raWUuaW5kZXhPZigiPSIpOworICAgICAgICAgICAgdmFyIG5hbWUgPSByYXdDb29raWUu
c3Vic3RyaW5nKDAsIGRlbGltSW5kZXgpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gcmF3Q29v
a2llLnN1YnN0cmluZyhkZWxpbUluZGV4ICsgMSk7CiAgICAgICAgICAgICB2YXIgc2l6ZSA9IG5h
bWUubGVuZ3RoICsgdmFsdWUubGVuZ3RoOwotICAgICAgICAgICAgY29va2llcy5wdXNoKHsgbmFt
ZTogbmFtZSwgdmFsdWU6IHZhbHVlLCBzaXplOiBzaXplIH0pOworICAgICAgICAgICAgdmFyIGNv
b2tpZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29va2llKG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAg
IGNvb2tpZS5zZXRTaXplKHNpemUpOworICAgICAgICAgICAgY29va2llcy5wdXNoKGNvb2tpZSk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gY29va2llczsKIH0KIAorLyoqCisgKiBA
cGFyYW0ge09iamVjdH0gcHJvdG9jb2xDb29raWUgCisgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
Q29va2llfSAKKyAqLyAKK1dlYkluc3BlY3Rvci5Db29raWVzLmJ1aWxkQ29va2llUHJvdG9jb2xP
YmplY3QgPSBmdW5jdGlvbihwcm90b2NvbENvb2tpZSkKK3sKKyAgICB2YXIgY29va2llID0gbmV3
IFdlYkluc3BlY3Rvci5Db29raWUocHJvdG9jb2xDb29raWUubmFtZSwgcHJvdG9jb2xDb29raWUu
dmFsdWUpOworICAgIGNvb2tpZS5hZGRBdHRyaWJ1dGUoImRvbWFpbiIsIHByb3RvY29sQ29va2ll
WyJkb21haW4iXSk7CisgICAgY29va2llLmFkZEF0dHJpYnV0ZSgicGF0aCIsIHByb3RvY29sQ29v
a2llWyJwYXRoIl0pOworICAgIGlmIChwcm90b2NvbENvb2tpZVsiZXhwaXJlcyJdKQorICAgICAg
ICBjb29raWUuYWRkQXR0cmlidXRlKCJleHBpcmVzIiwgcHJvdG9jb2xDb29raWVbImV4cGlyZXMi
XSk7CisgICAgaWYgKHByb3RvY29sQ29va2llWyJodHRwT25seSJdKQorICAgICAgICBjb29raWUu
YWRkQXR0cmlidXRlKCJodHRwT25seSIpOworICAgIGlmIChwcm90b2NvbENvb2tpZVsic2VjdXJl
Il0pCisgICAgICAgIGNvb2tpZS5hZGRBdHRyaWJ1dGUoInNlY3VyZSIpOworICAgIGNvb2tpZS5z
ZXRTaXplKHByb3RvY29sQ29va2llWyJzaXplIl0pOworICAgIHJldHVybiBjb29raWU7Cit9CisK
Ky8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29va2llfSBjb29raWUgCisgKiBAcGFyYW0g
e3N0cmluZ30gcmVzb3VyY2VVUkwKKyAqLyAKIFdlYkluc3BlY3Rvci5Db29raWVzLmNvb2tpZU1h
dGNoZXNSZXNvdXJjZVVSTCA9IGZ1bmN0aW9uKGNvb2tpZSwgcmVzb3VyY2VVUkwpCiB7CiAgICAg
dmFyIHVybCA9IHJlc291cmNlVVJMLmFzUGFyc2VkVVJMKCk7CkBAIC0zMjgsOSArNDA1LDEzIEBA
IFdlYkluc3BlY3Rvci5Db29raWVzLmNvb2tpZU1hdGNoZXNSZXNvdXJjZVVSTCA9IGZ1bmN0aW9u
KGNvb2tpZSwgcmVzb3VyY2VVUkwpCiAgICAgICAgICYmICghY29va2llLnNlY3VyZSB8fCB1cmwu
c2NoZW1lID09PSAiaHR0cHMiKSk7CiB9CiAKKy8qKgorICogQHBhcmFtIHtzdHJpbmd9IGNvb2tp
ZURvbWFpbiAKKyAqIEBwYXJhbSB7c3RyaW5nfSByZXNvdXJjZURvbWFpbgorICovIAogV2ViSW5z
cGVjdG9yLkNvb2tpZXMuY29va2llRG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluID0gZnVuY3Rp
b24oY29va2llRG9tYWluLCByZXNvdXJjZURvbWFpbikKIHsKICAgICBpZiAoY29va2llRG9tYWlu
LmNoYXJBdCgwKSAhPT0gJy4nKQogICAgICAgICByZXR1cm4gcmVzb3VyY2VEb21haW4gPT09IGNv
b2tpZURvbWFpbjsKLSAgICByZXR1cm4gISFyZXNvdXJjZURvbWFpbi5tYXRjaChuZXcgUmVnRXhw
KCJeKFteXFwuXStcXC4pPyIgKyBjb29raWVEb21haW4uc3Vic3RyaW5nKDEpLmVzY2FwZUZvclJl
Z0V4cCgpICsgIiQiKSwgImkiKTsKKyAgICByZXR1cm4gISFyZXNvdXJjZURvbWFpbi5tYXRjaChu
ZXcgUmVnRXhwKCJeKFteXFwuXStcXC4pPyIgKyBjb29raWVEb21haW4uc3Vic3RyaW5nKDEpLmVz
Y2FwZUZvclJlZ0V4cCgpICsgIiQiLCAiaSIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1RhYmxlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVzVGFibGUuanMKaW5kZXggNzA2Yjc4YjhlMjg4ZTI4
ZDlkMWRiNTY4MDc4ZTFkZTA5MzdmMjdjNS4uNWRlNjVhNDg5ZTYyYjRlN2Y5YTNiZTY0NDczNzQ5
YTc4MzA1Y2FkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db29raWVzVGFibGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db29raWVzVGFibGUuanMKQEAgLTMxLDcgKzMxLDcgQEAKIC8qKgogICogQGNvbnN0cnVjdG9y
CiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9Ci0gKiBAcGFyYW0ge2Z1bmN0aW9uKFBh
Z2VBZ2VudC5Db29raWUpPX0gZGVsZXRlQ2FsbGJhY2sKKyAqIEBwYXJhbSB7ZnVuY3Rpb24oV2Vi
SW5zcGVjdG9yLkNvb2tpZSk9fSBkZWxldGVDYWxsYmFjawogICogQHBhcmFtIHtmdW5jdGlvbigp
PX0gcmVmcmVzaENhbGxiYWNrCiAgKi8KIFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUgPSBmdW5j
dGlvbihjb29raWVEb21haW4sIGV4cGFuZGFibGUsIGRlbGV0ZUNhbGxiYWNrLCByZWZyZXNoQ2Fs
bGJhY2spCkBAIC01NSw3ICs1NSw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUgPSBmdW5j
dGlvbihjb29raWVEb21haW4sIGV4cGFuZGFibGUsIGRlbGV0ZUNhbGxiYWNrLCByCiAgICAgY29s
dW1uc1szXS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGF0aCIpOwogICAgIGNvbHVt
bnNbM10uc29ydGFibGUgPSB0cnVlOwogICAgIGNvbHVtbnNbM10ud2lkdGggPSAiNyUiOwotICAg
IGNvbHVtbnNbNF0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4cGlyZXMiKTsKKyAg
ICBjb2x1bW5zWzRdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHBpcmVzIC8gTWF4
LUFnZSIpOwogICAgIGNvbHVtbnNbNF0uc29ydGFibGUgPSB0cnVlOwogICAgIGNvbHVtbnNbNF0u
d2lkdGggPSAiNyUiOwogICAgIGNvbHVtbnNbNV0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNpemUiKTsKQEAgLTkyLDYgKzkyLDEwIEBAIFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZWJ1aWxkVGFibGUoKTsKICAgICB9LAogCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlck5hbWUKKyAgICAgKiBAcGFyYW0g
e0FycmF5LjxXZWJJbnNwZWN0b3IuQ29va2llPn0gY29va2llcworICAgICAqLwogICAgIGFkZENv
b2tpZXNGb2xkZXI6IGZ1bmN0aW9uKGZvbGRlck5hbWUsIGNvb2tpZXMpCiAgICAgewogICAgICAg
ICB0aGlzLl9kYXRhLnB1c2goe2Nvb2tpZXM6IGNvb2tpZXMsIGZvbGRlck5hbWU6IGZvbGRlck5h
bWV9KTsKQEAgLTEyNCw3ICsxMjgsNyBAQCBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3Rv
dHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZX0gcGFyZW50Tm9kZQotICAgICAqIEBwYXJhbSB7QXJyYXkuPFBhZ2VBZ2VudC5Db29raWU+
fSBjb29raWVzCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLkNvb2tpZT59IGNv
b2tpZXMKICAgICAgKi8KICAgICBfcG9wdWxhdGVOb2RlOiBmdW5jdGlvbihwYXJlbnROb2RlLCBj
b29raWVzKQogICAgIHsKQEAgLTE0Niw3ICsxNTAsNyBAQCBXZWJJbnNwZWN0b3IuQ29va2llc1Rh
YmxlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciB0b3RhbFNpemUgPSAwOwogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgY29va2llcyAmJiBpIDwgY29va2llcy5sZW5ndGg7ICsraSkK
LSAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBjb29raWVzW2ldLnNpemU7CisgICAgICAgICAgICB0
b3RhbFNpemUgKz0gY29va2llc1tpXS5zaXplKCk7CiAgICAgICAgIHJldHVybiB0b3RhbFNpemU7
CiAgICAgfSwKIApAQCAtMTcyLDcgKzE3NiwxMSBAQCBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChjb29raWUxLnNlc3Npb24pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgICAgIHJldHVybiBzb3J0RGlyZWN0aW9uICog
KGNvb2tpZTEuZXhwaXJlcyAtIGNvb2tpZTIuZXhwaXJlcyk7CisgICAgICAgICAgICBpZiAoY29v
a2llMS5tYXhBZ2UgJiYgY29va2llMi5tYXhBZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNv
cnREaXJlY3Rpb24gKiAoY29va2llMS5tYXhBZ2UgLSBjb29raWUyLm1heEFnZSk7CisgICAgICAg
ICAgICBpZiAoY29va2llMS5leHBpcmVzICYmIGNvb2tpZTIuZXhwaXJlcykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc29ydERpcmVjdGlvbiAqIChjb29raWUxLmV4cGlyZXMgLSBjb29raWUyLmV4
cGlyZXMpOworICAgICAgICAgICAgcmV0dXJuIHNvcnREaXJlY3Rpb24gKiAoY29va2llMS5leHBp
cmVzID8gMSA6IC0xKTsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBjb21wYXJhdG9yOwpAQCAt
MTkyLDcgKzIwMCw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVzVGFibGUucHJvdG90eXBlID0gewog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1BhZ2VBZ2VudC5Db29raWV9IGNvb2tp
ZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvb2tpZX0gY29va2llCiAgICAgICovCiAg
ICAgX2NyZWF0ZUdyaWROb2RlOiBmdW5jdGlvbihjb29raWUpCiAgICAgewpAQCAtMjAxLDkgKzIw
OSwxNSBAQCBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZGF0YVsxXSA9IGNvb2tpZS52YWx1ZTsKICAgICAgICAgZGF0YVsyXSA9IGNvb2tpZS5kb21haW4g
fHwgIiI7CiAgICAgICAgIGRhdGFbM10gPSBjb29raWUucGF0aCB8fCAiIjsKLSAgICAgICAgZGF0
YVs0XSA9IGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29va2llLlR5cGUuUmVxdWVzdCA/
ICIiIDoKLSAgICAgICAgICAgIChjb29raWUuc2Vzc2lvbiA/IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2Vzc2lvbiIpIDogbmV3IERhdGUoY29va2llLmV4cGlyZXMpLnRvR01UU3RyaW5nKCkpOwot
ICAgICAgICBkYXRhWzVdID0gY29va2llLnNpemU7CisgICAgICAgIGlmIChjb29raWUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvb2tpZS5UeXBlLlJlcXVlc3QpCisgICAgICAgICAgICBkYXRhWzRd
ID0gIiI7CisgICAgICAgIGVsc2UgaWYgKGNvb2tpZS5zZXNzaW9uKQorICAgICAgICAgICAgZGF0
YVs0XSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2Vzc2lvbiIpOworICAgICAgICBlbHNlIGlm
IChjb29raWUuZXhwaXJlcykKKyAgICAgICAgICAgIGRhdGFbNF0gPSBuZXcgRGF0ZShjb29raWUu
ZXhwaXJlcykudG9HTVRTdHJpbmcoKTsKKyAgICAgICAgZWxzZSBpZiAoY29va2llLm1heEFnZSkK
KyAgICAgICAgICAgIGRhdGFbNF0gPSBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKGNvb2tpZS5tYXhB
Z2UpOworICAgICAgICBkYXRhWzVdID0gY29va2llLnNpemUoKTsKICAgICAgICAgY29uc3QgY2hl
Y2ttYXJrID0gIlx1MjcxMyI7CiAgICAgICAgIGRhdGFbNl0gPSAoY29va2llLmh0dHBPbmx5ID8g
Y2hlY2ttYXJrIDogIiIpOwogICAgICAgICBkYXRhWzddID0gKGNvb2tpZS5zZWN1cmUgPyBjaGVj
a21hcmsgOiAiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hBUkVudHJ5LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJF
bnRyeS5qcwppbmRleCAyMmUwN2Y4OGVkNmE2NWZiMDNkNDA0MTA5ZWVmMzE5NWRmZmI1NThmLi4y
NTVmYzE2Mzk0ZTU5N2QzOGM3YTFmOTZjMmI2NmZmYjQ1YmU3MzY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKQEAgLTIwNiw3ICsyMDYsNyBA
QCBXZWJJbnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFsdWU6
IGNvb2tpZS52YWx1ZSwKICAgICAgICAgICAgIHBhdGg6IGNvb2tpZS5wYXRoLAogICAgICAgICAg
ICAgZG9tYWluOiBjb29raWUuZG9tYWluLAotICAgICAgICAgICAgZXhwaXJlczogY29va2llLmV4
cGlyZXMobmV3IERhdGUodGhpcy5fcmVxdWVzdC5zdGFydFRpbWUgKiAxMDAwKSksCisgICAgICAg
ICAgICBleHBpcmVzOiBjb29raWUuZXhwaXJlc0RhdGUobmV3IERhdGUodGhpcy5fcmVxdWVzdC5z
dGFydFRpbWUgKiAxMDAwKSksCiAgICAgICAgICAgICBodHRwT25seTogY29va2llLmh0dHBPbmx5
LAogICAgICAgICAgICAgc2VjdXJlOiBjb29raWUuc2VjdXJlCiAgICAgICAgIH07CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NTMyZmExODRhNGE0MjdiZTg3MTYzNzM0ODdmMzg2ZGJlYjlhMDlkZS4uZWJhOGM0ZTJhOWExMGE5
OWRkMzk0NTQ0NzE5NGZmZGFjZjJjMTY0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTEx
LTAxICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IENvb2tpZSBpbmZvIGluIE5ldHdvcmsgUmVzb3VyY2VzIENvb2tpZXMgdGFi
IHNob3dzICJJbnZhbGlkIERhdGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NzQ3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Nvb2tpZS1wYXJzZXIuaHRtbDoKKwogMjAxMi0xMS0w
MSAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVn
aW9uc11Gb3JtZXIgYXV0by1oZWlnaHQgcmVnaW9ucyBzaG91bGQgbm90IGlnbm9yZSB0aGVpciBk
ZWZpbmVkIGhlaWdodApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nvb2tpZS1w
YXJzZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb29raWUtcGFyc2VyLmh0bWwKaW5k
ZXggODAwNWUyNWVmYWEzMzlhOTAzYjk2N2M1ZWY1MTg5ZDhjMzI0NjMzZC4uNzcwZTA4MjExOGQ2
MDhjYjQwNGFiZjljZDY0ODg4OTc4Yzg1MTgzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2Nvb2tpZS1wYXJzZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29v
a2llLXBhcnNlci5odG1sCkBAIC05LDEzICs5LDEzIEBAIGZ1bmN0aW9uIGluaXRpYWxpemVfQ29v
a2llVGVzdHMoKQogSW5zcGVjdG9yVGVzdC5kdW1wQ29va2llID0gZnVuY3Rpb24oY29va2llKQog
ewogICAgIHZhciByZXF1ZXN0RGF0ZSA9IG5ldyBEYXRlKCJNb24gT2N0IDE4IDIwMTAgMTc6MDA6
MDAgR01UKzAwMDAiKTsKLSAgICB2YXIgZXhwaXJlcyA9IGNvb2tpZS5leHBpcmVzKHJlcXVlc3RE
YXRlKTsKKyAgICB2YXIgZXhwaXJlcyA9IGNvb2tpZS5leHBpcmVzRGF0ZShyZXF1ZXN0RGF0ZSk7
CiAKICAgICB2YXIgb3V0cHV0ID0gIm5hbWU6ICIgKyBjb29raWUubmFtZSArICIsIHZhbHVlOiAi
ICsgY29va2llLnZhbHVlICsgIiwgaHR0cE9ubHk6ICIgKyBjb29raWUuaHR0cE9ubHkgKwogICAg
ICAgICAiLCBzZWN1cmU6ICIgKyBjb29raWUuc2VjdXJlICsgIiwgc2Vzc2lvbjogIiArIGNvb2tp
ZS5zZXNzaW9uICsgIiwgcGF0aDogIiArIGNvb2tpZS5wYXRoICsKICAgICAgICAgIiwgZG9tYWlu
OiAiICsgY29va2llLmRvbWFpbiArICIsIHBvcnQ6ICIgKyBjb29raWUucG9ydCArCiAgICAgICAg
ICIsIGV4cGlyZXM6ICIgKyAoZXhwaXJlcyA/IGV4cGlyZXMuZ2V0VGltZSgpIDogIm4vYSIpICsK
LSAgICAgICAgIiwgc2l6ZTogIiArIGNvb2tpZS5zaXplOworICAgICAgICAiLCBzaXplOiAiICsg
Y29va2llLnNpemUoKTsKIAogICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KG91dHB1dCk7CiAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRPYmplY3QoY29va2llLmF0dHJpYnV0ZXMpOwo=
</data>
<flag name="review"
          id="185959"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="185964"
          type_id="3"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>