<?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>188501</bug_id>
          
          <creation_ts>2018-08-13 01:39:03 -0700</creation_ts>
          <short_desc>Meaning of OptionSet::contains is unclear when used with OptionSet argument</short_desc>
          <delta_ts>2018-08-13 22:55:19 -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 Template Framework</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1449591</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 01:39:03 -0700</bug_when>
    <thetext>Does it test for any or all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449593</commentid>
    <comment_count>1</comment_count>
      <attachid>347002</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 02:20:48 -0700</bug_when>
    <thetext>Created attachment 347002
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449594</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-13 02:22:46 -0700</bug_when>
    <thetext>Attachment 347002 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449645</commentid>
    <comment_count>3</comment_count>
      <attachid>347002</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-08-13 09:10:17 -0700</bug_when>
    <thetext>Comment on attachment 347002
patch

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

&gt; Source/WTF/ChangeLog:8
&gt; +        The existing behavior is &quot;contains any&quot; but it is not very clear from the name.

I think contains() should act like containsAll(). When I say

    options1.contains(options2)

I would expect this expression to be evaluated to true if and only if &quot;all&quot; the bits of options2 are also in options1.

&gt; Source/WTF/wtf/OptionSet.h:107
&gt; +    constexpr bool containsAny(OptionSet optionSet) const
&gt; +    {
&gt; +        return !!(*this &amp; optionSet);
&gt; +    }

I do not think this is needed. The bitwise &amp; operator overloading can do exactly what this function does. When I say

    if (option1 &amp; options2)

The result of the expression &quot;option1 &amp; options2&quot; is an OptionSet which contains option1.m_storage &amp; option1.m_storage. The bool cast operator will check isEmpty of the the result OptionSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449687</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 11:16:28 -0700</bug_when>
    <thetext>&gt; I think contains() should act like containsAll(). When I say

You may think that, but the fact the it didn&apos;t is a pretty strong indication that not everyone agrees. Better use clear names.

&gt; I do not think this is needed. The bitwise &amp; operator overloading can do
&gt; exactly what this function does. When I say
&gt; 
&gt;     if (option1 &amp; options2)

contains*() functions are useful because they return bools. For example 

bool foo = option1 &amp; options2; 

doesn&apos;t compile, you need a clunky explicit conversion:

bool foo = !!(option1 &amp; options2);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449698</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-08-13 11:31:35 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; &gt; I think contains() should act like containsAll(). When I say
&gt; 
&gt; You may think that, but the fact the it didn&apos;t is a pretty strong indication
&gt; that not everyone agrees. Better use clear names.
&gt; 

The verb contains means: &quot;have or hold (someone or something) within&quot;. Your implementation make OptionSet::contains() means &quot;contains some of&quot;.

&gt; &gt; I do not think this is needed. The bitwise &amp; operator overloading can do
&gt; &gt; exactly what this function does. When I say
&gt; &gt; 
&gt; &gt;     if (option1 &amp; options2)
&gt; 
&gt; contains*() functions are useful because they return bools. For example 
&gt; 
&gt; bool foo = option1 &amp; options2; 

How often such expression is used in our code base? I rarely see such use.

And I do not think it is good design to have two operations does the same thing.

if (option1 &amp; options2)
if (option1.contsinas(options2))


In fact the second one will be semantically wrong if option1 is a sub set of option2 because your implementation for contains() makes it commutative operation although it should not. For example if option1 = 0x1 and option2 = 0xff

if (option1.contsinas(options2))

will be true even semantically it should be false.  In this case 

if (option1 &amp; options2)

will be make more sense and the order of arguments will not matter.

&gt; 
&gt; doesn&apos;t compile, you need a clunky explicit conversion:
&gt; 
&gt; bool foo = !!(option1 &amp; options2);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449701</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 11:35:55 -0700</bug_when>
    <thetext>&gt; Your implementation make OptionSet::contains() means &quot;contains some of&quot;.

No it doesn&apos;t.

&gt; How often such expression is used in our code base? I rarely see such use.

A lot.

&gt; And I do not think it is good design to have two operations does the same
&gt; thing.

I disagree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449702</commentid>
    <comment_count>7</comment_count>
      <attachid>347019</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 11:36:31 -0700</bug_when>
    <thetext>Created attachment 347019
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449723</commentid>
    <comment_count>8</comment_count>
      <attachid>347019</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 12:16:17 -0700</bug_when>
    <thetext>Comment on attachment 347019
patch

Clearing flags on attachment: 347019

Committed r234811: &lt;https://trac.webkit.org/changeset/234811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449724</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 12:16:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449725</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-13 12:17:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/43246242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449760</commentid>
    <comment_count>11</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-13 14:03:10 -0700</bug_when>
    <thetext>This broke the WinCairo builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449864</commentid>
    <comment_count>12</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-13 18:16:40 -0700</bug_when>
    <thetext>Ok I&apos;ve had some time to narrow this down.

It was failing to compile Source/WebCore/rendering/TextDecorationPainter.cpp on MSVC within the contains method. There are multiple instances of contains with an OptionSet within that file but the part its choking on is within a lambda.

https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/rendering/TextDecorationPainter.cpp#L385

I have a feeling its another MSVC bug that&apos;s the issue here. Will attempt to make a godbolt example and throw it at the Visual Studio folks.

Anyways if contains doesn&apos;t use an std::initializer_list things get back to green. Its not just WinCairo but AppleWin that are red here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449872</commentid>
    <comment_count>13</comment_count>
      <attachid>347061</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-08-13 19:07:19 -0700</bug_when>
    <thetext>Created attachment 347061
MSVC build fix

Its a build fix but I figured antti should take a look first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449882</commentid>
    <comment_count>14</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 22:53:28 -0700</bug_when>
    <thetext>Thanks for the fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449883</commentid>
    <comment_count>15</comment_count>
      <attachid>347061</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 22:55:17 -0700</bug_when>
    <thetext>Comment on attachment 347061
MSVC build fix

Clearing flags on attachment: 347061

Committed r234835: &lt;https://trac.webkit.org/changeset/234835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449884</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 22:55:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347002</attachid>
            <date>2018-08-13 02:20:48 -0700</date>
            <delta_ts>2018-08-13 11:36:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-contains-any-all.patch</filename>
            <type>text/plain</type>
            <size>9585</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA4LTEzICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNZWFuaW5nIG9mIE9wdGlvblNldDo6Y29udGFpbnMg
aXMgdW5jbGVhciB3aGVuIHVzZWQgd2l0aCBPcHRpb25TZXQgYXJndW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODUwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBleGlzdGluZyBiZWhhdmlv
ciBpcyAiY29udGFpbnMgYW55IiBidXQgaXQgaXMgbm90IHZlcnkgY2xlYXIgZnJvbSB0aGUgbmFt
ZS4KKworICAgICAgICAqIHd0Zi9PcHRpb25TZXQuaDoKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0
Ojpjb250YWlucyBjb25zdCk6CisKKyAgICAgICAgVGhpcyBpcyBub3cgZm9yIHRlc3RpbmcgYSBz
aW5nbGUgb3B0aW9uIG9ubHkuCisKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0Ojpjb250YWluc0Fu
eSBjb25zdCk6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6Y29udGFpbnNBbGwgY29uc3QpOgor
CisgICAgICAgIEFkZCBzZXBhcmF0ZSBmdW5jdGlvbnMgZm9yIE9wdGlvblNldCBhcmd1bWVudC4K
KwogMjAxOC0wOC0xMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbbWFjT1NdIE11bHRpcGxlIHRoaXJkIHBhcnR5IGFwcHMgY3Jhc2ggZHVlIHRvIHRoZSB0aHJl
YWQgc2FmZXR5IGNoZWNrIGluIFRpbWVyQmFzZTo6c2V0TmV4dEZpcmVUaW1lCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PcHRp
b25TZXQuaAkocmV2aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk2LDkgKzk2LDE5IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0ZXhw
ciBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgeyByZXR1cm4gIWlzRW1wdHkoKTsgfQogCi0gICAg
Y29uc3RleHByIGJvb2wgY29udGFpbnMoT3B0aW9uU2V0IG9wdGlvblNldCkgY29uc3QKKyAgICBj
b25zdGV4cHIgYm9vbCBjb250YWlucyhUIG9wdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3N0b3JhZ2UgJiBvcHRpb25TZXQubV9zdG9yYWdlOworICAgICAgICByZXR1cm4gY29u
dGFpbnNBbnkoeyBvcHRpb24gfSk7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgY29udGFp
bnNBbnkoT3B0aW9uU2V0IG9wdGlvblNldCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAh
ISgqdGhpcyAmIG9wdGlvblNldCk7CisgICAgfQorCisgICAgY29uc3RleHByIGJvb2wgY29udGFp
bnNBbGwoT3B0aW9uU2V0IG9wdGlvblNldCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAo
KnRoaXMgJiBvcHRpb25TZXQpID09IG9wdGlvblNldDsKICAgICB9CiAKICAgICBjb25zdGV4cHIg
ZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0Nzk0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDgtMTMgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIE1lYW5pbmcgb2YgT3B0aW9uU2V0Ojpj
b250YWlucyBpcyB1bmNsZWFyIHdoZW4gdXNlZCB3aXRoIE9wdGlvblNldCBhcmd1bWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cG9zc2libHlIYXNN
YXJrZXJzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Omhhc01hcmtlcnMgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2VsZWN0aW9uQ29s
b3IgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKwog
MjAxOC0wOC0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBD
cmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5TdG9yYWdlIGF0IFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OmNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
MzQ3OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGlubGluZSBib29sIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cG9zc2libHlIYXNNYXJrZXJz
KE9wdGlvblNldDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4gdHlwZXMpCiB7Ci0gICAgcmV0
dXJuIG1fcG9zc2libHlFeGlzdGluZ01hcmtlclR5cGVzLmNvbnRhaW5zKHR5cGVzKTsKKyAgICBy
ZXR1cm4gbV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMuY29udGFpbnNBbnkodHlwZXMpOwog
fQogCiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcihE
b2N1bWVudCYgZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5oCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weU1hcmtlcnMoTm9kZSogc3JjTm9kZSwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIGludCBsZW5ndGgsIE5vZGUqIGRzdE5vZGUsIGludCBkZWx0YSk7CiAg
ICAgYm9vbCBoYXNNYXJrZXJzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX21hcmtl
cnMuaXNFbXB0eSgpID09ICFtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBlcy5jb250YWlucyhE
b2N1bWVudE1hcmtlcjo6YWxsTWFya2VycygpKSk7CisgICAgICAgIEFTU0VSVChtX21hcmtlcnMu
aXNFbXB0eSgpID09ICFtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBlcy5jb250YWluc0FueShE
b2N1bWVudE1hcmtlcjo6YWxsTWFya2VycygpKSk7CiAgICAgICAgIHJldHVybiAhbV9tYXJrZXJz
LmlzRW1wdHkoKTsKICAgICB9CiAgICAgYm9vbCBoYXNNYXJrZXJzKFJhbmdlJiwgT3B0aW9uU2V0
PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPiA9IERvY3VtZW50TWFya2VyOjphbGxNYXJrZXJz
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYxLDcgKzEzNjEsNyBAQCBDb2xvciBSZW5kZXJF
bGVtZW50OjpzZWxlY3Rpb25Db2xvcihDU1NQCiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgdW5z
ZWxlY3RhYmxlLCBvciB3ZSBhcmUgb25seSBwYWludGluZyB0aGUgc2VsZWN0aW9uLAogICAgIC8v
IGRvbid0IG92ZXJyaWRlIHRoZSBmb3JlZ3JvdW5kIGNvbG9yIHdpdGggdGhlIHNlbGVjdGlvbiBm
b3JlZ3JvdW5kIGNvbG9yLgogICAgIGlmIChzdHlsZSgpLnVzZXJTZWxlY3QoKSA9PSBVc2VyU2Vs
ZWN0OjpOb25lCi0gICAgICAgIHx8ICh2aWV3KCkuZnJhbWVWaWV3KCkucGFpbnRCZWhhdmlvcigp
LmNvbnRhaW5zKE9wdGlvblNldDxQYWludEJlaGF2aW9yPihQYWludEJlaGF2aW9yOjpTZWxlY3Rp
b25Pbmx5KSB8IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSkpKQor
ICAgICAgICB8fCAodmlldygpLmZyYW1lVmlldygpLnBhaW50QmVoYXZpb3IoKS5jb250YWluc0Fu
eSh7IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbk9ubHksIFBhaW50QmVoYXZpb3I6OlNlbGVjdGlv
bkFuZEJhY2tncm91bmRzT25seSB9KSkpCiAgICAgICAgIHJldHVybiBDb2xvcigpOwogCiAgICAg
aWYgKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcHNldWRvU3R5bGUgPSBzZWxlY3Rpb25Q
c2V1ZG9TdHlsZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3ODgsNyArNDc4OCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWcKICAgICAKICAgICAvLyBXZSBoYXZlIHRv
IGxvb3AgdGhyb3VnaCBldmVyeSBmcmFnbWVudCBtdWx0aXBsZSB0aW1lcywgc2luY2Ugd2UgaGF2
ZSB0byByZXBhaW50IGluIGVhY2ggc3BlY2lmaWMgcGhhc2UgaW4gb3JkZXIgZm9yCiAgICAgLy8g
aW50ZXJsZWF2aW5nIG9mIHRoZSBmcmFnbWVudHMgdG8gd29yayBwcm9wZXJseS4KLSAgICBib29s
IHNlbGVjdGlvbk9ubHkgPSBsb2NhbFBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yLmNvbnRhaW5z
KE9wdGlvblNldDxQYWludEJlaGF2aW9yPihQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25BbmRCYWNr
Z3JvdW5kc09ubHkpIHwgUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uT25seSk7CisgICAgYm9vbCBz
ZWxlY3Rpb25Pbmx5ID0gbG9jYWxQYWludGluZ0luZm8ucGFpbnRCZWhhdmlvci5jb250YWluc0Fu
eSh7IFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSwgUGFpbnRCZWhh
dmlvcjo6U2VsZWN0aW9uT25seSB9KTsKICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNX
aXRoUGhhc2Uoc2VsZWN0aW9uT25seSA/IFBhaW50UGhhc2U6OlNlbGVjdGlvbiA6IFBhaW50UGhh
c2U6OkNoaWxkQmxvY2tCYWNrZ3JvdW5kcywgbGF5ZXJGcmFnbWVudHMsCiAgICAgICAgIGNvbnRl
eHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJv
b3RGb3JSZW5kZXJlcik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4NDcsNyArMTg0Nyw3IEBAIGJvb2wgUGx1Z2luVmlldzo6c2hvdWxkQ3JlYXRlVHJhbnNpZW50
UGEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gZnJhbWUoKS0+dmlldygpKSB7Ci0gICAgICAgIGlmIChmcmFtZVZpZXctPnBhaW50QmVoYXZp
b3IoKS5jb250YWlucyhPcHRpb25TZXQ8UGFpbnRCZWhhdmlvcj4oUGFpbnRCZWhhdmlvcjo6U2Vs
ZWN0aW9uT25seSkgfCBQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkg
fCBQYWludEJlaGF2aW9yOjpGb3JjZUJsYWNrVGV4dCkpIHsKKyAgICAgICAgaWYgKGZyYW1lVmll
dy0+cGFpbnRCZWhhdmlvcigpLmNvbnRhaW5zQW55KHsgUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9u
T25seSwgUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5LCBQYWludEJl
aGF2aW9yOjpGb3JjZUJsYWNrVGV4dH0pKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHBhaW50IGJl
aGF2aW9yIGlzIHVzZWQgd2hlbiBkcmF3aW5nIHRoZSBmaW5kIGluZGljYXRvciBhbmQgdGhlcmUn
cyBubyBuZWVkIHRvCiAgICAgICAgICAgICAvLyBzbmFwc2hvdCBwbHVnLWlucywgYmVjYXVzZSB0
aGV5IGNhbiBuZXZlciBiZSBwYWludGVkIGFzIHBhcnQgb2YgdGhlIGZpbmQgaW5kaWNhdG9yLgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0Nzk0KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDgtMTMgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIE1lYW5pbmcgb2YgT3B0aW9uU2V0
Ojpjb250YWlucyBpcyB1bmNsZWFyIHdoZW4gdXNlZCB3aXRoIE9wdGlvblNldCBhcmd1bWVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTAxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMTgtMDgtMTIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXSBGbG9hdCBwcmV2L25leHQgc2libGluZyBzaG91bGQgcHJldmVudCB0b3Av
Ym90dG9tIG1hcmdpbiBjb2xsYXBzaW5nIHdpdGggcGFyZW50LgpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNzksNCArMzc5LDMyIEBAIFRFU1QoV1RGX09wdGlvblNldCwgT3BlcmF0b3JBbmQpCiAg
ICAgfQogfQogCitURVNUKFdURl9PcHRpb25TZXQsIENvbnRhaW5zQW55KQoreworICAgIE9wdGlv
blNldDxFeGFtcGxlRmxhZ3M+IHNldCB7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpC
IH07CisKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnNBbnkoeyBFeGFtcGxlRmxhZ3M6OkEg
fSkpOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWluc0FueSh7IEV4YW1wbGVGbGFnczo6QiB9
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWluc0FueSh7IEV4YW1wbGVGbGFnczo6QyB9
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWluc0FueSh7IEV4YW1wbGVGbGFnczo6Qywg
RXhhbXBsZUZsYWdzOjpEIH0pKTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnNBbnkoeyBF
eGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QiB9KSk7CisgICAgRVhQRUNUX1RSVUUoc2V0
LmNvbnRhaW5zQW55KHsgRXhhbXBsZUZsYWdzOjpCLCBFeGFtcGxlRmxhZ3M6OkMgfSkpOworICAg
IEVYUEVDVF9UUlVFKHNldC5jb250YWluc0FueSh7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZs
YWdzOjpDIH0pKTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnNBbnkoeyBFeGFtcGxlRmxh
Z3M6OkEsIEV4YW1wbGVGbGFnczo6QiwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKK30KKworVEVTVChX
VEZfT3B0aW9uU2V0LCBDb250YWluc0FsbCkKK3sKKyAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdz
PiBzZXQgeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QiB9OworCisgICAgRVhQRUNU
X1RSVUUoc2V0LmNvbnRhaW5zQWxsKHsgRXhhbXBsZUZsYWdzOjpBIH0pKTsKKyAgICBFWFBFQ1Rf
VFJVRShzZXQuY29udGFpbnNBbGwoeyBFeGFtcGxlRmxhZ3M6OkIgfSkpOworICAgIEVYUEVDVF9G
QUxTRShzZXQuY29udGFpbnNBbGwoeyBFeGFtcGxlRmxhZ3M6OkMgfSkpOworICAgIEVYUEVDVF9G
QUxTRShzZXQuY29udGFpbnNBbGwoeyBFeGFtcGxlRmxhZ3M6OkMsIEV4YW1wbGVGbGFnczo6RCB9
KSk7CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zQWxsKHsgRXhhbXBsZUZsYWdzOjpBLCBF
eGFtcGxlRmxhZ3M6OkIgfSkpOworICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnNBbGwoeyBF
eGFtcGxlRmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKHNl
dC5jb250YWluc0FsbCh7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zQWxsKHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxl
RmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkK
</data>
<flag name="review"
          id="364808"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347019</attachid>
            <date>2018-08-13 11:36:31 -0700</date>
            <delta_ts>2018-08-13 12:16:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-contains-any-all-2.patch</filename>
            <type>text/plain</type>
            <size>9555</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE4LTA4LTEzICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNZWFuaW5nIG9mIE9wdGlvblNldDo6Y29udGFpbnMg
aXMgdW5jbGVhciB3aGVuIHVzZWQgd2l0aCBPcHRpb25TZXQgYXJndW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODUwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICBUaGUgZXhpc3RpbmcgYmVoYXZp
b3IgaXMgImNvbnRhaW5zIGFueSIgYnV0IGl0IGlzIG5vdCB2ZXJ5IGNsZWFyIGZyb20gdGhlIG5h
bWUuCisKKyAgICAgICAgKiB3dGYvT3B0aW9uU2V0Lmg6CisgICAgICAgIChXVEY6Ok9wdGlvblNl
dDo6Y29udGFpbnMgY29uc3QpOgorCisgICAgICAgIFRoaXMgaXMgbm93IGZvciB0ZXN0aW5nIGEg
c2luZ2xlIG9wdGlvbiBvbmx5LgorCisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6Y29udGFpbnNB
bnkgY29uc3QpOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6OmNvbnRhaW5zQWxsIGNvbnN0KToK
KworICAgICAgICBBZGQgc2VwYXJhdGUgZnVuY3Rpb25zIGZvciBPcHRpb25TZXQgYXJndW1lbnQu
CisKIDIwMTgtMDgtMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW21hY09TXSBNdWx0aXBsZSB0aGlyZCBwYXJ0eSBhcHBzIGNyYXNoIGR1ZSB0byB0aGUgdGhy
ZWFkIHNhZmV0eSBjaGVjayBpbiBUaW1lckJhc2U6OnNldE5leHRGaXJlVGltZQpJbmRleDogU291
cmNlL1dURi93dGYvT3B0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3B0
aW9uU2V0LmgJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Niw5ICs5NiwxOSBAQCBwdWJsaWM6CiAKICAgICBjb25zdGV4
cHIgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuICFpc0VtcHR5KCk7IH0KIAotICAg
IGNvbnN0ZXhwciBib29sIGNvbnRhaW5zKE9wdGlvblNldCBvcHRpb25TZXQpIGNvbnN0CisgICAg
Y29uc3RleHByIGJvb2wgY29udGFpbnMoVCBvcHRpb24pIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9zdG9yYWdlICYgb3B0aW9uU2V0Lm1fc3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIGNv
bnRhaW5zQW55KHsgb3B0aW9uIH0pOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIGNvbnRh
aW5zQW55KE9wdGlvblNldCBvcHRpb25TZXQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
ISEoKnRoaXMgJiBvcHRpb25TZXQpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBib29sIGNvbnRh
aW5zQWxsKE9wdGlvblNldCBvcHRpb25TZXQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
KCp0aGlzICYgb3B0aW9uU2V0KSA9PSBvcHRpb25TZXQ7CiAgICAgfQogCiAgICAgY29uc3RleHBy
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE4LTA4LTEzICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNZWFuaW5nIG9mIE9wdGlvblNldDo6
Y29udGFpbnMgaXMgdW5jbGVhciB3aGVuIHVzZWQgd2l0aCBPcHRpb25TZXQgYXJndW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODUwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KKworICAgICAgICAqIGRvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjpwb3NzaWJseUhhc01hcmtlcnMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6aGFzTWFya2VycyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3Rl
bS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbGVtZW50OjpzZWxlY3Rpb25Db2xvciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludEZv
cmVncm91bmRGb3JGcmFnbWVudHMpOgorCiAyMDE4LTA4LTEyICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LlN0
b3JhZ2UgYXQgV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y29ubmVjdGlv
bkNsb3NlZEZyb21DbGllbnQoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24mKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIGJvb2wgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjpwb3NzaWJseUhhc01hcmtlcnMoT3B0aW9uU2V0PERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlPiB0eXBlcykKIHsKLSAgICByZXR1cm4gbV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlw
ZXMuY29udGFpbnModHlwZXMpOworICAgIHJldHVybiBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJU
eXBlcy5jb250YWluc0FueSh0eXBlcyk7CiB9CiAKIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKERvY3VtZW50JiBkb2N1bWVudCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgJKHJldmlzaW9uIDIz
NDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5TWFy
a2VycyhOb2RlKiBzcmNOb2RlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwgTm9k
ZSogZHN0Tm9kZSwgaW50IGRlbHRhKTsKICAgICBib29sIGhhc01hcmtlcnMoKSBjb25zdAogICAg
IHsKLSAgICAgICAgQVNTRVJUKG1fbWFya2Vycy5pc0VtcHR5KCkgPT0gIW1fcG9zc2libHlFeGlz
dGluZ01hcmtlclR5cGVzLmNvbnRhaW5zKERvY3VtZW50TWFya2VyOjphbGxNYXJrZXJzKCkpKTsK
KyAgICAgICAgQVNTRVJUKG1fbWFya2Vycy5pc0VtcHR5KCkgPT0gIW1fcG9zc2libHlFeGlzdGlu
Z01hcmtlclR5cGVzLmNvbnRhaW5zQW55KERvY3VtZW50TWFya2VyOjphbGxNYXJrZXJzKCkpKTsK
ICAgICAgICAgcmV0dXJuICFtX21hcmtlcnMuaXNFbXB0eSgpOwogICAgIH0KICAgICBib29sIGhh
c01hcmtlcnMoUmFuZ2UmLCBPcHRpb25TZXQ8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+ID0g
RG9jdW1lbnRNYXJrZXI6OmFsbE1hcmtlcnMoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNjEs
NyArMTM2MSw3IEBAIENvbG9yIFJlbmRlckVsZW1lbnQ6OnNlbGVjdGlvbkNvbG9yKENTU1AKICAg
ICAvLyBJZiB0aGUgZWxlbWVudCBpcyB1bnNlbGVjdGFibGUsIG9yIHdlIGFyZSBvbmx5IHBhaW50
aW5nIHRoZSBzZWxlY3Rpb24sCiAgICAgLy8gZG9uJ3Qgb3ZlcnJpZGUgdGhlIGZvcmVncm91bmQg
Y29sb3Igd2l0aCB0aGUgc2VsZWN0aW9uIGZvcmVncm91bmQgY29sb3IuCiAgICAgaWYgKHN0eWxl
KCkudXNlclNlbGVjdCgpID09IFVzZXJTZWxlY3Q6Ok5vbmUKLSAgICAgICAgfHwgKHZpZXcoKS5m
cmFtZVZpZXcoKS5wYWludEJlaGF2aW9yKCkuY29udGFpbnMoT3B0aW9uU2V0PFBhaW50QmVoYXZp
b3I+KFBhaW50QmVoYXZpb3I6OlNlbGVjdGlvbk9ubHkpIHwgUGFpbnRCZWhhdmlvcjo6U2VsZWN0
aW9uQW5kQmFja2dyb3VuZHNPbmx5KSkpCisgICAgICAgIHx8ICh2aWV3KCkuZnJhbWVWaWV3KCku
cGFpbnRCZWhhdmlvcigpLmNvbnRhaW5zQW55KHsgUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uT25s
eSwgUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uQW5kQmFja2dyb3VuZHNPbmx5IH0pKSkKICAgICAg
ICAgcmV0dXJuIENvbG9yKCk7CiAKICAgICBpZiAoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxl
PiBwc2V1ZG9TdHlsZSA9IHNlbGVjdGlvblBzZXVkb1N0eWxlKCkpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMjM0NzkyKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDc4OCw3ICs0Nzg4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJh
ZwogICAgIAogICAgIC8vIFdlIGhhdmUgdG8gbG9vcCB0aHJvdWdoIGV2ZXJ5IGZyYWdtZW50IG11
bHRpcGxlIHRpbWVzLCBzaW5jZSB3ZSBoYXZlIHRvIHJlcGFpbnQgaW4gZWFjaCBzcGVjaWZpYyBw
aGFzZSBpbiBvcmRlciBmb3IKICAgICAvLyBpbnRlcmxlYXZpbmcgb2YgdGhlIGZyYWdtZW50cyB0
byB3b3JrIHByb3Blcmx5LgotICAgIGJvb2wgc2VsZWN0aW9uT25seSA9IGxvY2FsUGFpbnRpbmdJ
bmZvLnBhaW50QmVoYXZpb3IuY29udGFpbnMoT3B0aW9uU2V0PFBhaW50QmVoYXZpb3I+KFBhaW50
QmVoYXZpb3I6OlNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSkgfCBQYWludEJlaGF2aW9yOjpT
ZWxlY3Rpb25Pbmx5KTsKKyAgICBib29sIHNlbGVjdGlvbk9ubHkgPSBsb2NhbFBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yLmNvbnRhaW5zQW55KHsgUGFpbnRCZWhhdmlvcjo6U2VsZWN0aW9uQW5k
QmFja2dyb3VuZHNPbmx5LCBQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5IH0pOwogICAgIHBh
aW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShzZWxlY3Rpb25Pbmx5ID8gUGFpbnRQ
aGFzZTo6U2VsZWN0aW9uIDogUGFpbnRQaGFzZTo6Q2hpbGRCbG9ja0JhY2tncm91bmRzLCBsYXll
ckZyYWdtZW50cywKICAgICAgICAgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFp
bnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZp
c2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0Nyw3ICsxODQ3LDcgQEAgYm9vbCBQbHVnaW5W
aWV3OjpzaG91bGRDcmVhdGVUcmFuc2llbnRQYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZSgpLT52aWV3KCkpIHsKLSAgICAgICAg
aWYgKGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpLmNvbnRhaW5zKE9wdGlvblNldDxQYWludEJl
aGF2aW9yPihQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5KSB8IFBhaW50QmVoYXZpb3I6OlNl
bGVjdGlvbkFuZEJhY2tncm91bmRzT25seSB8IFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0
KSkgeworICAgICAgICBpZiAoZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCkuY29udGFpbnNBbnko
eyBQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25Pbmx5LCBQYWludEJlaGF2aW9yOjpTZWxlY3Rpb25B
bmRCYWNrZ3JvdW5kc09ubHksIFBhaW50QmVoYXZpb3I6OkZvcmNlQmxhY2tUZXh0fSkpIHsKICAg
ICAgICAgICAgIC8vIFRoaXMgcGFpbnQgYmVoYXZpb3IgaXMgdXNlZCB3aGVuIGRyYXdpbmcgdGhl
IGZpbmQgaW5kaWNhdG9yIGFuZCB0aGVyZSdzIG5vIG5lZWQgdG8KICAgICAgICAgICAgIC8vIHNu
YXBzaG90IHBsdWctaW5zLCBiZWNhdXNlIHRoZXkgY2FuIG5ldmVyIGJlIHBhaW50ZWQgYXMgcGFy
dCBvZiB0aGUgZmluZCBpbmRpY2F0b3IuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMzQ3OTQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxOC0wOC0xMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWVhbmluZyBvZiBPcHRpb25TZXQ6OmNvbnRhaW5zIGlzIHVuY2xlYXIgd2hlbiB1c2Vk
IHdpdGggT3B0aW9uU2V0IGFyZ3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODg1MDEKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2Fy
bHNzb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMDgtMTIgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBGbG9hdCBwcmV2L25leHQg
c2libGluZyBzaG91bGQgcHJldmVudCB0b3AvYm90dG9tIG1hcmdpbiBjb2xsYXBzaW5nIHdpdGgg
cGFyZW50LgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9PcHRpb25TZXQu
Y3BwCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9P
cHRpb25TZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNCArMzc5LDMyIEBAIFRFU1QoV1RG
X09wdGlvblNldCwgT3BlcmF0b3JBbmQpCiAgICAgfQogfQogCitURVNUKFdURl9PcHRpb25TZXQs
IENvbnRhaW5zQW55KQoreworICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IHNldCB7IEV4YW1w
bGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpCIH07CisKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29u
dGFpbnNBbnkoeyBFeGFtcGxlRmxhZ3M6OkEgfSkpOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250
YWluc0FueSh7IEV4YW1wbGVGbGFnczo6QiB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250
YWluc0FueSh7IEV4YW1wbGVGbGFnczo6QyB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250
YWluc0FueSh7IEV4YW1wbGVGbGFnczo6QywgRXhhbXBsZUZsYWdzOjpEIH0pKTsKKyAgICBFWFBF
Q1RfVFJVRShzZXQuY29udGFpbnNBbnkoeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6
QiB9KSk7CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zQW55KHsgRXhhbXBsZUZsYWdzOjpC
LCBFeGFtcGxlRmxhZ3M6OkMgfSkpOworICAgIEVYUEVDVF9UUlVFKHNldC5jb250YWluc0FueSh7
IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKKyAgICBFWFBFQ1RfVFJVRShz
ZXQuY29udGFpbnNBbnkoeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1wbGVGbGFnczo6QiwgRXhhbXBs
ZUZsYWdzOjpDIH0pKTsKK30KKworVEVTVChXVEZfT3B0aW9uU2V0LCBDb250YWluc0FsbCkKK3sK
KyAgICBPcHRpb25TZXQ8RXhhbXBsZUZsYWdzPiBzZXQgeyBFeGFtcGxlRmxhZ3M6OkEsIEV4YW1w
bGVGbGFnczo6QiB9OworCisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRhaW5zQWxsKHsgRXhhbXBs
ZUZsYWdzOjpBIH0pKTsKKyAgICBFWFBFQ1RfVFJVRShzZXQuY29udGFpbnNBbGwoeyBFeGFtcGxl
RmxhZ3M6OkIgfSkpOworICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnNBbGwoeyBFeGFtcGxl
RmxhZ3M6OkMgfSkpOworICAgIEVYUEVDVF9GQUxTRShzZXQuY29udGFpbnNBbGwoeyBFeGFtcGxl
RmxhZ3M6OkMsIEV4YW1wbGVGbGFnczo6RCB9KSk7CisgICAgRVhQRUNUX1RSVUUoc2V0LmNvbnRh
aW5zQWxsKHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIgfSkpOworICAgIEVYUEVD
VF9GQUxTRShzZXQuY29udGFpbnNBbGwoeyBFeGFtcGxlRmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6
QyB9KSk7CisgICAgRVhQRUNUX0ZBTFNFKHNldC5jb250YWluc0FsbCh7IEV4YW1wbGVGbGFnczo6
QSwgRXhhbXBsZUZsYWdzOjpDIH0pKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0LmNvbnRhaW5zQWxs
KHsgRXhhbXBsZUZsYWdzOjpBLCBFeGFtcGxlRmxhZ3M6OkIsIEV4YW1wbGVGbGFnczo6QyB9KSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347061</attachid>
            <date>2018-08-13 19:07:19 -0700</date>
            <delta_ts>2018-08-13 22:55:17 -0700</delta_ts>
            <desc>MSVC build fix</desc>
            <filename>bug-188501.diff</filename>
            <type>text/plain</type>
            <size>1131</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggODA5ODE1MWNjYzQuLmUyODhjYzIyOWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4
LTA4LTEzICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAg
TWVhbmluZyBvZiBPcHRpb25TZXQ6OmNvbnRhaW5zIGlzIHVuY2xlYXIgd2hlbiB1c2VkIHdpdGgg
T3B0aW9uU2V0IGFyZ3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODg1MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMjQ2MjQyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1TVkMgaXMgdW5h
YmxlIHRvIGNvbXBpbGUgY29udGFpbnMgdXNpbmcgYW4gaW5pdGlhbGl6ZXJfbGlzdCB3aXRoaW4g
YSBsYW1iZGEuCisKKyAgICAgICAgKiB3dGYvT3B0aW9uU2V0Lmg6CisgICAgICAgIChXVEY6Ok9w
dGlvblNldDo6Y29udGFpbnMgY29uc3QpOgorCiAyMDE4LTA4LTEzICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWFuaW5nIG9mIE9wdGlvblNldDo6Y29udGFp
bnMgaXMgdW5jbGVhciB3aGVuIHVzZWQgd2l0aCBPcHRpb25TZXQgYXJndW1lbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uU2V0
LmgKaW5kZXggNDA0MmE0OTg1ZGIuLjRkNmIyMjliOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9PcHRpb25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaApAQCAtOTgs
NyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdGV4cHIgYm9vbCBjb250YWlucyhUIG9wdGlv
bikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBjb250YWluc0FueSh7IG9wdGlvbiB9KTsK
KyAgICAgICAgcmV0dXJuIGNvbnRhaW5zQW55KG9wdGlvbik7CiAgICAgfQogCiAgICAgY29uc3Rl
eHByIGJvb2wgY29udGFpbnNBbnkoT3B0aW9uU2V0IG9wdGlvblNldCkgY29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>