<?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>188481</bug_id>
          
          <creation_ts>2018-08-10 22:33:34 -0700</creation_ts>
          <short_desc>Implement Object.fromEntries</short_desc>
          <delta_ts>2018-09-12 04:37:59 -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>JavaScriptCore</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jordan Harband">ljharb</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>chi187</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1449468</commentid>
    <comment_count>0</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2018-08-10 22:33:34 -0700</bug_when>
    <thetext>Object.fromEntries is a stage 3 proposal: https://github.com/tc39/proposal-object-from-entries

It&apos;d be great to get it implemented in Webkit/Safari soon!

Test262 tests are here: https://github.com/tc39/test262/pull/1676

Ref: https://github.com/tc39/proposal-object-from-entries/issues/21</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449486</commentid>
    <comment_count>1</comment_count>
      <attachid>346964</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-11 12:17:45 -0700</bug_when>
    <thetext>Created attachment 346964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449487</commentid>
    <comment_count>2</comment_count>
      <attachid>346965</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-11 12:18:59 -0700</bug_when>
    <thetext>Created attachment 346965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449491</commentid>
    <comment_count>3</comment_count>
      <attachid>346967</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-11 12:55:17 -0700</bug_when>
    <thetext>Created attachment 346967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449568</commentid>
    <comment_count>4</comment_count>
      <attachid>346967</attachid>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2018-08-12 22:26:09 -0700</bug_when>
    <thetext>Comment on attachment 346967
Patch

Thanks, this looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449673</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-13 10:32:50 -0700</bug_when>
    <thetext>Here are the kinds of things I think about when adding tests for an operation like this one:

Imagine that someone is trying to optimize the implementation of this and write the function some different way, not in JavaScript. I want tests to cover what that person might get wrong, such as:

1) Verify no additional properties, including but not limited to &quot;length&quot;, are &quot;get&quot; and no properties &quot;set&quot; on the iterable passed in and on the objects it returns.

2) Verify that prototypes are consulted properly when properties are missing on the objects returned by the iterable. Perhaps we&apos;d want to test a prototype chain of more than one?

3) Verify that the operations are done in the order mentioned in the specification, for example, get &quot;0&quot; before &quot;1&quot;; this typically requires passing objects that produce side effects from the &quot;get&quot; operation. But even for tests that involve prototypes, test that operations are done in the correct order.

3a) Verify that exceptions raised are propagated correctly.

4) Verify that the behavior is correct when the object has no &quot;0&quot; or &quot;1&quot; property; related to the prototype tests, but the key is that lack of property turns into &quot;undefined&quot;, if that’s the correct behavior.

5) Verify that there is no accidental transformation of either keys or values: null doesn&apos;t become undefined or vice versa, no conversion to string, etc.

6) Check what goes on in exotic cases like where the Object prototype has a non-standard value.

I’d like to see at least some of these tests be a standard practice when we add JavaScript functions. A major goal of these tests is to protect us from behavior changes if we later decide to do a different implementation. Also very useful for checking across other JavaScript implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449685</commentid>
    <comment_count>6</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2018-08-13 11:07:27 -0700</bug_when>
    <thetext>There&apos;s existing test262 tests; can that cover it, or does webkit need its own separate tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449845</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-13 17:05:36 -0700</bug_when>
    <thetext>(In reply to Jordan Harband from comment #6)
&gt; There&apos;s existing test262 tests

Great.

&gt; can that cover it, or does webkit need its own separate tests?

Sure, those are excellent, as long as we check them in to the WebKit tree and run them. This patch doesn’t show me new successes on any tests so I assume that means they are not in the tree yet.

If the test262 tests don’t cover all the things I suggested above, then I suggest we add coverage to them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449904</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-14 05:11:16 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Here are the kinds of things I think about when adding tests for an
&gt; operation like this one:
&gt; 
&gt; Imagine that someone is trying to optimize the implementation of this and
&gt; write the function some different way, not in JavaScript. I want tests to
&gt; cover what that person might get wrong, such as:
&gt; 
&gt; 1) Verify no additional properties, including but not limited to &quot;length&quot;,
&gt; are &quot;get&quot; and no properties &quot;set&quot; on the iterable passed in and on the
&gt; objects it returns.
&gt; 
&gt; 2) Verify that prototypes are consulted properly when properties are missing
&gt; on the objects returned by the iterable. Perhaps we&apos;d want to test a
&gt; prototype chain of more than one?
&gt; 
&gt; 3) Verify that the operations are done in the order mentioned in the
&gt; specification, for example, get &quot;0&quot; before &quot;1&quot;; this typically requires
&gt; passing objects that produce side effects from the &quot;get&quot; operation. But even
&gt; for tests that involve prototypes, test that operations are done in the
&gt; correct order.
&gt; 
&gt; 3a) Verify that exceptions raised are propagated correctly.
&gt; 
&gt; 4) Verify that the behavior is correct when the object has no &quot;0&quot; or &quot;1&quot;
&gt; property; related to the prototype tests, but the key is that lack of
&gt; property turns into &quot;undefined&quot;, if that’s the correct behavior.
&gt; 
&gt; 5) Verify that there is no accidental transformation of either keys or
&gt; values: null doesn&apos;t become undefined or vice versa, no conversion to
&gt; string, etc.
&gt; 
&gt; 6) Check what goes on in exotic cases like where the Object prototype has a
&gt; non-standard value.
&gt; 
&gt; I’d like to see at least some of these tests be a standard practice when we
&gt; add JavaScript functions. A major goal of these tests is to protect us from
&gt; behavior changes if we later decide to do a different implementation. Also
&gt; very useful for checking across other JavaScript implementations.

Cool, I&apos;ll update the patch.

(In reply to Jordan Harband from comment #4)
&gt; Comment on attachment 346967 [details]
&gt; Patch
&gt; 
&gt; Thanks, this looks great!

Thanks for your informal review :)
And please do not set r+ for the patch in informal review since r+ from reviewers is only effective.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450039</commentid>
    <comment_count>9</comment_count>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2018-08-14 11:25:57 -0700</bug_when>
    <thetext>whoops, sorry :-) i assumed it worked like github, where it only counts +r&apos;s from people with the collaborator bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450040</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-14 11:27:27 -0700</bug_when>
    <thetext>(In reply to Jordan Harband from comment #9)
&gt; whoops, sorry :-) i assumed it worked like github, where it only counts +r&apos;s
&gt; from people with the collaborator bit.

No problem!! :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450396</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-15 12:40:18 -0700</bug_when>
    <thetext>Oh, I guess I didn&apos;t need to set review+ because Yusuke will upload a new version for review soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450406</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-15 13:05:26 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; Oh, I guess I didn&apos;t need to set review+ because Yusuke will upload a new
&gt; version for review soon.

Oops, sorry. I was working on promise rejection in workers and some JSC issues found by UBSan :)
I&apos;ll land it with suggested tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450411</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-15 13:10:56 -0700</bug_when>
    <thetext>Did not mean to rush you at all. Just didn’t want to leave you hanging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450465</commentid>
    <comment_count>14</comment_count>
      <attachid>346967</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-15 14:25:34 -0700</bug_when>
    <thetext>Comment on attachment 346967
Patch

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

LGTM too, just a couple of suggestions.

&gt; Source/JavaScriptCore/builtins/ObjectConstructor.js:48
&gt; +    var object = {};

Style nit: Maybe use “let” in this function?

&gt; Source/JavaScriptCore/builtins/ObjectConstructor.js:50
&gt; +    for (var entry of iterable) {

Can we add tests for all the effects this function does?
- Iterator protocol
- Get on key 0 and 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456049</commentid>
    <comment_count>15</comment_count>
      <attachid>346967</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-02 09:38:55 -0700</bug_when>
    <thetext>Comment on attachment 346967
Patch

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

Thanks, I&apos;ve added suggested tests.

&gt;&gt; Source/JavaScriptCore/builtins/ObjectConstructor.js:48
&gt;&gt; +    var object = {};
&gt; 
&gt; Style nit: Maybe use “let” in this function?

Changed.

&gt;&gt; Source/JavaScriptCore/builtins/ObjectConstructor.js:50
&gt;&gt; +    for (var entry of iterable) {
&gt; 
&gt; Can we add tests for all the effects this function does?
&gt; - Iterator protocol
&gt; - Get on key 0 and 1

Added both!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456050</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-02 09:41:50 -0700</bug_when>
    <thetext>Committed r235589: &lt;https://trac.webkit.org/changeset/235589&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456051</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-02 09:42:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/44052565&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346964</attachid>
            <date>2018-08-11 12:17:45 -0700</date>
            <delta_ts>2018-08-11 12:18:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188481-20180812041744.patch</filename>
            <type>text/plain</type>
            <size>6607</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MTJhYjNlZjliMDlmNTc5NzU0MmRmYzllODE1MjdjNGUwNWE4YTE5Li5mOTY5NGE1MzY1MDAxMjU3
MjJkMDU0NTE2YmY0ZmQzZTYxNDdkOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0wOC0xMSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBPYmplY3QuZnJvbUVudHJpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQ4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJCU9iamVjdC5mcm9tRW50cmllcyBi
ZWNvbWVzIHN0YWdlIDNbMV0uIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpdCBieSB1c2luZyBidWls
dGluIEpTLgorCisJCVsxXTogaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1vYmplY3Qt
ZnJvbS1lbnRyaWVzLworCisgICAgICAgICogYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanM6
CisgICAgICAgIChmcm9tRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHA6CisKIDIwMTgtMDgtMTAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlLmxvZyBmaXJlcyBnZXR0ZXJz
IGZvciBkZWVwIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcwppbmRleCBhZGEwZWNhMmI0MTgwYjFmNTIyOWM4MmQw
MTY1YjUwODUxZWI3YThiLi5lZjIwMzYxYTAzZmIzZWVjN2I1MDE1YTAxZDQ5ZTY4NzU0YWMxOWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0Q29uc3Ry
dWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0
cnVjdG9yLmpzCkBAIC0zOSwzICszOSwyMCBAQCBmdW5jdGlvbiBlbnRyaWVzKG9iamVjdCkKIAog
ICAgIHJldHVybiBwcm9wZXJ0aWVzOwogfQorCitmdW5jdGlvbiBmcm9tRW50cmllcyhpdGVyYWJs
ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgb2JqZWN0ID0ge307CisKKyAgICBm
b3IgKHZhciBlbnRyeSBvZiBpdGVyYWJsZSkgeworICAgICAgICBpZiAoIUBpc09iamVjdChlbnRy
eSkpCisgICAgICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk9iamVjdC5mcm9tRW50cmllcyByZXF1
aXJlcyB0aGUgZmlyc3QgaXRlcmFibGUgcGFyYW1ldGVyIHlpZWxkcyBvYmplY3RzIik7CisgICAg
ICAgIHZhciBrZXkgPSBlbnRyeVswXTsKKyAgICAgICAgdmFyIHZhbHVlID0gZW50cnlbMV07Cisg
ICAgICAgIEBwdXRCeVZhbERpcmVjdChvYmplY3QsIGtleSwgdmFsdWUpOworICAgIH0KKworICAg
IHJldHVybiBvYmplY3Q7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjNhMjk2NDZlMDZmYzUxZmRkZWNmZDkxZDI1
ZDJjZjcyYmQ3MTRjMi4uM2Y5ZjgxYzM0ZmQyOTZjZTI3YmZiZDcwYzE5N2ViYTA4MjkwYmUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcApAQCAtODcsNiArODcsNyBAQCBjb25zdCBDbGFzc0luZm8gT2JqZWN0Q29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaQogICBhc3Np
Z24gICAgICAgICAgICAgICAgICAgIG9iamVjdENvbnN0cnVjdG9yQXNzaWduICAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICB2YWx1ZXMgICAgICAgICAgICAgICAgICAg
IG9iamVjdENvbnN0cnVjdG9yVmFsdWVzICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQogICBlbnRyaWVzICAgICAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBmcm9tRW50cmll
cyAgICAgICAgICAgICAgIEpTQnVpbHRpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQogQGVuZAogKi8KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4OGMyMDExNjY5MzMwZGI0MjY2NGEx
YjhkZTA1MDU2MjYzNGUyZjZmLi5kODkzZjFhMDYwNzgwOTE0MzA3M2Y4NDI2NWQ1YmQ2MDExMDlj
YjU0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA4LTExICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6
dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IE9iamVjdC5mcm9tRW50cmll
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NDgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJl
c3Mvb2JqZWN0LWZyb20tZW50cmllcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRCZS5KU09OLnN0cmluZ2lmeS5P
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKHNob3VsZEJlLnNldCBn
ZXQgc2hvdWxkVGhyb3cpOgorCiAyMDE4LTA4LTEwICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxs
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNsaWNpbmcgYW4gQXJyYXlCdWZmZXIgd2l0aCBhIGxv
bmcgbnVtYmVyIHJldHVybnMgYW4gQXJyYXlCdWZmZXIgd2l0aCBieXRlTGVuZ3RoIHplcm8KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1mcm9tLWVudHJpZXMuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9vYmplY3QtZnJvbS1lbnRyaWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMGZhNTUxODE4M2Jj
OGU4ZDc1NDUwZDU3NjIyMzgxY2EwZWMzYTUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9vYmplY3QtZnJvbS1lbnRyaWVzLmpzCkBAIC0wLDAgKzEsNzYgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JU
aHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsK
KyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAh
PT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtT
dHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCwgImZyb21FbnRyaWVzIikpLCBgeyJ3cml0YWJs
ZSI6dHJ1ZSwiZW51bWVyYWJsZSI6ZmFsc2UsImNvbmZpZ3VyYWJsZSI6dHJ1ZX1gKTsKK3Nob3Vs
ZEJlKE9iamVjdC5mcm9tRW50cmllcy5sZW5ndGgsIDEpOworCitzaG91bGRUaHJvdygoKSA9PiBP
YmplY3QuZnJvbUVudHJpZXMobnVsbCksIGBUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVj
dGApOworc2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKHVuZGVmaW5lZCksIGBU
eXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0YCk7CitzaG91bGRUaHJvdygoKSA9
PiBPYmplY3QuZnJvbUVudHJpZXMoMCksIGBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBm
dW5jdGlvbmApOworc2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKHRydWUpLCBg
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb25gKTsKK3Nob3VsZFRocm93KCgp
ID0+IE9iamVjdC5mcm9tRW50cmllcyhTeW1ib2woIkNvY29hIikpLCBgVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGEgZnVuY3Rpb25gKTsKK3Nob3VsZFRocm93KCgpID0+IE9iamVjdC5mcm9t
RW50cmllcygiQ29jb2EiKSwgYFR5cGVFcnJvcjogT2JqZWN0LmZyb21FbnRyaWVzIHJlcXVpcmVz
IHRoZSBmaXJzdCBpdGVyYWJsZSBwYXJhbWV0ZXIgeWllbGRzIG9iamVjdHNgKTsKK3Nob3VsZFRo
cm93KCgpID0+IE9iamVjdC5mcm9tRW50cmllcyhbMF0pLCBgVHlwZUVycm9yOiBPYmplY3QuZnJv
bUVudHJpZXMgcmVxdWlyZXMgdGhlIGZpcnN0IGl0ZXJhYmxlIHBhcmFtZXRlciB5aWVsZHMgb2Jq
ZWN0c2ApOworc2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKFtbIkNvY29hIiwg
IkNhcHB1Y2Npbm8iXSwgMF0pLCBgVHlwZUVycm9yOiBPYmplY3QuZnJvbUVudHJpZXMgcmVxdWly
ZXMgdGhlIGZpcnN0IGl0ZXJhYmxlIHBhcmFtZXRlciB5aWVsZHMgb2JqZWN0c2ApOworCit7Cisg
ICAgbGV0IG9iamVjdCA9IE9iamVjdC5mcm9tRW50cmllcyhbXSk7CisgICAgc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkob2JqZWN0KSwgYHt9YCk7Cit9Cit7CisgICAgbGV0IG9iamVjdCA9IE9iamVj
dC5mcm9tRW50cmllcyhbWyJDb2NvYSIsICJDYXBwdWNjaW5vIl1dKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShvYmplY3QpLCBgeyJDb2NvYSI6IkNhcHB1Y2Npbm8ifWApOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2Jq
ZWN0LCAiQ29jb2EiKSksIGB7InZhbHVlIjoiQ2FwcHVjY2lubyIsIndyaXRhYmxlIjp0cnVlLCJl
bnVtZXJhYmxlIjp0cnVlLCJjb25maWd1cmFibGUiOnRydWV9YCk7Cit9Cit7CisgICAgbGV0IG9i
aiA9IHsgYWJjOiAxLCBkZWY6IDIsIGdoaWo6IDMgfTsKKyAgICBsZXQgcmVzID0gT2JqZWN0LmZy
b21FbnRyaWVzKAorICAgICAgICBPYmplY3QuZW50cmllcyhvYmopCisgICAgICAgICAgICAuZmls
dGVyKChbIGtleSwgdmFsIF0pID0+IGtleS5sZW5ndGggPT09IDMpCisgICAgICAgICAgICAubWFw
KChbIGtleSwgdmFsIF0pID0+IFsga2V5LCB2YWwgKiAyIF0pCisgICAgICAgICk7CisgICAgc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkocmVzKSwgYHsiYWJjIjoyLCJkZWYiOjR9YCk7Cit9Cit7Cisg
ICAgbGV0IG1hcCA9IG5ldyBNYXAoWyBbICdhJywgMSBdLCBbICdiJywgMiBdLCBbICdjJywgMyBd
IF0pOworICAgIGxldCBvYmogPSBPYmplY3QuZnJvbUVudHJpZXMobWFwKTsKKyAgICBzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShvYmopLCBgeyJhIjoxLCJiIjoyLCJjIjozfWApOworfQoreworICAg
IGxldCBhcnIgPSBbIHsgbmFtZTogJ0FsaWNlJywgYWdlOiA0MCB9LCB7IG5hbWU6ICdCb2InLCBh
Z2U6IDM2IH0gXTsKKyAgICBsZXQgb2JqID0gT2JqZWN0LmZyb21FbnRyaWVzKGFyci5tYXAoKHsg
bmFtZSwgYWdlIH0pID0+IFsgbmFtZSwgYWdlIF0pKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShvYmopLCBgeyJBbGljZSI6NDAsIkJvYiI6MzZ9YCk7Cit9Cit7CisgICAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJiYWQiLCB7CisgICAgICAgIGdldCgpIHsg
dGhyb3cgbmV3IEVycm9yKCJvdXQiKTsgfSwKKyAgICAgICAgc2V0KHYpIHsgdGhyb3cgbmV3IEVy
cm9yKCJvdXQiKTsgfQorICAgIH0pOworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAg
bGV0IG9iamVjdCA9IHt9OworICAgICAgICBvYmplY3QuYmFkOworICAgIH0sIGBFcnJvcjogb3V0
YCk7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQgb2JqZWN0ID0ge307Cisg
ICAgICAgIG9iamVjdC5iYWQgPSA0MjsKKyAgICB9LCBgRXJyb3I6IG91dGApOworICAgIGxldCBv
YmplY3QgPSBPYmplY3QuZnJvbUVudHJpZXMoW1siYmFkIiwgInZhbHVlIl1dKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCBgeyJiYWQiOiJ2YWx1ZSJ9YCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346965</attachid>
            <date>2018-08-11 12:18:59 -0700</date>
            <delta_ts>2018-08-11 12:55:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188481-20180812041857.patch</filename>
            <type>text/plain</type>
            <size>6977</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MTJhYjNlZjliMDlmNTc5NzU0MmRmYzllODE1MjdjNGUwNWE4YTE5Li42NjNkOWNjMzA1YjFkNmI2
MWNjN2Q4NTgxNzhkODIxZTY1ODRiNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0wOC0xMSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBPYmplY3QuZnJvbUVudHJpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQ4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9iamVjdC5mcm9tRW50
cmllcyBiZWNvbWVzIHN0YWdlIDNbMV0uIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpdCBieSB1c2lu
ZyBidWlsdGluIEpTLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9w
b3NhbC1vYmplY3QtZnJvbS1lbnRyaWVzLworCisgICAgICAgICogYnVpbHRpbnMvT2JqZWN0Q29u
c3RydWN0b3IuanM6CisgICAgICAgIChmcm9tRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHA6CisKIDIwMTgtMDgtMTAgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlLmxvZyBm
aXJlcyBnZXR0ZXJzIGZvciBkZWVwIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcwppbmRleCBhZGEwZWNhMmI0MTgw
YjFmNTIyOWM4MmQwMTY1YjUwODUxZWI3YThiLi5jOWQ1MmY4Y2YwMTA5MTY1MGM0M2ViOWFiNDg2
ZmYwODE3MjBmZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
T2JqZWN0Q29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L09iamVjdENvbnN0cnVjdG9yLmpzCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNiBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IEpvcmRhbiBIYXJiYW5kLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHl1c3VrZXN1enVraUBzbG93c3RhcnQu
b3JnPi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMyArNDAsMjAgQEAg
ZnVuY3Rpb24gZW50cmllcyhvYmplY3QpCiAKICAgICByZXR1cm4gcHJvcGVydGllczsKIH0KKwor
ZnVuY3Rpb24gZnJvbUVudHJpZXMoaXRlcmFibGUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgdmFyIG9iamVjdCA9IHt9OworCisgICAgZm9yICh2YXIgZW50cnkgb2YgaXRlcmFibGUpIHsK
KyAgICAgICAgaWYgKCFAaXNPYmplY3QoZW50cnkpKQorICAgICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJPYmplY3QuZnJvbUVudHJpZXMgcmVxdWlyZXMgdGhlIGZpcnN0IGl0ZXJhYmxlIHBhcmFt
ZXRlciB5aWVsZHMgb2JqZWN0cyIpOworICAgICAgICB2YXIga2V5ID0gZW50cnlbMF07CisgICAg
ICAgIHZhciB2YWx1ZSA9IGVudHJ5WzFdOworICAgICAgICBAcHV0QnlWYWxEaXJlY3Qob2JqZWN0
LCBrZXksIHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gb2JqZWN0OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4
IGIzYTI5NjQ2ZTA2ZmM1MWZkZGVjZmQ5MWQyNWQyY2Y3MmJkNzE0YzIuLjNmOWY4MWMzNGZkMjk2
Y2UyN2JmYmQ3MGMxOTdlYmEwODI5MGJlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTg3LDYgKzg3LDcgQEAgY29u
c3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2kKICAgYXNzaWduICAgICAgICAgICAgICAgICAgICBvYmplY3RD
b25zdHJ1Y3RvckFzc2lnbiAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
ICAgdmFsdWVzICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyAgICAg
ICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZW50cmllcyAgICAgICAgICAg
ICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVudHJpZXMgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQK
ICovCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggODhjMjAxMTY2OTMzMGRiNDI2NjRhMWI4ZGUwNTA1NjI2MzRlMmY2Zi4uZDg5M2YxYTA2
MDc4MDkxNDMwNzNmODQyNjVkNWJkNjAxMTA5Y2I1NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0wOC0x
MSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAg
IEltcGxlbWVudCBPYmplY3QuZnJvbUVudHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQ4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL29iamVjdC1mcm9tLWVudHJpZXMuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoc2hvdWxkQmUuSlNPTi5zdHJpbmdpZnkuT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cik6CisgICAgICAgIChzaG91bGRCZS5zZXQgZ2V0IHNob3VsZFRocm93KToKKwogMjAxOC0wOC0x
MCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTbGlj
aW5nIGFuIEFycmF5QnVmZmVyIHdpdGggYSBsb25nIG51bWJlciByZXR1cm5zIGFuIEFycmF5QnVm
ZmVyIHdpdGggYnl0ZUxlbmd0aCB6ZXJvCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vYmpl
Y3QtZnJvbS1lbnRyaWVzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWZyb20tZW50cmllcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMDBmYTU1MTgxODNiYzhlOGQ3NTQ1MGQ1NzYyMjM4MWNhMGVjM2E1Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWZyb20tZW50cmllcy5qcwpA
QCAtMCwwICsxLDc2IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qs
ICJmcm9tRW50cmllcyIpKSwgYHsid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOmZhbHNlLCJj
b25maWd1cmFibGUiOnRydWV9YCk7CitzaG91bGRCZShPYmplY3QuZnJvbUVudHJpZXMubGVuZ3Ro
LCAxKTsKKworc2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKG51bGwpLCBgVHlw
ZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3RgKTsKK3Nob3VsZFRocm93KCgpID0+IE9iamVj
dC5mcm9tRW50cmllcyh1bmRlZmluZWQpLCBgVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFu
IG9iamVjdGApOworc2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKDApLCBgVHlw
ZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgZnVuY3Rpb25gKTsKK3Nob3VsZFRocm93KCgpID0+
IE9iamVjdC5mcm9tRW50cmllcyh0cnVlKSwgYFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBh
IGZ1bmN0aW9uYCk7CitzaG91bGRUaHJvdygoKSA9PiBPYmplY3QuZnJvbUVudHJpZXMoU3ltYm9s
KCJDb2NvYSIpKSwgYFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uYCk7Citz
aG91bGRUaHJvdygoKSA9PiBPYmplY3QuZnJvbUVudHJpZXMoIkNvY29hIiksIGBUeXBlRXJyb3I6
IE9iamVjdC5mcm9tRW50cmllcyByZXF1aXJlcyB0aGUgZmlyc3QgaXRlcmFibGUgcGFyYW1ldGVy
IHlpZWxkcyBvYmplY3RzYCk7CitzaG91bGRUaHJvdygoKSA9PiBPYmplY3QuZnJvbUVudHJpZXMo
WzBdKSwgYFR5cGVFcnJvcjogT2JqZWN0LmZyb21FbnRyaWVzIHJlcXVpcmVzIHRoZSBmaXJzdCBp
dGVyYWJsZSBwYXJhbWV0ZXIgeWllbGRzIG9iamVjdHNgKTsKK3Nob3VsZFRocm93KCgpID0+IE9i
amVjdC5mcm9tRW50cmllcyhbWyJDb2NvYSIsICJDYXBwdWNjaW5vIl0sIDBdKSwgYFR5cGVFcnJv
cjogT2JqZWN0LmZyb21FbnRyaWVzIHJlcXVpcmVzIHRoZSBmaXJzdCBpdGVyYWJsZSBwYXJhbWV0
ZXIgeWllbGRzIG9iamVjdHNgKTsKKworeworICAgIGxldCBvYmplY3QgPSBPYmplY3QuZnJvbUVu
dHJpZXMoW10pOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9iamVjdCksIGB7fWApOwor
fQoreworICAgIGxldCBvYmplY3QgPSBPYmplY3QuZnJvbUVudHJpZXMoW1siQ29jb2EiLCAiQ2Fw
cHVjY2lubyJdXSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwgYHsiQ29j
b2EiOiJDYXBwdWNjaW5vIn1gKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgIkNvY29hIikpLCBgeyJ2YWx1ZSI6IkNh
cHB1Y2Npbm8iLCJ3cml0YWJsZSI6dHJ1ZSwiZW51bWVyYWJsZSI6dHJ1ZSwiY29uZmlndXJhYmxl
Ijp0cnVlfWApOworfQoreworICAgIGxldCBvYmogPSB7IGFiYzogMSwgZGVmOiAyLCBnaGlqOiAz
IH07CisgICAgbGV0IHJlcyA9IE9iamVjdC5mcm9tRW50cmllcygKKyAgICAgICAgT2JqZWN0LmVu
dHJpZXMob2JqKQorICAgICAgICAgICAgLmZpbHRlcigoWyBrZXksIHZhbCBdKSA9PiBrZXkubGVu
Z3RoID09PSAzKQorICAgICAgICAgICAgLm1hcCgoWyBrZXksIHZhbCBdKSA9PiBbIGtleSwgdmFs
ICogMiBdKQorICAgICAgICApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHJlcyksIGB7
ImFiYyI6MiwiZGVmIjo0fWApOworfQoreworICAgIGxldCBtYXAgPSBuZXcgTWFwKFsgWyAnYScs
IDEgXSwgWyAnYicsIDIgXSwgWyAnYycsIDMgXSBdKTsKKyAgICBsZXQgb2JqID0gT2JqZWN0LmZy
b21FbnRyaWVzKG1hcCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob2JqKSwgYHsiYSI6
MSwiYiI6MiwiYyI6M31gKTsKK30KK3sKKyAgICBsZXQgYXJyID0gWyB7IG5hbWU6ICdBbGljZScs
IGFnZTogNDAgfSwgeyBuYW1lOiAnQm9iJywgYWdlOiAzNiB9IF07CisgICAgbGV0IG9iaiA9IE9i
amVjdC5mcm9tRW50cmllcyhhcnIubWFwKCh7IG5hbWUsIGFnZSB9KSA9PiBbIG5hbWUsIGFnZSBd
KSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob2JqKSwgYHsiQWxpY2UiOjQwLCJCb2Ii
OjM2fWApOworfQoreworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBl
LCAiYmFkIiwgeworICAgICAgICBnZXQoKSB7IHRocm93IG5ldyBFcnJvcigib3V0Iik7IH0sCisg
ICAgICAgIHNldCh2KSB7IHRocm93IG5ldyBFcnJvcigib3V0Iik7IH0KKyAgICB9KTsKKyAgICBz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgb2Jq
ZWN0LmJhZDsKKyAgICB9LCBgRXJyb3I6IG91dGApOworICAgIHNob3VsZFRocm93KCgpID0+IHsK
KyAgICAgICAgbGV0IG9iamVjdCA9IHt9OworICAgICAgICBvYmplY3QuYmFkID0gNDI7CisgICAg
fSwgYEVycm9yOiBvdXRgKTsKKyAgICBsZXQgb2JqZWN0ID0gT2JqZWN0LmZyb21FbnRyaWVzKFtb
ImJhZCIsICJ2YWx1ZSJdXSk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSwg
YHsiYmFkIjoidmFsdWUifWApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346967</attachid>
            <date>2018-08-11 12:55:17 -0700</date>
            <delta_ts>2018-08-15 12:39:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188481-20180812045516.patch</filename>
            <type>text/plain</type>
            <size>11196</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MTJhYjNlZjliMDlmNTc5NzU0MmRmYzllODE1MjdjNGUwNWE4YTE5Li42NjNkOWNjMzA1YjFkNmI2
MWNjN2Q4NTgxNzhkODIxZTY1ODRiNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0wOC0xMSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBPYmplY3QuZnJvbUVudHJpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODQ4MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9iamVjdC5mcm9tRW50
cmllcyBiZWNvbWVzIHN0YWdlIDNbMV0uIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpdCBieSB1c2lu
ZyBidWlsdGluIEpTLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9w
b3NhbC1vYmplY3QtZnJvbS1lbnRyaWVzLworCisgICAgICAgICogYnVpbHRpbnMvT2JqZWN0Q29u
c3RydWN0b3IuanM6CisgICAgICAgIChmcm9tRW50cmllcyk6CisgICAgICAgICogcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5jcHA6CisKIDIwMTgtMDgtMTAgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xlLmxvZyBm
aXJlcyBnZXR0ZXJzIGZvciBkZWVwIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcwppbmRleCBhZGEwZWNhMmI0MTgw
YjFmNTIyOWM4MmQwMTY1YjUwODUxZWI3YThiLi5jOWQ1MmY4Y2YwMTA5MTY1MGM0M2ViOWFiNDg2
ZmYwODE3MjBmZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
T2JqZWN0Q29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L09iamVjdENvbnN0cnVjdG9yLmpzCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNiBPbGVrc2FuZHIgU2thY2hrb3YgPGdza2FjaGtvdkBnbWFpbC5jb20+LgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IEpvcmRhbiBIYXJiYW5kLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHl1c3VrZXN1enVraUBzbG93c3RhcnQu
b3JnPi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMyArNDAsMjAgQEAg
ZnVuY3Rpb24gZW50cmllcyhvYmplY3QpCiAKICAgICByZXR1cm4gcHJvcGVydGllczsKIH0KKwor
ZnVuY3Rpb24gZnJvbUVudHJpZXMoaXRlcmFibGUpCit7CisgICAgInVzZSBzdHJpY3QiOworCisg
ICAgdmFyIG9iamVjdCA9IHt9OworCisgICAgZm9yICh2YXIgZW50cnkgb2YgaXRlcmFibGUpIHsK
KyAgICAgICAgaWYgKCFAaXNPYmplY3QoZW50cnkpKQorICAgICAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJPYmplY3QuZnJvbUVudHJpZXMgcmVxdWlyZXMgdGhlIGZpcnN0IGl0ZXJhYmxlIHBhcmFt
ZXRlciB5aWVsZHMgb2JqZWN0cyIpOworICAgICAgICB2YXIga2V5ID0gZW50cnlbMF07CisgICAg
ICAgIHZhciB2YWx1ZSA9IGVudHJ5WzFdOworICAgICAgICBAcHV0QnlWYWxEaXJlY3Qob2JqZWN0
LCBrZXksIHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gb2JqZWN0OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4
IGIzYTI5NjQ2ZTA2ZmM1MWZkZGVjZmQ5MWQyNWQyY2Y3MmJkNzE0YzIuLjNmOWY4MWMzNGZkMjk2
Y2UyN2JmYmQ3MGMxOTdlYmEwODI5MGJlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTg3LDYgKzg3LDcgQEAgY29u
c3QgQ2xhc3NJbmZvIE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJ
bnRlcm5hbEZ1bmN0aW9uOjpzX2kKICAgYXNzaWduICAgICAgICAgICAgICAgICAgICBvYmplY3RD
b25zdHJ1Y3RvckFzc2lnbiAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIK
ICAgdmFsdWVzICAgICAgICAgICAgICAgICAgICBvYmplY3RDb25zdHJ1Y3RvclZhbHVlcyAgICAg
ICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgZW50cmllcyAgICAgICAgICAg
ICAgICAgICBKU0J1aWx0aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgZnJvbUVudHJpZXMgICAgICAgICAgICAgICBKU0J1aWx0aW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKIEBlbmQK
ICovCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBkNGU2ZmVkOWQwNWIxZGMwOGQ5Zjg4YjljYTg0NjdlZTJhYWRhNWZkLi43
MTJkZTE2NDU4MWFiNDZlY2NlOGI2ZjZlMzdjYjgyMGRlNzgzZTZlIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTgtMDgtMTEgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0
Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgT2JqZWN0LmZyb21FbnRyaWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg0ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL09iamVjdC1nZXRPd25Q
cm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvT2Jq
ZWN0LWdldE93blByb3BlcnR5TmFtZXMuanM6CisKIDIwMTgtMDgtMTAgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjb25zb2xl
LmxvZyBmaXJlcyBnZXR0ZXJzIGZvciBkZWVwIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAppbmRleCA5
OWMwMzlhMjVmMGQ0OTVmZGU2OWVjMmE2NDI0ZWQ2ZGU5OTE0NTQ5Li41NjUyNThlMDQzNjEzNjVm
NDE0NWU4NjNhYTQ5NmE5N2QxZmFiM2I3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9PYmpl
Y3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMv
T2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CkBAIC00Miw3ICs0Miw3IEBA
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhkZWNvZGVVUkkpIGlzIFsnbGVuZ3RoJywg
J25hbWUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKGRlY29kZVVSSUNvbXBvbmVu
dCkgaXMgWydsZW5ndGgnLCAnbmFtZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMo
ZW5jb2RlVVJJKSBpcyBbJ2xlbmd0aCcsICduYW1lJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVy
dHlOYW1lcyhlbmNvZGVVUklDb21wb25lbnQpIGlzIFsnbGVuZ3RoJywgJ25hbWUnXQotUEFTUyBn
ZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdCkgaXMgWydhc3NpZ24nLCAnY3JlYXRlJywg
J2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZW50cmllcycsICdmcmVlemUn
LCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcnMn
LCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCAnZ2V0UHJv
dG90eXBlT2YnLCAnaXMnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywg
J2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBl
JywgJ3NlYWwnLCAnc2V0UHJvdG90eXBlT2YnLCAndmFsdWVzJ10KK1BBU1MgZ2V0U29ydGVkT3du
UHJvcGVydHlOYW1lcyhPYmplY3QpIGlzIFsnYXNzaWduJywgJ2NyZWF0ZScsICdkZWZpbmVQcm9w
ZXJ0aWVzJywgJ2RlZmluZVByb3BlcnR5JywgJ2VudHJpZXMnLCAnZnJlZXplJywgJ2Zyb21FbnRy
aWVzJywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicsICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3JzJywgJ2dldE93blByb3BlcnR5TmFtZXMnLCAnZ2V0T3duUHJvcGVydHlTeW1ib2xzJywgJ2dl
dFByb3RvdHlwZU9mJywgJ2lzJywgJ2lzRXh0ZW5zaWJsZScsICdpc0Zyb3plbicsICdpc1NlYWxl
ZCcsICdrZXlzJywgJ2xlbmd0aCcsICduYW1lJywgJ3ByZXZlbnRFeHRlbnNpb25zJywgJ3Byb3Rv
dHlwZScsICdzZWFsJywgJ3NldFByb3RvdHlwZU9mJywgJ3ZhbHVlcyddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlwZSkgaXMgWydfX2RlZmluZUdldHRlcl9f
JywgJ19fZGVmaW5lU2V0dGVyX18nLCAnX19sb29rdXBHZXR0ZXJfXycsICdfX2xvb2t1cFNldHRl
cl9fJywgJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdoYXNPd25Qcm9wZXJ0eScsICdpc1By
b3RvdHlwZU9mJywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3Rv
U3RyaW5nJywgJ3ZhbHVlT2YnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0
aW9uKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93
blByb3BlcnR5TmFtZXMoRnVuY3Rpb24ucHJvdG90eXBlKSBpcyBbJ2FwcGx5JywgJ2FyZ3VtZW50
cycsICdiaW5kJywgJ2NhbGwnLCAnY2FsbGVyJywgJ2NvbnN0cnVjdG9yJywgJ2xlbmd0aCcsICdu
YW1lJywgJ3RvU3RyaW5nJ10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwppbmRleCA3ZTFhYjVhNzMyOTQzOGFl
MGJjMzkzMmM3ODU3MjhhMDcxZjJhNjM4Li4zMmEzOGMzYzUxY2ZkOGE1NGFlZWYyYmQ4ZjRmMDc4
NjkxMmZlNmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0
LWdldE93blByb3BlcnR5TmFtZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCkBAIC01MSw3ICs1MSw3IEBACiAgICAgImVu
Y29kZVVSSSI6ICJbJ2xlbmd0aCcsICduYW1lJ10iLAogICAgICJlbmNvZGVVUklDb21wb25lbnQi
OiAiWydsZW5ndGgnLCAnbmFtZSddIiwKIC8vIEJ1aWx0LWluIEVDTUEgb2JqZWN0cwotICAgICJP
YmplY3QiOiAiWydhc3NpZ24nLCAnY3JlYXRlJywgJ2RlZmluZVByb3BlcnRpZXMnLCAnZGVmaW5l
UHJvcGVydHknLCAnZW50cmllcycsICdmcmVlemUnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
JywgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcnMnLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdn
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMnLCAnZ2V0UHJvdG90eXBlT2YnLCAnaXMnLCAnaXNFeHRlbnNp
YmxlJywgJ2lzRnJvemVuJywgJ2lzU2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAn
cHJldmVudEV4dGVuc2lvbnMnLCAncHJvdG90eXBlJywgJ3NlYWwnLCAnc2V0UHJvdG90eXBlT2Yn
LCAndmFsdWVzJ10iLAorICAgICJPYmplY3QiOiAiWydhc3NpZ24nLCAnY3JlYXRlJywgJ2RlZmlu
ZVByb3BlcnRpZXMnLCAnZGVmaW5lUHJvcGVydHknLCAnZW50cmllcycsICdmcmVlemUnLCAnZnJv
bUVudHJpZXMnLCAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgJ2dldE93blByb3BlcnR5RGVz
Y3JpcHRvcnMnLCAnZ2V0T3duUHJvcGVydHlOYW1lcycsICdnZXRPd25Qcm9wZXJ0eVN5bWJvbHMn
LCAnZ2V0UHJvdG90eXBlT2YnLCAnaXMnLCAnaXNFeHRlbnNpYmxlJywgJ2lzRnJvemVuJywgJ2lz
U2VhbGVkJywgJ2tleXMnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJldmVudEV4dGVuc2lvbnMnLCAn
cHJvdG90eXBlJywgJ3NlYWwnLCAnc2V0UHJvdG90eXBlT2YnLCAndmFsdWVzJ10iLAogICAgICJP
YmplY3QucHJvdG90eXBlIjogIlsnX19kZWZpbmVHZXR0ZXJfXycsICdfX2RlZmluZVNldHRlcl9f
JywgJ19fbG9va3VwR2V0dGVyX18nLCAnX19sb29rdXBTZXR0ZXJfXycsICdfX3Byb3RvX18nLCAn
Y29uc3RydWN0b3InLCAnaGFzT3duUHJvcGVydHknLCAnaXNQcm90b3R5cGVPZicsICdwcm9wZXJ0
eUlzRW51bWVyYWJsZScsICd0b0xvY2FsZVN0cmluZycsICd0b1N0cmluZycsICd2YWx1ZU9mJ10i
LAogICAgICJGdW5jdGlvbiI6ICJbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddIiwKICAg
ICAiRnVuY3Rpb24ucHJvdG90eXBlIjogIlsnYXBwbHknLCAnYXJndW1lbnRzJywgJ2JpbmQnLCAn
Y2FsbCcsICdjYWxsZXInLCAnY29uc3RydWN0b3InLCAnbGVuZ3RoJywgJ25hbWUnLCAndG9TdHJp
bmcnXSIsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDg4YzIwMTE2NjkzMzBkYjQyNjY0YTFiOGRlMDUwNTYyNjM0ZTJmNmYuLmQ4OTNmMWEw
NjA3ODA5MTQzMDczZjg0MjY1ZDViZDYwMTEwOWNiNTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDgt
MTEgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAg
ICBJbXBsZW1lbnQgT2JqZWN0LmZyb21FbnRyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9vYmplY3QtZnJvbS1lbnRyaWVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKHNob3VsZEJlLkpTT04uc3RyaW5naWZ5Lk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IpOgorICAgICAgICAoc2hvdWxkQmUuc2V0IGdldCBzaG91bGRUaHJvdyk6CisKIDIwMTgtMDgt
MTAgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2xp
Y2luZyBhbiBBcnJheUJ1ZmZlciB3aXRoIGEgbG9uZyBudW1iZXIgcmV0dXJucyBhbiBBcnJheUJ1
ZmZlciB3aXRoIGJ5dGVMZW5ndGggemVybwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2Jq
ZWN0LWZyb20tZW50cmllcy5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1mcm9tLWVudHJpZXMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjAwZmE1NTE4MTgzYmM4ZThkNzU0NTBkNTc2MjIzODFjYTBlYzNhNQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1mcm9tLWVudHJpZXMuanMK
QEAgLTAsMCArMSw3NiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVy
cm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJv
ciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQor
ICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93
bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0
LCAiZnJvbUVudHJpZXMiKSksIGB7IndyaXRhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjpmYWxzZSwi
Y29uZmlndXJhYmxlIjp0cnVlfWApOworc2hvdWxkQmUoT2JqZWN0LmZyb21FbnRyaWVzLmxlbmd0
aCwgMSk7CisKK3Nob3VsZFRocm93KCgpID0+IE9iamVjdC5mcm9tRW50cmllcyhudWxsKSwgYFR5
cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0YCk7CitzaG91bGRUaHJvdygoKSA9PiBPYmpl
Y3QuZnJvbUVudHJpZXModW5kZWZpbmVkKSwgYFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBh
biBvYmplY3RgKTsKK3Nob3VsZFRocm93KCgpID0+IE9iamVjdC5mcm9tRW50cmllcygwKSwgYFR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uYCk7CitzaG91bGRUaHJvdygoKSA9
PiBPYmplY3QuZnJvbUVudHJpZXModHJ1ZSksIGBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3Qg
YSBmdW5jdGlvbmApOworc2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKFN5bWJv
bCgiQ29jb2EiKSksIGBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbmApOwor
c2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmZyb21FbnRyaWVzKCJDb2NvYSIpLCBgVHlwZUVycm9y
OiBPYmplY3QuZnJvbUVudHJpZXMgcmVxdWlyZXMgdGhlIGZpcnN0IGl0ZXJhYmxlIHBhcmFtZXRl
ciB5aWVsZHMgb2JqZWN0c2ApOworc2hvdWxkVGhyb3coKCkgPT4gT2JqZWN0LmZyb21FbnRyaWVz
KFswXSksIGBUeXBlRXJyb3I6IE9iamVjdC5mcm9tRW50cmllcyByZXF1aXJlcyB0aGUgZmlyc3Qg
aXRlcmFibGUgcGFyYW1ldGVyIHlpZWxkcyBvYmplY3RzYCk7CitzaG91bGRUaHJvdygoKSA9PiBP
YmplY3QuZnJvbUVudHJpZXMoW1siQ29jb2EiLCAiQ2FwcHVjY2lubyJdLCAwXSksIGBUeXBlRXJy
b3I6IE9iamVjdC5mcm9tRW50cmllcyByZXF1aXJlcyB0aGUgZmlyc3QgaXRlcmFibGUgcGFyYW1l
dGVyIHlpZWxkcyBvYmplY3RzYCk7CisKK3sKKyAgICBsZXQgb2JqZWN0ID0gT2JqZWN0LmZyb21F
bnRyaWVzKFtdKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShvYmplY3QpLCBge31gKTsK
K30KK3sKKyAgICBsZXQgb2JqZWN0ID0gT2JqZWN0LmZyb21FbnRyaWVzKFtbIkNvY29hIiwgIkNh
cHB1Y2Npbm8iXV0pOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9iamVjdCksIGB7IkNv
Y29hIjoiQ2FwcHVjY2lubyJ9YCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsICJDb2NvYSIpKSwgYHsidmFsdWUiOiJD
YXBwdWNjaW5vIiwid3JpdGFibGUiOnRydWUsImVudW1lcmFibGUiOnRydWUsImNvbmZpZ3VyYWJs
ZSI6dHJ1ZX1gKTsKK30KK3sKKyAgICBsZXQgb2JqID0geyBhYmM6IDEsIGRlZjogMiwgZ2hpajog
MyB9OworICAgIGxldCByZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoCisgICAgICAgIE9iamVjdC5l
bnRyaWVzKG9iaikKKyAgICAgICAgICAgIC5maWx0ZXIoKFsga2V5LCB2YWwgXSkgPT4ga2V5Lmxl
bmd0aCA9PT0gMykKKyAgICAgICAgICAgIC5tYXAoKFsga2V5LCB2YWwgXSkgPT4gWyBrZXksIHZh
bCAqIDIgXSkKKyAgICAgICAgKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShyZXMpLCBg
eyJhYmMiOjIsImRlZiI6NH1gKTsKK30KK3sKKyAgICBsZXQgbWFwID0gbmV3IE1hcChbIFsgJ2En
LCAxIF0sIFsgJ2InLCAyIF0sIFsgJ2MnLCAzIF0gXSk7CisgICAgbGV0IG9iaiA9IE9iamVjdC5m
cm9tRW50cmllcyhtYXApOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9iaiksIGB7ImEi
OjEsImIiOjIsImMiOjN9YCk7Cit9Cit7CisgICAgbGV0IGFyciA9IFsgeyBuYW1lOiAnQWxpY2Un
LCBhZ2U6IDQwIH0sIHsgbmFtZTogJ0JvYicsIGFnZTogMzYgfSBdOworICAgIGxldCBvYmogPSBP
YmplY3QuZnJvbUVudHJpZXMoYXJyLm1hcCgoeyBuYW1lLCBhZ2UgfSkgPT4gWyBuYW1lLCBhZ2Ug
XSkpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9iaiksIGB7IkFsaWNlIjo0MCwiQm9i
IjozNn1gKTsKK30KK3sKKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlw
ZSwgImJhZCIsIHsKKyAgICAgICAgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoIm91dCIpOyB9LAor
ICAgICAgICBzZXQodikgeyB0aHJvdyBuZXcgRXJyb3IoIm91dCIpOyB9CisgICAgfSk7CisgICAg
c2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBsZXQgb2JqZWN0ID0ge307CisgICAgICAgIG9i
amVjdC5iYWQ7CisgICAgfSwgYEVycm9yOiBvdXRgKTsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7
CisgICAgICAgIGxldCBvYmplY3QgPSB7fTsKKyAgICAgICAgb2JqZWN0LmJhZCA9IDQyOworICAg
IH0sIGBFcnJvcjogb3V0YCk7CisgICAgbGV0IG9iamVjdCA9IE9iamVjdC5mcm9tRW50cmllcyhb
WyJiYWQiLCAidmFsdWUiXV0pOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KG9iamVjdCks
IGB7ImJhZCI6InZhbHVlIn1gKTsKK30K
</data>
<flag name="review"
          id="365000"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>